PDA

View Full Version : [howto] firewall con dmz


HexDEF6
15-06-2007, 17:02
La DMZ

La DMZ (De-Militarized Zone, Zona De-Militarizzata) e' un tratto di rete a cui
possono accedere tutti (o quasi), e' dove si trovano i server che possono
essere visti da internet.
Di solito i server in DMZ, hanno ip privati, e per poter essere raggiunti da
internet deve esserci un nodo di collegamento con l'esterno che "gira le
chiamate" sulla DMZ.

Perche' usare una DMZ

La prima soluzione quando si deve mettere in piedi un server (supponiamo un
server web, quindi sulla porta 80) e' quello di metterlo sul computer che ha
l'ip pubblico. Questa soluzione e' semplice, necessita del solo server, ma
presenta alcuni inconvenienti. Infatti se per caso il server viene "bucato"
l'attaccante avra' accesso alla macchina che molto probabilmente, oltre a far
girare il server, ha accesso anche alla rete interna (LAN) e quindi si trova
in una posizione privilegiata per poter prendere il controllo (o
spiare/rubare/fare quello che vuole) di altri computer, facilitato anche dal
fatto che in moltissimi casi i computer interni (per noncuranza o per
necessita') non presentano "molti ostacoli" per poter essere compromessi.

La soluzione e' quella di avere un computer con ip pubblico dove non gira
assolutamente nessun servizio visibile da internet, che redirigera' le
chiamate "permesse" sul server in DMZ (nel nostro caso la porta 80).
Nel caso di un attacco andato a buon fine, l'attaccante avra' a disposizione
la macchina dove gira il server, ma da questa (se il firewall sara' ben
configurato) non potra' accedere ne ad internet, ne alla LAN interna, rendendo
il proprio sforzo "inutile".
L'importanza della DMZ si fa ancora maggiore quando il numero di servizi
aumenta, infatti piu' servizi si hanno attivi, piu' possibilita' ha un
attaccante di trovare qualche appiglio, quindi di solito si tenta di mettere
in DMZ un server distinto (reale o virtualizzato) per ogni servizio, in modo
tale che la compromissione di un servizio, non vada a compromettere tutto.
Ovviamente la divisione dei servizi su diverse macchine non e' sempre
possibile (mancanza di hardware, complicazioni a livello software ecc.) ma
comunque sia anche se obbligati a far girare X servizi su una macchina,
l'obbligo di mettere questa in DMZ rimane (sto parlando nei casi in cui
l'accesso ad internet non serve solo per i server, ma anche per far navigare
dei client in LAN).

cosa serve

Per poter gestire una DMZ, abbiamo bisogno sostanzialmente di un computer con
3 schede di rete (anche un normalissimo pentium 1 e' sufficente, almeno che
non abbiate una linea da 10Mbit o piu', ma allora il problema per prendere una
macchina piu' grande credo non ci sia!).
Un server da mettere in DMZ (puo' benissimo essere un windows o quello che si
vuole... basta sapere su che porte girano i servizi!).
Un computer da mettere in LAN.
Saper usare linux almeno per riuscire ad installare una distribuzione, e saper
configurare le schede di rete.
Perdere un po di tempo con iptables per mettere tutto a posto!.

Delle 3 schede di rete avremo che eth0 ha un ip pubblico (e' collegata ad
internet), eth1 ha un ip privato a cui e' collegata la LAN, eth2 ha un ip
privato con collegata la DMZ.

il firewall

Ovviamente la cosa principale della DMZ e' il firewall:


#!/bin/bash

IPT=/sbin/iptables
NET="eth0"
LAN="eth1"
DMZ="eth2"
LO="lo"

IP_NET="30.30.30.30."
IP_LAN="192.168.10.1"
IP_DMZ="192.168.20.1"
IP_LO="127.0.0.1"
RANGE_IP_LAN="192.168.10.0/24"
RANGE_IP_DMZ="192.168.20.0/24"
SERVER_WEB="192.168.20.20"

#pulisco tutto
$IPT -F
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F -t mangle
$IPT -F -t nat
$IPT -X

#imposto il comportamento di default
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP


#abilito l'ip forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

#creo dei chan nuovi per "ogni" tipo di connessione (vedi sotto)
$IPT -N net_to_lan
$IPT -N lan_to_net
$IPT -N net_to_dmz
$IPT -N dmz_to_net
$IPT -N lan_to_dmz
$IPT -N dmz_to_lan
$IPT -N server_to_net
$IPT -N net_to_server
$IPT -N lan_to_server
$IPT -N server_to_lan
$IPT -N dmz_to_server
$IPT -N server_to_dmz

#accetto in input sull'interfaccia LO tutto quello che viene dagli ip locali
$IPT -A INPUT -p ALL -i $LO -s $IP_LO -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_LAN -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_NET -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_WRL -j ACCEPT

$IPT -A OUTPUT -p ALL -o $LO -d $IP_LO -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_LAN -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_NET -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_WRL -j ACCEPT

#rispondo ai ping (non fondamentale, ma a volte e' comodo)
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

#redirigo le chiamate fatte sulla porta 80 al server in DMZ
$IPT -t nat -A PREROUTING -i $NET -d $IP_NET -p tcp --dport 80 -j DNAT --to
$SERVER_WEB

#faccio snat dei computer in LAN (e quindi gli permetto di uscire su internet)
$IPT -t nat -A POSTROUTING -o $NET -s $RANGE_IP_LAN -j SNAT --to-source
$IP_NET

#divido le connessioni (FORWARD) in base alla provenienza/destinazione
$IPT -A FORWARD -i $NET -o $LAN -j net_to_lan
$IPT -A FORWARD -i $LAN -o $NET -j lan_to_net
$IPT -A FORWARD -i $NET -o $DMZ -j net_to_dmz
$IPT -A FORWARD -i $DMZ -o $NET -j dmz_to_net
$IPT -A FORWARD -i $LAN -o $DMZ -j lan_to_dmz
$IPT -A FORWARD -i $DMZ -o $LAN -j dmz_to_lan

#divido anche le connessioni in input....
$IPT -A INPUT -i $NET -j net_to_server
$IPT -A INPUT -i $LAN -j lan_to_server
$IPT -A INPUT -i $DMZ -j dmz_to_server

#... e output
$IPT -A OUTPUT -o $NET -j server_to_net
$IPT -A OUTPUT -o $DMZ -j server_to_dmz
$IPT -A OUTPUT -o $LAN -j server_to_lan

#da internet verso la LAN accetto solo le connessioni related,estabilished
$IPT -A net_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT

#dalla LAN permetto di uscire su tutte le porte
$IPT -A lan_to_net -j ACCEPT

#dalla DMZ verso internet accetto solo le connesioni related o estabilished
$IPT -A dmz_to_net -m state --state RELATED,ESTABLISHED -j ACCEPT

#accetto le connessioni verso il server web in DMZ
$IPT -A net_to_dmz -d $SERVER_WEB -p tcp --dport 80 -j ACCEPT

#dalla LAN posso accedere a tutte le porte del server in DMZ (tipo per poterci
accedere via ssh per poterlo gestire)
$IPT -A lan_to_dmz -j ACCEPT

#dalla dmz verso la lan accetto solamente le connessioni related ed
estabilished...
$IPT -A dmz_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT

#accetto tutte le connessioni fatte dalla LAN verso il server (considero la
mia rete interna SICURA)
$IPT -A lan_to_server -j ACCEPT

#accetto solo le connessioni related o estabilished che il server fa alla LAN
$IPT -A server_to_lan -j ACCEPT


con questa configurazione abbiamo che:

le richieste fatte sulla porta 80 vengano rigirate al server in DMZ
il server in DMZ non puo' aprire connessioni verso internet ne verso la LAN,
ma solo rispondere a delle connessioni iniziate dalla LAN o INTERNET
i client nella LAN navigano tutti verso internet, e possono accedere sia al
server in DMZ si al server che fa da firewall

analizziamo alcune parti:

#imposto il comportamento di default
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP


con questa configurazione di default abbiamo che qualunque cosa non sia
ESPLICITAMENTE permessa viene negata, quindi bisogna aggiungere regole per
poter fare cose in piu'.
Questo e' la base su cui costruire, infatti se ci dimentichiamo qualcosa,
offriremo qualcosa in meno, ma non saremo piu' vulnerabili (come nel caso si
partisse da accettare tutto di default e poi negare le connessioni
pericolose).


#redirigo le chiamate fatte sulla porta 80 al server in DMZ
$IPT -t nat -A PREROUTING -i $NET -d $IP_NET -p tcp --dport 80 -j DNAT --to
$SERVER_WEB


