Pagina 1 di 1

Dubbi su iptables

Inviato: mer 15 mag 2013, 10:30
da joe
Mi collego ad internet con una chiavetta su rete mobile via ppp attraverso l'interfaccia ppp0.
Ho predisposto un file di configurazione per iptables chiamato .iptables.rc.
Faccio partire il firewall col comando:

Codice: Seleziona tutto

root@darkstar:~# iptables-restore  < .iptables.rc
La mia domanda è la seguente:
se lancio il comando soprariportato e dopo mi connetto ad internet il firewall sarà attivo?
Oppure devo prima collegarmi ad internet e lanciare il firewall solo a connessione stabilita?

Re: Dubbi su iptables

Inviato: mer 15 mag 2013, 22:09
da 414N
iptables attiva le regole man mano che tu gliele dai in pasto, indipendentemente dalla presenza delle interfacce specificate.
Per esempio, puoi specificare regole valide solo per l'interfaccia ppp0 (opzione -i) ed applicarle anche quando tale interfaccia non esiste ancora.
Potresti anche sfruttare il file /etc/rc.d/rc.firewall, destinato proprio ad un uso del genere.

Re: Dubbi su iptables

Inviato: gio 16 mag 2013, 0:05
da joe
Ok, quindi se lancio il comando e poi mi connetto ad internet il firewall dovrebbe funzionare... giusto?
Il file cui fai riferimento non c'è nel mio sistema (slack-14.0 full).. mi informerò eventualmente decidessi di automatizzare il tutto all'avvio.
Riporto le poche regole che ho buttato giù, scopiazzate a destra e a manca:

Codice: Seleziona tutto

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
COMMIT
A quanto ho capito dovrebbe semplicemente chiudere tutto e aprire solamente le connessioni entranti che siano in risposta a connessioni precedentemente instaurate in uscita (tipo contatto un server web e questo mi invia la pagina web richiesta).
Inoltre dovrebbe anche aprire le richieste provenienti dall'interfaccia di loopback (lo).
Le connessioni in uscita ereditano invece il default cioè tutto aperto.
Ecco cosa ottengo dal comando seguente.

Codice: Seleziona tutto

root@darkstar:~# iptables -L -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
A voi due domande:
1- cosa ne pensate di queste regole? predispongono un firewall sicuro? troppo? troppo poco? L'uso è su un PC desktop, niente di chè... Possono andare? cosa correggereste?
2- Come testare il firewall? vedo che in rete vi sono siti che dovrebbero testare il tutto... ma chiedo a voi avete qualche suggerimento su un buon test (aggratis ovviamente! ;) )???

Chiedo perchè facendo il test su "test.ngi.it" mi dice:

Codice: Seleziona tutto

Firewall:
Verso il server: TCP aperto, UDP aperto
Verso il client: TCP chiuso, UDP aperto
Invece mi sarei aspettato che verso il client anche UDP fosse chiuso, però ripensandoci probabilmente è lo stesso test col quale io client ho instaurato una connessione udp in uscita e il test sia proprio la risposta via udp alla mia richiesta, quindi tutto normale e giustamente coerente con le regole impostate...
Voi cosa ne dite?

Grazie per la risposta 414N!!

Re: Dubbi su iptables

Inviato: ven 17 mag 2013, 10:11
da marlavo
joe ha scritto: A voi due domande:
1- cosa ne pensate di queste regole? predispongono un firewall sicuro? troppo? troppo poco? L'uso è su un PC desktop, niente di chè... Possono andare? cosa correggereste?
2- Come testare il firewall? vedo che in rete vi sono siti che dovrebbero testare il tutto... ma chiedo a voi avete qualche suggerimento su un buon test (aggratis ovviamente! ;) )???
Il firewall come l'hai configurato è decisamente sicuro, praticamente hai chiuso tutto! ;)

Ma andiamo con ordine.
il file /etc/rc.d/rc.firewall non esiste di base, ma se crei uno script con questo nome che imposti il firewall, è previsto in fase di boot che venga eseguito.
Ma deve essere uno script eseguibile, non un file di iptables come hai usato tu.
Per creare questo script puoi fare in tre modi:
1 - te lo scrivi a manina sapendo cosa fai
2 - usi Easy Firewall Generator for IPTables di AlienBob http://www.slackware.com/~alien/efg/
3 - usi un software tipo Firewall Builder che ti genera lo script

Tieni presente, relativamente all'attivare un firewall, che se non hai demoni in ascolto, tipo apache, samba, ssh ecc. che aprono delle porte, non c'è niente da chiudere o filtrare tramite iptables.
Diversamente se usi bittorrent o amule o comunque software simili che rimangono in ascolto su specifiche porte, avendo chiuso tutto, non funzioneranno. Quindi dovrai impostare regole ad hoc per questi casi.

Per quanto riguarda la verifica del firewall, una alternativa potrebbe essere ShieldsUP su grc.com

Re: Dubbi su iptables

