PDA

View Full Version : [IPTABLES] fatto semplice semplice


shura
17-09-2008, 09:59
ho letto un pò in giro ma di roba concisa non ne ho trovata..

attualmente in casa ho la seguente rete

router (alice w-gate che non posso eliminare visto voip e home tv)

pc windows vista
pc test debian etch
pc muletto debian base base solo cli sul quale gira torrentflux-b4rt

ora dovrei configurare ad hoc il muletto che sta acceso 24/7 con iptables in modo che faccia da personal firewall senza quindi interagire con il resto della rete:

apra un range di porte che uso per torrent
sia accessibile da dentro la rete alla porta 80 e in ssh (22)
sia accessibile dall'esterno come sopra
sia tranquillamente aggiornabile/posso installare altri pacchetti da apt o aptitude all'occorrenza

e che blocchi tutto il resto

ovviamente le regole devono essere caricate all'avvio e per ora l'unico metodo che ho trovato leggendo in giro è quello di fare ad esempio
iptables-save > /etc/firewall-rules

e di andare ad infilare in /etc/network/interfaces sotto iface lo ineto loopback:

pre-up iptables-restore < /etc/firewall-rules

è corretto fare così?

leggendo sempre in giro ho letto che è buona norma bloccare tutto in ingresso ed in uscita e poi tramite regole fatte apposta aprire quello che serve

la sintassi più o meno l'ho capita ma non riesco a tirare fuori un set di regole semplice senza nessuna pretesa ma che mi dia un minimo di garanzia sulla sicurezza

leuzr0x
17-09-2008, 10:11
Prima cosa, il firewall che farai ha due schede di rete? una iface interna ed una esterna..

shura
17-09-2008, 10:14
Prima cosa, il firewall che farai ha due schede di rete? una iface interna ed una esterna..

nono il firewall lo configuro su quella macchina per se stessa..quindi nessun firewall di rete

leuzr0x
17-09-2008, 10:37
Ok, quindi puoi impostare anche solo la policy di INPUT per ora a DROP di default e aprire cio' che ti serve.
Le porte 22 e 80 le puoi aprire verso chiunque, tanto mi sembra di capire che non devi filtrare per lan O per internet.
E poi apri un range normalmente. Che problemi particolari hai?

