Newsgroup: it.comp.os.linux.software
Titolo: Configurazione Firewall

Salve a tutti, ho una Red Hat 7.1 pro e mi trovo nella situazione di dover
configurare un firewall sfruttando IPChains. Sulla macchina ho installato e
configurato due schede di rete, una con ip privato ed una con ip pubblico.
La prima quindi fa riferimento alla rete interna, mentre la seconda è
attaccata allo stesso dispositivo a cui sono collegati i server pubblici.
Ora ho letto la documentazione relativa a IPChains e quindi conosco le
istruzioni da dargli per far in modo di accettare il traffico proveniente
dall'esterno e diretto ai server pubblici e di accettare connessioni
dall'interno verso l'esterno (aggiungo che anche l'uscita su Internet della
macchine della rete interna avviene attraverso la stessa linea dedicata a
cui sono attacati i server pubblici, quindi non c'è una chiamata dial-up ma
una connessione fissa). Ora quello che mi "sfugge" è come fare per far in
modo che tutto il traffico passi attraverso il firewall e che questo poi
decida cosa fare ? In passato ho configurato firewall hardware e una volta
configurate le varie zone (dmz, lan) ho impostato poi le regole giuste per
il passaggio del traffico tra rete interna, router, firewall e server
pubblici, ma ora come mi devo comportare ? ho provato ad impostare la catena
"forward" ma con scarsi risultati, in pratica quando scrivo
ipchains -A forward -s 
10.0.0.0/100
 -i eth0 ....poi cosa devo scrivere ?
aggiungo che eth0 ha un indirizzo pubblico mentre eth1 ha un ip privato.
Prima di montare la seconda scheda di rete, ho fatto le prove con una sola
scheda di rete con ip pubblico e sono riuscito attraverso IPChains a far
entrare il traffico quando si richiedava una pagina web ed a poter navigare
dalla stessa macchina, ma ora con due schede di rete mi sono "incartato".
Spero di essere stato chiaro, in caso contrario sarò pronto a fornire
ulteriori dettagli e scusate per la lunghezza del messaggio.
Salvatore.

 decida cosa fare ? In passato ho configurato firewall hardware e una volta
...
Se ho capito bene nel caso int->ext ti basta un masquerading ecc. Se vuoi
accettare connessioni sul fw che poi vengano istradate alle macchine interne
ti serve ipmasqadm.
--
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! A conclusion is simply the place where someone got tired of thinking. !>-

 ti serve ipmasqadm.
per attivare il masquerading mi basta andare nella shell per la
configurazione della rete --> Routing ed abilitare la voce Network Packet
Forwarding (IPv4) ? ma se è così questo "passaggio" non può rappresentare un
problema per la sicurezza ? inoltre dall'esterno bisogna poter accedere a
delle macchine "pubbliche" come server http, mail server etc, per fare
questo devo abilitare ipmasqadm ? e se è così come faccio ad abilitarlo ?
quindi non mi serve alcun software che faccia da Proxy Server ?
Scusa per le troppe domande (..anche banali..) e ancora grazie e buon
lavoro.
Salvatore.

 lavoro.
Mi sembra (se sbaglio ti prego di scusarmi) che non sia molto informato sul
funzionamento di NAT e packet filtering, per cui per iniziare ti rimanderei
alla lettura di un po' di documentazione di ipchains e ipmasqadm.
Ipmasqadm e' un programma che permette di "istradare" (DNAT) delle connessioni
ricevute dal firewall a delle macchine interne.
In linea teorica abilitando il mascheramento (SNAT) potresti anche fare a
meno del server proxy.
--
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! A mathematician is a device for turning coffee into theorems. !>-
                P. Erdos

 meno del server proxy.