Inviato: ven 17 mag 2013, 13:02
da drumslack
Se può interessare, ho scritto un programma firewall in python e bash per slackware, è abbastanza semplice e permette una certa personalizzazione (tipo blocco siti, chiusura apertura tcp/udp, impostazione personale interfaccia di rete, etc. Le regole sono già impostate per un uso generico ma è possibile una propria specifica personalizzazione.
Se volete provarlo i sorgenti sono qua:

slackware_14.0
https://www.dropbox.com/sh/neka085idpio ... pyfirewall

slackware_13.37
https://www.dropbox.com/sh/neka085idpio ... pyfirewall

fatemi sapere cosa ne pensate.

Ciao

Re: Dubbi su iptables

Inviato: ven 17 mag 2013, 16:39
da joe
Ringrazio drumslack per il suo lavoro. Al momento però preferivo tradurre il mio config di regole in uno script rc.firewall.
L'ho fatto a mano scopiazzando da qua
Ecco cosa ho ottenuto:

Codice: Seleziona tutto

#!/bin/sh

IPTAB=$(which iptables)
text="-m comment --comment"

flush_chain(){
### FLUSHING CHAINS ###
$IPTAB -F
$IPTAB -X
$IPTAB -Z
}

set_policy(){
### CATENA DI DEFAULT ###
$IPTAB -P INPUT   $1
$IPTAB -P FORWARD $1
$IPTAB -P OUTPUT  $1
}

set_loop(){
 $IPTAB -$1 INPUT  $text 'Accetta connessione di LOOPBACK' -i lo -j ACCEPT 
 $IPTAB -$1 OUTPUT $text 'Accetta connessione di LOOPBACK' -o lo -j ACCEPT  
}

set_global(){
 $IPTAB -$1 INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 $IPTAB -$1 OUTPUT -j ACCEPT
}

set_firewall(){
 flush_chain
 set_policy   DROP
 set_loop     A 
 set_global   A
}

unset_firewall(){
 flush_chain
 set_policy   ACCEPT
}


# MAIN
case "$1" in
  start)
     echo "Attiva Firewall..."
     set_firewall
     ;;
  stop)
     echo "Disattiva Firewall..."
     unset_firewall
     ;;
  restart)
     echo "Riattiva Firewall..."
     set_firewall
     ;;
  status)
     $IPTAB -L -v
     ;;
  block)
     echo "Blocca tutte le Connessioni..."
     flush_chain
     set_policy   DROP
     set_loop     A
     ;;
  *)
     echo "Utilizzo: $0 {start|stop|restart|status|block}"
     exit 
     ;;
esac
exit 0
Dovrebbe fare la stessa cosa del file di configurazione che usavo prima lanciando il tutto a mano.
Il file viene richiamato da un altro script /etc/rc.d/rc.inet2. Infatti in questo c'è scritto:

Codice: Seleziona tutto

# If there is a firewall script, run it before enabling packet forwarding.
# See the HOWTOs on http://www.netfilter.org/ for documentation on
# setting up a firewall or NAT on Linux.  In some cases this might need to
# be moved past the section below dealing with IP packet forwarding.
if [ -x /etc/rc.d/rc.firewall ]; then
  /etc/rc.d/rc.firewall start
fi
Ecco perchè parte all'avvio. E anche perchè ha bisogno della "struttura demoniaca" (start/stop/restart ecc).

Per quanto riguarda il test del firewall vedrò il link appena possibile, grazie marlavo! :)
Se ve ne vengono in mente altri che vi sembrano migliori ditemi pure.
mi piacerebbe anche risolvere il quesito sul responso del test qualità linea su ngi che ricordo riportava porta udp in ingresso aperta.
Ok per il momento è tutto.
Grazie di nuovo

Re: Dubbi su iptables

Inviato: gio 20 feb 2014, 23:45
da joe
Scusate se riapro questo vecchio topic.
Se non sbaglio (eventualmente correggetemi pure...) il comando "iptables -L" dovrebbe mostrare ciò che il firewall sta bloccando...
Ora accade un comportamento che ho già notato da un po'.
Dando il comando di cui sopra, ottengo l'output seguente:

Codice: Seleziona tutto

# iptables -L -v
Chain INPUT (policy DROP 7889 packets, 470K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  140 16011 ACCEPT     all  --  lo     any     anywhere             anywhere             /* Accetta connessione di LOOPBACK */
1345K 1484M ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  194 23493 ACCEPT     all  --  any    lo      anywhere             anywhere             /* Accetta connessione di LOOPBACK */
 947K  116M ACCEPT     all  --  any    any     anywhere             anywhere            
Che in soldono penso significhi:
1- in entrata permetti solo le connessioni ricevute dall'interfaccia di loopback e quelle che provengono da una connessione già stabilita in precedenza (tipo se contattto un server http e lui mi risponde stabilendo una comunicazione).
2- in forward blocca tutto.
3- in uscita sblocca tutte le connessioni che provengono dall'interfaccia di loopback e comunque anche tutte le altre. In pratica passano tutte le connessioni in uscita.

Ok.
Al momento stavo scaricando un file via bittorrent usanto il client QBitTorrent.
E vedo che il simbolo della raggiungibilità è verde, ovvero risulto raggiungibile anche dall'esterno.
Ma se si è dietro un firewall non dovrebbe risultare giallo e non si dovrebbe avere la necessità di sbloccare le porte corrispondenti usate dal particolare programma per essere raggiungibili dai vari peer?

Avete qualche spiegazione di questa situazione?
Grazie! :D