shura
17-09-2008, 10:43
a fare tutto lo script e renderlo avviabile..decisamente più leggo roba in giro più non ci capisco un tubo :(
preciso che il gateway ha ip 192.168.1.1 e il pc in questione 192.168.1.10
le porte che deve aprire per usare il torrente sono 10 (ora non ricordo il numero preciso)
per ora il mio file di creazione è:



#elimino qualsiasi precedente regola creata
iptables -F
iptables -Z
iptables -X

#imposto le policy di default
#se non è specificata una regola precisa i pacchetti vengono scartati di default
iptables -P INPUT -j DROP
iptables -P FORWARD -j DROP
iptables -P OUTPUT -j DROP

#permetto tutto il traffico proveniente dalla rete
iptables -A INPUT -s 127.0.0.1 -j ACCEPT

#permetto il transito di pacchetti per le connessioni già stabilite
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT


salvo il tutto in un files tramite:
iptables-save > /etc/firewall-rules

e uso l'unico metodo di avvio che ho trovato finora:
andare ad infilare in /etc/network/interfaces sotto "iface lo inet loopback":

pre-up iptables-restore < /etc/firewall-rules


ora dovrei iniziare a creare le chains e il firewall veroe proprio ma mi pianto e non riesco a trovare nessuna guida semplice che mi porti avanti

leuzr0x
17-09-2008, 12:08
Ok, come ti dicevo, per ora tieni solo la INPUT a drop di default. La FORWARD non ti serve in quanto e' la catena usata nel caso il tuo server facesse da router/gateway per la rete.


# variabili
MYIP=192.168.1.10
TCPPORTLIST=1,2,3,4,5
UDPPORTLIST=6,7,8

#elimino qualsiasi precedente regola creata
iptables -F
iptables -Z
iptables -X

#imposto le policy di default
#se non è specificata una regola precisa i pacchetti vengono scartati di default
iptables -P INPUT -j DROP
iptables -P OUTPUT -j ACCEPT

#permetto tutto il traffico proveniente da localhost
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

#permetto il transito di pacchetti per le connessioni già stabilite
iptables -A INPUT -d $MYIP -m state --state RELATED,ESTABLISHED -j ACCEPT

# permetto il traffico verso ssh e web
iptables -A INPUT -p tcp --syn -d $MYIP --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -d $MYIP --dport 80 -j ACCEPT

# permetto il traffico p2p
iptables -A INPUT -p tcp --syn -d $MYIP -m multiport --dports $TCPPORTLIST -j ACCEPT
iptables -A INPUT -p udp --syn -d $MYIP -m multiport --dports $UDPPORTLIST -j ACCEPT


Questa e' una base da cui puoi partire personalizzando ad esempio gli icmp accettati o altre porte che ti servissero aperte

akyra
17-09-2008, 13:22
una curiosità: come mai non lo vuoi usare come gateway?
non ti interessa usare internet con gli altri pc della rete?

leuzr0x
17-09-2008, 13:26
Beh se gia' ha il router che condivide Internet e filtra le connessioni, sarebbe superfluo un ulteriore gateway+firewall. :p

shura
17-09-2008, 14:24
ok grazie per lo script e per l'uso di variabili..avevo visto che si poteva fare ma stavo provando ad andare per gradi

tecnicamente potrei mettere il firewall davanti a tutta la rete ma mi interessa poco per alcuni motivi
tra cui il fatto che sotto al router ci sta la x360 e quando gioco online non vorrei subire lag
sia xchè in genere tengo il pc con vista pulito ordinato e sottoposto a periodica manutenzione quindi farmi troppe paranoie sulla sicurezza non è il caso

cmq un firewall del genere è un qualcosa che potrei metter su sul pc di test..ma prima tocca capire bene iptables

giusto una domanda, la riga:

#permetto tutto il traffico proveniente da localhost
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

è quella che permette ai pc in lan di comunicare tra di loro senza alcuna restrizione?
sul suddetto muletto ho samba impostato per condividere files con il pc windows

leuzr0x
17-09-2008, 17:16
giusto una domanda, la riga:

#permetto tutto il traffico proveniente da localhost
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

è quella che permette ai pc in lan di comunicare tra di loro senza alcuna restrizione?


No, la riga e' necessaria per le operazioni di loopback. 127.0.0.1 e' un ip riservato alla macchina sempre presente anche quando non hai schede di rete (e' un'interfaccia fittizia); poiche' alcuni servizi potrebbero utilizzarlo e' sempre meglio permettere il networking.
Se vuoi che le macchine della lan abbiano accesso completo al tuo muletto allora dovrai aggiungere:


iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.10 -j ACCEPT

shura
17-09-2008, 19:11
ok grazie mille sei stato gentilissimo

quindi quanto fatto finora va bene per un firewall standard..se col tempo volessi aggiungere regole più precise, roba leggermente più avanzata..
hai qualche tutorial o guida da leggere?roba che non si spinga troppo oltre

shura
18-09-2008, 00:20
ok ho fatto una prova passando il file e settandolo allo startup ma niente

quello che è uscito è:


# variabili
MYIP=192.168.1.10
TCPPORTLIST=1,2,3,4,5
UDPPORTLIST=6,7,8

#elimino qualsiasi precedente regola creata
iptables -F
iptables -Z
iptables -X

#imposto le policy di default
#se non è specificata una regola precisa i pacchetti vengono scartati di default
iptables -P INPUT -j DROP
iptables -P OUTPUT -j ACCEPT

#permetto tutto il traffico proveniente da localhost
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

#permetto il transito di pacchetti per le connessioni già stabilite
iptables -A INPUT -d $MYIP -m state --state RELATED,ESTABLISHED -j ACCEPT

# permetto il traffico verso ssh e web
iptables -A INPUT -p tcp --syn -d $MYIP --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -d $MYIP --dport 80 -j ACCEPT

# permetto il traffico p2p
iptables -A INPUT -p tcp --syn -d $MYIP -m multiport --dports $TCPPORTLIST -j ACCEPT
iptables -A INPUT -p udp --syn -d $MYIP -m multiport --dports $UDPPORTLIST -j ACCEPT

#permetto il traffico interno alla lan
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.10 -j ACCEPT

ho semplicemente preso questo file (era un .txt su windows) gli ho levato l'estensione e l'ho rinominato in /etc/firewall-rules

sono andato in /etc/network/interfaces e sotto 'iface lo inet loopback'
ho messo la stringa: pre-up iptables-restore < /etc/firewall-rules

ho riavviato ma NIENTE
che noobata ho fatto?

leuzr0x
18-09-2008, 01:21
Ammetto che potrebbe esserci qualche errore. Hai provato a lanciarlo come fosse uno script bash e vedere se ti da' errori?

Come doc c'e' sempre il validissimo
http://iptables-tutorial.frozentux.net/iptables-tutorial.html

shura
18-09-2008, 08:58
eh bella domanda..come lo rendo uno script bash?

cmq sto provando a dare i comandi separatamente e a:

iptables -P INPUT -j DROP
iptables -P OUTPUT -j ACCEPT


'-P requires a chain and a policy'

edit3

ho dato semplicemente (trovato su una guida, sto pasticciando tanto chi se ne frega sto pc è up solo per dei test)

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j
ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

salvandolo e avviandolo come prima e funziona..mi sa che ci sta qualche errore di sintassi in quello che abbiamo creato

Tony Lio
18-09-2008, 09:17
eh bella domanda..come lo rendo uno script bash?
apri un editor: gedit

in testa al file inserisci:
#!/bin/bash

copia quello che hai scritto ed alla fine inserisci:
exit 0

Salva il file in formato .sh
apri una bash, vai nella cartella dove hai salvato il file e dai questo comando:
chmod a+x nomefile.sh
dopo di che:
./nomefile.sh

e vedi che ti dice. Probabilmente devi essere root per far si che venga eseguito bene, oppure sudo, vedi tu.

ciao

shura
18-09-2008, 09:39
thx anche a lio

cmq sto provando i comandi uno ad uno a mano e quando arrivo a:

iptables -A INPUT -p udp --syn -d $MYIP -m multiport --dports $UDPPORTLIST -j ACCEPT

'unknown arg --syn'

da man iptables:

[!] --syn
Only match TCP packets with the SYN bit set and the ACK,RST and
FIN bits cleared. Such packets are used to request TCP connec-
tion initiation; for example, blocking such packets coming in an
interface will prevent incoming TCP connections, but outgoing
TCP connections will be unaffected. It is equivalent to --tcp-
flags SYN,RST,ACK,FIN SYN. If the "!" flag precedes the
"--syn", the sense of the option is inverted.


probabilmente non va messo quando si tratta di udp?

leuzr0x
18-09-2008, 09:53
iptables -A INPUT -p udp --syn -d $MYIP -m multiport --dports $UDPPORTLIST -j ACCEPT

'unknown arg --syn'



Si ho fatto un copia/incolla di troppo :p :p

Per la policy dovrebbe essere
iptables -P INPUT DROP (senza -j)

shura
18-09-2008, 09:57
e anche qua:

iptables -P INPUT -j DROP
iptables -P OUTPUT -j ACCEPT

non ci va il -j ;)


