1.8Kпросмотров
3 сентября 2025 г.
📷 ФотоScore: 2.0K
🤨 Крыса! Несколько дней подряд мой сервер обстреливали запросами с разных IP. Узнал я об этом совершенно случайно, когда зашёл через SSH по другой причине и решил посмотреть логи. И тут я просто выпал. Какой-то упёртый товарищ через веб-страницу долбил админку одного сервиса из трёх букв (название опустим, но суть поняли), пытаясь перебрать логины и пароли. Причём без капли стеснения он это делал с 30 запросами в секунду (108к запросов в час). Продолжалось это без остановки с 28 августа 04:09:44 по 2 сентября 12:33:35, а далее затишье. Я сразу решил, что так оставлять нельзя. Вечером того же дня поставил Fail2ban, прописал фильтр и подключил его к логам. И, как по заказу, атакующий снова вылез 2-го сентября в 23:07:56. Но на этот раз всё закончилось для него быстро и печально. Даже секунды не прошло, как IPS повязал ему ручонки (см. скриншот). Ну и я подумал, что из этого можно было бы выкатить простой гайд по установке и настройке Fail2ban. Fail2Ban – программа для защиты серверов от атак методом грубой силы. Если кому интересно, как настроить Fail2ban в пару кликов под X-UI (как в моём случае), держите гайд. ➡️1) Обновляем пакеты sudo apt update ➡️2) Устанавливаем Fail2ban sudo apt install fail2ban -y ➡️3) Проверяем установку — должно выдать версию Fail2ban fail2ban-client --version ➡️4) Запускаем сервис и смотрим статус sudo systemctl enable --now fail2ban sudo systemctl status fail2ban ➡️5) Fail2ban будет смотреть логи и искать неудачные попытки входа по фильтру. Создаем фильтр в "/etc/fail2ban/filter.d/x-ui.conf" [Definition]
failregex = WARNING - wrong username: ".", password: ".", secret: ".*", IP: "<HOST>"
ignoreregex = Вставляем как есть, ничего менять не надо. ➡️6) Создаём или редактируем "/etc/fail2ban/jail.local" [x-ui]
enabled = true
filter = x-ui
logpath = /var/log/kern.log
maxretry = 5
findtime = 600
bantime = 3600
action = iptables[name=x-ui, port=PORT, protocol=tcp]
ignoreip = 127.0.0.1/8 YOUR_IP YOUR_VPN_IP Пояснение: logpath — файл с логами, куда пишутся предупреждения о неверно введённом логине/пароле.
port=PORT — сетевой порт, к которому будет применяться правило блокировки IP через iptables. Здесь ставьте порт, на котором открывается форма авторизации в личный кабинет X-UI.
maxretry = 5 — после 5+ провальных попыток выдаётся бан.
findtime = 600 — считаем попытки за 10 минут.
bantime = 3600 — бан на 1 час.
ignoreip — добавляем сюда свой IP и VPN, чтобы случайно не заблокироваться. ➡️7) Перезагружаем службу Fail2ban sudo systemctl restart fail2ban ➡️8) Смотрим статус Fail2ban. Если запущен, значит ошибок нет и всё работает. Радуемся жизни sudo systemctl status fail2ban Теперь можно отслеживать статус Fail2ban, в котором в том числе пишется количество блокировок и какие именно IP-адреса были заблокированы: sudo fail2ban-client status x-ui Защищайте свои сервера и будьте здоровы! 😉 И не забудьте перевернуть календарь.