questa e' la parte fondamentale, dove tutte le connessioni fatte sulla porta
80 vengono redirette all'ip del server in DMZ.
Ricordo che con iptables, i pacchetti per prima cosa girano nella catena di
prerouting, e poi nelle altre catene (che siano input o forward), e il
postrouting avviene dopo le altre catene (output o forward).
In questo caso se non ci fosse la regola sopra, il pacchetto entrerebbe nella
catena di input (visto che e' diretto all'ip della scheda eth0), ma invece
grazie a questa regola il pacchetto passa nella catena di forward (infatti non
e' piu' diretto ad un ip "locale" cioe' presente sulla macchina stessa).


#faccio snat dei computer in LAN (e quindi gli permetto di uscire su internet)
$IPT -t nat -A POSTROUTING -o $NET -s $RANGE_IP_LAN -j SNAT --to-source
$IP_NET


questa regola serve per far navigare su internet tutte le connessioni che
provengono dalla LAN, praticamente all'uscita della catena di forward, viene
manipolato il pacchetto cambianto l'ip sorgente (che passa da un ip della LAN
che lo ha generato all'ip pubblico del firewall), iptables tenendo traccia
delle connessioni, quando arrivano i pacchetti di risposta, li redirige
automaticamente all'ip della LAN che li aveva generati.


#divido le connessioni (FORWARD) in base alla provenienza/destinazione
$IPT -A FORWARD -i $NET -o $LAN -j net_to_lan
$IPT -A FORWARD -i $LAN -o $NET -j lan_to_net
$IPT -A FORWARD -i $NET -o $DMZ -j net_to_dmz
$IPT -A FORWARD -i $DMZ -o $NET -j dmz_to_net
$IPT -A FORWARD -i $LAN -o $DMZ -j lan_to_dmz
$IPT -A FORWARD -i $DMZ -o $LAN -j dmz_to_lan

#divido anche le connessioni in input....
$IPT -A INPUT -i $NET -j net_to_server
$IPT -A INPUT -i $LAN -j lan_to_server
$IPT -A INPUT -i $DMZ -j dmz_to_server

#... e output
$IPT -A OUTPUT -o $NET -j server_to_net
$IPT -A OUTPUT -o $DMZ -j server_to_dmz
$IPT -A OUTPUT -o $LAN -j server_to_lan


la divisione delle connessioni in base all'interfaccia di entrata/uscita, in
questo caso puo' sembrare un po inutile, visto le regole che applichiamo dopo,
ma diventa comodissima nel caso si voglia aggiungere qualcosa piu' avanti.
Tutto lo script rimane molto piu' pulito e comprensibile, inoltre siccome
conta in che ordine vengono chiamate le regole, se aggiungiamo un nuovo tipo
di connessione, possiamo aggiungere le regole che la riguardano in fondo al
nostro script, senza preoccuparci in che posizione le mettiamo (ovviamente la
regola di "ingresso" alla connessione deve essere nel punto giusto!)

veniamo alla parte principale del firewall:

#da internet verso la LAN accetto solo le connessioni related,estabilished
$IPT -A net_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT

#dalla LAN permetto di uscire su tutte le porte
$IPT -A lan_to_net -j ACCEPT

con queste due regole accetto tutte le connessioni fatte dalla LAN verso
internet e accetto le risposte.


#dalla DMZ verso internet accetto solo le connesioni related o estabilished
$IPT -A dmz_to_net -m state --state RELATED,ESTABLISHED -j ACCEPT

#accetto le connessioni verso il server web in DMZ
$IPT -A net_to_dmz -d $SERVER_WEB -p tcp --dport 80 -j ACCEPT

con queste permetto di ricevere le connessioni sulla porta 80 al server in DMZ
e rispondere, ma non permetto di iniziare connessioni


#dalla LAN posso accedere a tutte le porte del server in DMZ (tipo per poterci
accedere via ssh per poterlo gestire)
$IPT -A lan_to_dmz -j ACCEPT

#dalla dmz verso la lan accetto solamente le connessioni related ed
estabilished...
$IPT -A dmz_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT

qui permetto agli ip in LAN di accedere ai server in DMZ, e ovviamente devo
accettare le risposte. Anche in questo caso non permetto al server in DMZ di
fare connessioni dirette verso la LAN.


#accetto tutte le connessioni fatte dalla LAN verso il firewall (considero la
mia rete interna SICURA)
$IPT -A lan_to_server -j ACCEPT

#accetto solo le connessioni related o estabilished che il firewall fa alla
LAN
$IPT -A server_to_lan -j ACCEPT

qui accetto le connessioni dalla LAN verso il firewall e le risposte, anche in
questo caso, non permetto al firewall di iniziare connessioni verso la LAN.

complicazioni

sembrerebbe che il nostro firewall sia a posto, ma in verita' non e' proprio
cosi, infatti abbiamo che:

non riusciamo a capire se il nostro server in DMZ e' stato compromesso
sia il firewall sia il server web non possono fare connessioni verso
internet, compresi gli IMPORTANTISSIMI aggiornamenti
i 2 server non riescono nemmeno a risolvere i nomi

quindi le cose da fare sono:

ad aggiungere un paio di log, nel caso che:

il server web tenti di fare connessioni verso internet o verso la LAN o
verso il server
il firewall tenti di fare connessioni verso la LAN o la DMZ o INTERNET

permettere sia al firewall sia al server web di raggiungere degli ip su
internet per fare gli update
permettere di risolvere i nomi a entrambi

quindi il nuovo script per il firewall diventa:


#!/bin/bash

IPT=/sbin/iptables
NET="eth0"
LAN="eth1"
DMZ="eth2"
LO="lo"

IP_NET="30.30.30.30."
IP_LAN="192.168.10.1"
IP_DMZ="192.168.20.1"
IP_LO="127.0.0.1"
IP_WEB_UPDATE="40.40.40.40"
IP_FTP_UPDATE="50.50.50.50"
IP_DNS1="45.45.45.45"
IP_DNS2="55.55.55.55"
RANGE_IP_LAN="192.168.10.0/24"
RANGE_IP_DMZ="192.168.20.0/24"
SERVER_WEB="192.168.20.20"

#pulisco tutto
$IPT -F
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F -t mangle
$IPT -F -t nat
$IPT -X

#imposto il comportamento di default
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP


#abilito l'ip forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

#creo dei chan nuovi per "ogni" tipo di connessione (vedi sotto)
$IPT -N net_to_lan
$IPT -N lan_to_net
$IPT -N net_to_dmz
$IPT -N dmz_to_net
$IPT -N lan_to_dmz
$IPT -N dmz_to_lan
$IPT -N server_to_net
$IPT -N net_to_server
$IPT -N lan_to_server
$IPT -N server_to_lan
$IPT -N dmz_to_server
$IPT -N server_to_dmz

#accetto in input sull'interfaccia LO tutto quello che viene dagli ip locali
$IPT -A INPUT -p ALL -i $LO -s $IP_LO -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_LAN -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_NET -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_WRL -j ACCEPT

$IPT -A OUTPUT -p ALL -o $LO -d $IP_LO -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_LAN -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_NET -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_WRL -j ACCEPT

#rispondo ai ping (non fondamentale, ma a volte e' comodo)
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

#redirigo le chiamate fatte sulla porta 80 al server in DMZ
$IPT -t nat -A PREROUTING -i $NET -d $IP_NET -p tcp --dport 80 -j DNAT --to
$SERVER_WEB

#faccio snat dei computer in LAN (e quindi gli permetto di uscire su internet)
$IPT -t nat -A POSTROUTING -o $NET -s $RANGE_IP_LAN -j SNAT --to-source
$IP_NET

#divido le connessioni (FORWARD) in base alla provenienza/destinazione
$IPT -A FORWARD -i $NET -o $LAN -j net_to_lan
$IPT -A FORWARD -i $LAN -o $NET -j lan_to_net
$IPT -A FORWARD -i $NET -o $DMZ -j net_to_dmz
$IPT -A FORWARD -i $DMZ -o $NET -j dmz_to_net
$IPT -A FORWARD -i $LAN -o $DMZ -j lan_to_dmz
$IPT -A FORWARD -i $DMZ -o $LAN -j dmz_to_lan

#divido anche le connessioni in input....
$IPT -A INPUT -i $NET -j net_to_server
$IPT -A INPUT -i $LAN -j lan_to_server
$IPT -A INPUT -i $DMZ -j dmz_to_server

#... e output
$IPT -A OUTPUT -o $NET -j server_to_net
$IPT -A OUTPUT -o $DMZ -j server_to_dmz
$IPT -A OUTPUT -o $LAN -j server_to_lan

#da internet verso la LAN accetto solo le connessioni related,estabilished
$IPT -A net_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT

#dalla LAN permetto di uscire su tutte le porte
$IPT -A lan_to_net -j ACCEPT

#dalla DMZ verso internet accetto solo le connesioni related o estabilished
$IPT -A dmz_to_net -m state --state RELATED,ESTABLISHED -j ACCEPT
#permetto gli update
$IPT -A dmz_to_net -d $IP_WEB_UPDATE -p tcp --dport 80 -j ACCEPT
$IPT -A dmz_to_net -d $IP_FTP_UPDATE -p tcp --dport 21 -j ACCEPT
#permetto di risolvere nomi
$IPT -A dmz_to_net -d $IP_DNS1 -p udp --dport 53 -j ACCEPT
$IPT -A dmz_to_net -d $IP_DNS2 -p udp --dport 53 -j ACCPET
#se il tipo di connessione non e' fra quelli permessi, lo loggo
$IPT -A dmz_to_net -j LOG --log-prefix dmz_to_net:

#accetto le connessioni verso il server web in DMZ
$IPT -A net_to_dmz -d $SERVER_WEB -p tcp --dport 80 -j ACCEPT
#devo anche accettare le connessioni stabilite dal server web per
aggiornamenti e dns
$IPT -A net_to_dmz -m state --state RELATED,ESTABLISHED -j ACCEPT

#dalla LAN posso accedere a tutte le porte del server in DMZ (tipo per poterci
accedere via ssh per poterlo gestire)
$IPT -A lan_to_dmz -j ACCEPT

#dalla dmz verso la lan accetto solamente le connessioni related ed
estabilished...
$IPT -A dmz_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT
#loggo tutte le altre connessioni dal server web verso la lan
$IPT -A dmz_to_lan -j LOG --log-prefix dmz_to_lan:

#accetto tutte le connessioni fatte dalla LAN verso il server (considero la
mia rete interna SICURA)
$IPT -A lan_to_server -j ACCEPT

#accetto solo le connessioni related o estabilished che il server fa alla LAN
$IPT -A server_to_lan -j ACCEPT

#permetto gli update del firewall
$IPT -A server_to_net -d $IP_WEB_UPDATE -p tcp --dport 80 -j ACCEPT
$IPT -A server_to_net -d $IP_FTP_UPDATE -p tcp --dport 21 -j ACCEPT
#permetto di risolvere nomi
$IPT -A server_to_net -d $IP_DNS1 -p udp --dport 53 -j ACCEPT
$IPT -A server_to_net -d $IP_DNS2 -p udp --dport 53 -j ACCPET
#se il tipo di connessione non e' fra quelli permessi, lo loggo
$IPT -A server_to_net -j LOG --log-prefix dmz_to_net:

#permetto al firewall che riceva le risposte
$IPT -A net_to_server -m state --state RELATED,ESTABLISHED -j ACCEPT

#loggo i tentativi del server in dmz di accedere al firewall
$IPT -A dmz_to_server -j LOG --log-prefix dmz_to_server:


In questo modo dovremmo essere piu' o meno a posto, comunque con
configurazioni diverse le cose potrebbero complicarsi, ma come base potrebbe
funzionare.

cambiamenti possibili/idee varie

se sia il server web sia il firewall usano la stessa distribuzione, e quindi
gli stessi server per fare update (oltre che gli stessi dns), si potrebbero
cambiare alcuni parti del firewall, in modo da rendere piu' comoda l'aggiunta
di altri eventuali ip per update o altri servizi che i server possono
raggiungere in internet.