...io ora mi trovo nella seguente situazione, ho configurato le due schede
di rete e sono riuscito da una macchina interna alla rete, facendogli
utilizzare come gateway la macchina linux (quindi impostando il gateway nel
tcp/ip) e non più il router ad uscire su Internet e lo stesso dicasi per le
macchine pubbliche (anche in questo caso ho impostato il gateway facendolo
puntare alla macchina Linux) che sono raggiungibili dall'esterno.
Sulla macchina Linux, all'interno della shell di configurazione della rete,
non ho abilitato la voce Network Packet Forwarding (IPv4) ed ho configurato,
per ora, IPChains per accettare le richieste sia in Input che in Ouput (mi
rendo conto che dovrò poi configurarlo in modo più efficace mettendo una
serie di restrizioni), però IPChains in questo modo mi può fornire un
controllo relativo allo strato più basso del tcp/ip, mentre se voglio un
controllo anche a livello di "contenuti" allora credo che dovrò
necessariamente implementare anche un proxy server, o sbaglio ? aggiungo che
le macchine pubbliche hanno un IP pubblico e vorrei mantenerlo tale (quindi
senza fare NAT ed usando la DMZ sul server linux), mentre le macchine
interne escono attraverso un PAT (quindi n a 1). Ora devo configurare meglio
IPChains per avre maggiori restrizioni ed eventualmente un proxy server se
voglio un filtraggio dei contenuti.
Quello che ora ti chiedo è questo, l'analisi che ho fatto è secondo te
valida ?
Grazie ancora e buon lavoro.
Salvatore.

 valida ?
Se ho capito quello che vuoi fare credo proprio di si'.
--
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
	  -<! Computer programmers never die, 
		they just raise an unhandled exception. !>-

 non ho abilitato la voce Network Packet Forwarding (IPv4) ed ho
configurato,
mica la devo abilitare ?
Ora il problema che ho e' che se configuro le policy default delle catene di
Input ed Output a Accept riesco ad uscire dalle macchine della rete interna
e riesco dall'esterno ad arrivare alle mie macchine pubbliche, ma
configurando a Deny le policy default e scrivendo la configurazione sotto
riporata non riesco a fare nulla, dove sbaglio ?
:input DENY
-A input -s ippubblico di una mia macchina -d 
0.0.0.0/0.0.0.0
 -p tcp -j
ACCEPT
-A input -s 
0.0.0.0/0.0.0.0
 -d ippubblico di Linux/
255.255.255.255
 -p 6 -j
ACCEPT
-A input -s 
0.0.0.0/0.0.0.0
 -d ippubblico di Linux/
255.255.255.255
 -p 17 -j
ACCEPT
:forward DENY
:output DENY
-A output -s 
10.0.0.0/0
 -d 
0.0.0.0/0.0.0.0
 -p tcp -j ACCEPT
-A output -s 
10.0.0.0/0
 -d 
0.0.0.0/0.0.0.0
 -p udp -j ACCEPT
-A output -s ippubblico del router -d 
0.0.0.0/0.0.0.0
 -p tcp -j ACCEPT
-A output -s ippubblico di Linux -d 
0.0.0.0/0.0.0.0
 -p tcp -j ACCEPT
-A output -s ippubblico di Linux -d 
0.0.0.0/0.0.0.0
 -p udp -j ACCEPT
-A output -s ippubblico di una mia macchina -d 
0.0.0.0/0.0.0.0
 -p tcp -j
ACCEPT
:icmp -
-A input -s 
0.0.0.0/0.0.0.0
 -d 
0.0.0.0/0.0.0.0
 -p 1 -j icmp
-A icmp -s 
0.0.0.0/0.0.0.0
 3:3 -d 
0.0.0.0/0.0.0.0
 -p 1 -j ACCEPT
-A icmp -s 
0.0.0.0/0.0.0.0
 4:4 -d 
0.0.0.0/0.0.0.0
 -p 1 -j ACCEPT
-A icmp -s 
0.0.0.0/0.0.0.0
 11:11 -d 
0.0.0.0/0.0.0.0
 -p 1 -j ACCEPT
-A icmp -s 
0.0.0.0/0.0.0.0
 12:12 -d 
0.0.0.0/0.0.0.0
 -p 1 -j ACCEPT
-A icmp -s 
0.0.0.0/0.0.0.0
 -d 
0.0.0.0/0.0.0.0
 -j DENY
