Защита от 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"

Авторизация