#dalla DMZ verso internet accetto solo le connesioni related o estabilished
$IPT -A dmz_to_net -m state --state RELATED,ESTABLISHED -j ACCEPT
#permetto gli update
$IPT -A dmz_to_net -d $IP_WEB_UPDATE -p tcp --dport 80 -j ACCEPT
$IPT -A dmz_to_net -d $IP_FTP_UPDATE -p tcp --dport 21 -j ACCEPT
#permetto di risolvere nomi
$IPT -A dmz_to_net -d $IP_DNS1 -p udp --dport 53 -j ACCEPT
$IPT -A dmz_to_net -d $IP_DNS2 -p udp --dport 53 -j ACCPET
#se il tipo di connessione non e' fra quelli permessi, lo loggo
$IPT -A dmz_to_net -j LOG --log-prefix dmz_to_net:

#permetto gli update del firewall
$IPT -A server_to_net -d $IP_WEB_UPDATE -p tcp --dport 80 -j ACCEPT
$IPT -A server_to_net -d $IP_FTP_UPDATE -p tcp --dport 21 -j ACCEPT
#permetto di risolvere nomi
$IPT -A server_to_net -d $IP_DNS1 -p udp --dport 53 -j ACCEPT
$IPT -A server_to_net -d $IP_DNS2 -p udp --dport 53 -j ACCPET
#se il tipo di connessione non e' fra quelli permessi, lo loggo
$IPT -A server_to_net -j LOG --log-prefix dmz_to_net:


queste due parti potrebbero diventare cosi:


$IPT -N permitted
$IPT -A permitted -d $IP_WEB_UPDATE -p tcp --dport 80 -j ACCEPT
$IPT -A permitted -d $IP_FTP_UPDATE -p tcp --dport 21 -j ACCEPT
#permetto di risolvere nomi
$IPT -A permitted -d $IP_DNS1 -p udp --dport 53 -j ACCEPT
$IPT -A permitted -d $IP_DNS2 -p udp --dport 53 -j ACCPET
#se il tipo di connessione non e' fra quelli permessi, lo loggo
$IPT -A permitted -j LOG --log-prefix dmz_to_net:


#dalla DMZ verso internet accetto solo le connesioni related o estabilished
$IPT -A dmz_to_net -m state --state RELATED,ESTABLISHED -j ACCEPT
#permetto un po di cose ai server in dmz
$IPT -A dmz_to_net -j permitted

#permetto un po di cose al firewall
$IPT -A server_to_net -j permitted


inoltre se abbiamo molti server in dmz si potrebbero dividere le connessioni
per ogni server del tipo al posto di:

$IPT -A FORWARD -i $NET -o $DMZ -j net_to_dmz
$IPT -A FORWARD -i $DMZ -o $NET -j dmz_to_net



$IPT -A FORWARD -i $NET -o $DMZ -d $IP_WEB -j net_to_dmz_web
$IPT -A FORWARD -i $NET -o $DMZ -d $IP_SMTP -j net_to_dmz_smtp
$IPT -A FORWARD -i $DMZ -o $NET -s $IP_WEB -j dmz_to_net_web
$IPT -A FORWARD -i $DMZ -o $NET -s $IP_SMTP -j dmz_to_net_smtp


questo per avere un controllo piu' granulare su cosa puo' fare ogni server in
DMZ e non trattandoli tutti genericamente.

ATTENZIONE!

Vi ricordo che prima di implementare un firewall "importante" e' meglio darsi un'occhiata a http://www.netfilter.org/ non prendete tutto per giusto quello che ho scritto! Ovviamente se notate errori fatemelo sapere, stessa cosa vale se avete suggerimenti

Ciao!

WebWolf
15-06-2007, 22:46
Ipcop, smoothwall e monowall.

:D

Ottimo lavoro, speriamo serva e chiarisca le idee.

mic.ele
15-06-2007, 23:19
WOW!!

scusate l'ignoranza ma io sto migrando a Linux da Windows soprattutto perchè mi sono rotto di avere il sistema attufato da panda, mcafee, ad-aware, spybot, etc. (anche perchè è gratis, si lo ammetto)...

insomma Linux dovrebbe essere più sicuro di Windows, dato che per un utente domestico il firestarter firewall dovrebbe essere sufficiente.... giusto?

o hai voluto fare una guida per utenti piuttosto che per utonti (come me)? :D

ciao

HexDEF6
16-06-2007, 10:53
Ipcop, smoothwall e monowall.

:D

Ottimo lavoro, speriamo serva e chiarisca le idee.

grazie, spero anch'io sia utile a qualcuno.

tra le altre cose che volevo provare c'era pure shorewall... ma saro' bacato io ma lo trovavo piu' difficile di iptables!
Comunque credo che se si vuole capire minimamente un frontend per firewall (tipo guardog firestarter, o anche shorewall), una ripassata di iptables non puo' far male!

WOW!!

scusate l'ignoranza ma io sto migrando a Linux da Windows soprattutto perchè mi sono rotto di avere il sistema attufato da panda, mcafee, ad-aware, spybot, etc. (anche perchè è gratis, si lo ammetto)...

insomma Linux dovrebbe essere più sicuro di Windows, dato che per un utente domestico il firestarter firewall dovrebbe essere sufficiente.... giusto?


per uso domestico firestarter va benissimo!


o hai voluto fare una guida per utenti piuttosto che per utonti (come me)? :D

ciao

beh una dmz si fa quando ci sono dei server abbastanza importanti, direi che non e' molto utile al comune utente a casa, quindi questa guida dovrebbe solamente essere uno spunto per chi sa gia usare iptables, ma deve fare qualcosa di un po piu' serio che il firewall casalingo.

WebWolf
16-06-2007, 13:15
Shorewall è un baco di Webmin.

;)

darkbasic
28-10-2007, 16:42
Così non vale, io a suo tempo mi sono fatto un mazzo grande tanto per imparare ad usare iptables e tu ci regali una guida esaustiva e alla portata di tutti per creare una DMZ? :cry: :p E' tradizione che imparare ad usare iptables comporti sofferenze atroci e nottate insonni passate davanti al man, non lo sai? :O :sofico:
Sarebbe interessante approfondire il discorso aggiungendo la parte riguardante il filtraggio a livello applicativo (layer 7), dal momento che la documentazione al riguardo scarseggia.
Ciao e complimenti per il lavoro, gli ho dato una rapida occhiata e sembra ben fatto ;)

Edit: io non mi fiderei a lasciare il firewall accessibile dalla lan, una bussatina (http://en.wikipedia.org/wiki/Port_knocking) prima non farebbe male ;)

HexDEF6
28-10-2007, 16:59
Così non vale, io a suo tempo mi sono fatto un mazzo grande tanto per imparare ad usare iptables e tu ci regali una guida esaustiva e alla portata di tutti per creare una DMZ? :cry: :p E' tradizione che imparare ad usare iptables comporti sofferenze atroci e nottate insonni passate davanti al man, non lo sai? :O :sofico:


:D


Sarebbe interessante approfondire il discorso aggiungendo la parte riguardante il filtraggio a livello applicativo (layer 7), dal momento che la documentazione al riguardo scarseggia.


come al solito, io mi metto a studiare cose solo quando mi servono (per adesso sto sbattendo la testa un po su openldap e autenticazioni varie, e a programmare un po in python), quindi per ora non ho in programma di ampliare :(


Ciao e complimenti per il lavoro, gli ho dato una rapida occhiata e sembra ben fatto ;)


grazie!



Edit: io non mi fiderei a lasciare il firewall accessibile dalla lan, una bussatina (http://en.wikipedia.org/wiki/Port_knocking) prima non farebbe male ;)

beh in effetti nel 90% dei casi considerare la LAN trusted non e' il massimo, ma nel mio per adesso siamo in 10 nei nostri uffici, quindi in caso di danno posso picchiare il responsabile :D
ah e per il port knocking, avevo gia incluso qualcosa nella mia guida sull'ssh :D

darkbasic
28-10-2007, 17:02
quindi in caso di danno posso picchiare il responsabile :D
Spesso si rivela la soluzione migliore :sofico: :asd:

Shang Tsung
29-10-2007, 18:52
Ottimo lavoro.

Volevo chiederti una cosa:


Delle 3 schede di rete avremo che eth0 ha un ip pubblico (e' collegata ad
internet)
NET="eth0"
IP_NET="30.30.30.30."

Cosa intendi esattamente?
eth0 è collegata ad un modem ethernet? se si, non ci dovrebbe essere anche una connessione ppp0?

30.30.30.30 è un falso ip pubblico o un indirizza che hai dato tu alla scheda di rete?

HexDEF6
29-10-2007, 21:34
Ottimo lavoro.

Volevo chiederti una cosa:


Delle 3 schede di rete avremo che eth0 ha un ip pubblico (e' collegata ad
internet)
NET="eth0"
IP_NET="30.30.30.30."

Cosa intendi esattamente?
eth0 è collegata ad un modem ethernet? se si, non ci dovrebbe essere anche una connessione ppp0?

30.30.30.30 è un falso ip pubblico o un indirizza che hai dato tu alla scheda di rete?

siccome abbiamo X ip pubblici, abbiamo un router che come "rete interna" ha una sottorete di ip pubblici, quindi niente ppp e su eth0 c'e' proprio uno di questi ip pubblici!

globalace
05-02-2008, 11:00
Scusa mi sta incuriosando iptable, ho a disposizione un solo ip pubblico 64.32.y.cxx, se assegno all'interfaccia lan 10.0.0.1 e all'interfaccia router 10.0.0.2 il tutto dovrebbe funzionare?

HexDEF6
05-02-2008, 12:51
Scusa mi sta incuriosando iptable, ho a disposizione un solo ip pubblico 64.32.y.cxx, se assegno all'interfaccia lan 10.0.0.1 e all'interfaccia router 10.0.0.2 il tutto dovrebbe funzionare?

normalmente no...
infatti avresti 2 interfacce nello stesso range di ip...
ti consiglio di usare 10.0.0.X da una parte e 10.0.1.X dall'altra... ricordandoti di specificare una netmask adeguata (normalmente per la classe 10.x.x.x e' 255.0.0.0, invece tu devi usare 255.255.255.0) ovviamente se hai bisogno di molti ip nella tua lan, puoi sempre usare un 10.1.0.1 e un 10.0.0.1 (con netmask 255.255.0.0)

Ciao

jtclark
13-07-2009, 13:07
#accetto in input sull'interfaccia LO tutto quello che viene dagli ip locali
$IPT -A INPUT -p ALL -i $LO -s $IP_LO -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_LAN -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_NET -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_WRL -j ACCEPT

$IPT -A OUTPUT -p ALL -o $LO -d $IP_LO -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_LAN -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_NET -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_WRL -j ACCEPT


Buongiorno a tutti,
con tutta la buona volonta' non ho capito cosa sia $IP_WRL
chi mi spiega?
grazie in anticipo

HexDEF6
13-07-2009, 13:28
#accetto in input sull'interfaccia LO tutto quello che viene dagli ip locali
$IPT -A INPUT -p ALL -i $LO -s $IP_LO -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_LAN -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_NET -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_WRL -j ACCEPT

$IPT -A OUTPUT -p ALL -o $LO -d $IP_LO -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_LAN -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_NET -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_WRL -j ACCEPT


Buongiorno a tutti,
con tutta la buona volonta' non ho capito cosa sia $IP_WRL
chi mi spiega?
grazie in anticipo

ciao...
togli quella riga...
ho visto che c'e' qualche errore... visto che avevo preso il firewall che avevo messo in ufficio e strippato le parti che non servivano (tipo quelle dell'interfaccia della wireless... a cui si riferisce la riga)

comunque quello che consiglio non e' un copia incolla... ma piu' che altro una base per capire e poi modificare per il proprio firewall...

jtclark
13-07-2009, 13:36
comunque quello che consiglio non e' un copia incolla... ma piu' che altro una base per capire e poi modificare per il proprio firewall...[/QUOTE]

no infatti anche perche' la mia zona e' totalmente diversa diverse le eth e via dicendo, solo che dopo averlo letto 3 volte e non aver capito cosa accidenti fosse ho pensato bhe se glielo chiedo me lo dira' :)

HexDEF6
14-07-2009, 09:54
no infatti anche perche' la mia zona e' totalmente diversa diverse le eth e via dicendo, solo che dopo averlo letto 3 volte e non aver capito cosa accidenti fosse ho pensato bhe se glielo chiedo me lo dira' :)

ok :D
se hai bisogno di consigli... basta che chiedi, e faccio il possibile per rispondere!

jtclark
15-07-2009, 08:58
ok :D
se hai bisogno di consigli... basta che chiedi, e faccio il possibile per rispondere!

ne approfitto subito allora :)
se posto qui sotto il mio script modificato gli dai un occhiata e mi dici cosa ne pensi?

HexDEF6
15-07-2009, 09:03
ne approfitto subito allora :)
se posto qui sotto il mio script modificato gli dai un occhiata e mi dici cosa ne pensi?