quale riga devo ancora inserire ?
Ancora grazie per l'interessamento e scusa il disturbo.
Salvatore.

 riporata non riesco a fare nulla, dove sbaglio ?
Le policy vanno poste a DENY e man mano si aprono i servizi che servono.
Inoltre per ogni catena e' buona cosa inserire come ultima regola una che
logghi il traffico non autorizzato. Per es nel tuo setup la policy della
forward e' deny ma non c'e' nessuna regola che abiliti del traffico. Inoltre
bisogna sapere se usi un kernel 2.2 o 2.4 in quanto l'attraversamento delle
catene e' molto diverso.
--
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! God Knows How Long I Tried To Change Fate !>-
  		Blind Guardian - Mordred's Song

 catene e' molto diverso.
il kernel che uso è il 2.4
Spero che le informazioni possano esserti utili.
Ancora grazie e buon lavoro.
Salvatore.

 il kernel che uso è il 2.4
Allora lascia stare ipchains e usa iptables.
--
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Asynchronous inputs are at the root of our race problems. !>-
                 D. Winker and F. Prosser

 Allora lascia stare ipchains e usa iptables.
...l'uso di iptables è simile all'uso di ipchains ? io quando ho cominciato
ad usare ipchains ho trovato il file di configurazione corrispondente e
cosi' ho lavorato su quello, con iptables è uguale ? qual'e' il file di
riferimento ? seguendo anche i tuoi consigli soono arrivato a questo:
:input DENY
:forward DENY
:output DENY
:icmp -
-A input -s 
0.0.0.0/0.0.0.0
 -d 
0.0.0.0/0.0.0.0
 -p 1 -j icmp
-A input -s 10.0.0.28 -d 
0.0.0.0/0.0.0.0
 -p tcp -j ACCEPT
-A input -s myippub -d 
0.0.0.0/0.0.0.0
 -p tcp -j ACCEPT
-A forward -s 10.0.0.28 -d 
0.0.0.0/0.0.0.0
 -p tcp -j ACCEPT
-A forward -s myippub -d 
0.0.0.0/0.0.0.0
 -p tcp -j ACCEPT
-A output -s 10.0.0.28 -d 
0.0.0.0/0.0.0.0
 -p tcp -j ACCEPT
-A output -s myippub -d 
0.0.0.0/0.0.0.0
 -p tcp -j ACCEPT
questa configurazione funziona (nel senso che le macchine internet possono
uscire su Internet e quelle pubbliche sono raggiungibili dall'estreno, cioe'
si visualizzano i siti web, funziona l'ftp etc..), considerando che potrei
ottenere maggiori restrizioni specificando i numeri di porta dove accettare
connessioni dall'esterno (ad es. dire che sulla macchina web si possono
accettare connessione solo sulla porta 80), cosa dovrei migliorare sulla
configurazione (volutamente non ho scritto le righe riguardanti i messaggi
ICMP) ?


 riferimento ? seguendo anche i tuoi consigli soono arrivato a questo:
La sintassi di iptables e' simile a quella di ipchains. Ha molte features in
piu'. Leggiti l'HOWTO sul sito di iptables che spiega anche il flusso dei
pacchetti attraverso le catene. Per es la catena OUTPUT e' relativa
unicamente ai pacchetti in uscita generati dalla macchina. La INPUT e' per i
pacchetti destinati a questa macchina, mentre la FORWARD gestisce IN/OUT su
tutte le altre macchine per cui questa agisce da firewall. In base a questo
per ogni catena e' necessario un diverso insieme di regole. E' davvero
facile capire il tutto e combinare qualcosa di buono. Basta solo leggere la
documentazione e gli esempi.
--
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Computers are not intelligent.  They only think they are. !>-

 facility.priority fa parte il log.
scusa la "mia" ignoranza ma non ho capito molto bene cosa devo fare ! :-)
inoltre ora sto' usando iptables, devo fare le stesse operazioni ?
ti vorrei chiedere anche una ulteriore informazione, prima quando usavo
ipchains facevo riferimento al file \etc\sysconfig\ipchains, facevo delle
modifiche all'interno di questo file,
facevo ripartire il servizio ipchains e mi ritrovavo le modifiche apportate,
ora che uso iptables non so' a quale file fare riferimento (in pratica non
trovo un file di testo che si chiami iptables !), come posso risolvere ?
Ancora grazie.
Salvatore.

 trovo un file di testo che si chiami iptables !), come posso risolvere ?
