Firewalling�
Key Security Concepts
Firewalling
A che serve un firewall classico?
A cosa NON serve
Terminologia
Tipi di firewall
Tipica configurazione con firewall
DMZ
LAN (REDAREA)
Mondo esterno
10.1.1.0/24
10.1.0.0/30
10.1.2.0/24
eth1
eth2
eth0
Esigenze tipiche aziendali
Funzionamento di IPTables
Definizione delle policy�
iptables –P catena politica
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
politica=DROP, REJECT, ACCEPT
IPTABLES -L
Prime catene
Come creare una nuova catena:
iptables –N nomecatena
iptables -N landmz
#dalla scheda di rete eth0 alla scheda di rete eth1
iptables -N laninet
#dalla scheda di rete eth0 alla scheda di rete eth2
iptables -N dmzinet
#dalla scheda di rete eth1 alla scheda di rete eth2
iptables -N dmzlan
#dalla scheda di rete eth1 alla scheda di rete eth0
iptables -N inetdmz
#dalla scheda di rete eth2 alla scheda di rete eth1
iptables -N inetlan
#dalla scheda di rete eth2 alla scheda di rete eth0
Prime catene
Aggiungere una nuova regola
iptables –A nomecatena condizioni –j decisione
decisione=un nome di catena, oppure DROP, REJECT, ACCEPT
iptables -A FORWARD -i eth1 -o eth2 -j landmz
iptables -A FORWARD -i eth1 -o eth0 -j laninet
iptables -A FORWARD -i eth2 -o eth0 -j dmzinet
iptables -A FORWARD -i eth2 -o eth1 -j dmzlan
iptables -A FORWARD -i eth0 -o eth2 -j inetdmz
iptables -A FORWARD -i eth0 -o eth1 -j inetlan
Dalla LAN alla DMZ
Tipi di condizione
iptables -A landmz ! -s 10.1.1.0/24 -j DROP
iptables -A landmz ! -d 10.1.2.0/24 -j DROP
iptables -A landmz -p tcp -d server.web --dport http -j ACCEPT
iptables -A landmz -p tcp -d server.smtp --dport smtp -j ACCEPT
iptables -A landmz -p tcp -d server.pop3 --dport pop3 -j ACCEPT
iptables -A landmz -p tcp -d server.proxy --dport webcache –j ACCEPT
iptables -A landmz -p tcp -d server.dns --dport domain -j ACCEPT
iptables -A landmz -p udp -d server.dns --dport domain -j ACCEPT
Dalla DMZ alla LAN
Regole stateful
opzione –m state
--state [ESTABLISHED,RELATED,NEW,INVALID]
Regole non stateful
opzioni per controllare i flag
--syn se il segmento ha i flag SYN=1, ACK=0, RST=0
--tcp-flags FLAG_da_Controllare FLAG_a_1
Esempio
--tcp-flags SYN,ACK ACK
vero per segmenti con SYN=0,ACK=1 (RST, URG, PSH possono valere qualsiasi cosa)
iptables -A dmzlan ! -s 10.1.2.0/24 -j DROP
iptables -A dmzlan ! -d 10.1.1.0/24 -j DROP
iptables -A dmzlan -m state --state ESTABLISHED,RELATED -j ACCEPT
oppure
iptables -A dmzlan –p tcp ! -–syn -j ACCEPT
oppure
iptables -A dmzlan –p tcp –tcp-flags ! SYN,ACK,RST SYN -j ACCEPT
iptables -A dmzlan -p tcp -j REJECT --reject-with tcp-reset
Dalla LAN ad Internet
iptables -A laninet ! -s 10.1.1.0/24 -j DROP
iptables -A laninet -p tcp --dport ftp -j ACCEPT
iptables -A laninet -p tcp --dport http -j ACCEPT
iptables -A laninet -p tcp --dport https -j ACCEPT
iptables -A laninet -m state ESTABLISHED,RELATED -j ACCEPT
iptables -A laninet -p tcp -j REJECT --reject-with tcp-reset
Da Internet alla LAN
iptables -A inetlan ! –d 10.1.1.0/24 -j DROP
iptables -A inetlan –s 10.1.2.0/24 -j DROP
iptables -A inetlan –s 10.1.1.0/24 -j DROP
iptables -A inetlan -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A inetlan -p tcp -j REJECT --reject-with tcp-reset
DMZ<->Internet
Da Internet alla DMZ
iptables -A inetdmz -s 10.1.1.0/24 -j DROP
iptables -A inetdmz -s 10.1.2.0/24 -j DROP
iptables -A inetdmz -p tcp -d nostro.server.web --dport http -j ACCEPT
iptables -A inetdmz -p tcp -d nostro.server.smtp --dport smtp -j ACCEPT
iptables -A inetdmz -p tcp -d nostro.dns --dport domain -j ACCEPT
iptables -A inetdmz -p udp -d nostro.dns --dport domain -j ACCEPT
iptables -A inetdmz -p tcp -d nostro.ftpserver --dport ftp -j ACCEPT
iptables -A inetdmz -m state --state ESTABLISHED,RELATED –j ACCEPT
iptables -A inetdmz -p tcp -j REJECT --reject-with tcp-reset
Da DMZ a Internet
iptables -A dmzinet -s ! 10.1.2.0/24 -j DROP
iptables -A dmzinet -p tcp -s nostro.server.smtp --dport smtp -j ACCEPT
iptables -A dmzinet -p udp -s nostro.server.dns --dport domain -j ACCEPT
iptables -A dmzinet -p tcp -s nostro.server.dns --dport domain -j ACCEPT
iptables -A dmzinet -p tcp -s nostro.server.proxy --dport http -j ACCEPT
iptables -A dmzinet -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A dmzinet -p tcp -j REJECT --reject-with tcp-reset
Traffico da e per il Firewall
Modulo limit
Per limitare il numero di connessioni nel tempo. Si può usare anche per limitare i problemi di SYN flood.
Opzioni per ICMP
--icmp-type tipo, dove tipo può essere echo-request, echo-reply, network-unreachable, ecc...
iptables -A INPUT -m limit --limit 10/min -p tcp --syn --dport ssh -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
Performance
Mascheratura (NAT)