se ho un attimo di tempo si... magari se e' anche un attimo commentato cosi riesco a capire meglio cosa vuoi fare, ci metto meno! :D

maxime
15-07-2009, 09:10
Davvero una guida completa, complimenti!
Mi viene solo un dubbio: non pensi sia il caso, soprattutto per chi inizia, di mettere su un serverino con qualche distro tipo IPCop, Smoothwall o Endian Firewall?
Più che altro richiedeno una conoscenza molto meno approfondita di iptables e networking in generale..

HexDEF6
15-07-2009, 09:15
Davvero una guida completa, complimenti!
Mi viene solo un dubbio: non pensi sia il caso, soprattutto per chi inizia, di mettere su un serverino con qualche distro tipo IPCop, Smoothwall o Endian Firewall?
Più che altro richiedeno una conoscenza molto meno approfondita di iptables e networking in generale..

non metto in dubbio che certe distro aiutino parecchio... ma se alla fine bisogna fare un lavoro "serio" meglio sbatterci la testa quando i possibili danni sono limitati...
e comunque lo considero un esercizio per imparare qualcosa, non dovrebbe essere una cosa fine a se stessa, ma un inizio per imparare cose nuove che potrebbero venir utili in futuro.
Alla fine nelle grosse aziende si usano tutti apparati hardware (che poi magari usano lo stesso un linux con iptables :D ) ma sapere come funziona veramente, ti da una bella mano anche per usare questi aggeggi!

jtclark
15-07-2009, 09:26
se ho un attimo di tempo si... magari se e' anche un attimo commentato cosi riesco a capire meglio cosa vuoi fare, ci metto meno! :D
e' commentato un po alla mia maniera mezzo italiano mezzo inglese ma ho tolto le parolacce


#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#
#
# set a few variables
echo "Welcome in ale336"
echo "Alessandra sei la mia vita"
echo " setting global variables"
echo ""
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
REDHAT=NO ##set yes if run under redhat machine
IPT="`whereis -b iptables | cut -d \" \" -f 2`"

NET="eth0"
WEB=eth0:0
LAN="eth1"
PROXY="eth1:0"
DMZ="eth3"
LO="lo"
CASA=bla.bla.bla.bla