Crea uno script di shell contenente tutti i comandi necessari e lancialo in
/etc/rc.local.
--
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Heavy Metal Or No Metal At All! Whimps And Posers Leave The Hall !>-
 	 			Manowar - Metal Warriors

 /etc/syslog.conf dove va a finire quella combinazione.
perdona...se possibile... la mia ignoranza, all'interno del mio script di
configurazione del firewall vi e' scritto questo (cosi' come mi avevi detto
tu ho preso uno script gia' fatto e l'ho modificato)
iptables -A CHECK_FLAGS -p tcp --tcp-flags SYN,RST SYN,RST -m limit \
                        --limit 5/minute -j LOG --log-level
$LOG_LEVEL --log-prefix
ho anche visto il file syslog.conf che mi indica diverse dir ed ho provato a
vedere nei file messages etc ma non ho trovato nulla, cosa devo fare ?


On Mon, 22 Oct 2001 16:31:41 +0200, Salvatore 
was talkin'about:

Quello che interessa a te e' il valore della variabile LOG_LEVEL che e'
definito probabilmente da qualche parte all'interno del tuo script.
Poi controlli nel syslog.conf come viene gestito quel tipo di log. Per es.
lpr.err -/var/log/lpr/errors
significa che gli errori del sottosistema di stampa vanno a finire in quel
file con la bufferizzazione delle write.
Specificando il log level puoi far finire i log dove vuoi, sempre insieme ad
altri messaggi, a quel punto usi un parser come fireparse che li estrae e ti
manda una mail piu' gestibile.
--
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! The Moment Is Now In All History, The Time Has Arrived And This Is The
  		One Place To Be. !>-
  			Savatage - This Is The Time

 lpr.err -/var/log/lpr/errors
ho visto il contenuto del file syslog.conf, ma l'unica voce che fa
riferimento a "notice" č:
news.notice         /var/log/news/news.notice
ma questo č il file dove vengono scritti i log ? ho controllato ed in questo
file non vi č scritto nulla, dove vanno a finire questi maledetti log ?
Ancora grazie.
Salvatore.

 file non vi č scritto nulla, dove vanno a finire questi maledetti log ?
Inizia a controllare dalla facility, che e' kern. Il mio syslog ha questa
sezione per kern
# Kernel logging
kern.=debug;kern.=info;kern.=notice  -/var/log/kernel/info
kern.=warn  -/var/log/kernel/warnings
kern.err  /var/log/kernel/errors
Riportando al tuo caso i log andrebbero in /var/log/kernel/info
L'utilizzo del .= e' spiegato nel manuale.
--
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**


 Riportando al tuo caso i log andrebbero in /var/log/kernel/info
..come ti dicevo non vi è una cartella kernel, forse la devo creare io ?


 ..come ti dicevo non vi è una cartella kernel, forse la devo creare io ?
Non vedo il problema. Il tuo firewall e' impostato per l'output dei log con
facility kernel e priority notice? Allora piazza nel syslog.conf una riga
del tipo
kern.=notice	-/dove/diavolo/vuoi
e ti trovi il log del firewall nel file specificato.
Pero' se lo leggessi il manuale del syslog...
--
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.mascanc.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**


Ciao Giuseppe, volevo dirti che finalmente :-) sono riuscito a vedere questi
"maledetti" log, ho inserito all'interno del file syslog.conf la riga:
kern.notice  /var/log/mia/msg.log
certo ora ho qualche problema da risolvere nella configurazione del firewall
e per questo credo che tornero' a "rompere" :-)
Comunque grazie per l'aiuto e per la pazienza.
Salvatore.

 Comunque grazie per l'aiuto e per la pazienza.
Not at all, pero' piu' manuale e meno newsgroup dai :-)
