Ограничение доступа к управлению на Juniper MX

В этой статье я приведу пример ограничения доступа к управлению Juniper MX204, с использованием брандмауэра (firewall).

Допустим сервисы SSH и Telnet активированы, создан пользователь и назначен IP адрес какому либо интерфейсу:

configure
set system services ssh
set system services telnet
show system services

set system login user ixnfo authentication plain-text-password
set system login user ixnfo class super-user

set interfaces fxp0 unit 0 family inet address 192.168.24.200/24
set routing-options static route 0.0.0.0/0 next-hop 192.168.24.1 no-readvertise
show routing-options

set interfaces lo0 unit 0 family inet address 172.17.0.1/21

set interfaces et-0/0/2 unit 500 family inet address 192.168.90.8/28

Теперь приступим к созданию списка разрешенных IP адресов, с которых можно будет подключиться к устройству по SSH или Telnet, например назовем его «manager-ip»:

set policy-options prefix-list manager-ip 192.168.24.0/24
set policy-options prefix-list manager-ip 10.0.5.1/32
show policy-options

edit policy-options
delete prefix-list manager-ip 10.0.5.1/32
show
exit

Теперь создадим в брандмауэре фильтр, например назовем его «limit-mgmt-access», в котором запретим всем подключение к tcp портам ssh и telnet, а разрешим только IP адресам указанным в списке manager-ip:

set firewall filter limit-mgmt-access term block_non_manager from source-address 0.0.0.0/0
set firewall filter limit-mgmt-access term block_non_manager from source-prefix-list manager-ip except
set firewall filter limit-mgmt-access term block_non_manager from protocol tcp
set firewall filter limit-mgmt-access term block_non_manager from destination-port ssh
set firewall filter limit-mgmt-access term block_non_manager from destination-port 2222
set firewall filter limit-mgmt-access term block_non_manager from destination-port telnet
set firewall filter limit-mgmt-access term block_non_manager from destination-port snmp
set firewall filter limit-mgmt-access term block_non_manager from destination-port dhcp
set firewall filter limit-mgmt-access term block_non_manager from destination-port bgp
set firewall filter limit-mgmt-access term block_non_manager then log
set firewall filter limit-mgmt-access term block_non_manager then discard
set firewall filter limit-mgmt-access term accept_everything_else then accept

Правило «then log» позволяет писать логи подключений для отладки и его можно не указывать или позже удалить.
Последнее правило обязательно укажем, оно разрешает весь остальной входящий трафик.
Если порт ssh не стандартный или нужно ограничить доступ к еще к каким-то службам, то перечислим номера портов, например «from destination-port 2222».

Посмотрим на созданный фильтр в брандмауэре:

run show firewall

Применим созданный фильтр на нужные интерфейсы с IP адресами (если указать фильтр на lo0, то он может повлиять и на другие интерфейсы):

set interfaces lo0 unit 0 family inet filter input limit-mgmt-access
set interfaces fxp0 unit 0 family inet filter input limit-mgmt-access
set interfaces et-0/0/2 unit 500 family inet filter input limit-mgmt-access
show interfaces

Выйдем в CLI и посмотрим логи брандмауэра:

exit
show firewall log
show firewall log detail
clear firewall log

Из CLI также можно подключаться по SSH к другим устройствам:

ssh user@10.0.5.254
exit

Приведу еще пример создания фильтра который разрешает трафик SSH и BGP для указанных сетей и блокирует весь остальной (хочу заметить, если на Juniper настроены DHCP, Radius, то их нужно тоже перечислить, иначе пользователям не будут выданы IP адреса и т.д.):

set firewall family inet filter protect-RE term ssh-term from source-address 172.15.0.5/28
set firewall family inet filter protect-RE term ssh-term from source-address 10.0.0.0/24
set firewall family inet filter protect-RE term ssh-term from protocol tcp 
set firewall family inet filter protect-RE term ssh-term from destination-port 2222 
set firewall family inet filter protect-RE term ssh-term then accept 
set firewall family inet filter protect-RE term bgp-term from source-address 10.2.1.0/24 
set firewall family inet filter protect-RE term bgp-term from protocol tcp 
set firewall family inet filter protect-RE term bgp-term from destination-port bgp 
set firewall family inet filter protect-RE term bgp-term then accept 
set firewall family inet filter protect-RE term discard-rest-term then log 
set firewall family inet filter protect-RE term discard-rest-term then syslog 
set firewall family inet filter protect-RE term discard-rest-term then discard
set interfaces lo0 unit 0 family inet filter input protect-RE

Еще пример, разрешаем подключения на все порты к Juniper для указанных сетей и блокируем для остальных:

set firewall family inet filter protect-RE term allow-all from source-address 172.15.0.5/32
set firewall family inet filter protect-RE term allow-all from source-address 10.0.10.0/24
set firewall family inet filter protect-RE term allow-all from protocol tcp 
set firewall family inet filter protect-RE term allow-all from destination-port 0-65535 
set firewall family inet filter protect-RE term allow-all then accept 
set firewall family inet filter protect-RE term discard-rest-term then log 
set firewall family inet filter protect-RE term discard-rest-term then syslog 
set firewall family inet filter protect-RE term discard-rest-term then discard
set interfaces lo0 unit 0 family inet filter input protect-RE

Чтобы убедиться что в фильтре перечислили все открытые порты, то можно из Linux выполнить сканирование портов, например:

nmap -p1-65535 192.168.55.55

Можно сделать несколько фильтров и потом указать их через «filter input-list».
Не рекомендую использовать reject вместо discard, так как с reject на RE будут генерироваться ответы на пакеты, что затратно для CPU.

Смотрите также мои статьи:
Настройка Juniper MX204
IPTables правила для DHCP

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

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