IP_NET=`ifconfig $NET | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_WEB=`ifconfig $WEB | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_LAN=`ifconfig $LAN | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_DMZ=`ifconfig $DMZ | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_PROXY=`ifconfig $PROXY | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_LO="127.0.0.1"
RANGE_IP_LAN="192.168.2.0/24"
RANGE_IP_DMZ="192.168.200.0/24"
SERVER_WEB="192.168.200.2"
CLUSTER="192.168.2.10"
IP_WEB_UPDATE=security.debian.org
FTP_WEB_UPDATE=ftp.debian.org

# adjust /proc
echo " applying general security settings to /proc filesystem"
echo ""
if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then echo 1 > /proc/sys/net/ipv4/tcp_syncookies; fi
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter; fi
if [ -e /proc/sys/net/ipv4/ip_forward ]; then echo 1 > /proc/sys/net/ipv4/ip_forward; fi
if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ]; then echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses; fi
if [ -e /proc/sys/net/ipv4/conf/all/accept_source_route ]; then echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route; fi
if [ -e /proc/sys/net/ipv4/tcp_ecn ]; then echo 0 > /proc/sys/net/ipv4/tcp_ecn; fi
if [ -e /proc/sys/net/ipv4/conf/all/send_redirects ]; then echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects; fi
if [ -e /proc/sys/net/ipv4/conf/all/secure_redirects ]; then echo 1 > /proc/sys/net/ipv4/conf/all/secure_redirects; fi
if [ -e /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ]; then echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts; fi
if [ -e /proc/sys/net/ipv4/conf/all/accept_redirects ]; then echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects; fi
if [ -e /proc/sys/net/ipv4/netfilter/ip_ct_generic_timeout ]; then echo 120 > /proc/sys/net/ipv4/netfilter/ip_ct_generic_timeout; fi
if [ -f /proc/sys/net/ipv4/conf/eth0/log_martians ]; then echo 1 > /proc/sys/net/ipv4/conf/eth0/log_martians; fi
if [ -f /proc/sys/net/ipv4/conf/eth1/log_martians ]; then echo 0 > /proc/sys/net/ipv4/conf/eth1/log_martians; fi
if [ -f /proc/sys/net/ipv4/tcp_timestamps ]; then echo 1 > /proc/sys/net/ipv4/tcp_timestamps; fi


#pulisco tutto
$IPT -F
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F -t mangle
$IPT -F -t nat
$IPT -X

#imposto il comportamento di default
$IPT -t nat POSTROUTING -P ACCEPT
$IPT -t nat PREROUTING -P ACCEPT
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP



#creo dei chan nuovi per tipo di connessione
$IPT -N net_to_lan
$IPT -N lan_to_net
$IPT -N web_to_dmz
$IPT -N dmz_to_web
$IPT -N lan_to_dmz
$IPT -N dmz_to_lan
$IPT -N server_to_web
$IPT -N web_to_server
$IPT -N lan_to_server
$IPT -N server_to_lan
$IPT -N dmz_to_server
$IPT -N server_to_dmz

#accetto in input sull'interfaccia LO tutto quello che arriva da se stessa
$IPT -A INPUT -p ALL -i $LO -s $IP_LO -j ACCEPT

$IPT -A OUTPUT -p ALL -o $LO -d $IP_LO -j ACCEPT


#rispondo ai ping (non fondamentale, ma a volte e' comodo)
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

#redirigo le chiamate fatte sulla porta 443 al server in DMZ
$IPT -t nat -A PREROUTING -i $WEB -d $IP_WEB -p tcp --dport 443 -j DNAT --to
$SERVER_WEB
#idem per il dns ci metto un bind per fare i giochini
$IPT -t nat -A PREROUTING -i $WEB -d $IP_WEB -p udp --dport 53 -j DNAT --to
$SERVER_WEB

#faccio snat dei computer in LAN altrimenti non escono e si sentono le urla
$IPT -t nat -A POSTROUTING -o $NET -s $RANGE_IP_LAN -j SNAT --to-source
$IP_NET

#divido le connessioni (FORWARD) in base alla provenienza/destinazione
$IPT -A FORWARD -i $NET -o $LAN -j net_to_lan
$IPT -A FORWARD -i $LAN -o $NET -j lan_to_net
$IPT -A FORWARD -i $WEB -o $DMZ -j web_to_dmz
$IPT -A FORWARD -i $DMZ -o $WEB -j dmz_to_web
$IPT -A FORWARD -i $LAN -o $DMZ -j lan_to_dmz
$IPT -A FORWARD -i $DMZ -o $LAN -j dmz_to_lan

#divido anche le connessioni in input....
$IPT -A INPUT -i $WEB -j web_to_server
$IPT -A INPUT -i $LAN -j lan_to_server
$IPT -A INPUT -i $DMZ -j dmz_to_server

#... e output
$IPT -A OUTPUT -o $WEB -j server_to_WEB
$IPT -A OUTPUT -o $DMZ -j server_to_dmz
$IPT -A OUTPUT -o $LAN -j server_to_lan

#da internet verso la LAN accetto solo le connessioni related,estabilished
$IPT -A net_to_lan -m state --state INVALID -j DROP
$IPT -A net_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT

#dalla LAN permetto di uscire
$IPT -A lan_to_net -j ACCEPT

#dalla DMZ verso internet accetto solo le connesioni related o estabilished
$IPT -A dmz_to_web -m state --state RELATED,ESTABLISHED -j ACCEPT

#accetto le connessioni verso il server web in DMZ
$IPT -A INPUT -d $IP_WEB -p tcp --dport 443 --m state --state NEW -j ACCEPT
$IPT -A web_to_dmz -d $SERVER_WEB -p tcp --dport 443 -j ACCEPT

#dalla LAN posso accedere a tutte le porte del server in DMZ
$IPT -A lan_to_dmz -j ACCEPT

#dalla dmz verso la lan accetto solamente le connessioni related ed
estabilished non ne servono altre
$IPT -A dmz_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT

#accetto le connessioni fatte dalla LAN verso il server
$IPT -A lan_to_server -j ACCEPT

#accetto solo le connessioni related o estabilished che il server fa alla LAN
$IPT -A server_to_lan -j ACCEPT
#permetto gli update del firewall
$IPT -A dmz_to_net -d $IP_WEB_UPDATE -p tcp --dport 80 -j ACCEPT
$IPT -A dmz_to_net -d $IP_FTP_UPDATE -p tcp --dport 21 -j ACCEPT
$IPT -A server_to_net -d $IP_WEB_UPDATE -p tcp --dport 80 -j ACCEPT
$IPT -A server_to_net -d $IP_FTP_UPDATE -p tcp --dport 21 -j ACCEPT
#permetto di risolvere nomi da scommentare sei bind non funziona a dovere
#$IPT -A dmz_to_net -d $IP_DNS1 -p udp --dport 53 -j ACCEPT
#$IPT -A dmz_to_net -d $IP_DNS2 -p udp --dport 53 -j ACCPET
#se il tipo di connessione non e' fra quelli permessi, lo loggo
$IPT -A server_to_net -j LOG --log-prefix dmz_to_net:

#permetto al firewall che riceva le risposte
$IPT -A net_to_server -m state --state RELATED,ESTABLISHED -j ACCEPT

#loggo i tentativi del server in dmz di accedere al firewall
$IPT -A dmz_to_server -j LOG --log-prefix dmz_to_server:

#tunnel vari
$IPT -A INPUT -i $NET -m state --state NEW,ESTABLISHED,RELATED \
-p tcp --dport 7200 -j ACCEPT
$IPT -A INPUT -i $NET -m state --state NEW,ESTABLISHED,RELATED \
-p tcp --dport 7298 -j ACCEPT
$IPT -A INPUT -i $NET -m state --state NEW,ESTABLISHED,RELATED \
-p tcp --dport 7299 -j ACCEPT
$IPT -A INPUT -i $NET -m state --state NEW,ESTABLISHED,RELATED \
-p udp --dport 7207 -j ACCEPT
$IPT -A INPUT -i $NET -m state --state NEW,ESTABLISHED,RELATED \
-p tcp --dport 7300 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 775 -j DNAT --to-destination 192.168.2.10:775
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7200 -j DNAT --to-destination 192.168.2.10:7200
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7200 -j DNAT --to-destination 192.168.2.3:7200
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7298 -j DNAT --to-destination 192.168.2.10:7298
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7299 -j DNAT --to-destination 192.168.2.10:7299
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7207 -j DNAT --to-destination 192.168.2.254:7207
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7300 -j DNAT --to-destination 192.168.2.254:7300
$IPT -A FORWARD -i $NET -p tcp --dport 775 -o $LAN -j ACCEPT
$IPT -A FORWARD -i $NET -p tcp --dport 7200 -o $LAN -j ACCEPT
$IPT -A FORWARD -i $NET -p tcp --dport 7298 -o $LAN -j ACCEPT
$IPT -A FORWARD -i $NET -p tcp --dport 7299 -o $LAN -j ACCEPT
$IPT -A FORWARD -i $NET -p udp --dport 7207 -o $LAN -j ACCEPT
$IPT -A FORWARD -i $NET -p tcp --dport 7300 -o $LAN -j ACCEPT
## fine tunnel
#unauthorized lan
$IPT -I INPUT -s 10.0.0.0/8 -j DROP
$IPT -I INPUT -s 172.16.0.0/12 -j DROP
$IPT -I INPUT -s 192.168.0.0/16 -j DROP
$IPT -I INPUT -s 127.0.0.0/8 -j DROP
$IPT -I INPUT -s 224.0.0.0/4 -j DROP

$IPT -I FORWARD -s 10.0.0.0/8 -j DROP
$IPT -I FORWARD -s 172.16.0.0/12 -j DROP
$IPT -I FORWARD -s 192.168.0.0/16 -j DROP
$IPT -I FORWARD -s 127.0.0.0/8 -j DROP
$IPT -I FORWARD -s 224.0.0.0/4 -j DROP

## stop netbios logging
$IPT -I INPUT -p tcp --dport 135:139 -j DROP
$IPT -I INPUT -p udp --dport 135:139 -j DROP
$IPT -I INPUT -p tcp --dport 445 -j DROP
# icmp
echo " applying icmp rules"
echo ""
$IPT -A OUTPUT -p icmp -m state --state NEW -j ACCEPT
$IPT -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-request -i $NET -j DROP

# apply icmp type match blocking
echo " applying icmp type match blocking"
echo ""
$IPT -I INPUT -p icmp --icmp-type redirect -j DROP
$IPT -I INPUT -p icmp --icmp-type router-advertisement -j DROP
$IPT -I INPUT -p icmp --icmp-type router-solicitation -j DROP
$IPT -I INPUT -p icmp --icmp-type address-mask-request -j DROP
$IPT -I INPUT -p icmp --icmp-type address-mask-reply -j DROP
# squid
echo " applying squid rules"
echo ""
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.82 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.100 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.200 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.210 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.239 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.240 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.251 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.252 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.253 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.254 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.1 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.2 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.3 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.4 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.5 -j ACCEPT
### accept for dummy
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.15 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.245 -j ACCEPT
## non dovrebbe servire visto che c'e' autenticazione ntlm ma la metto lo stesso.
$IPT -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
## le stampanti di rete parlano troppo cio' e' male
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.33 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.32 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.34 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.35 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.38 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.31 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.30 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.37 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.39 --dport 110 -j DROP

$IPT -A FORWARD -i $NET -p tcp --dport 7300 -o $LAN -j ACCEPT
#$IPT -I INPUT -p tcp --dport 21 -i $NET -m state --state NEW -m recent --set
#$IPT -I INPUT -p tcp --dport 21 -i $NET -m state --state NEW -m recent --update --seconds 600 --hitcount 3 -j DROP

$IPT -A FORWARD -i $NET -p tcp --dport 21 -j ACCEPT


$IPT -A FORWARD -s $CASA -i $NET -p tcp --dport 5900 -j ACCEPT
$IPT -t nat -A PREROUTING -s $CASA -i $NET -p tcp -d $NET_IP --dport 5900 -j DNAT --to-destination 192.168.2.254:5900
$IPT -t nat -A PREROUTING -s 0/0 -i $NET -p tcp -d $NET_IP --dport 21 -j DNAT --to-destination 192.168.2.251:21
## ultravnc per clienti
# $IPT -I INPUT -p tcp -s 0/0 -i $NET
$IPT -A FORWARD -s 0/0 -i $NET -p tcp --dport 5500 -j ACCEPT
$IPT -t nat -A PREROUTING -s 0/0 -i $NET -p tcp -d $NET_IP --dport 5500 -j DNAT --to-destination 192.168.2.152:5500
## ultravnc per portatile in ditta
$IPT -A FORWARD -s 0/0 -i $NET -p tcp --dport 5570 -j ACCEPT
$IPT -t nat -A PREROUTING -s 0/0 -i $NET -p tcp -d $NET_IP --dport 5570 -j DNAT --to-destination 192.168.2.70:5570
# logging
echo " applying logging rules"
echo ""
$IPT -A INPUT -i $NET -p tcp -m limit --limit 1/s --dport 0:65535 -j LOG --log-prefix "tcp connection: "
$IPT -A INPUT -i $NET -p udp -m limit --limit 1/s --dport 0:65535 -j LOG --log-prefix "udp connection: "

# drop all other packets
echo " applying default drop policies"
echo ""
# required from psad
$IPT -A INPUT -j LOG
$IPT -A FORWARD -j LOG
# end of psad require
$IPT -A INPUT -i $NET -p tcp --dport 0:65535 -j DROP
$IPT -A POSTROUTING -t nat -o $NET -j MASQUERADE

# This is a batch of Red Hat Linux-specific commands
# that enable a user to call the script with a start/stop/restart
# argument.
# This is a batch of Red Hat Linux-specific commands
# that enable a user to call the script with a start/stop/restart
# argument.
if [ X"$REDHAT" = X"YES" ]; then
. /etc/rc.d/init.d/functions
case "$1" in
stop)
action "Shutting down firewall:" echo
$IPT -F
$IPT -P FORWARD DROP
exit 0
;;
status)
echo "The status command is not supported for iptables"
exit 0
;;
restart|reload)
$0 stop
exec $0 start
;;
start)
action "Starting Firewall:" echo
;;
*)

echo "Usage: firewall (start|stop|restart)"
exit 1
esac
fi
echo "Alessandra sei la mia vita"

HexDEF6
15-07-2009, 10:13
e' commentato un po alla mia maniera mezzo italiano mezzo inglese ma ho tolto le parolacce


#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#
#
# set a few variables
echo "Welcome in ale336"
echo "Alessandra sei la mia vita"
echo " setting global variables"
echo ""
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
REDHAT=NO ##set yes if run under redhat machine
IPT="`whereis -b iptables | cut -d \" \" -f 2`"

NET="eth0"
WEB=eth0:0
LAN="eth1"
PROXY="eth1:0"
DMZ="eth3"
LO="lo"
CASA=bla.bla.bla.bla