per il resto ho messo tutti le stringhe a mano e le ho salvate
avviandolo con quel metodo in /etc/network/interfaces all'avvio iptables -L mi restituisce tutto corretto

ora ci installo sopra tutto quello che c'è sul muletto sul quale andranno tutte ste cose e testo il funzionamento..

resta di fatto che quel files così come l'abbiamo scritto, con i commenti e le variabili non me lo fa usare..devo provare sta cosa del bash

un'altra cosa che non va è la stringa che permette il traffico di rete..non riesco ad accedere alle cartelle condivise con samba dal pc windows.

shura
18-09-2008, 14:50
niente da fare, sto provando in tutti i modi ma non c'è verso di far andare samba con quei comandi di iptables..

ovviamente se reimposto le policy:

iptables -P INPUT ACCEPT

il tutto funziona quindi deve essere per forza un problema di regole

praticamente il file finale dal quale prendo i comandi da passare ad iptables è:


# variabili
MYIP=192.168.1.3
TCPPORTLIST=4672,4673,4674,4675,4676,4677,4678,4679,4680,4681,4682
UDPPORTLIST=4672,4673,4674,4675,4676,4677,4678,4679,4680,4681,4682

#elimino qualsiasi precedente regola creata
iptables -F
iptables -Z
iptables -X

