Newsgroup: it.comp.os.linux.sys
Titolo: iptables

Salve a tutti vi descrivo la mia situazione:ho una adsl con un unico ip
fisso ad un mega ed ho la necessita di realizzare un server web/mail. Ho
pensato di impostare la mia rete nel seguente modo: un firewall a cui
assegno l'ip fisso e 2 sottoreti, una lan ed una finta dmz con un'indirzzo
non pubblico che navigano e passano attraverso il firewall. Il mio problema
č realizzare un firewall affidabile,voglio che da internet il firewall non
sia pingabile e sia "scannabile" con nmap il meno possibile e le uniche
porte aperte siano la 80,la25 la 110 e la 143,inoltre voglio che tutte le
richieste che arrivano su queste porte siano deviate alla mia finta dmz dove
risiede il firewall,nel mentre ovviamente la mia lan č libera di fare tutto
quello che vuole. Per il firewall pensavo di prendere una di quelle
distribuzioni linux su  floppy e caricarci sopra il mio firewall, in modo da
renderlo il piů sicuro possibile. Parto con le domande:
1)E'possibile realizzare tutto ciň?
2)Avendo un'unico indirizzo ip č corretto creare una lan e una finta dmz con
indirizzi differenti in modo da separare la parte server da quella dove i
client fanno quello che voglio?
3)Avete idee migliori su come impostare il progetto?
4)ci sono altre domande sotto nel file di configurazione.. :-))
Allego qui sotto tutto ciň che fin'ora ho realizzato č pieno di domande e
commenti potete darmi una mano o darmi dei suggerimenti su come impostare il
tutto? grazie mille ciao ciao
///////////////////////////////////////////////////----------INIZIO---------
-------\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\
#!/bin/bash
#DEFINISCO LE VARIABILI
P_WWW=80
P_SMTP=25
P_POP3=110
P_IMAP=143
INDIRIZZO_LAN=
192.168.1.0/24
INDIRIZZO_DMZ=
192.168.0.0/24
SERVER_WEB=192.168.0.1
FIREWALL=212.9XX.XXX.1
LOOPBACK=
127.0.0.0/8
#ELIMINO TUTTE LE CATENE E PULISCO TUTTE LE REGOLE INSERITE IN OGNI TABELLA
for table in nat mangle filter
do
    iptables -t $table -F
    iptables -t $table -X
