PDA

View Full Version : iptables................un controllino pse!!!


stefanoxjx
20-07-2004, 17:26
Basandomi sulle informazioni ricavate da: http://forum.hwupgrade.it/showthread.php?s=&threadid=709638&highlight=sygate

Ho scritto una serie di regole per iptables che vorrei qualcuno mi controllasse perchè è la prima volta che attivo un firewall.

Tenendo presente che questo firewall va attivato su un pc che si collega in internet tramite un TA ISDN, usa fetchmail per scaricarsi la posta ogni x minuti, sendmail per inviare la posta, squid come proxy server e ha bisogno di poter accettare connessioni ssh da internet.
Le regole che ho scritto sono:

# Elimino tutti i pacchetti non validati da una regola specifica
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

# Accetta tutti i pacchetti che arrivano dal mio pc e dai vari pc in rete
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i 192.168.0.11 -j ACCEPT
iptables -A INPUT -i 192.168.0.12 -j ACCEPT
iptables -A INPUT -i 192.168.0.13 -j ACCEPT


# Accetto tutti i pacchetti derivanti da connessioni stabilite dal sottoscritto
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# Apro la porta 22 per una sessione SSH esterna
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED
iptables -A OUTPUT -p tcp -m tcp --sport 22 -m state --state ESTABLISHED

Sono ben accetti i consigli e le bastonate in testa (virtuali) in caso di errori :D

Grazie.

Ikitt_Claw
20-07-2004, 17:35
Originariamente inviato da stefanoxjx
iptables -A INPUT -i 192.168.0.11 -j ACCEPT
iptables -A INPUT -i 192.168.0.12 -j ACCEPT
iptables -A INPUT -i 192.168.0.13 -j ACCEPT

Io metterei

# iptables -A INPUT -i INTERF_LAN -i 192.168.0.0/24 -j ACCEPT



# Apro la porta 22 per una sessione SSH esterna
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED
iptables -A OUTPUT -p tcp -m tcp --sport 22 -m state --state ESTABLISHED


-m tcp dovrebbe essere ridondante.

Stai usando queste regole attualmente?
Dovresti avere malfunzionamenti, perche` il packet filter scarta tutti i pacchetti creanti nuove connessioni verso l'esterno (-P OUTPUT DROP e nessuna regola esplicita).

Io inizierei a mettere una cosa tipo

# iptables -A INPUT -o INTERF_LAN -m state --state NEW, ESTABLISHED -j ACCEPT

anche se e` sub-ottimale (affatto granulare...)

The X
20-07-2004, 17:49
SE nn t vuoi immattire apri d default tutto l'output...

In ogni caso devi specificare delle regole d input-output x squid, sendmail e fetchmail....

stefanoxjx
20-07-2004, 19:54
Originariamente inviato da Ikitt_Claw
Io metterei

# iptables -A INPUT -i INTERF_LAN -i 192.168.0.0/24 -j ACCEPT




-m tcp dovrebbe essere ridondante.

Stai usando queste regole attualmente?
Dovresti avere malfunzionamenti, perche` il packet filter scarta tutti i pacchetti creanti nuove connessioni verso l'esterno (-P OUTPUT DROP e nessuna regola esplicita).


Non ho ancora trovato il tempo di testarle, quindi al momento sono sguarnito di firewall.

stefanoxjx
20-07-2004, 19:59
Originariamente inviato da The X
SE nn t vuoi immattire apri d default tutto l'output...

In ogni caso devi specificare delle regole d input-output x squid, sendmail e fetchmail....

Domanda:
fetchmail=porta 110 sia su wan che su lan
sendmail=porta 25 sia su wan che su lan
squid=porta 80 su wan 2080 su lan

Cosa intendi per "creare regole specifiche" per i sopracitati se il traffico prodotto dalla lan è aperto in toto e quello che va verso la lan viene generato dal mio pc e quindi le connessioni sono ESTABLISHED??
Spero di essere stato chiaro :muro:

Ikitt_Claw
20-07-2004, 20:02
Originariamente inviato da stefanoxjx
Domanda:
fetchmail=porta 110 sia su wan che su lan

Si, ma con una distinzione. La porta sorgente di solito e` effimera (presa a caso sopra 16384 o, di solito, 32768), quella destinazione e`, ovviamente 110; l'host non deve quindi permettere il traffico in entrata sulla 110, ma consentire quello in uscita diretto alla 110

Cosa intendi per "creare regole specifiche" per i sopracitati se il traffico prodotto dalla lan è aperto in toto e quello che va verso la lan viene generato dal mio pc e quindi le connessioni sono ESTABLISHED??

Sono ESTABLIDHED... Dopo che son passate per NEW, quindi devi permettere anche questa condizione, altrimenti l'host non riuscira` ad instaurare alcuna connessione con l'esterno.

The X
20-07-2004, 20:12
Credo ke claw t abbia risposto in modo esaustivo :D