IP_NET=`ifconfig $NET | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_WEB=`ifconfig $WEB | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_LAN=`ifconfig $LAN | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_DMZ=`ifconfig $DMZ | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_PROXY=`ifconfig $PROXY | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_LO="127.0.0.1"
RANGE_IP_LAN="192.168.2.0/24"
RANGE_IP_DMZ="192.168.200.0/24"
SERVER_WEB="192.168.200.2"
CLUSTER="192.168.2.10"
IP_WEB_UPDATE=security.debian.org
FTP_WEB_UPDATE=ftp.debian.org

# adjust /proc
echo " applying general security settings to /proc filesystem"
echo ""
if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then echo 1 > /proc/sys/net/ipv4/tcp_syncookies; fi
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter; fi
if [ -e /proc/sys/net/ipv4/ip_forward ]; then echo 1 > /proc/sys/net/ipv4/ip_forward; fi
if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ]; then echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses; fi
if [ -e /proc/sys/net/ipv4/conf/all/accept_source_route ]; then echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route; fi
if [ -e /proc/sys/net/ipv4/tcp_ecn ]; then echo 0 > /proc/sys/net/ipv4/tcp_ecn; fi
if [ -e /proc/sys/net/ipv4/conf/all/send_redirects ]; then echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects; fi
if [ -e /proc/sys/net/ipv4/conf/all/secure_redirects ]; then echo 1 > /proc/sys/net/ipv4/conf/all/secure_redirects; fi
if [ -e /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ]; then echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts; fi
if [ -e /proc/sys/net/ipv4/conf/all/accept_redirects ]; then echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects; fi
if [ -e /proc/sys/net/ipv4/netfilter/ip_ct_generic_timeout ]; then echo 120 > /proc/sys/net/ipv4/netfilter/ip_ct_generic_timeout; fi
if [ -f /proc/sys/net/ipv4/conf/eth0/log_martians ]; then echo 1 > /proc/sys/net/ipv4/conf/eth0/log_martians; fi
if [ -f /proc/sys/net/ipv4/conf/eth1/log_martians ]; then echo 0 > /proc/sys/net/ipv4/conf/eth1/log_martians; fi
if [ -f /proc/sys/net/ipv4/tcp_timestamps ]; then echo 1 > /proc/sys/net/ipv4/tcp_timestamps; fi


#pulisco tutto
$IPT -F
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F -t mangle
$IPT -F -t nat
$IPT -X

#imposto il comportamento di default
$IPT -t nat POSTROUTING -P ACCEPT
$IPT -t nat PREROUTING -P ACCEPT
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP



#creo dei chan nuovi per tipo di connessione
$IPT -N net_to_lan
$IPT -N lan_to_net
$IPT -N web_to_dmz
$IPT -N dmz_to_web
$IPT -N lan_to_dmz
$IPT -N dmz_to_lan
$IPT -N server_to_web
$IPT -N web_to_server
$IPT -N lan_to_server
$IPT -N server_to_lan
$IPT -N dmz_to_server
$IPT -N server_to_dmz

#accetto in input sull'interfaccia LO tutto quello che arriva da se stessa
$IPT -A INPUT -p ALL -i $LO -s $IP_LO -j ACCEPT

$IPT -A OUTPUT -p ALL -o $LO -d $IP_LO -j ACCEPT


#rispondo ai ping (non fondamentale, ma a volte e' comodo)
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

#redirigo le chiamate fatte sulla porta 443 al server in DMZ
$IPT -t nat -A PREROUTING -i $WEB -d $IP_WEB -p tcp --dport 443 -j DNAT --to
$SERVER_WEB
#idem per il dns ci metto un bind per fare i giochini

se non sbaglio iptable non capisce eth0:X ma solo le interfacce fisiche...
quindi devi usare solo l'ip per suddividere

$IPT -t nat -A PREROUTING -i $WEB -d $IP_WEB -p udp --dport 53 -j DNAT --to
$SERVER_WEB

#faccio snat dei computer in LAN altrimenti non escono e si sentono le urla
$IPT -t nat -A POSTROUTING -o $NET -s $RANGE_IP_LAN -j SNAT --to-source
$IP_NET

#divido le connessioni (FORWARD) in base alla provenienza/destinazione


qui dividi le connessioni.... e poi non le usi dappertutto!


$IPT -A FORWARD -i $NET -o $LAN -j net_to_lan
$IPT -A FORWARD -i $LAN -o $NET -j lan_to_net
$IPT -A FORWARD -i $WEB -o $DMZ -j web_to_dmz
$IPT -A FORWARD -i $DMZ -o $WEB -j dmz_to_web
$IPT -A FORWARD -i $LAN -o $DMZ -j lan_to_dmz
$IPT -A FORWARD -i $DMZ -o $LAN -j dmz_to_lan

#divido anche le connessioni in input....
$IPT -A INPUT -i $WEB -j web_to_server
$IPT -A INPUT -i $LAN -j lan_to_server
$IPT -A INPUT -i $DMZ -j dmz_to_server

#... e output
$IPT -A OUTPUT -o $WEB -j server_to_WEB
$IPT -A OUTPUT -o $DMZ -j server_to_dmz
$IPT -A OUTPUT -o $LAN -j server_to_lan

#da internet verso la LAN accetto solo le connessioni related,estabilished
$IPT -A net_to_lan -m state --state INVALID -j DROP
$IPT -A net_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT

#dalla LAN permetto di uscire
$IPT -A lan_to_net -j ACCEPT

#dalla DMZ verso internet accetto solo le connesioni related o estabilished
$IPT -A dmz_to_web -m state --state RELATED,ESTABLISHED -j ACCEPT

#accetto le connessioni verso il server web in DMZ
$IPT -A INPUT -d $IP_WEB -p tcp --dport 443 --m state --state NEW -j ACCEPT
$IPT -A web_to_dmz -d $SERVER_WEB -p tcp --dport 443 -j ACCEPT

#dalla LAN posso accedere a tutte le porte del server in DMZ
$IPT -A lan_to_dmz -j ACCEPT

#dalla dmz verso la lan accetto solamente le connessioni related ed
estabilished non ne servono altre
$IPT -A dmz_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT

#accetto le connessioni fatte dalla LAN verso il server
$IPT -A lan_to_server -j ACCEPT

#accetto solo le connessioni related o estabilished che il server fa alla LAN
$IPT -A server_to_lan -j ACCEPT
#permetto gli update del firewall
$IPT -A dmz_to_net -d $IP_WEB_UPDATE -p tcp --dport 80 -j ACCEPT
$IPT -A dmz_to_net -d $IP_FTP_UPDATE -p tcp --dport 21 -j ACCEPT
$IPT -A server_to_net -d $IP_WEB_UPDATE -p tcp --dport 80 -j ACCEPT
$IPT -A server_to_net -d $IP_FTP_UPDATE -p tcp --dport 21 -j ACCEPT
#permetto di risolvere nomi da scommentare sei bind non funziona a dovere
#$IPT -A dmz_to_net -d $IP_DNS1 -p udp --dport 53 -j ACCEPT
#$IPT -A dmz_to_net -d $IP_DNS2 -p udp --dport 53 -j ACCPET
#se il tipo di connessione non e' fra quelli permessi, lo loggo
$IPT -A server_to_net -j LOG --log-prefix dmz_to_net:

#permetto al firewall che riceva le risposte
$IPT -A net_to_server -m state --state RELATED,ESTABLISHED -j ACCEPT

#loggo i tentativi del server in dmz di accedere al firewall
$IPT -A dmz_to_server -j LOG --log-prefix dmz_to_server:

#tunnel vari
$IPT -A INPUT -i $NET -m state --state NEW,ESTABLISHED,RELATED \
-p tcp --dport 7200 -j ACCEPT
$IPT -A INPUT -i $NET -m state --state NEW,ESTABLISHED,RELATED \
-p tcp --dport 7298 -j ACCEPT
$IPT -A INPUT -i $NET -m state --state NEW,ESTABLISHED,RELATED \
-p tcp --dport 7299 -j ACCEPT
$IPT -A INPUT -i $NET -m state --state NEW,ESTABLISHED,RELATED \
-p udp --dport 7207 -j ACCEPT
$IPT -A INPUT -i $NET -m state --state NEW,ESTABLISHED,RELATED \
-p tcp --dport 7300 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 775 -j DNAT --to-destination 192.168.2.10:775
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7200 -j DNAT --to-destination 192.168.2.10:7200
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7200 -j DNAT --to-destination 192.168.2.3:7200
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7298 -j DNAT --to-destination 192.168.2.10:7298
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7299 -j DNAT --to-destination 192.168.2.10:7299
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7207 -j DNAT --to-destination 192.168.2.254:7207
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7300 -j DNAT --to-destination 192.168.2.254:7300
$IPT -A FORWARD -i $NET -p tcp --dport 775 -o $LAN -j ACCEPT
$IPT -A FORWARD -i $NET -p tcp --dport 7200 -o $LAN -j ACCEPT
$IPT -A FORWARD -i $NET -p tcp --dport 7298 -o $LAN -j ACCEPT
$IPT -A FORWARD -i $NET -p tcp --dport 7299 -o $LAN -j ACCEPT
$IPT -A FORWARD -i $NET -p udp --dport 7207 -o $LAN -j ACCEPT
$IPT -A FORWARD -i $NET -p tcp --dport 7300 -o $LAN -j ACCEPT
## fine tunnel
#unauthorized lan

le seguenti sono un po inutili... di default droppi tutto sull'input e forward

$IPT -I INPUT -s 10.0.0.0/8 -j DROP
$IPT -I INPUT -s 172.16.0.0/12 -j DROP
$IPT -I INPUT -s 192.168.0.0/16 -j DROP
$IPT -I INPUT -s 127.0.0.0/8 -j DROP
$IPT -I INPUT -s 224.0.0.0/4 -j DROP

$IPT -I FORWARD -s 10.0.0.0/8 -j DROP
$IPT -I FORWARD -s 172.16.0.0/12 -j DROP
$IPT -I FORWARD -s 192.168.0.0/16 -j DROP
$IPT -I FORWARD -s 127.0.0.0/8 -j DROP
$IPT -I FORWARD -s 224.0.0.0/4 -j DROP

## stop netbios logging
$IPT -I INPUT -p tcp --dport 135:139 -j DROP
$IPT -I INPUT -p udp --dport 135:139 -j DROP
$IPT -I INPUT -p tcp --dport 445 -j DROP
# icmp
echo " applying icmp rules"
echo ""

qui non ricordo... ma su icmp, ci sono le NEW o le ESTABLISHED?

$IPT -A OUTPUT -p icmp -m state --state NEW -j ACCEPT
$IPT -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-request -i $NET -j DROP

# apply icmp type match blocking
echo " applying icmp type match blocking"
echo ""
$IPT -I INPUT -p icmp --icmp-type redirect -j DROP
$IPT -I INPUT -p icmp --icmp-type router-advertisement -j DROP
$IPT -I INPUT -p icmp --icmp-type router-solicitation -j DROP
$IPT -I INPUT -p icmp --icmp-type address-mask-request -j DROP
$IPT -I INPUT -p icmp --icmp-type address-mask-reply -j DROP
# squid
echo " applying squid rules"
echo ""

di solito si sconsiglia di droppare/accettare in prerouting

$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.82 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.100 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.200 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.210 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.239 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.240 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.251 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.252 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.253 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.254 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.1 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.2 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.3 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.4 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.5 -j ACCEPT
### accept for dummy
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.15 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.245 -j ACCEPT
## non dovrebbe servire visto che c'e' autenticazione ntlm ma la metto lo stesso.
$IPT -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
## le stampanti di rete parlano troppo cio' e' male
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.33 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.32 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.34 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.35 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.38 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.31 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.30 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.37 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.39 --dport 110 -j DROP

$IPT -A FORWARD -i $NET -p tcp --dport 7300 -o $LAN -j ACCEPT
#$IPT -I INPUT -p tcp --dport 21 -i $NET -m state --state NEW -m recent --set
#$IPT -I INPUT -p tcp --dport 21 -i $NET -m state --state NEW -m recent --update --seconds 600 --hitcount 3 -j DROP

$IPT -A FORWARD -i $NET -p tcp --dport 21 -j ACCEPT


$IPT -A FORWARD -s $CASA -i $NET -p tcp --dport 5900 -j ACCEPT
$IPT -t nat -A PREROUTING -s $CASA -i $NET -p tcp -d $NET_IP --dport 5900 -j DNAT --to-destination 192.168.2.254:5900
$IPT -t nat -A PREROUTING -s 0/0 -i $NET -p tcp -d $NET_IP --dport 21 -j DNAT --to-destination 192.168.2.251:21
## ultravnc per clienti
# $IPT -I INPUT -p tcp -s 0/0 -i $NET
$IPT -A FORWARD -s 0/0 -i $NET -p tcp --dport 5500 -j ACCEPT
$IPT -t nat -A PREROUTING -s 0/0 -i $NET -p tcp -d $NET_IP --dport 5500 -j DNAT --to-destination 192.168.2.152:5500
## ultravnc per portatile in ditta
$IPT -A FORWARD -s 0/0 -i $NET -p tcp --dport 5570 -j ACCEPT
$IPT -t nat -A PREROUTING -s 0/0 -i $NET -p tcp -d $NET_IP --dport 5570 -j DNAT --to-destination 192.168.2.70:5570
# logging
echo " applying logging rules"
echo ""
$IPT -A INPUT -i $NET -p tcp -m limit --limit 1/s --dport 0:65535 -j LOG --log-prefix "tcp connection: "
$IPT -A INPUT -i $NET -p udp -m limit --limit 1/s --dport 0:65535 -j LOG --log-prefix "udp connection: "

# drop all other packets
echo " applying default drop policies"
echo ""
# required from psad
$IPT -A INPUT -j LOG
$IPT -A FORWARD -j LOG
# end of psad require
$IPT -A INPUT -i $NET -p tcp --dport 0:65535 -j DROP
$IPT -A POSTROUTING -t nat -o $NET -j MASQUERADE

# This is a batch of Red Hat Linux-specific commands
# that enable a user to call the script with a start/stop/restart
# argument.
# This is a batch of Red Hat Linux-specific commands
# that enable a user to call the script with a start/stop/restart
# argument.
if [ X"$REDHAT" = X"YES" ]; then
. /etc/rc.d/init.d/functions
case "$1" in
stop)
action "Shutting down firewall:" echo
$IPT -F
$IPT -P FORWARD DROP
exit 0
;;
status)
echo "The status command is not supported for iptables"
exit 0
;;
restart|reload)
$0 stop
exec $0 start
;;
start)
action "Starting Firewall:" echo
;;
*)

echo "Usage: firewall (start|stop|restart)"
exit 1
esac
fi
echo "Alessandra sei la mia vita"

se riesci a ripostare il tutto in un [code] si riesce a leggere meglio!

jtclark
15-07-2009, 10:39
se non sbaglio iptable non capisce eth0:X ma solo le interfacce fisiche...
quindi devi usare solo l'ip per suddividere

ni nel senso che da quello che ho letto su linuxquestion.org all'url http://www.linuxquestions.org/questions/linux-security-4/iptables-and-virtual-interfaces-201220/
in effetti non supporta l'ipaliasing pero' se setti un aliasing lui riconosce il traffico come proveniente dall'interfaccia fisica e poi giochi con gli ip



qui dividi le connessioni.... e poi non le usi dappertutto!

sicuramente ho scordato qualcosa ci guardo ancora subito
le seguenti sono un po inutili... di default droppi tutto sull'input e forward

ok

qui non ricordo... ma su icmp, ci sono le NEW o le ESTABLISHED?

qui:
http://www.kalamazoolinux.org/presentations/20010417/conntrack.html
dice che ci sono entrambe

di solito si sconsiglia di droppare/accettare in prerouting
perche'?
e se non accetto/droppo che azioni mi sono consentite?

se riesci a ripostare il tutto in un [code] si riesce a leggere meglio!

scusa ma non capisco cosa significhi [code]
Grazie mi lle per la cortesia nel rispondere

HexDEF6
15-07-2009, 10:44
scusa ma non capisco cosa significhi [code]
Grazie mi lle per la cortesia nel rispondere

e' il tastino # nel reply... in questa maniera quello che scrivi non sballa la formattazione (fondamentale per leggere meglio uno script!):


questo testo
non sballa la formattazione
ciao!

jtclark
15-07-2009, 11:48
e' il tastino # nel reply... in questa maniera quello che scrivi non sballa la formattazione (fondamentale per leggere meglio uno script!):


questo testo
non sballa la formattazione
ciao!


vediamo se ho capito cosa intendevi sulle catene e sul code

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#
#
# set a few variables
echo "Welcome in ale336"
echo "Alessandra sei la mia vita"
echo " setting global variables"
echo ""
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
REDHAT=NO ##set yes if run under redhat machine
IPT="`whereis -b iptables | cut -d \" \" -f 2`"

