Obecně o firewallu
Stavíme
si firewall
Nastaveni,ukazkove z Linux Server
-soubory firewall.sh, firewall_allow, firewall_deny atd...
Kam firewall instalovat?
nedoporucujese instalovat firewall primo na server, kde jsou citliva data vhodnejsi instalace na specialni pocitac, pres ktery server pristupuje k internetu nebo pouzit hardwarovy firewall
zbytecne pouzivat hardwarovy router a jeste firewall na serveru (ale pro paranoidni spravce neni vylouceno:))
IPchains a IPtables
-doporuceni vyuzivat IPtables (zavedeni stavove inspekce = kontroluje prichozi pakety a IP + kontrola komunikacniho protokolu)
Poradí pravidel firewallu
1. obecna pravidla
2. povoleni prichozich
3. odmitnuti ostatnich
4. logovani
Jednoduchý firewall s IPtables (dodrzovat velikost pismen)
nastavenivychozi politiky % /sbin/iptables -p INPUT DROP
pro www server zajistim pristup z naseho pocitace do systemu
% /sbin/iptables -A INPUT -s 0/0 -d 192.168.14.53 -p tcp -dport www -j ACCEPT
pro SSH
% /sbin/iptables -A INPUT -s 0/0 -d 192.168.14.53 -p tcp --dport ssh -j ACCEPT
nastaveni protokolovani do /var/log/messages (pozor aby u vetsiho provozu na serveru, nedoslo k velkemu narustu objemu logu)
% /sbin/iptables -A INPUT -j LOG
zablokuju vsechny ostatni pakety
% /sbin/iptables -A INPUT -j DROP
User-friendly firewall
dokazinastavit firewall za nas
- FIAIF Is An Intelligent Firewall (http://www.fiaif.net/)
- FireGate (http://firegate.lunarfox.com)
- Linux Router Project (http://www.linuxrouter.org/)
- PCX Firewall (http://pcxfirewall.sourceforge.net/)
- Shorewall (http://www.shorewall.net/)
Konference o firewallech
http://honor.icsalabs.com/mailman/listinfo/firewall-wizards/
Moznosti pod linuxem
- tcpwrapper
- etc/hosts.allow
- etc/hosts.deny
- etc/inetd.conf
- iptables
SPOJENCI
% iptables -L -n
% tcpdump
% ethereal
IPTABLES
% iptables -A INPUT -t filter -s ! 195.178.92.250 -p tcp --dport 23 -j DROP
# definice vnejsiho (verejneho) rozhrani firewallu
EXT_IFACE=
#definice vnitrni (privatni) rozhrani firewallu
INT_IFACE=
#pozadovany konecny cil tohoto paketu - cilova IP adresa
DEST_IP=
#omezeni rychlosti vstupu novych prichozich TCP paketu (lze tak zabranit utoku s odeprenim sluzeb DoS - Denial of Service), po zjisteni narazu 24 za sek. bude rychlost dana na 12 za sek.
#vytvoreni retezu syn-flood pro detekci utoku s odeprenim sluzeb
iptables -t nat -N syn-flood
#omezeni 12 novych spojeni za sekundu (po zjisteni narazu 24 za sek.)
iptables -t nat -A syn-flood -m limit --limit 12/s --limit-burst 24 -j RETURN
iptables -t nat -A syn-flood -j DROP
#kontrola vzniku utoku DoS s odeprenim sluzeb
iptables -t nat -A PREROUTING -i $EXT_IFACE -d $DEST_IP -p tcp --syn -j syn-flood
# transparentni proxy server Squid pro vnitrni sit, presmeruje vsechny odchozi pozadavky na TCP portu 80 do proxy serveru Squit ve firewallu, ktery pracuje nad portem 3128
iptables -t nat -A PREROUTING -i $INT_IFACE -p tcp --dport 80 -j REDIRECT --to-port 3128
# kontrola shody libovolnych priznaku TCP (blokuje pakety typu "vanocni stromecek", kterym sviti vsechny nastavene bity) a nulove pakety
iptables -t nat -A PREROUTING -p tcp --tcp-flags ALL ALL -j DROP
iptables -t nat -A PREROUTING -p tcp --tcp-flags ALL NONE -j DROP
# zakaz prichoziho prohledavani portu, nutna uprava jadra (psd)
iptables -t nat -A PREROUTING -i $EXT_IFACE -d $DEST_IP -m psd -j DROP
# zahazuje pakety od hostitele, ktery ma vice nez 16 aktivnich spojeni (jadro > iplimit)
iptables -t nat -A PREROUTING -i $EXT_IFACE -p tcp --syn -d $DEST_IP -m iplimit --iplimit-above 16 -j DROP
# zahodi pakety, ktere patri virum CodeRed a Nimda (jadro)
iptables -t filter -A INPUT -i $EXT_IFACE -p tcp -d $DEST_IP --dport http -m string --string "/default.ida?" -j DROP
iptables -t filter -A INPUT -i $EXT_IFACE -p tcp -d $DEST_IP --dport http -m string --string ".exe?/c+dir" -j DROP
iptables -t filter -A INPUT -i $EXT_IFACE -p tcp -d $DEST_IP --dport http -m string --string ".exe?/c+tftp" -j DROP
# predavani portu http s DNAT (destination NAT - ciloveho NATu) v retezu PREROUTING, preda pozadavky HTTP do urciteho systemu vnitrni site (10.0.0.3) (jadro)
iptables -t nat -A PREROUTING ! -i $INT_IFACE -p tcp --destination-port 80 -j DNAT --to 10.0.0.3:80
# odfiltrovani viru CodeRed
iptables -t filter -A FORWARD -p tcp --dport http -m string --string "/default.ida?" -j DROP
MASKOVANI
% echo "1" > /proc/sys/net/ipv4/ip_forward
% iptables -t nat -A POSTROUTING -o $EXT_IFACE -j MASQUERADE
Utoky (zakaze vse co neodpovida smerovaci tabulce) : je nutne povolit v jadre moznost "rp_filter". Pokud chci rp_filter vypnout tak staci % echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
Ukázkové příklady
BlackList,WhiteList
firewall.sh
#!/bin/sh
#WHITELIST=/usr/local/etc/whitelist.txt
#BLACKLIST=/usr/local/etc/blacklist.txt
WHITELIST=./firewall_allow.txt
BLACKLIST=./firewall_deny.txt
ALLOWED="22 25 80 443"
# odstrani vsechna stavajici pravidla
iptables -F
# nejprve projdem WHITELIST a veskery provoz z techto IP budeme prijimat
for x in `grep -v ^# $WHITELIST | awk '{print $1}'`; do
echo "povoluji $x..."
iptables -A INPUT -t filter -s $x -j ACCEPT
done
# nyni projdu cernou listinu a vse zakazu
for x in `grep -v ^# $BLACKLIST | awk '{print $1}'`; do
echo "blokuji $x..."
iptables -A INPUT -t filter -s $x -j DROP
done
# mrkneme na povolene porty
for port in $ALLOWED; do
echo "prijimam port $port..."
iptables -A INPUT -t filter -p tcp --dport $port -j ACCEPT
done
# vsechny ostatni prichozi pozadavky o navazani spojeni, s vyjimkou vyse popsanych, zahodime
iptables -A INPUT -t filter -p tcp --syn -j DROP
blacklist.txt
195.178.92.66 # odtud vel portscan 8.9.2005
7.8.9.0/24 # tady jsou mozna vetrelci
hanka.ft.utb.cz # pochybny pocitac
whitelist.txt
# toto je BLACKLIST pro skript firewall_example.sh
195.178.92.254 # muj pocak
208.201.239.0/26 # tato sit je bezpecna