#imposto le policy di default
#se non è specificata una regola precisa i pacchetti vengono scartati di default
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

#permetto tutto il traffico proveniente da localhost
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

#permetto il transito di pacchetti per le connessioni già stabilite
iptables -A INPUT -d $MYIP -m state --state RELATED,ESTABLISHED -j ACCEPT

# permetto il traffico verso ssh e web
iptables -A INPUT -p tcp --syn -d $MYIP --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -d $MYIP --dport 80 -j ACCEPT

# permetto il traffico p2p
iptables -A INPUT -p tcp --syn -d $MYIP -m multiport --dports $TCPPORTLIST -j ACCEPT
iptables -A INPUT -p udp -d $MYIP -m multiport --dports $UDPPORTLIST -j ACCEPT

#permetto il traffico interno alla lan
iptables -A INPUT -s 192.168.1.0/24 -d $MYIP -j ACCEPT

ma sembra tutto a posto..l'ultima regola dovrebbe garantire l'accesso..

Pardo
18-09-2008, 21:11
Samba non funziona perche` il protocollo Microsoft fa ampio uso dei broadcast, che implicitamente neghi ogni volta che usi -s e -d.
Quindi per aprire Samba devi fare:
iptables -A INPUT -i eth0 -p tcp -m multiport --dport 137,138,139,445 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 137:139 -j ACCEPT
(o se vuoi aprire tutto, iptables -A INPUT -i eth0 -j ACCEPT )

Impara ad usare sempre -i (--interface) (e mai -s/-d da soli), perche` un IP puo` essere falsificato facilmente (come anche il MAC), e l'interfaccia fisica su cui arriva un pacchetto e` l'unica certezza a meno che non ci si trovi gia` in una rete ad alta sicurezza con tutte le workstation e switch blindati.
Ad esempio la regola di localhost deve essere semplicemente:
iptables -A INPUT -i lo -j ACCEPT
Perche` di pacchetti falsificati con scritto 127.0.0.1 ne potrebbero arrivare anche da fuori.

E dal momento che usi la policy DROP, metti un LOG globale alla fine dello script. Se non vedi quello che stai bloccando non puoi capire cosa devi aprire quando non funziona qualcosa.
iptables -A INPUT -m limit --limit 60/minute -j LOG --log-prefix "#=Drop=# "
(il log fa parte della facility kernel di Syslog, quindi finisce in uno dei file in /var/log, a seconda della distribuzione. Vedi eventualmente /etc/syslog.conf)

leuzr0x
18-09-2008, 22:03
Pardo ha perfettamente ragione. Diciamo che questo era lo step 1/b :p

shura
18-09-2008, 22:20
Samba non funziona perche` il protocollo Microsoft fa ampio uso dei broadcast, che implicitamente neghi ogni volta che usi -s e -d.
Quindi per aprire Samba devi fare:
iptables -A INPUT -i eth0 -p tcp -m multiport --dport 137,138,139,445 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 137:139 -j ACCEPT
(o se vuoi aprire tutto, iptables -A INPUT -i eth0 -j ACCEPT )

Impara ad usare sempre -i (--interface) (e mai -s/-d da soli), perche` un IP puo` essere falsificato facilmente (come anche il MAC), e l'interfaccia fisica su cui arriva un pacchetto e` l'unica certezza a meno che non ci si trovi gia` in una rete ad alta sicurezza con tutte le workstation e switch blindati.
Ad esempio la regola di localhost deve essere semplicemente:
iptables -A INPUT -i lo -j ACCEPT
Perche` di pacchetti falsificati con scritto 127.0.0.1 ne potrebbero arrivare anche da fuori.

E dal momento che usi la policy DROP, metti un LOG globale alla fine dello script. Se non vedi quello che stai bloccando non puoi capire cosa devi aprire quando non funziona qualcosa.
iptables -A INPUT -m limit --limit 60/minute -j LOG --log-prefix "#=Drop=# "
(il log fa parte della facility kernel di Syslog, quindi finisce in uno dei file in /var/log, a seconda della distribuzione. Vedi eventualmente /etc/syslog.conf)

perfetto thx inizio a capire meglio

cmq quella regola prima l'avevo fixata semplicemente a:

iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

senza specificare quindi l'ip di destinazione e dal pc con vista accedevo tranquillamente alle cartelle condivise

è che in giro non ci sta una guida esplicativa di basso livello..
ogni faq o howto che incontro è di 100 pagine con troppa roba
sarebbe bello un tutorial per un personal firewall che spieghi anche xchè vanno fatte alcune scelte

(o se vuoi aprire tutto, iptables -A INPUT -i eth0 -j ACCEPT )

diciamo che il traffico locale lo lascerei libero per qualsiasi altra necessità
ma la cosa che non mi è chiara:
googlando avevo visto che la gente apriva samba appunto con -i eth0 (nel mio caso è eth1) ma sulla guida di qualche post fa si parlava che con quel parametro si accetta tutto il traffico sull'interfaccia specificata e l'avevo inteso quasi come un inibire il firewall

iptables -A INPUT -m limit --limit 60/minute -j LOG --log-prefix "#=Drop=# "

non posso specificare un log per iptables e basta con un nome e un percorso che specifico io?


Impara ad usare sempre -i (--interface) (e mai -s/-d da soli)

quindi conviene eliminare dallo script tutti i riferimenti a -d ipdelpc sostituendo con -i ethX?

chissà se ho fatto tutto bene:

# variabili
MYIP=192.168.1.3
NETINTERFACE=eth1
TCPPORTLIST=4672,4673,4674,4675,4676,4677,4678,4679,4680,4681,4682
UDPPORTLIST=4672,4673,4674,4675,4676,4677,4678,4679,4680,4681,4682
SAMBATCP=137,138,139,445
SAMBAUDP=137,138,139

#elimino qualsiasi precedente regola creata
iptables -F
iptables -Z
iptables -X

#imposto le policy di default
#se non è specificata una regola precisa i pacchetti vengono scartati di default
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

#permetto tutto il traffico proveniente da localhost
iptables -A INPUT -i lo -j ACCEPT

#permetto il transito di pacchetti per le connessioni già stabilite
iptables -A INPUT -i $NETINTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPT

# permetto il traffico verso ssh e web
iptables -A INPUT -p tcp --syn -i $NETINTERFACE --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -i $NETINTERFACE --dport 80 -j ACCEPT

# permetto il traffico p2p
iptables -A INPUT -p tcp --syn -i $NETINTERFACE -m multiport --dports $TCPPORTLIST -j ACCEPT
iptables -A INPUT -p udp -i $NETINTERFACE -m multiport --dports $UDPPORTLIST -j ACCEPT

#permetto samba
iptables -A INPUT -i $NETINTERFACE -p tcp -m multiport --dport $SAMBATCP -j ACCEPT
iptables -A INPUT -i $NETINTERFACE -p udp --dport $SAMBAUDP -j ACCEPT
#permetto tutto il traffico all'interno della lan
#iptables -A INPUT -i eth0 -j ACCEPT

#cose da sistemare
# limita il ping per evitare eventuali ping flood
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

#logfile in caso di drop di pacchetti
iptables -A INPUT -m limit --limit 60/minute -j LOG --log-prefix "#=Drop=# "


la 22, 80 e il range di porte che specifico sopra restano cmq 'scoperte'
ci sta qualcosa per proteggerle senza interferire con il traffico che devono consentire?

leuzr0x
18-09-2008, 22:42
diciamo che il traffico locale lo lascerei libero per qualsiasi altra necessità
ma la cosa che non mi è chiara:
googlando avevo visto che la gente apriva samba appunto con -i eth0 (nel mio caso è eth1) ma sulla guida di qualche post fa si parlava che con quel parametro si accetta tutto il traffico sull'interfaccia specificata e l'avevo inteso quasi come un inibire il firewall
Si infatti con quella regola accetti tutto. Specificare l'interfaccia di entrata/uscita dei pacchetti e' sempre una buona cosa. Diciamo che comunque, avendo una sola interfaccia di rete potrebbe anche essere evitato (tranne che per il localhost che e' piu' corretto specificare -i lo)


non posso specificare un log per iptables e basta con un nome e un percordo che specifico io?
iptables logga tramite il syslog di sistema. Una volta c'era ulog che logga in userspace, non so se sia ancora attivo ma potrebbe fare al caso tuo.