done
#ATTIVO L'ATTRAVERSAMENTO DEI PACCHETTI TRAMITE IL FIREWALL
echo 1 > /proc/sys/net/ipv4/ip_forward
#IMPOSTAZIONI INIZIALI DI SICUREZZA PER PREVENIRE GENERICI ATTACCHI
#IGNORA I PING DI BROADCAST
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#IGNORA FINTI MESSAGGI DI ERRORE ICMP
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
#DISABILITA L'ICMP REDIRECTION QUESTA REGOLA NON DEVO ATTIVARLA SE NO NON
E'POSSIBILE STABILIRE CONNESSIONI TRA INTERNET
#E LA DMZ E LA LAN GIUSTO?
#echo 1 > /proc/sys/net/ipv4/conf/all/accept_redirects
#ABILITO L'rp_filter SU TUTTE LE INTERFACCE
for a in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo 1> $a
done
#ABILITO I SYNCOOKIES
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#DISABILITO L'ECN
echo 0 > /proc/sys/net/ipv4/tcp_ecn
#DEFINISCO LA POLITICA DI DEFAULT PER I PACCHETTI CHE NON SODDISFANO LE
#REGOLE. NEL CASO NESSUNA REGOLA SI POSSA APPLICARE AL PACCHETTO QUESTO
#VIENE SCARTATO (DROP)
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t nat -P POSTROUTING DROP #CORRETTO?
iptables -t nat -P PREROUTING DROP #CORRETTO?
#CON QUESTE 2 REGOLE NON SCARTO ANCHE LE 6 CATENE DA ME CREATE E TUTTE
QUELLE SUCCESSIVE? SECONDO ME NO PERCHE
#IO DICO A IPTABLES DI SCARTARE TUTTO TRANNE QUELLO CHE SPECIFICO IO.
GIUSTO?
#DIVIDO IL TRAFFICO IL 6 FLUSSI PRINCIPALI
iptables -N landmz #DALLA SCHEDA DI RETE eth0 ALLA eth1
iptables -N laninet #DALLA SCHEDA DI RETE eth0 ALLA eth2
iptables -N dmzinet #DALLA SCHEDA DI RETE eth1 ALLA eth2
iptables -N dmzlan #DALLA SCHEDA DI RETE eth1 ALLA eth0
iptables -N inetdmz #DALLA SCHEDA DI RETE eth2 ALLA eth1
iptables -N inetlan #DALLA SCHEDA DI RETE eth2 ALLA eth0
#INDICO AL KERNEL QUALI CATENE PERCORRERE IN DETERMINATE SITUAZIONI,USO
#FORWARD PERCHE' I PACCHETTI ATTRAVERSANO IL FIREWALL. BASO LE REGOLE
#SULLE INTERFACCE DI RETE E NON SUGLI IP PER PREVENIRE ATTACCHI DI TIPO
#IP-SPOOFING O SU FALSIFICAZIONE IP
iptables -A FORWARD -i eth0 -o eth1 -j landmz
iptables -A FORWARD -i eth0 -o eth2 -j laninet
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
iptables -A FORWARD -i eth2 -o eth0 -j inetlan
#DALLA LAN ALLA DMZ
#SCARTA TUTTI I PACCHETTI CHE NON PROVENGONO DALLA LAN
iptables -A landmz -s ! $INDIRIZZO_LAN -j DROP
iptables -A landmz -p tcp -d $SERVER_WEB --dport $P_WWW -j ACCEPT
iptables -A landmz -p tcp -d $SERVER_WEB --dport $P_SMTP -j ACCEPT
iptables -A landmz -p tcp -d $SERVER_WEB --dport $P_POP3 -j ACCEPT
iptables -A landmz -p tcp -d $SERVER_WEB --dport $P_IMAP -j ACCEPT
#CONSENTE DI FAR PASSARE TUTTI I PACCHETTI DI UNA CONNESSIONE GIA'STABILITA
#QUINDI SICURA MENTRE RELATED FA PASSARE TUTTI I PACCHETTI DI CONTROLLO
iptables -A landmz -m state ESTABLISHED,RELATED -j ACCEPT
#PER OGNI CONNESSIONE TCP ARRIVATA IN FONDO ALLA CATENA INVECE DI BUTTARE
#VIA IL PACCHETTO MANDA UN SEGNALE DI "tcp-reset"
iptables -A landmz -p tcp -j REJECT --reject-with tcp-reset
#DALLA DMZ ALLA LAN
iptables -A dmzlan -s ! $INDIRIZZO_DMZ -j DROP
iptables -A dmzlan -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A dmzlan -p tcp -j REJECT --reject-with tcp-reset
#DALLA LAN A INTERNET
iptables -A laninet -s ! $INDIRIZZO_LAN -j DROP
#DALLA LAN E'POSSIBILE COMPIERE QUALSIASI TIPO DI
OPERAZIONE,WINMX,IRC,MESSANGER ECC ECC..
iptables -A laninet -p all -j ACCEPT #DEVO SPECIFICARE L'INDIRIZZO DELLA LAN
COME ULTERIORE PROTEZIONE?
iptables -A laninet -m state ESTABLISHED,RELATED -j ACCEPT
iptables -A laninet -p tcp -j REJECT --reject-with tcp-reset #QUESTA REGOLA
NON E'INUTILE VISTO CHE LA LAN FA' TUTTO?
#DA INTERNET ALLA LAN
iptables -A inetlan -s ! $INDIRIZZO_LAN -j DROP
iptables -A inetlan -s ! $INDIRIZZO_DMZ -j DROP
iptables -A inetlan -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A inetlan -p tcp -j REJECT --reject-with tcp-reset
#DA INERNET ALLA DMZ
iptables -A inetdmz -s ! $INDIRIZZO_LAN -j DROP
iptables -A inetdmz -s ! $INDIRIZZO_DMZ -j DROP
iptables -A inetdmz -p tcp -d $SERVER_WEB --dport $P_WWW -j ACCEPT
iptables -A inetdmz -p tcp -d $SERVER_WEB --dport $P_SMTP -j ACCEPT
iptables -A inetdmz -p tcp -d $SERVER_WEB --dport $P_POP3 -j ACCEPT
iptables -A inetdmz -p tcp -d $SERVER_WEB --dport $P_IMAP -j ACCEPT
iptables -A inetdmz -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A inetdmz -p tcp -j REJECT --reject-with tcp-reset
#DALLA DMZ A INTERNET
iptables -A dmzinet -s ! $INDIRIZZO_DMZ -j DROP
iptables -A dmzinet -p tcp -d $SERVER_WEB --dport $P_WWW -j ACCEPT
iptables -A dmzinet -p tcp -d $SERVER_WEB --dport $P_SMTP -j ACCEPT
iptables -A dmzinet -p tcp -d $SERVER_WEB --dport $P_POP3 -j ACCEPT #POSSO
ELIMINARLE?
iptables -A dmzinet -p tcp -d $SERVER_WEB --dport $P_IMAP -j ACCEPT #POSSO
ELIMINARLE?
iptables -A dmzinet -m state --state ESTABLISHED,RELATED -j ACCEPT  #QUESTA
REGOLA NON COMPRENDE LE 2 SOPRA?
iptables -A dmzinet -p tcp -j REJECT --reject-with tcp-reset
#TRAFFICO DA E PER IL FIREWALL
#NON RISPONDERE AI PING
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#DEVO ABILITARE SUL FIREWALL IL LOOPBACK?
#iptables -A INPUT -s $LOOPBACK -j ACCEPT
#iptables -A OUTPUT -d $LOOPBACK -j ACCEPT
#QUESTA REGOLA EVITA IL RILASCIO DI INFORMAZIONI PERICOLOSE TRAMITE IL
FIREWALL, CORREGGE UN VECCHIO BUG INERENTE AL
#MASQUERADE.
iptables -A OUTPUT -m state -p -icmp --state INVALID -j DROP
#REDIRIGO LE CONNESSIONI IN INGRESSO AL FIREWALL SULLA PORTE DEI SERVIZI
WEB/POP/SMTP/IMAP VERSO IL SERVER NELLA DMZ
#NON DIRIGO AL SERVER NELLA DMZ ANCHE I PACCHETTI DESTINATI ALLA LAN SULLA
PORTA 80 PERCHE'IL FIREWALL SA'CHE QUELLI VANNO
#REDIRETTI ALLA LAN PER IL FATTO CHE LA PRIMA RICHIESTA E'SEMPRE FATTA DALLA
LAN E QUINDI QUELLI CHE ARRIVANO DA INTERNET
#SONO SOLO RISPOSTE VERSO LA LAN E IL FIREWALL SA'COME SMISTARE I PACCHETI
CORRETTAMENTE. GIUSTO?
iptables -t nat -A PREROUTING -p tcp -i eth2 --dport $P_WWW -j
DNAT --$SERVER_WEB:$P_WWW
iptables -t nat -A PREROUTING -p tcp -i eth2 --dport $P_SMTP -j
DNAT --$SERVER_WEB:$P_SMTP
iptables -t nat -A PREROUTING -p tcp -i eth2 --dport $P_POP3 -j
DNAT --$SERVER_WEB:$P_POP3
iptables -t nat -A PREROUTING -p tcp -i eth2 --dport $P_IMAP -j
DNAT --$SERVER_WEB:$P_IMAP
#INIZIO A NATTARE IN MODO DA FAR USCIRE TUTTI I PACCHETI CON L'IP DEL
FIREWALL
#MODIFICA IL MITTENTE DEI PACCHETTI USCENTI DA eth2 E PROVENIENTI DALLA DMZ
CON L'INDIRIZZO IP ESTERNO DEL FIREWALL
iptables -t nat -A POSTROUTING -o eth2 -s $INDIRIZZO_DMZ -j SNAT --to
$FIREWALL
#MODIFICA IL MITTENTE DEI PACCHETTI USCENTI DA eth2 E PROVENIENTI DALLA LAN
CON L'INDIRIZZO DEL FIREWALL
#SICCOME LA LAN USA INDIRIZZI IP DINAMICI USO MASQUERADE INVECE CHE SNAT
iptables -t nat -A POSTROUTING -o eth2 -s $INDIRIZZZO_LAN -j MASQUERADE
#AVREI DOVUTO USARE ANCORA SNAT?
#AVREI POTUTO UTILIZZARE ANCORA SNAT PERCHE'L'INDIRIZZO IP DEL FIREWALL
E'FISSO,QUALE E'MEGLIO UTILIZZARE? SNAT.. GIUSTO?
///////////////////////////////////////////////////----------FINE-----------
-----\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\

Salve a tutti devo redirigere le connessioni in ingresso sul mio
router/firewall verso un'altra macchina all'interno della mia lan.. (una
mezza dmz solo che il mio server web non ha un ip-pubblico) ho letto e
studiato e rifatto tutto tante volte.. faccio le prove con il mio firewall
casalingo ma niente non funziona.. idee?suggerimenti?dove sbaglio?allego il
mio piccolissimo script...
#PULISCO TUTTO:
for table in nat mangle filter
do
    iptables -t $table -F
    iptables -t $table -X
done
#ATTIVO L'ATTRAVERSAMENTO DEI PACCHETI
echo 1 > /proc/sys/net/ipv4/ip_forward
#ABILITO LE POLITICHE
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#GLI DICO DI REDIRIGERE LE CONNESSIONI SULLA PORTA 80 VERSO UN'ALTRA
MACCHINA
iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to
192.168.1.2
#ORA FACCIO IL VICEVERSA IN MODO CHE LA MACCHINA 192.xx.xx RISPONDA
iptables -t nat -A POSTROUTING -p tcp -o eth1 -j SNAT --to 192.168.0.1
#fine..
dove sbaglio??help me pleaseee!! ;-))