NET="eth0"
WEB=eth0:0
LAN="eth1"
PROXY="eth1:0"
DMZ="eth3"
LO="lo"
CASA=bla.bla.bla.bla

IP_NET=`ifconfig $NET | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_WEB=`ifconfig $WEB | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_LAN=`ifconfig $LAN | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_DMZ=`ifconfig $DMZ | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_PROXY=`ifconfig $PROXY | grep inet| cut -f2 -d:| cut -f1 -d" "`
IP_LO="127.0.0.1"
RANGE_IP_LAN="192.168.2.0/24"
RANGE_IP_DMZ="192.168.200.0/24"
SERVER_WEB="192.168.200.2"
CLUSTER="192.168.2.10"
IP_WEB_UPDATE=security.debian.org
FTP_WEB_UPDATE=ftp.debian.org

# adjust /proc
echo " applying general security settings to /proc filesystem"
echo ""
if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then echo 1 > /proc/sys/net/ipv4/tcp_syncookies; fi
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter; fi
if [ -e /proc/sys/net/ipv4/ip_forward ]; then echo 1 > /proc/sys/net/ipv4/ip_forward; fi
if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ]; then echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses; fi
if [ -e /proc/sys/net/ipv4/conf/all/accept_source_route ]; then echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route; fi
if [ -e /proc/sys/net/ipv4/tcp_ecn ]; then echo 0 > /proc/sys/net/ipv4/tcp_ecn; fi
if [ -e /proc/sys/net/ipv4/conf/all/send_redirects ]; then echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects; fi
if [ -e /proc/sys/net/ipv4/conf/all/secure_redirects ]; then echo 1 > /proc/sys/net/ipv4/conf/all/secure_redirects; fi
if [ -e /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ]; then echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts; fi
if [ -e /proc/sys/net/ipv4/conf/all/accept_redirects ]; then echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects; fi
if [ -e /proc/sys/net/ipv4/netfilter/ip_ct_generic_timeout ]; then echo 120 > /proc/sys/net/ipv4/netfilter/ip_ct_generic_timeout; fi
if [ -f /proc/sys/net/ipv4/conf/eth0/log_martians ]; then echo 1 > /proc/sys/net/ipv4/conf/eth0/log_martians; fi
if [ -f /proc/sys/net/ipv4/conf/eth1/log_martians ]; then echo 0 > /proc/sys/net/ipv4/conf/eth1/log_martians; fi
if [ -f /proc/sys/net/ipv4/tcp_timestamps ]; then echo 1 > /proc/sys/net/ipv4/tcp_timestamps; fi


#pulisco tutto
$IPT -F
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F -t mangle
$IPT -F -t nat
$IPT -X

#imposto il comportamento di default
$IPT -t nat POSTROUTING -P ACCEPT
$IPT -t nat PREROUTING -P ACCEPT
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP



#creo dei chan nuovi per tipo di connessione
$IPT -N net_to_lan
$IPT -N lan_to_net
$IPT -N web_to_dmz
$IPT -N dmz_to_web
$IPT -N lan_to_dmz
$IPT -N dmz_to_lan
$IPT -N server_to_web
$IPT -N web_to_server
$IPT -N lan_to_server
$IPT -N server_to_lan
$IPT -N dmz_to_server
$IPT -N server_to_dmz

#accetto in input sull'interfaccia LO tutto quello che arriva da se stessa
$IPT -A INPUT -p ALL -i $LO -s $IP_LO -j ACCEPT

$IPT -A OUTPUT -p ALL -o $LO -d $IP_LO -j ACCEPT


#rispondo ai ping (non fondamentale, ma a volte e' comodo)
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

#redirigo le chiamate fatte sulla porta 443 al server in DMZ
$IPT -t nat -A PREROUTING -i $WEB -d $IP_WEB -p tcp --dport 443 -j DNAT --to
$SERVER_WEB
#idem per il dns ci metto un bind per fare i giochini
$IPT -t nat -A PREROUTING -i $WEB -d $IP_WEB -p udp --dport 53 -j DNAT --to
$SERVER_WEB

#faccio snat dei computer in LAN altrimenti non escono e si sentono le urla
$IPT -t nat -A POSTROUTING -o $NET -s $RANGE_IP_LAN -j SNAT --to-source
$IP_NET