shura
18-09-2008, 23:43
eh ma aprire tutto con quella regola non significa rendere inutile il firewall?

Pardo
19-09-2008, 00:59
eh ma aprire tutto con quella regola non significa rendere inutile il firewall?

Il punto e` che per la tua situazione il firewall e` gia` inutile, perche` e` il router la difesa.

Mettere un filtro per IP 192.168.1.* come avevi messo, non serve a niente nella tua situazione, perche` l'IP come ho gia` detto si puo` modificare a piacimento. Se non lo capisci immagina di essere tu l'intruso :) Per aggirare il firewall del tuo pc non devi far altro che settarti l'IP giusto :) E` la stessa difficolta` che incontrerebbe un intruso reale che per ipotesi avesse gia` bucato il router: una volta ottenuto accesso alla LAN, ci vogliono 3 secondi per vedere gli IP usati e spacciarsi per uno di quelli.

Quindi se assumi che un intruso possa entrare nella LAN nonostante il blocco del router, devi pensare a contromisure a layer 7 (es. mettere la password alle share di Samba o configurare il dominio) e layer 2 (mettere uno switch coi MAC programmabili quindi filtro MAC di iptables x tagliar fuori il router dai servizi locali).

Ricordati sempre che l'IP e` uno strumento di amministrazione ma NON di sicurezza, quando stai affidando la sicurezza di qualcosa agli IP stai quasi sicuramente facendo un errore!


la 22, 80 e il range di porte che specifico sopra restano cmq 'scoperte' ci sta qualcosa per proteggerle senza interferire con il traffico che devono consentire?
Beh la 80 chi la deve usare? Se e` un sito web per il pubblico non ha senso mettere restrizioni ._.
La 22 sicuramente la usi solo te per cui intanto puoi cambiarla per sfuggire ai bot (dal file di config di ssh si puo` cambiare la porta usata), poi ci puoi mettere filtro per IP se ti colleghi sempre dagli stessi posti (es. metti la subnet del provider del posto da cui ti colleghi) e infine x ancora maggior sicurezza puoi usare l'autenticazione rsa e disabilitare tutti gli altri tipi d'autenticazione.

shura
19-09-2008, 08:36
il router che ho al momento è l'alice wgate
e detto con tutta sincerità mi sembra una delle peggiori porcherie con cui io abbia mai avuto a che fare
però lo devo tenere per il voip e la home tv

mettere il firewall su ogni macchina mi serve appunto per coprire eventuali malfunzionamenti del router

la faccenda dell'ip l'ho capita ma la regola nel particolare:

iptables -A -i eth1 -j accept

non è praticamente come aprire tutto?
xchè tutte le connessioni arrivano sulla eth1 che è l'unica interfaccia di rete..se le permetto tutte sarebbe come eliminare il firewall..o sto capendo male io?

leuzr0x
19-09-2008, 09:30
No, hai capito benissimo. Infatti Pardo ti diceva "se volessi aprire tutto... usa quella regola" :)

shura
19-09-2008, 09:45
vabbè se volessi aprire tutto imposterei la policy direttamente..cmq grazie dell'aiuto
il file definitivo che ho uppato sul serverino stamani è:



# variabili
MYIP=192.168.1.3
NETINTERFACE=eth1
TCPPORTLIST=4672,4673,4674,4675,4676,4677,4678,4679,4680,4681,4682
UDPPORTLIST=4672,4673,4674,4675,4676,4677,4678,4679,4680,4681,4682
SAMBATCP=137,138,139,445
SAMBAUDP=137,138,139

#elimino qualsiasi precedente regola creata
iptables -F
iptables -Z
iptables -X

#imposto le policy di default
#se non è specificata una regola precisa i pacchetti vengono scartati di default
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

#elimino tutti i pacchetti non validi senza farli andare per tutta la catena
iptables -A FORWARD -m state --state INVALID -j DROP

#permetto il transito di pacchetti per le connessioni già stabilite
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#permetto tutto il traffico proveniente da localhost
iptables -A INPUT -i lo -j ACCEPT

# permetto il traffico verso ssh e web
iptables -A INPUT -i $NETINTERFACE -p tcp --dport 22 --syn -j ACCEPT
iptables -A INPUT -i $NETINTERFACE -p tcp --dport 80 --syn -j ACCEPT

