Dubbi su iptables

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Dubbi su iptables

Messaggio 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?

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Dubbi su iptables

Messaggio 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.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Dubbi su iptables

Messaggio 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!!

Avatar utente
marlavo
Linux 1.x
Linux 1.x
Messaggi: 180
Iscritto il: ven 2 lug 2010, 16:38
Nome Cognome: Marco Lavorini
Slackware: 15.0 x86_x64
Kernel: 6.6.21
Desktop: XFCE 4.18

Re: Dubbi su iptables

Messaggio 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

drumslack
Linux 0.x
Linux 0.x
Messaggi: 39
Iscritto il: sab 5 mag 2012, 2:03
Nome Cognome: Gianluca Pernigotto
Slackware: 13.37 32/64bit
Kernel: 2.6.37.6-smp
Desktop: Kde
Distribuzione: Debian
Località: San Bonifacio (VR)
Contatta:

Re: Dubbi su iptables

Messaggio 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
In certi ambiti, le cose semplici sono le più facili da imparare, e spesso, è più difficile capire una cosa facile perchè rendendola tale si è dovuto complicarla.
~/ = 'sono a casa'

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Dubbi su iptables

Messaggio 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

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3797
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Dubbi su iptables

Messaggio 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

Rispondi