Firewall Filter
Тъй като още в началото разреших на моя Juniper SRX в недоверената зона на WAN интерфейса untrust протокола SSH за отдалечен достъп с идеята да мога да влизам от офиса, този порт на практика си остана слушащ за целия свят, което все пак не е добра идея 🙂 Затова трябва да конфигурирам защитната стена така, че да мога да влизам само от IP адресите които са ми нужни, и за всички останали в глобалната мрежа Интернет порта на SSH да бъде блокиран. Ще направя това с firewall filter по следния начин:
set firewall family inet filter WAN term 1 from source-address 93.155.130.0/24
set firewall family inet filter WAN term 1 from source-address 172.16.0.0/12
set firewall family inet filter WAN term 1 from protocol tcp
set firewall family inet filter WAN term 1 from destination-port ssh
set firewall family inet filter WAN term 1 then count ACCEPT-SSH
set firewall family inet filter WAN term 1 then accept
set firewall family inet filter WAN term 2 from protocol tcp
set firewall family inet filter WAN term 2 from destination-port ssh
set firewall family inet filter WAN term 2 then count DROP-SSH
set firewall family inet filter WAN term 2 then reject
set firewall family inet filter WAN term default then accept
set interfaces fe-0/0/0 unit 0 family inet filter input WAN
В случая имаме 3 термина: първия описва мрежите, протокола и порта като ги разрешава, втория забранява протокола и порта а третия разрешава всичко останало, Нека се има впредвид, че правилата се проследяват линейно, отгоре надолу и ако не са в този ред няма да работят коректно. Важно е да се знае, че в Juniper SRX firewall filter на практика работи след security zones/policy. И в този случай ние имаме достъп отвън първо през зоната untrust и след това пакетитие стигат до правилата които конфигурирах току що !
Може би се питате за какво е това count, ами аз точно както в Linux с iptables обичам да наблюдавам минава ли трафик в конфигурираните вериги, в този случай ще го проверя така:
Въпреки, че виждам трафик по веригите ACCEPT-SSH и DROP-SSH аз все пак за всеки случай ще направя един тест, първо ще вляза от IP адрес 93.155.130.89 който е в мрежата 93.155.130.0/24 която описахме като доверена за да се убедя, че достъпа ми е разрешен.
И ще направя същото от IP адрес 85.118.95.6 който не е в мрежата 93.155.130.0/24.
Резултата е удовлетворяващ 🙂 нямам достъп !!! Но и това не ме задоволява напълно, искам Juniper SRX да логва напълно IP адресите които са се опитали да получат достъп до SSH но не са успели защото Firewall filter ги е спрял, затова ще добавя още едно правило в term 2 с името log.
set firewall family inet filter WAN term 2 then log
След което естествено ще го проверя дали записва събития:
И супер, имам лог на IP адреса от който се опитах да се свържа.
Firewall Filter IPv6
Същите правила можем да ги приложим и за IPv6
set firewall family inet6 filter WAN6 term 1 from source-address fe80::/16
set firewall family inet6 filter WAN6 term 1 from source-address 2001:678:904::/48
set firewall family inet6 filter WAN6 term 1 from destination-port ssh
set firewall family inet6 filter WAN6 term 1 then count ACCEPT-SSH-IPv6
set firewall family inet6 filter WAN6 term 1 then accept
set firewall family inet6 filter WAN6 term 2 from destination-port ssh
set firewall family inet6 filter WAN6 term 2 then count DROP-SSH-IPv6
set firewall family inet6 filter WAN6 term 2 then reject
set firewall family inet6 filter WAN6 term default then accept
set interfaces fe-0/0/0 unit 0 family inet6 filter input WAN6
И да проверим има ли трафик по веригата.