Сначала дропаем всё подозрительное, ненормальное, и противоестественное, такое как invalid connection, запросы на мой DNS, листы DROP и так далее.
Далее защиты от сканера портов, от DDoS и Syn атак и т.д.
Следом правила по разграничиванию доступа, запрет не нормалых подключений по VPN….
Потом разрешающие и запрещающие правила для конкретных сетей и пользователей
Последнее правило для запрета всего остального, что не попало под правила выше.

Блокировка любителей сканировать порты:

>/ip firewall filter add chain=input psd=21,3s,3,1 action=add-src-to-address-list address-list=psd

/ip firewall raw add chain=prerouting src-address-list=psd action=drop


Так мы дропнем его навсегда

Блокировка DDoS

1

/ip firewall address-list

2

add list=ddos-attackers

3

add list=ddos-target

4

/ip settings set tcp-syncookies=yes

5

/ip firewall filter

6

add chain=forward connection-state=new action=jump jump-target=detect-ddos

7

add action=return chain=detect-ddos dst-limit=32,32,src-and-dst-addresses/10s

8

add action=return chain=detect-ddos dst-limit=32,32,src-and-dst-addresses/10s protocol=tcp tcp-flags=syn,ack

9

add action=add-dst-to-address-list address-list=ddos-target address-list-timeout=10m chain=detect-ddos

10

add action=add-src-to-address-list address-list=ddos-attackers address-list-timeout=10m chain=detect-ddos

11

/ip firewall raw

12

add action=drop chain=prerouting dst-address-list=ddos-target src-address-list=ddos-attackers

1-3 создаем два списка адресов, в которые будут попадать спамеры и жертвы (ведь спам может быть направлен и не на вас, а на сторонний ресурс).

4 включаем кэш для отслеживания SYN-ACK пакетов.

5-10 правила определяющие кто и как часто пытается нас или через нас спамить кого-либо малыми пакетами. Если это не спам, то пакетик считается легитимным и продолжает обрабатываться в обычном режиме.

11-12 отдельная цепочка прероутинга, в которой спам начинает отбрасываться.

Особенно разжевывать или тюнить эту схему не вижу смысла — у всех будут разные задачи и разный результат, который должен получиться. В моем случае мне этого вполне достаточно. Не забудьте в IP -> Firewall поднять эти правила в самый верх. У меня еще выше этих правил стоят правила BLOCK и WhiteList — где, соответственно, черный список — это те адреса, которые мне совсем не нравятся, а белый — это список моих внешних адресов, которые нет смысла пропускать через все остальные правила фаервола. Далее должны расположиться вот эти 4 правила по отсеиванию флуда, а далее уже все остальные с пробросом к внутренним ресурсам.

Настройка собственно firewall-а

Входим в редактирование FW

/ip firewall filter

Пакеты проходят по списку правил по порядку, сверху вниз. Если пакет соответствует какому-то правилу, то он прекращает движение по цепочке. Из этого следует важный вывод — первыми в цепочке должны быть правила, которые охватывают максимальный объем трафика, чтобы он дальше не обрабатывался устройством. Примером такого правила является разрешение пакетов уже установленных (established) или связанных (related) соединений, которые ранее были разрешены каким-то правилом. Повторно проверять по всем правилам их не нужно. Сделаем такое правило для цепочки input — входящие соединения роутера.

add action=accept chain=input comment="accept establish & related" connection-state=established,related

Отбрасываем все неверные (Invalid) пакеты

add action=drop chain=input comment="drop invalid" connection-state=invalid

Разрешаем ICMP (ping). У меня он обычно закрыт (drop)

 add action=accept chain=input comment="accept ICMP" protocol=icmp

Создаем заключительное правило для цепочки input, которое будет блокировать все запросы, пришедшие не из локальной сети. В моем примере у меня локальная сеть подключена к бриджу bridge1-lan. В него входят все порты, подключенные в локалку.

add action=drop chain=input comment="drop all not from lan" in-interface=!bridge1-lan

На текущий момент мы запретили все запросы из вне к роутеру, кроме пингов. При этом доступ из локальной сети полный. Настроим теперь правила для транзитного трафика цепочки forward. Здесь по аналогии с input первыми идут правила для established, related, invalid пакетов.

add action=accept chain=forward comment="accept established,related" connection-state=established,related

add action=drop chain=forward comment="drop invalid" connection-state=invalid

Теперь запретим все запросы из внешней сети, связь с которой через интерфейс ether1-wan к локальной сети. dstnat это проброс портов, о нем отдельная тема.

add action=drop chain=forward comment="drop all from WAN to LAN" connection-nat-state=!dstnat connection-state=new in-interface=ether1-wan

Разрешаем 80 и 443 порты из локальной сети:

add action=accept chain=forward comment="accept http & https from LAN" dst-port=80,443 in-interface=bridge1-lan out-interface=ether1-wan protocol=tcp

И разрешаем 53 (DNS) порт

add action=accept chain=forward comment="accept dns from LAN" dst-port=53 in-interface=bridge1-lan out-interface=ether1-wan protocol=udp

add action=drop chain=forward comment="drop all from LAN to WAN" in-interface=bridge1-lan out-interface=ether1-wan

Соответственно, если Вам нужны не только HTTP и HTTPS порты, добавляем их в соответствующее правило. Главное разместить его до последнего, иначе до него очередь не дойдет)

Categories:

Tags:

No responses yet

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *