🤨
Крыса!Несколько дней подряд
мой сервер обстреливали запросами с разных 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: ""
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
Защищайте свои сервера и будьте здоровы! 😉
И не забудьте перевернуть календарь.