Pagina 1 di 1
Help firewall iptables
Inviato: sab 30 giu 2007, 16:28
da moruz83
salve a tutti,
sto cercando da ore di realizzare un semplice firewall tramite regole iptables...
siccome non sono molto pratico non riesco a farlo fuznionare

allora intanto vi dico che ho una connessione adsl con modem ethernet
allora utilizzando questo va ovviamente tutto k:
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
for a in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $a
done
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 0 > /proc/sys/net/ipv4/tcp_ecn
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
se invece cerco di bloccare tutto il traffico e di far passare solo i pacchetti su una determinata porta non funziona più un tubo...
il codice sarebbe tipo questo:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A OUTPUT -p TCP --dport 80 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sicuramente ci sarà qualcosa di poco più sofisticato da aggiungere...
qualcuno mi può aiutare a capire?
il mio obiettivo è quello di bloccare tutto il traffico e lasciare aperte solo le porte 80 e 443 (o eventualmente qualche altra porta) indispensabili per la navigazione.
come si può fare?
grazie a tutti!
ciao
Inviato: sab 30 giu 2007, 18:32
da moruz83
Nessuno mi aiuta?

Inviato: sab 30 giu 2007, 20:25
da whites11
intanto io andrei per step:
iptables -F
#elimino le regole impostate
iptables -P OUTPUT DROP
iptables -A OUTPUT -p TCP --dport 80 -j ACCEPT
iptables -A OUTPUT -p TCP --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p sdp --dport 53 -j ACCEPT
# utlime 2 regole per il dns
così dovresti riuscire a navigare.
comunque leggiti una guida seria a iptables, poichè è un argomento complesso che richiede approfondimento e non tentativi
Inviato: sab 30 giu 2007, 23:18
da paperboy
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
#DNS
iptables -a OUTPUT -p udp -m udp --dport domain -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -a INPUT -p udp -m udp --sport domain -m state --state ESTABLISHED -j ACCEPT
#HTTP
iptables -a OUTPUT -p tcp -m tcp --dport http -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -a INPUT -p tcp -m tcp --sport http -m state --state ESTABLISHED -j ACCEPT
#HTTPS
iptables -a OUTPUT -p tcp -m tcp --dport https -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -a INPUT -p tcp -m tcp --sport https -m state --state ESTABLISHED -j ACCEPT
cosi puoi solo navigare ma non puoi scaricare posta, non puoi visitare un server ftp etc...
Inviato: mar 3 lug 2007, 13:33
da moruz83
grazie tanti a tutti. ora il browser funziona.
come diceva paper boy non posso visitare un server ftp...
io ho aggiunto queste due regole
# FTP
iptables -A OUTPUT -p tcp -m tcp --dport 20,21 -m state --state NEW,ESTABLISHED,RELATED
iptables -A INPUT -p tcp -m tcp --sport 20,21 -m state --state ESTABLISHED,RELATED
solo non funzionano... ho cercato anche in giro il funzionamento dell'ftp, per esempio per l'ftp attivo:
Il client FTP si connette al server verso la porta di destinazione TCP/21, con porta sorgente casuale (N), di solito maggiore di 1024...
(questa dovrebbe essere soddisfatta dalla regola di OUTPUT che controlla solo la dport)
Una volta stabilita la connessione su questo canale, il client si mette in ascolto sulla porta N+1, e manda al server (usando il canale TCP/21) il comando PORT N+1...
(la porta N+1 non dovrebbe contare dato che il controllo lo faccio sulla dport)
A questo punto il server inizierà una connessione dalla sua porta TCP/20 verso la porta TCP/N+1 del client.....
(il controllo è sulla sport in INPUT)
etc....
le regole sembrerebbero andar bene.... pero non funzionano... che ho sbagliato?
thx
Inviato: mar 3 lug 2007, 13:51
da Bart
Codice: Seleziona tutto
#!/bin/sh
#
# Script Firewall for IP-tables
#
IPT=/usr/sbin/iptables
# SET-UP POLICY CATENE PRINCIPALI
$IPT -t filter -F
$IPT -t filter -X
$IPT -t filter -Z
$IPT -t filter -P INPUT DROP
$IPT -t filter -P FORWARD DROP
$IPT -t filter -P OUTPUT DROP
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
/bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
/bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
/bin/echo '1' > /proc/sys/net/ipv4/tcp_syncookies
/bin/echo '0' > /proc/sys/net/ipv4/conf/all/accept_source_route
$IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -A INPUT -i lo -j ACCEPT
$IPT -t filter -A OUTPUT -o lo -j ACCEPT
$IPT -t filter -A OUTPUT -j ACCEPT
Inviato: mar 3 lug 2007, 13:57
da paperboy
moruz83 ha scritto:grazie tanti a tutti. ora il browser funziona.
come diceva paper boy non posso visitare un server ftp...
io ho aggiunto queste due regole
# FTP
iptables -A OUTPUT -p tcp -m tcp --dport 20,21 -m state --state NEW,ESTABLISHED,RELATED
iptables -A INPUT -p tcp -m tcp --sport 20,21 -m state --state ESTABLISHED,RELATED
solo non funzionano... ho cercato anche in giro il funzionamento dell'ftp, per esempio per l'ftp attivo:
Il client FTP si connette al server verso la porta di destinazione TCP/21, con porta sorgente casuale (N), di solito maggiore di 1024...
(questa dovrebbe essere soddisfatta dalla regola di OUTPUT che controlla solo la dport)
Una volta stabilita la connessione su questo canale, il client si mette in ascolto sulla porta N+1, e manda al server (usando il canale TCP/21) il comando PORT N+1...
(la porta N+1 non dovrebbe contare dato che il controllo lo faccio sulla dport)
A questo punto il server inizierà una connessione dalla sua porta TCP/20 verso la porta TCP/N+1 del client.....
(il controllo è sulla sport in INPUT)
etc....
le regole sembrerebbero andar bene.... pero non funzionano... che ho sbagliato?
thx
ho fatto una semi-guida sull'argomento sul wiki
http://www.slacky.eu/wikislack/index.ph ... FTP_Client
l'ftp è uno dei protocolli complessi, ovvero usa una seconda (o piu connessioni) differente da quella che instauri tu.
netfilter (iptables) ha realizzato dei moduli per questi protocolli complessi i quali cercano le altre connessioni che fanno parte dello stesso protocollo.
di default il kernel predispone gia irc, ftp e (qualche altro che non sapevo come testarlo)
bisogna caricare tali moduli prima di impostare le regole e aggiungere le state RELATED
ora non ricordo il nome esatto dei modulo, prova a vedere se è gia caricato o lo carica da solo.
comunque se il tuo intento è proteggere solo il tuo pc desktop e sei solo tu ad usarlo ti basta questa regola.
Codice: Seleziona tutto
iptables -a INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -a OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
con questa regola blocchi tutte le connessioni in input tranne quelle che servono per le connessioni che instauri tu.
questa configurazione è sufficiente per un uso classico del pc.
se usi server o programmi p2p dei aggiungere qualche regola in base al funzionamento di tali software
Inviato: mar 3 lug 2007, 16:14
da moruz83
con lsmod | grep ftp non mi dice niente... come faccio a trovare questo modulo che dici tu?
con le regole sulla guida che mi hai consigliato non va lo stesso... però non ho voglia di aprire tutte le porte, per questo cercavo di fare una cosa più precisa
inoltre per le regole di sicurezza, cioè quell relative all' antispoof ed al portscan mi dice più volte : iptables: No chain/target/match by that name
perché? eppure ho fatto copia ed incolla
ciao grazie
Inviato: mar 3 lug 2007, 16:21
da paperboy
moruz83 ha scritto:con lsmod | grep ftp non mi dice niente... come faccio a trovare questo modulo che dici tu?
con le regole sulla guida che mi hai consigliato non va lo stesso... però non ho voglia di aprire tutte le porte, per questo cercavo di fare una cosa più precisa
inoltre per le regole di sicurezza, cioè quell relative all' antispoof ed al portscan mi dice più volte : iptables: No chain/target/match by that name
perché? eppure ho fatto copia ed incolla
ciao grazie
ho fatto una guida un po complessa e me ne sono accorto dopo, li ho creato nuove catene per dividere gli utilizzi.
comunque il modulo è ip_conntrack_ftp, controlla nel kernel se è statico o assente.
Inviato: mar 3 lug 2007, 16:47
da moruz83
paperboy ha scritto:
ho fatto una guida un po complessa e me ne sono accorto dopo, li ho creato nuove catene per dividere gli utilizzi.
comunque il modulo è ip_conntrack_ftp, controlla nel kernel se è statico o assente.
instanto grazie per le risposte
ho dato in console modprobe ip_conntrack_ftp
e controllando con lsmod il modulo è caricato...
infatti riesco ora a navigare in ftp...
ma per caricarlo ogni volta come faccio?
è possibile anche usare il comando echo 1 ... nello script per il frewall?
non conosco il percorso di questo modulo.
ciao e grazie!!
Inviato: mar 3 lug 2007, 16:50
da paperboy
moruz83 ha scritto:paperboy ha scritto:
ho fatto una guida un po complessa e me ne sono accorto dopo, li ho creato nuove catene per dividere gli utilizzi.
comunque il modulo è ip_conntrack_ftp, controlla nel kernel se è statico o assente.
instanto grazie per le risposte
ho dato in console modprobe ip_conntrack_ftp
e controllando con lsmod il modulo è caricato...
infatti riesco ora a navigare in ftp...
ma per caricarlo ogni volta come faccio?
è possibile anche usare il comando echo 1 ... nello script per il frewall?
non conosco il percorso di questo modulo.
ciao e grazie!!
nello script del firewall ci metti modprobe ip_conntrack_ftp e risolvi il problema no? io l'ho compilato come statico sul mio kernel visto che lo ritengo essenziale