Заказал новый VPS под пару сайтов с небольшой нагрузкой. Привык к хостингам, где не требуется дополнительная настройка. Во время переноса сайтов неожиданно остановился mysqld и из-за ошибки нехватки памяти mysqld не запускался. Стал разбираться куда делась вся оперативная память, заодно немного разобрал /var/log/secure
1 |
cat /var/log/secure* | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort -k 1,1M -k 2n | uniq -c |
вот что обнаружил …
1 2 3 4 5 |
73 Nov 13 13498 Nov 14 13570 Nov 15 14694 Nov 16 30584 Nov 17 |
Более 30 тысяч попыток брутфорса в сутки! Интересно, если бы сервер простоял без внимания ещё пару суток…
Пришлось обратиться к стандартному средству защиты в CentOS — fail2ban
Настройка Fail2ban
Создание локальной копии конфигурационного файла jail.conf
1 2 |
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local nano /etc/fail2ban/jail.local |
Защита SSH
Активируем секцию [ssh] в jail.local
1 2 3 4 5 6 7 8 |
[ssh] enabled = true port = ssh filter = sshd action = iptables[name=sshd, port=ssh, protocol=tcp] logpath = /var/log/auth.log maxretry = 3 bantime = 600 |
- enabled = true — активация секции.
- port — имя сервиса/числовой номер порта
- filter — название фильтра, по-умолчанию /etc/fail2ban/filter.d/sshd.conf
- action — действия при обнаружении атакующего, описаны в файле /etc/fail2ban/action.d
- logpath — путь до файла предназначенного для записи информации о попытках получения доступа к серверу
- maxretry — максимальное число попыток для атакующей стороны
- bantime — время блокировки атакующего IP (в секундах)
Что данная запись означает? После 3й неудачной попытки авторизации на сервер — ip адрес (с которого выполнялась авторизация) заносится в чёрный список на 10 минут.
Дополнительная защита SSH
1 2 3 4 5 6 |
[ssh-ddos] enabled = true port = ssh filter = sshd-ddos logpath = /var/log/auth.log maxretry = 2 |
Перезапуск fail2ban
1 |
systemctl restart fail2ban |
Лог fail2ban
Если всё настроено правильно, то можно увидеть следующую «картину»:
1 2 3 4 5 6 7 8 9 10 11 |
[root@ih773243 ~]# tail /var/log/fail2ban.log 2017-11-21 00:55:24,627 fail2ban.actions [20479]: NOTICE [sshd] Unban 185.190.58.108 2017-11-21 01:05:46,603 fail2ban.actions [20479]: NOTICE [sshd] Unban 94.75.154.17 2017-11-21 01:06:55,935 fail2ban.actions [20479]: NOTICE [sshd] Unban 5.188.10.176 2017-11-21 01:07:26,103 fail2ban.actions [20479]: NOTICE [sshd] Unban 51.15.223.45 2017-11-21 01:18:25,435 fail2ban.filter [20479]: INFO [sshd] Found 51.15.196.150 2017-11-21 01:18:27,422 fail2ban.filter [20479]: INFO [sshd] Found 51.15.196.150 2017-11-21 01:18:28,636 fail2ban.filter [20479]: INFO [sshd] Found 51.15.196.150 2017-11-21 01:18:29,159 fail2ban.actions [20479]: NOTICE [sshd] Ban 51.15.196.150 2017-11-21 01:18:31,039 fail2ban.filter [20479]: INFO [sshd] Found 51.15.196.150 2017-11-21 01:23:27,744 fail2ban.actions [20479]: NOTICE [sshd] Unban 51.15.217.208 |
В процессе работы приложение банит какие-то адреса, какие-то удаляет из чёрного списка.
Количество атак на сервер после настройки fail2ban
fail2ban был успешно активирован 17 ноября
1 2 3 4 5 6 7 8 9 |
[root@ih772213 ~]# cat /var/log/secure* | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort -k 1,1M -k 2n | uniq -c 73 Nov 13 13498 Nov 14 13570 Nov 15 14694 Nov 16 30584 Nov 17 236 Nov 18 121 Nov 19 167 Nov 20 |
Комментарии излишни.
Свежие комментарии