Newsgroup: it.comp.sicurezza.unix
Titolo: Consiglio su configurazione firewall. (lunghetto)

Salve a tutti, spero di non essere fuori topo.
Volevo chiede se qualcuno che se intende piu' di me  mi puo'
controllare queste regole buttate giu' al volo per una rete che dovra'
entrare in produzione: la macchina che fa' da firewall dovrebbe essere
una linux mail_bck redhat 7.3, p200 mmx 2 gb di HD e 64 mb di ram
Confesso inanzitutto che sono nuovo a queste cose e di avere
scopiazzato  senza ritegno un ottimo testo trovato su internet
"iptables for dummies"  e ringrazio di cuore Carlo Contavalli che l'ha
scritto.  :-)
Lo scenario e' questo: avremo un collegamento cdn ad internet da dove
accedremo ad un  server web con alcuni domini (multi host, il server
ha un  solo indirizzo ip) e due server di posta 
mail.mio.com
 di
produzione e  
mail_bck.mio.com
 di backup.
Gli ip che abbiamo acquistato su internet sono 128, notare che la lan
(green) si estente su altre sedi tutte in rete tra di loro con altre
cdn con indirizzi ip del tipo
sede A -> 
192.168.0.0/24
la dmz -> 
192.168.1.0/24
 (fisicamente nella sede a)
