Tűzfal beállítása Ubuntuban Készítette: Nemes Krisztián
Lássuk először a teljes szkriptet: #--------------------------------- firewall.sh #!/bin/bash #modulok betoltese modprobe ip_conntrack_ftp iptables -F #Minden szabaly torlese iptables -X #Ures lancok torlese iptables -P INPUT DROP #Default policy beallitasa iptables -P OUTPUT DROP iptables -P FORWARD DROP #INPUT lanc iptables -A INPUT -i lo -j ACCEPT #rogton eldobando csomagok: iptables -A INPUT -p tcp -m multiport --dport 67,135,137,138,139,445,1026,1027,5900,6881 -j DROP iptables -A INPUT -p udp -m multiport --dport 67,135,137,138,139,445,1026,1027,5900 -j DROP iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 22 -m mac --mac-source 11:11:11:11:11:11 -j ACCEPT #ssh iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/m --limit-burst 1 -j ACCEPT iptables -A INPUT -j LOG --log-prefix "INPUT_DROP: " iptables -A INPUT -j DROP #OUTPUT lanc iptables -A OUTPUT -o lo -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp -m multiport --dport 20,21,43,80,443 -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -j ACCEPT #DNS iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT #ftp iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT #ftp iptables -A OUTPUT -p tcp --dport 2379 -j ACCEPT #KGS iptables -A OUTPUT -j LOG --log-prefix "OUTPUT_DROP: " iptables -A OUTPUT -j DROP if test -r /etc/iptables.rules; then rm -f /etc/iptables.rules fi #Tűzfal mentése iptables-save -c > /etc/iptables.rules echo "A Tuzfal mentese sikeres!" #--------------------firewall.sh
A tűzfal működési elve: A be- és kimenő adatok csomagok formájában jelennek meg. Ezeket a csomagokat kell ellenőrizni, majd átengedni, vagy letiltani. Ezt láncok segítségével tudjuk a legegyszerűbben megoldani. A 3 alapértelmezett lánc az INPUT, OUTPUT és FORWARD.
A láncok működési elve: A láncokat láncszabályokkal tudjuk pontosítani. Ennek lényege, hogy több szabályt is létrehozunk pl. az INPUT-on belül. Ezek legyenek: 1. szabály, 2.szabály, 3. szabály… Minden szabály más-más méretű csomagokat kezel. Az 1. a legkisebbet, a 2. nagyobbat, a 3. mégnagyobbat… Ha valamelyik csomagot egyik szabály sem tudja kezelni, akkor az a házszabályhoz kerül. A házszabály előre beállított, pl. a hozzá kerülő csomagokat eldobja.
Láncok és láncszabályok: Input: Output: Forward: 1. szabály 2. szabály 3. szabály … házszabály 1. szabály 2. szabály 3. szabály … házszabály 1. szabály … házszabály
Most nézzünk egy példát INPUT-ra: Csomag (75kb) 1. szabály (< 3kb) 2. szabály (< 8kb) 3. szabály (< 30kb) 4. szabály (< 50kb) házszabály (eldobás)
A szkript értelmezése Modulok betöltése: Szabályok/láncok törlése: modprobe ip_conntrack_ftp Szabályok/láncok törlése: iptables -F iptables -X Alaphelyzetbe állítás: iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP Itt bármyilen új láncot hozzáadhatunk! iptables -P „BÁRMI” DROP
INPUT lánc házszabályának beállítása: Gépen belüli kommunikáció engedélyezése: iptables -A INPUT -i lo -j ACCEPT lo interface(loopback) Azonnal eldobandó csomagok: iptables -A INPUT -p tcp -m multiport --dport 67,135,137,138,139,445,1026,1027,5900,6881 -j DROP iptables -A INPUT -p udp -m multiport --dport 67,135,137,138,139,445,1026,1027,5900 -j DROP iptables -A INPUT -j LOG --log-prefix "INPUT_DROP: " iptables -A INPUT -j DROP Különböző portok Engedélyezett csomagok: iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 22 -m mac --mac-source 11:11:11:11:11:11 -j ACCEPT #ssh iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/m --limit-burst 1 -j ACCEPT Saját kérések Távoli asztali kapcsolat Pingelés tesztelése
megcsináljuk a többi láncra is! INPUT lánc házszabályának beállítása: Érkezett csomagok „loggolása”: iptables -A INPUT -j LOG --log-prefix "INPUT_DROP: " Maradék eldobása: iptables -A INPUT -j DROP Ugyanezt a folyamatot megcsináljuk a többi láncra is!
A Tűzfal mentése: Mentési hely megadás: Mentés: Automatikus indítás: if test -r /etc/iptables.rules; then rm -f /etc/iptables.rules fi Ha a fájl már létezik, töröljük! Mentés: iptables-save -c > /etc/iptables.rules if test -r /etc/iptables.rules; then echo "A Tuzfal mentese sikeres!" fi #--------------------firewall.sh Szól, ha sikerült a mentés. Automatikus indítás: - /etc/rc.local fájl megnyitása - A fájl végén levő „exit 0” parancs elé iptables-restore < /etc/iptables.rules
Fontosabb port-ok: 20, 21: FTP 43, 80, 443: Böngésző 67: DHCP szerver címe 135, 137, 138, 139, 445: Windows-portok 2379: Játék-szerverek 5900: VNC-szerver 6881: Bittorrent
Köszönöm a figyelmet!