Filtrace
Firewall jsme již konfigurovali na cvičení 7. Konkrétně jsme pomocí něj nastavili síťovou maškarádu. Pomocí firewallu
je možné konfigurovat chování jednotlivých portů. Například následující kód nastaví odmítnutí spojení (příznak RST
) na portu tcp/22
v systému s iptables
.
iptables -A INPUT -p tcp -i enp0s3 --dport 22 -j REJECT
INPUT
představuje tzv. chain, tedy, kdy je příchozí zpráva zpracována. INPUT
slouží pro příchozí komunikaci. OUTPUT
pro odchozí a FORWARD
pro komunikaci, která je pouze předávána.
L3 zařízení disponují firewallem a mají analogické (mnohdy lepší) možnosti fonfigurace firewallu než klientské stanice. Níže si ukážeme, jak se pracuje s firewallem v RouterOS.
# výpis spojení
ip firewall connection print
# výpis statistik
ip firewall filter print stats
Jednotlivá pravidla nastavená ve firewallu jsou aplikována postupně. Například.
# povolení ping
ip firewall filter add chain=input protocol=icmp action=accept
# povolení SSH
ip firewall filter add chain=input protocol=tcp ports=22 action=accept
# zakázání veškeré ostatní komunikace s routerem
ip firewall filter add chain=input action=drop
Postup, kterým jsou jednotlivé pakety zpracovávány se nazývá packet-flow a na různých firewallech se může lišit. Obecně lze ale pozorovat následující packet-flow.
Parametr action
lze nastavit na accept
, drop
, reject
, log
a další. Navíc lze upřesňovat jednotlivé atributy paketu tcp-flags
, src-mac-address
, out-interface
, in-intrface
a řadu dalších.
Následující příklad ukazuje možné zabezpečení routeru.
# povolení navázání spojení
ip firewall filter add action=accept chain=input connection-state=established,related
# povolení přístupu k routeru z venkovní sítě
ip firewall filter add action=accept chain=input src-address-list=povolene_ip
# povolení přístupu k routeru z vnitřní sítě
ip firewall filter add chain=input src-address=192.168.1.0/24 action=accept in-interface=!ether1
# povolení ping
ip firewall filter add action=accept chain=input protocol=icmp
# zakázání ostatní komunikace
ip firewall filter add action=drop chain=input
# určení IP adres pro přístu k routeru
ip firewall address-list add address=192.168.88.2-192.168.88.254 list=povolene_ip
Tunelování (předávání portů) skrze NAT.
# předání z portu 1234 na port 22.
ip firewall nat add chain=dstnat dst-port=1234 action=dst-nat protocol=tcp to-addresses=192.168.1.100 to-ports=22
Zadání (cvičení 10)
-
úkol 1
Nakonfigurujte firewall na routeru
R1
tak, aby přijímal ping pouze z jedné jediné MAC adresy. -
úkol 2
Nakonfigurujte firewall
PC1
:- tak aby odmítal (reject) ping (protokol icmp) na rozhraní
enp0s3
- tak aby zahazoval (drop) ping (protokol icmp) na rozhraní
enp0s3
Pomocí nástroje Wireshark zachyťte odpovědi v obou případech a určete v čem se liší.
- tak aby odmítal (reject) ping (protokol icmp) na rozhraní
-
úkol 3
Vytvořte kopii virtuálního stroje
router.ova
(R3
) a dvě kopie virtuálního strojelinux.ova
(PC1
aPC2
). Stroje propojte dle obrázku níže.PC1
připojte do venkovní (internetové) sítě10.10.0.0/16
aPC2
do lokální (intranetové) sítě192.168.88.0/24
. Ve výchozí konfifuraci by měl být funkčí ping zPC1
naPC2
a naopak. Nakonfigurujte router tak, aby- sítě byly oddělené, tedy
PC2
může provést ping naPC1
, obrácěně nikoliv; - jakmile budou sítě oddělené, zprovozněte přístup k
PC2
skrze ip adresu routeru a port1234
. Funkcionalitu ověřte příkazemssh 10.10.0.1 -p 1234
Nápověda. Pro splnění prvího bodu je třeba zajistit, aby uzel ve venkovní síti neviděl IP adresy vnitřní sítě (ani vnitřní rozhraní routeru). Rovněž je nutné, aby všechna spojení začínala ve vnitřní síti (
connection-state=new
) a byl povolen provoz, který s nimi souvisí (connection-state=established,related
). Pro splnění druhého bodu je třeba předat port1234
na port22
(SSH). Takto předaná komunikace může být identifikována pomocí parametruconnection-nat-state
. - sítě byly oddělené, tedy