stefanoxjx
20-07-2004, 20:25
Più chiaro di così..........................................
Grazie.

HexDEF6
20-07-2004, 22:40
prima di chiederti perche' internet non funziona... ricordati di permettere la risoluzione dei nomi!

stefanoxjx
20-07-2004, 23:19
Ho cambiato tutte le carte in tavola :D e con altre info che ho trovato in rete ho creato questo script (che incredibbbile ma vero.......funziona)

#!/bin/bash

# Policy di default delle catene
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Accetta tutti i pacchetti in input e output dalla rete
iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT

# Accetto tutti i pacchetti che derivano da connessioni che io stesso ho iniziato
iptables -A INPUT -m state -p all --state ESTABLISHED,RELATED -j ACCEPT

# Apro la porta ssh
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A OUTPUT -p tcp --dport ssh -j ACCEPT


# loggo tutto quello che NON deriva da connessioni che io ho instaurato
# a livello 7 (debug) del syslog. Questo significa, per esempio in Debian, che i pacchetti
# bloccati verranno visualizzati in /var/log/syslog.
iptables -A INPUT -j LOG --log-level 7 --log-prefix "Blocked Packet: "

L'unica cosa che non sono ancora sicuro funzioni è la parte riguardante il log.
Non ho ancora trovato nessuna segnalazione su syslog, mentre prima bastava stare collegati 10 minuti per trovarsi subito dei log di samba con i nomi dei pc dei malintenzionati

:p

The X
21-07-2004, 09:15
Originariamente inviato da stefanoxjx
L'unica cosa che non sono ancora sicuro funzioni è la parte riguardante il log.
Non ho ancora trovato nessuna segnalazione su syslog, mentre prima bastava stare collegati 10 minuti per trovarsi subito dei log di samba con i nomi dei pc dei malintenzionati

:p

Sulla parte dei log mi disp ma nn t posso aiutare... dopo la posta è la cosa ke so fare d - :(

Per il resto credo ke sia a posto...

ilsensine
21-07-2004, 09:40
Originariamente inviato da stefanoxjx
iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT
Bloccherei comunque i pacchetti marcati INVALID.


iptables -A INPUT -m state -p all --state ESTABLISHED,RELATED -j ACCEPT
-p all è superfluo

iptables -A INPUT -p tcp --dport ssh -j ACCEPT

Controlla che lo stato sia ESTABLISHED/NEW. Quelli con stato NEW dovresti almeno loggarli.


iptables -A OUTPUT -p tcp --dport ssh -j ACCEPT

Superfluo/scorretto. La porta remota non è la 22!!!

ilsensine
21-07-2004, 09:42
Originariamente inviato da stefanoxjx
iptables -P OUTPUT ACCEPT

Perché default su ACCEPT?

The X
21-07-2004, 09:49
Originariamente inviato da ilsensine
Perché default su ACCEPT?

Per semplificarsi la vita quando i servizi sono tanti e/o complessi (tipo ftp attivo/passivo, amule ecc ecc)...

Imho...

l.golinelli
21-07-2004, 12:21
Originariamente inviato da The X
Per semplificarsi la vita quando i servizi sono tanti e/o complessi (tipo ftp attivo/passivo, amule ecc ecc)...

Imho...

Diciamo che non l'approccio migliore per un firewall :rolleyes:

The X
21-07-2004, 12:31
Originariamente inviato da l.golinelli
Diciamo che non l'approccio migliore per un firewall :rolleyes:

Beh... nn posso dirti ke hai torto ma t posso dire ke, informandomi in giro, nn sono poi rari casi in cui s'imposta l'output come accept...

Del resto può anke avere senso considerare sicuro quello ke esce dalla ns macchina...

io, cmq, sul mio serverino linux personale ho messo DROP a tutto MA è anke vero ke mi sono immattito x trovare poi le regole giuste d output....

Ikitt_Claw
21-07-2004, 12:38
Originariamente inviato da The X
Del resto può anke avere senso considerare sicuro quello ke esce dalla ns macchina...


Questo apre la porta a (D)DoS e altre piacevolezze...
Non e` una buona politica, puo` essere tollerabile ma non e` ottimale, praticamente mai.

l.golinelli
21-07-2004, 12:41
Originariamente inviato da Ikitt_Claw
Questo apre la porta a (D)DoS e altre piacevolezze...
Non e` una buona politica, puo` essere tollerabile ma non e` ottimale, praticamente mai.

Infatti, molto meglio configurare minuzionsamente anche le regole di output...
D'altronde un firewall funziona solo se va bene... :D

stefanoxjx
21-07-2004, 12:48
Originariamente inviato da ilsensine
Perché default su ACCEPT?

Perchè altrimenti avrei dovuto scrivere un sacco di regole per aprire le porte dei servizi che mi servono e comunque non ho interesse a bloccare le connessioni in uscita dalla mia rete.
Tutto sommato, voglio bloccare quei furboni (sempre gli stessi) che cercano di connettere il mio disco C (su linux :rotfl: )