Juniper. Фильтр для блокировки портов

Приведу пример блокировки SMTP порта 25 TCP, чтобы пользователи не могли рассылать спам на сервера, то есть не могли выполнить исходящее соединение с портом назначения 25 TCP, вместо него они могут выполнить соединение на порты с авторизацией и шифрованием, например 465 или 587.

Приведу пример фильтра (сначала можно разрешить соединения кому-то, потом заблокировать остальным):

edit firewall family inet filter BLOCK-PORT-25
set interface-specific
set term ALLOW-PORT-25 from source-address 10.0.2.6/32
set term ALLOW-PORT-25 from protocol tcp
set term ALLOW-PORT-25 from destination-port 25
set term ALLOW-PORT-25 then accept
set term BLOCK-PORT-25 from source-address 10.0.2.0/24
set term BLOCK-PORT-25 from source-address x.x.x.128/25
set term BLOCK-PORT-25 from protocol tcp
set term BLOCK-PORT-25 from destination-port 25
set term BLOCK-PORT-25 then discard
set term ALLOW-OTHER then accept

Фильтр применить нужно на исходящем интерфейсе (WAN), который смотрит в интернет, и только для исходящего трафика:

set interfaces ge-0/0/0 unit 0 family inet filter output BLOCK-PORT-25

Например у меня много исходящих VLAN интерфейсов по которым балансируется трафик по BGP, и на которых уже есть фильтр (блокировал доступ к некоторым сетям в интернете), пример:

edit interfaces ae0
set unit 555 family inet filter output blacklist-ip-drop
set unit 556 family inet filter output blacklist-ip-drop
...

Можно конечно указать одновременно несколько фильтров, но если в первом фильтре в конце есть term ALLOW-OTHER then accept, то второй фильтр не будет работать:

set unit 555 family inet filter output-list [ blacklist-ip-drop BLOCK-PORT-25 ]

По этому я отредактировал существующий фильтр:

edit firewall family inet filter blacklist-ip-drop

Удалил последний term:

delete term other then accept

Добавил правила:

set term ALLOW-PORT-25 from source-address 10.0.2.6/32
set term ALLOW-PORT-25 from protocol tcp
set term ALLOW-PORT-25 from destination-port 25
set term ALLOW-PORT-25 then accept
set term BLOCK-PORT-25 from source-address 10.0.2.0/24
set term BLOCK-PORT-25 from source-address x.x.x.128/25
set term BLOCK-PORT-25 from protocol tcp
set term BLOCK-PORT-25 from destination-port 25
set term BLOCK-PORT-25 then discard

И обязательно снова добавил в конце term который разрешает весь остальной трафик (иначе без него перестанет работать интернет):

set term ALLOW-OTHER then accept

Замечу если фильтр используется после NAT, а на моем примере это так и есть, то нужно указать не серую сеть, а белую которая используется для NAT.

Применим временную конфигурацию и убедимся что все работает (confirmed 10 позволит автоматически отменить изменения через 10 минут на случай если неправильно написали фильтр и потеряли связь с устройством):

commit check
commit confirmed 10

Если все хорошо, то сохраним конфигурацию (нужно успеть до истечения 10 минут):

commit comment "apply filter BLOCK-PORT-25"

До и после применения фильтра можно протестировать соединение с портом 25 по telnet с любым почтовым сервером, например мне попался под руку smtp.google.com, соединение установилось и отобразилось:

220 mx.google.com ESMTP ... - gsmtp

После применения фильтра ничего не отобразилось)

Смотрите также мои статьи:

Оставьте комментарий

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