Теория
Для защиты будет использоваться динамический адресный список. При сканировании портов, источник будет добавляться в список блокируемых автоматически.
Например, некий адрес 8.8.8.8 начинает сканировать ваш внешний IP, сканирует SSH TCP порт 22 - IP 8.8.8.8 попадает в список блокируемых на час, 8.8.4.4 сканирует SIP UDP порт 5060 - 8.8.4.4 попадает в список заблокированных на сутки. Порты можете менять самостоятельно, на свое усмотрение.
Практика
Создадим правила, которые будут добавлять IP адрес источника сканирования в динамический список и блокировать его полностью:
Правило первое
Вкладка General
- Chain: input - входящие
- Protocol: tcp - необходимый протокол
- Dst. Port: 22 - требуемый порт
- In. Interface: внешний интерфейс
Вкладка Action
- Action: add src to address list - добавляем с динамический список
- Address List: 22_drop_24 - 22 порт, блокируем на 24 часа. Может быть любым, по вашим стандартам
- Timeout: 24:00:00 - время блокировки
- при необходимости логируем, включим соответствующую функцию
Второе правило
Вкладка General
- Chain: input - входящие
- In. Interface: внешний интерфейс
Вкладка Advanced
- Src. Address List: 22_drop_24 - необходимый список источников
Вкладка Action
- Action: drop - блокируем
Блокирующее правило должно быть выше первого правила, и выше иных разрешающих правил. Для снятия блокировки - требуется удалить требуемый IP из списка в Address Lists.
Текстовый вариант команд:
/ip firewall filter
add action=drop chain=input in-interface=Интерфейс src-address-list=22_drop_24
add action=add-src-to-address-list address-list=22_drop_24 address-list-timeout=1d chain=input dst-port=22 in-interface=Интерфейс log=yes log-prefix=SSH-SCAN protocol=tcp src-address-list=""