# permetto il traffico p2p
iptables -A INPUT -i $NETINTERFACE -p tcp -m multiport --dports $TCPPORTLIST --syn -j ACCEPT
iptables -A INPUT -i $NETINTERFACE -p udp -m multiport --dports $UDPPORTLIST -j ACCEPT

#permetto samba
iptables -A INPUT -i $NETINTERFACE -p tcp -m multiport --dports $SAMBATCP --syn -j ACCEPT
iptables -A INPUT -i $NETINTERFACE -p udp -m multiport --dports $SAMBAUDP -j ACCEPT

#logfile in caso di drop di pacchetti
iptables -A INPUT -m limit --limit 60/minute -j LOG --log-prefix "#=Drop=# "

# limita il ping per evitare eventuali ping flood
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

#salvo la configurazione
iptables-save > /etc/firewall-rules



se avete altri suggerimenti sono i benvenuti :P

leuzr0x
19-09-2008, 10:14
Si va benissimo.
Tieni sempre presente comunque che accettare tutto sull'interfaccia (nel tuo caso specifico) equivale a dire che, pensando da punto di vista di un ipotetico attacker, gli faciliti ancora di piu' il compito poiche' nemmeno deve spoofare gli ip della lan.
Al massimo se vuoi risolvere questa cosa, limitando l'accesso a computer affidabili (per esempio solo al tuo principale per l'accesso ssh), puoi scremare il traffico sulla base del mac-address della scheda di rete che, pure e' quello "sarebbe" modificabile a patto di sapere il mac specifico della macchina con l'accesso, ma non diventiamo troppo paranoici per una piccola lan casalinga. :p

shura
19-09-2008, 12:34
ok altra cosetta:



#permetto samba
iptables -A INPUT -i $NETINTERFACE -p tcp -m multiport --dports $SAMBATCP --syn -j ACCEPT
iptables -A INPUT -i $NETINTERFACE -p udp -m multiport --dports $SAMBAUDP -j ACCEPT


in questo caso facendo dei test sul firewall le porte risultano ovviamente aperte anche verso l'esterno..
se volessi limitare il traffico alla rete locale potrei fare:

#permetto samba
iptables -A INPUT -s 192.168.1.0/24 -i $NETINTERFACE -p tcp -m multiport --dports $SAMBATCP --syn -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -i $NETINTERFACE -p udp -m multiport --dports $SAMBAUDP -j ACCEPT


limitando quindi il traffico solo alla rete casalinga?
vale cmq il discorso sugli ip spoofati..

Pardo
19-09-2008, 15:22
in questo caso facendo dei test sul firewall le porte risultano ovviamente aperte anche verso l'esterno..
E` assurdo, il router dovrebbe essere configurato per far passare verso il pc soltanto le connessioni su determinate porte, sei sicuro che non lo puoi fare?
Sinceramente tenerti un router che ti fa passare da fuori a dentro addirittura le connessioni sui protocolli microsoft mi sembra un po' troppo rischioso.
Se proprio non lo puoi sistemare, la soluzione piu` veloce e` isolarlo dalla LAN con un'altra scheda di rete(+ cavo cross) da aggiungere a linux.

shura
19-09-2008, 16:33
poco fa ho fatto la cosa migliore di tutto sto trambusto
levare il router di alice e rimettere il netgear

ovviamente quei test di prima li avevo fatti aprendo tutte le porte del router provando il funzionamento del solo iptables

dopo aver rimesso un router degno di sto nome ho aperto sul suo firewall 80, 22 (che ora cambio) e il range per il client torrent

per adesso mi limito a filtrare solo il muletto..
ma nel caso volessi usarlo proprio come gateway di tutta la lan (magari lascio fuori solo la xbox360 che resterebbe collegata direttamente al router che si collega ad internet)
che set di catene dovrei impostare?

leuzr0x
20-09-2008, 10:33
Usando il pc come gateway dovrai impostare almeno INPUT e FORWARD (OUTPUT sempre se vuoi limitare le uscite, ma per ora lascialo ad ACCEPT).
Nel link che ti ho messo ti spiega piu' che bene come fare, come sono disposte le catene ecc serve solo un po' di pazienza ;)