Защита от Brute-Force
В этой заметке я опишу основные шаги по защите от нетаргетированного ботнета (который сканирует и брутфорсит все ip, которые найдет в сети). Как только вы выставляете любую железку с белым ip в мир — не пройдет и 5-10 минут, как его начнут сканировать, поэтому мы создадим несколько простых правил, которые будут банить ip ботнета и дропать их пакеты.
Основными целями всегда являются дефолтные порты и сервисы с наиболее уязвимыми приложениями за ними, например:
- 20, 21 (FTP)
- 22 (SSH)
- 23 (Telnet)
- 25 (SMTP)
- 69 (TFTP)
- 80, (HTTP)
- 110 (POP3)
- 137, 138, 139 (NetBIOS)
- 161 (SNMP)
- 443 (HTTPS)
- 445 (SMB)
- 512, 513, 514 (Barkley r-services и r-commands)
- 1433, 1434 (Microsoft SQL Server)
- 1723 (PPTP VPN)
- 3306 (MySQL)
- 3389 (RDP)
- 5060 (SIP)
- 5432 (PostgreSQL)
- 5900 (VNC)
- 8080 (HTTP-прокси)
- 8291 (WinBox)
- 8728, 8729 (WinBox API)
На основе обращений к указанным портам мы и создадим правила, по которым все ip, которые обращаются к ним, будут считаться брутфорсерами и, соответственно, будут добавлены в черный список.
Правило для блокировки черного списка
/ip firewall filter add chain=input src-address-list=AntiBruteForce_BlockList action=drop comment="Drop AntiBruteForce BlockList"
Правило для отслеживания неудачных попыток (1-я попытка)
/ip firewall filter add chain=input protocol=tcp dst-port=21,22,23,3389,8291,8728,80,443 connection-state=new action=add-src-to-address-list address-list=AntiBruteForce_Stage1 address-list-timeout=1m comment="AntiBruteForce Stage 1"
Правило для отслеживания неудачных попыток (2-я попытка)
/ip firewall filter add chain=input protocol=tcp dst-port=21,22,23,3389,8291,8728,80,443 connection-state=new src-address-list=AntiBruteForce_Stage1 action=add-src-to-address-list address-list=AntiBruteForce_Stage2 address-list-timeout=1m comment="AntiBruteForce Stage 2"
Правило для отслеживания неудачных попыток (3-я попытка)
/ip firewall filter add chain=input protocol=tcp dst-port=21,22,23,3389,8291,8728,80,443 connection-state=new src-address-list=AntiBruteForce_Stage2 action=add-src-to-address-list address-list=AntiBruteForce_Stage3 address-list-timeout=1m comment="AntiBruteForce Stage 3"
Правило для отслеживания неудачных попыток (блокировка на 248 дней и 12 часов)
/ip firewall filter add chain=input protocol=tcp dst-port=21,22,23,3389,8291,8728,80,443 connection-state=new src-address-list=AntiBruteForce_Stage3 action=add-src-to-address-list address-list=AntiBruteForce_BlockList address-list-timeout=35w3d12h comment="AntiBruteForce BlockList"