sede B -> 
192.168.2.0/24
sede C -> 
192.168.3.0/24
sede D -> 
192.168.4.0/24
sede E -> 
192.168.5.0/24
etc.etc.
che devono accedere alle macchine della dmz per i servizi di www sul
portale interno e posta in spedizione e ricezione.
Chiaramente gli ip address di questo esempio sono inventati :-)
Range di IP:
range lan -> green 	-> 
192.168.0.0/24
range dmz -> orange	-> 
192.168.1.0/24
range inet-> red	-> 
212.216.111.128/25
indirizzo ip del router verso internet: 212.216.111.129
Indirizzi ip delle schede del firewall: 
lan -> 	192.168.0.20 	(green 	- eth0)
dmz ->	192.168.1.20 	(orange	- eth1)
inet->	212.216.111.130	(red 	- eth2)
Indirizzi IP dei server della DMZ:
mail ->		192.168.1.171
mail_bck ->	192.168.1.133
www ->		192.168.1.134
Indirizzo IP di un server oracle che vive nella lan a cui deve
accedere il 
server web:
oracle -> 192.168.0.35
Nota 1 - il dns sta' nella lan e asserve solo la lan.
Traffico:
Dalla lan alla dmz deve passare: 
pop/smtp verso mail e mail_bck
http/http verso www
dalla lan ad internet:
nulla (la navigazione e' e rimane via proxy su un'altra adsl dedicata
solo a questo)
dalla dmz alla lan:
un buco da servizi verso l'oracle e basta
dalla dmz a internet:
posta verso l'esterno
dns dal server di posta
da internet alla lan:
nulla
da internet alla dmz:
pop/smtp verso mail e mail_bck
http/http verso www
Prima di tutto modificare il file /etc/networks/interfaces affinche'
le 
schede NON partano in automatico ma solo DOPO aver alzato il firewall 
e le regole di chain
configfw.sh
#!/bin/bash
#
#inibisco il ping all'indirizzo di broadcast
#
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcast
#
#disabilita lo spoofing
#
for a in /proc/sys/net/ipv4/conf/*/rp_filter; do
	echo 1 > $d
done
#
# Abilita i syn cookies (sicuro solo su kernel recenti) DA CONTROLLARE
#
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#
# abilita il forwarding tra le schede
#
echo 1 > /proc/sys/net/ipv4/ip_forward
#
# abilito le schede: la green, la orange e la red
ip addr add 
192.168.0.254/24
 dev eth0
ip addr add 
192.168.1.254/24
 dev eth1
ip addr add 
212.216.111.128/25
 dev eth2
#
# regola di default: tutto quello che arriva a questa macchina
# viene ignorato per default , casomai scappasse qualcosa
#
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#
# creiamo le catene con nomi mnemonici:
#
iptables -N landmz		# dalla eth0 alla eth1
iptables -N dmzinet		# dalla eth1 alla eth2
iptables -N dmzlan		# dalla eth1 alla eth0
iptables -N inetdmz		# dalla eth2 alla eth1
#
# creiamo le regole di istradamento (quello descritto nei commenti qui
sopra)
#
iptables -A FORWARD -i eth0 -o eth1 -j landmz
iptables -A FORWARD -i eth1 -o eth2 -j dmzinet
iptables -A FORWARD -i eth1 -o eth0 -j dmzlan
iptables -A FORWARD -i eth2 -o eth1 -j inetdmz
#
# regole dei pacchetti
# Tutto quello che va' alla dmz e non e'lan viene droppato
#
iptables -A landmz -s ! 
192.168.0.0/24
 -j DROP
#
# accetto il traffico dalla lan al server web sul WWW
#
iptables -A landmz -p tcp -s 192.168.1.134 --dport www -j accept
#
# accetto il traffico dalla lan al server mail su smtp e pop3
#
iptables -A landmz -p tcp -s 192.168.1.171 --dport smtp -j accept
iptables -A landmz -p tcp -s 192.168.1.171 --dport pop3 -j accept
#
# stessa cosa per mail_bck ma da accendere alla bisogna decommentando
e riavviando lo script
#
# iptables -A landmz -p tcp -s 192.168.1.133 --dport smtp -j accept
# iptables -A landmz -p tcp -s 192.168.1.133 --dport pop3 -j accept
#
# dalla dmz puo' andare alla lan solo le risposte alle richieste
# che dalla lan sono fatte alla dmz
#
iptables -A dmzlan -p tcp -s ! 
192.168.1.0/24
 -j DROP
iptables -A dmzlan -m state --state ESTABILISHED,RELATED -j ACCEPT
#
# da internet alla dmz sono accessibili www...
#
iptables -A inetdmz -p tcp 192.168.1.134 -dport www -j ACCEPT
#
# ...mail e mail_bck
#
iptables -A inetdmz -p tcp 192.168.1.171 -dport smtp -j ACCEPT
# iptables -A inetdmz -p tcp 192.168.1.133 -dport smtp -j ACCEPT
#
# e ritorno delle richieste dall'estreno
#
iptables -A inetdmz -m state ESTABILISHED,RELATED -j ACCEPT
# 
# dalla dmz a internet esce la posta da spedire e il necessario dns
#
iptables -A dmzinet -m state --state ESTABILISHED,RELATED -j ACCEPT
iptables -A dmzinet -p tcp --dport smtp -j ACCEPT
iptables -A dmzinet -p udp --dport domain -j ACCEPT
iptables -A dmzinet -p tcp --dport domain -j ACCEPT
#
# dal www dmz all'oracle in lan e ritorno
#
iptables -A -s 
192.168.23.134/32
 -d 
192.168.22.35/32
 -p tcp --dport
1521 -j ACCEPT
iptables -A dmzlan -m state ESTABILISHED,RELATED -j ACCEPT
#
# attivare le schede e settare il default gateway (router cisco)
#
ip link set up dev eth0
ip link set up dev eth1
ip link set up dev eth2
ip route add default gw 212.216.111.129
#
# fine (I HOPE)
#
grazie a tutti

 un buco da servizi verso l'oracle e basta
No, sbagliatissimo!!!
Non deve esserci collegamento dalla DMZ alla Lan, se mai il contrario.
Altrimenti vanifichi lo scopo della DMZ.
-- 
don't feed the troll
partecipa anche tu all'iniziativa:
"il primo fanculo ? quello che conta"
killa in silenzio, vivi felice

 # iptables -A inetdmz -p tcp 192.168.1.133 -dport smtp -j ACCEPT
  ^
Idem come sopra. E ti perdi anche la fault tolerance che puoi
implementare con u nsecondo record MX.
Altro:
- Non ho visto lo snat per dmzinet e inetdmz.
- La tua interfaccia pubblica ha solo un indirizzo: il record MX e
  il www.tuodominio hanno lo stesso indirizzo ip?
- In tutto questo non ha trovato spazio un qualche cosa per poterti
  fare amministrare fw e macchine in dmz da remoto. In alcuni casi,
  a mio parere, e' molto comodo. In (fortunatamente) pochi casi mi
  e' stato indispensabile. Che ne so: ssh, per dirne una, magari con
  autenticazione a chiave pubblica.
- Se hai tempo Leggi anche il Linux Advanced Routing HOWTO.
Fabio

Altrimenti vanifichi lo scopo della DMZ.
mmmm
Quindi dicic he dovrei mettere il server oracle nella dmz e lasciare
tutto li ???

 tutto li ???
la DMZ si usa per separare fisicamente la rete LAN dalla parte pubblica; 
da una dmz non deve essere possibile arrivare alla lan. L'unico percorso 
possibile e' dalla lan alla DMZ. In questo modo, un intruso che 
compromettesse un sistema sulla DMZ non avrebbe accesso alla LAN, dove di 
fatto sarebbero custoditi i sistemi e i dati che non devono essere resi 
disponibili. 
Sul server oracle sulla DMZ lascerei, quando possibile, solo i database 
che devono essere accessibili dall'esterno. I dati che devono essere 
accessibili solo sulla lan vanno lasciati su un server all'interno della 
lan. Se i dati in DMZ devono essere disponibili anche dal database in 
LAN, si dovra' procedere all'accesso sulla dmz, iniziato, pero' dalla 
lan.
Spero di essere stato chiaro.
HappyCactus


 (posta) e vnz per i server www (nt 4)
Puoi usare ssh anche per win nt, anche se vnc ti consente interventi
che via shell non puoi fare su winnt. In ogni caso dovresti valutare
la possibilita' di usare vnc su ssh, in modo da rendere piu' sicuro,
per quanto un po' lo sia gia', il canale di comunicazione.
Non avete pensato anche ad un NIDS?
Fabio

HappyCactus
Il tuo nick non mi e' nuovo, scrivi (o scrivevi) anche su qualche
newsgroup della serie 
free.it
 hackers o sulla ML dei mackeroni o
qualcosa del genere ?
salute e saluti

Non avete pensato anche ad un NIDS?
Mi manca anche questo.  :-)
Se come dice il proverbio "saggio e' colui che sa' di non sapere" mi
crescera' la barba bianca a giorni :-)))
salute e saluti

 Mi manca anche questo.  :-)
IDS sta per Intrusion Detection System. La N davanti specifica che si
tratta di un IDS di rete, in contrapposizione a quelli host based (H).
Serve a rilevare anomalie nel traffico e, soprattutto, ad individuare
traffico di rete sospetto, derivante da tentativi di intrusione o da
accessi indesiderati o worm ecc. Il piu' noto, direi, e' snort, che e'
opensource, aggratisse, e anche uno dei migliori: meglio di cosi' :))
(
www.snort.org
). E' un oggetto molto utile, quasi indispensabile.
Fabio

 qualcosa del genere ?
No, non mi pare di aver mai scritto sulla free (anche se l'ho seguita per 
un po')
