Site icon IT Blog

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

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

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

Exit mobile version