#divido le connessioni (FORWARD) in base alla provenienza/destinazione
$IPT -A FORWARD -i $NET -o $LAN -j net_to_lan
$IPT -A FORWARD -i $LAN -o $NET -j lan_to_net
$IPT -A FORWARD -i $WEB -o $DMZ -j web_to_dmz
$IPT -A FORWARD -i $DMZ -o $WEB -j dmz_to_web
$IPT -A FORWARD -i $LAN -o $DMZ -j lan_to_dmz
$IPT -A FORWARD -i $DMZ -o $LAN -j dmz_to_lan

#divido anche le connessioni in input....
$IPT -A INPUT -i $WEB -j web_to_server
$IPT -A INPUT -i $LAN -j lan_to_server
$IPT -A INPUT -i $DMZ -j dmz_to_server
$IPT -A INPUT -i $NET -j net_to_lan

#... e output
$IPT -A OUTPUT -o $WEB -j server_to_WEB
$IPT -A OUTPUT -o $DMZ -j server_to_dmz
$IPT -A OUTPUT -o $LAN -j server_to_lan

#da internet verso la LAN accetto solo le connessioni related,estabilished
$IPT -A net_to_lan -m state --state INVALID -j DROP
$IPT -A net_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT

#dalla LAN permetto di uscire
$IPT -A lan_to_net -j ACCEPT

#dalla DMZ verso internet accetto solo le connesioni related o estabilished
$IPT -A dmz_to_web -m state --state RELATED,ESTABLISHED -j ACCEPT

#accetto le connessioni verso il server web in DMZ
$IPT -A INPUT -d $IP_WEB -p tcp --dport 443 --m state --state NEW -j ACCEPT
$IPT -A web_to_dmz -d $SERVER_WEB -p tcp --dport 443 -j ACCEPT

#dalla LAN posso accedere a tutte le porte del server in DMZ
$IPT -A lan_to_dmz -j ACCEPT

#dalla dmz verso la lan accetto solamente le connessioni related ed
estabilished non ne servono altre
$IPT -A dmz_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT

#accetto le connessioni fatte dalla LAN verso il server
$IPT -A lan_to_server -j ACCEPT

#accetto solo le connessioni related o estabilished che il server fa alla LAN
$IPT -A server_to_lan -j ACCEPT
#permetto gli update del firewall
$IPT -A dmz_to_net -d $IP_WEB_UPDATE -p tcp --dport 80 -j ACCEPT
$IPT -A dmz_to_net -d $IP_FTP_UPDATE -p tcp --dport 21 -j ACCEPT
$IPT -A server_to_net -d $IP_WEB_UPDATE -p tcp --dport 80 -j ACCEPT
$IPT -A server_to_net -d $IP_FTP_UPDATE -p tcp --dport 21 -j ACCEPT
#permetto di risolvere nomi da scommentare sei bind non funziona a dovere
#$IPT -A dmz_to_net -d $IP_DNS1 -p udp --dport 53 -j ACCEPT
#$IPT -A dmz_to_net -d $IP_DNS2 -p udp --dport 53 -j ACCPET
#se il tipo di connessione non e' fra quelli permessi, lo loggo
$IPT -A server_to_net -j LOG --log-prefix dmz_to_net:

#permetto al firewall che riceva le risposte
$IPT -A net_to_server -m state --state RELATED,ESTABLISHED -j ACCEPT

#loggo i tentativi del server in dmz di accedere al firewall
$IPT -A dmz_to_server -j LOG --log-prefix dmz_to_server:

#tunnel vari
$IPT -A net_to_lan -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 775 -j ACCEPT
$IPT -A net_to_lan -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 7200 -j ACCEPT
$IPT -A net_to_lan -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 7298 -j ACCEPT
$IPT -A net_to_lan -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 7299 -j ACCEPT
$IPT -A net_to_lan -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 7207 -j ACCEPT
$IPT -A net_to_lan -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 7300 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 775 -j DNAT --to-destination 192.168.2.10:775
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7200 -j DNAT --to-destination 192.168.2.10:7200
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7200 -j DNAT --to-destination 192.168.2.3:7200
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7298 -j DNAT --to-destination 192.168.2.10:7298
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7299 -j DNAT --to-destination 192.168.2.10:7299
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7207 -j DNAT --to-destination 192.168.2.254:7207
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $NET_IP --dport 7300 -j DNAT --to-destination 192.168.2.254:7300

$IPT -A net_to_lan -i $NET -p tcp --dport 775 -o $LAN -j ACCEPT
$IPT -A net_to_lan -i $NET -p tcp --dport 7200 -o $LAN -j ACCEPT
$IPT -A net_to_lan -i $NET -p tcp --dport 7298 -o $LAN -j ACCEPT
$IPT -A net_to_lan -i $NET -p tcp --dport 7299 -o $LAN -j ACCEPT
$IPT -A net_to_lan -i $NET -p udp --dport 7207 -o $LAN -j ACCEPT
$IPT -A net_to_lan -i $NET -p tcp --dport 7300 -o $LAN -j ACCEPT
## fine tunnel

# icmp
echo " applying icmp rules"
echo ""
$IPT -A OUTPUT -p icmp -m state --state NEW -j ACCEPT
$IPT -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p icmp --icmp-type echo-request -i $NET -j DROP

# apply icmp type match blocking
echo " applying icmp type match blocking"
echo ""
$IPT -I INPUT -p icmp --icmp-type redirect -j DROP
$IPT -I INPUT -p icmp --icmp-type router-advertisement -j DROP
$IPT -I INPUT -p icmp --icmp-type router-solicitation -j DROP
$IPT -I INPUT -p icmp --icmp-type address-mask-request -j DROP
$IPT -I INPUT -p icmp --icmp-type address-mask-reply -j DROP
# squid
echo " applying squid rules"
echo ""
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.82 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.100 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.200 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.210 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.239 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.240 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.251 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.252 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.253 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.254 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.1 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.2 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.3 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.4 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.5 -j ACCEPT
### accept for dummy
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.15 -j ACCEPT
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.245 -j ACCEPT
## non dovrebbe servire visto che c'e' autenticazione ntlm ma la metto lo stesso.
$IPT -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
## le stampanti di rete parlano troppo cio' e' male
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.33 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.32 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.34 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.35 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.38 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.31 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.30 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.37 --dport 110 -j DROP
$IPT -t nat -A PREROUTING -i $LAN -p tcp -s 192.168.2.39 --dport 110 -j DROP

$IPT -A net_to_lan -i $NET -p tcp --dport 7300 -o $LAN -j ACCEPT
#$IPT -I INPUT -p tcp --dport 21 -i $NET -m state --state NEW -m recent --set
#$IPT -I INPUT -p tcp --dport 21 -i $NET -m state --state NEW -m recent --update --seconds 600 --hitcount 3 -j DROP

$IPT -A FORWARD -i $NET -p tcp --dport 21 -j ACCEPT


$IPT -A FORWARD -s $CASA -i $NET -p tcp --dport 5900 -j ACCEPT
$IPT -t nat -A PREROUTING -s $CASA -i $NET -p tcp -d $NET_IP --dport 5900 -j DNAT --to-destination 192.168.2.254:5900
$IPT -t nat -A PREROUTING -s 0/0 -i $NET -p tcp -d $NET_IP --dport 21 -j DNAT --to-destination 192.168.2.251:21
## ultravnc per clienti
# $IPT -I INPUT -p tcp -s 0/0 -i $NET
$IPT -A FORWARD -s 0/0 -i $NET -p tcp --dport 5500 -j ACCEPT
$IPT -t nat -A PREROUTING -s 0/0 -i $NET -p tcp -d $NET_IP --dport 5500 -j DNAT --to-destination 192.168.2.152:5500
## ultravnc per portatile in ditta
$IPT -A FORWARD -s 0/0 -i $NET -p tcp --dport 5570 -j ACCEPT
$IPT -t nat -A PREROUTING -s 0/0 -i $NET -p tcp -d $NET_IP --dport 5570 -j DNAT --to-destination 192.168.2.70:5570
# logging
echo " applying logging rules"
echo ""
$IPT -A INPUT -i $NET -p tcp -m limit --limit 1/s --dport 0:65535 -j LOG --log-prefix "tcp connection: "
$IPT -A INPUT -i $NET -p udp -m limit --limit 1/s --dport 0:65535 -j LOG --log-prefix "udp connection: "

# drop all other packets
echo " applying default drop policies"
echo ""
# required from psad
$IPT -A INPUT -j LOG
$IPT -A FORWARD -j LOG
# end of psad require
$IPT -A INPUT -i $NET -p tcp --dport 0:65535 -j DROP
$IPT -A POSTROUTING -t nat -o $NET -j MASQUERADE

# This is a batch of Red Hat Linux-specific commands
# that enable a user to call the script with a start/stop/restart
# argument.
# This is a batch of Red Hat Linux-specific commands
# that enable a user to call the script with a start/stop/restart
# argument.
if [ X"$REDHAT" = X"YES" ]; then
. /etc/rc.d/init.d/functions
case "$1" in
stop)
action "Shutting down firewall:" echo
$IPT -F
$IPT -P FORWARD DROP
exit 0
;;
status)
echo "The status command is not supported for iptables"
exit 0
;;
restart|reload)
$0 stop
exec $0 start
;;
start)
action "Starting Firewall:" echo
;;
*)

echo "Usage: firewall (start|stop|restart)"
exit 1
esac
fi
echo "Alessandra sei la mia vita"

jeremy.83
15-07-2009, 13:16
Scusate l'interferenza, posso chiedere ai mod che questa guida e le atre in firma di HexDEF6 finiscano in sticky o perlomeno nell'apposita sezione?

Lo chiedo perchè sto realizzando un server e mi farebbe comodo avere sott'occhio queste ottime guide, senza dover inseguire ogni volta l'utente nei meandri della ricerca di hwupgrade.

Grazie infinite

darkbasic
17-07-2009, 13:37
Effettivamente questa ottima guida non ha avuto la visibilità che meritava.

HexDEF6
17-07-2009, 17:40
scusate... ma sono un po incasinato... comunque per me nessun problema a spostare la guida dove volete... magari quando avro' tempo (ormai questa sta' diventando una battuta, visto che non ho mai tempo!) sistemo un po di errori e amplio un attimino magari introducento il mark dei pacchetti e un uso base di iproute (che ho usato per gestire il traffico di 2 adsl dallo stesso server )...

jeremy.83
20-07-2009, 16:38
Ho segnalato il 3d ai moderatori per richiedere che sia messo nelle doc ufficiali. Intanto uppo