Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "MarcoBuono/Prova04"
Differenze tra le versioni 5 e 6
Versione 5 del 14/02/2011 11.25.54
Dimensione: 13644
Autore: MarcoBuono
Commento:
Versione 6 del 14/02/2011 11.34.41
Dimensione: 14399
Autore: MarcoBuono
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 229: Linea 229:
Se si ottiene un output simile al seguente, allora non avete schede wireless e molto probabilmente state usanto eth0.

{{{
$ iwconfig

lo no wireless extensions.

eth0 no wireless extensions.

$
}}}

Quando si conosce l'interfaccia che si sta utilizzando, aprire il file '/etc/network/interfaces' e a seconda della distribuzione o dell'editor in uso si dovràc digitare:

{{{
# nano /etc/network/interfaces
}}}

Per Ubuntu e Xubuntu, premere alt+F2, e successivamente nella finestra che appare, scrivere:
{{{
gksudo gedit /etc/network/interfaces
}}}
e premere Enter.

Per Kubuntu: premere Alt+F2, successivamente nella finestra che compare scrivere:

{{{
kdesu kate /etc/network/interfaces
}}}
poi premere Enter.

BR Indice()

Introduzione

Iptables; Come fare

Le Basi

Iptables è un firewall, installato di default su tutte le distribuzioni ufficiali di Ubuntu (Ubuntu, Kubuntu, Xubuntu). Quando si installa Ubuntu, anche iptables viene installato con le impostazioni di default che autorizzano tutto il traffico. Dalla distibuzione Ubuntu 8.04 anche [http://wiki.ubuntu-it.org/Sicurezza/Ufw ufw] (un pacchetto che consente una facile gestiore di iptables) viene installato di default.

Comandi di base

In un terminale scrivere:

  iptables -L

che permetterà di visualizzare un report in cui vengono mostrate le regole attualmente in vigore per iptables. Se non sono state apportate modifiche non si avranno regole e si dovrebbe visualizzare:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Opzioni di iptables di base

Qui verranno riportate alcune delle opzioni di iptables che verranno spiegate in questo tutorial. Non ci si deve preoccupare di capire tutto qui ed ora, ma ricordarsi di tornare indietro e dare un'occhiata a questo elenco se si verificano successivamente.

  • A - Append Appende (allega) questa regola alla lista delle regole. Le liste di regole valide per ciò che stiamo facendo sono INPUT, FORWARD and OUTPUT, ma in questo tutorial si tratterà l'INPUT che regolerà solo il traffico in entrata.

  • -L - List elencherà in una lista le attuali regole di filtraggio.

  • -m conntrack - Permette di filtrare le regole per abbinarle in base allo stato di connessione. Consente l'uso dell'opzione - ctstate.
  • --ctstate - Definisce l'elenco degli stati per la regola da soddisfare. Gli stati validi sono:
    • NEW - La connessione non è stata ancora visualizzata.
    • RELATED - La connessione è nuova, Ma è in relazione con un'altra attualmente permessa.
    • ESTABLISHED - La connessione è tuttora stabilita.
    • INVALID - Il traffico non può essere identificato per qualche ragione.
  • -m limit - Richiede quale regola deve essere soddisfatta solo un numero limitato di volte. Permette l'uso dell'opzione --limit. Utile per limitare le regole di registrazione.
    • --limit - Il tasso massimo di corrispondenza, dato come un numero seguito da "/second", "/minute", "/hour", or "/day" in base a quanto si desidera che la regola sia soddisfatta. Se questa opzione non viene utilizzata mentre si usa "-m limit", il valore di default è "3/hour".
  • -p - Il protocollo utilizzato per la connessione.
  • --dport - La porta di destinazione richiesta per questa regola. Può essere indicata una porta singola oppure un intervallo di porte come "portastart:portaend", che prenderà in considerazione tutte le porte da 'portastart' a 'portaend' comprese.
  • j - Salta al target specificato. Per default, iptables permette quattro target:
    • ACCEPT - Accetta il pacchetto e blocca le regole in questa lista.
    • REJECT - Rigetta il pacchetto e notifica a chi sta inviando i dati che si è proceduto al blocco, nonchè blocca le regole in vigore in questa lista.
    • DROP - Ignora silenziosamente il pacchetto e blocca le regole in vigore in questa lista.
    • LOG - Logga il pacchetto, e continua a processare più regole nella lista. Permette l'uso delle opzioni --log-prefix e --log-level.
  • --log-prefix - Durante il log, inserire questo testo prima del messaggio di log. Usare il 'double quotes' sul testo da usare.
  • --log-level - Loggarsi usando il livello 'syslog' specificato. 7 è una buona scelta finchè non si avrà specificatamente bisogno di qualcos'altro.
  • -i - Soddisfatta solo se un pacchetto sta entrando verso la periferica specificata.
  • -I - Inserisce una regola. Desidera solo due opzioni, la lista dove inserirla e il numero che la regola avrà nella lista.
    • -I INPUT 5 dovrebbe inserire la regola all'interno della lista di regole INPUT nella quinta posizione.
  • -v - Visualizza più informazioni nel rapporto. Utile per visualizzare se si hanno regole che appaiono molto simili senza l'uso dell'opzione in questione.
  • -s --source - indirizzo[/mask] 'specifica sorgente'
  • -d --destination - indirizzo[/mask] 'specifica destinazione'
  • -o --out-interface - output name[+] interfaccia di rete name ([+] per carattere jolly)

Consentire sessioni già stabilite

si possono autorizzare connessioni già stabilite a ricevere traffico:

# iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  • La regola qui sopra non ha spazi su entrambi i lati della virgola tra ESTABLISHED,RELATED

Se la linea qui sopra non funziona, si potrebbe essere su un VPS che usa OpenVZ oppure non si hanno installate alcune estensioni del kernel. In quel caso, provare questo comando:

# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Autorizzare il traffico in entrata su porte specifiche

Si potrebbe iniziare bloccando il traffico, ma si potrebbe aver bisogno di lavorare su SSH, e quindi si potrebbe aver bisogno di consentire il SSH prima di bloccare tutto il resto.

Per consentire il traffico in ingresso sulla porta di default SSH (22), si potrebbe comunicare a iptables di consentire tutto il traffico TCP in ingresso su quella porta.

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

Facendo riferimento alla lista qui sopra, si può notare che il comando dice a iptables:

  • aggiungi questa regola alla catena input (-A INPUT) in modo da guardare il traffico in entrata
  • controlla per verificare se è di tipo TCP (-p tcp).
  • in caso affermativo, verificare se l'input punta alla porta SSH (- dport ssh).
  • in caso affermativo, accettare l'input (-j ACCEPT).

Si controllino allora le regole: (Qui sotto vengono mostrate solo le prime righe, ma il report mostrerà di più)

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh

Ora, si autorizzi il traffico in entrata nella rete

# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Controllando le regole, si avrà

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www

Abbiamo specificatamente consentito il traffico TCP verso le porte ssh e web, ma poiché non abbiamo bloccato niente, tutto il traffico può ancora entrare

Bloccare il traffico

Una volta che si è deciso di accettare un pacchetto, le regole non incidono più su di esso. Visto che le regole che consentono il traffico ssh e web sono inserite prima di altre, e dato che la regola per bloccare tutto il traffico viene dopo di loro, si può ancora accettare il traffico che si vuole. Tutto quello che dobbiamo fare è inserire la regola per bloccare tutto il traffico alla fine.

# iptables -A INPUT -j DROP
# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www
DROP       all  --  anywhere             anywhere

Visto che non si è specificato un'interfaccia o un protocollo, qualsiasi tipo di traffico per ogni porta su qualsiasi interfaccia è bloccata, tranne che per il web e ssh.

Modificare iptables

L'unico problema del setup appena implementato è che anche la porta di loopback è bloccata. Abbiamo potuto scrivere la regola 'drop' solo per eth0 specificando '-i eth0', ma potremmo anche aggiungere una regola per il loopback. Se vogliamo aggiungere questa regola sarà ormai troppo tardi perchè tutto il traffico è stato 'droppato'. Si deve quindi inserire prima questa regola. Visto che questo è una grossa quantità di traffico, si inserirà questa come prima regola affinchè venga processata per prima.

# iptables -I INPUT 1 -i lo -j ACCEPT
# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www
DROP       all  --  anywhere             anywhere

Le prime linee e le ultime si assomigliano, quindi dovremo vedere la lista di iptables con maggiore dettaglio.

# iptables -L -v

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:ssh
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:www
    0     0 DROP       all  --  any    any     anywhere             anywhere

Ora è possibile vedere molte più informazioni. Questa regola è in realtà molto importante, dal momento che molti programmi utilizzano l'interfaccia di loopback per comunicare tra loro. Se non si consente loro di parlare, si potrebbe interrompere quei programmi!

Registrazione

Nessuno degli esempi di traffico riportati sopra verrà registrato. Se si desidera registrare i pacchetti 'droppati' su syslog, questo è il modo più rapido:

# iptables -I INPUT 5 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

Si veda la sezione Suggerimenti per maggiori consigli sulla registrazione.

Salvataggio di IPTables

Se si dovesse riavviare la macchina in questo momento, la configurazione di iptables sparirebbe. Invece, se si vuole che ad ogni riavvio si mantengano queste configurazioni, si dovrà salvare la configurazione. Per salvarla, è possibile utilizzare 'iptables-save' e 'iptables-restore'.

Configurazione all'avvio

ATTENZIONE: Iptables e NetworkManager potrebbero essere in conflitto. Se siete preoccupati abbastanza per la sicurezza per installare un firewall, potreste non vuole fidarsi NetworkManager per la gestione di esso ancora. Si noti inoltre NetworkManager e iptables hanno obiettivi opposti. Iptables mira a conservare qualsiasi dubbio il traffico di rete. NetworkManager mira ad essere sempre connessi in ogni momento. Pertanto, se si vuole la sicurezza per tutto il tempo, eseguire iptables al boot. Se si desidera che la sicurezza parte del tempo poi NetworkManager potrebbe essere la scelta giusta.

ATTENZIONE: Se si utilizza NetworkManager (installato di default su Feisty e versioni successive) questi passaggi vi lascerà in grado di utilizzare NetworkManager per le interfacce si modificano. Si prega di attenersi alla procedura descritta nella sezione successiva, invece.

NOTA: Sembra in Hardy, NetworkManager ha un problema con correttamente sul salvataggio e il ripristino delle regole iptable quando si utilizza il metodo nella sezione successiva. L'utilizzo di questo primo metodo sembra funzionare. Se trovate in caso contrario, si prega di aggiornare questa nota.

Salvare le regole del firewall in un file

# sudo bash -c "iptables-save > /etc/iptables.rules"

Ora si hanno molte opzioni. Si possono fare modifiche a '/etc/network/interfaces' o aggiungere uno script a '/etc/network/if-pre-up.d/' e '/etc/network/if-post-down.d/' per ottenere risultati simili. La soluzione dello script permette una flessibilità leggermente maggiore.

Solution #1 - /etc/network/interfaces

(NB: si sono seguite le istruzioni in questa sezione e questo ha disabilitato la maggior parte (o tutti) degli script in '/etc/rc2.d /: Polipo, dnsmasq, bluetooth, ecc; Consiglia di utilizzare ufw/gufw.)

Modificare il file di configurazione di interfacce '/etc/network/' per applicare le regole automaticamente. È necessario conoscere l'interfaccia che si sta utilizzando, al fine di applicare le regole - se non la si conosce, probabilmente si sta utilizzando l'interfaccia eth0, anche se si dovrebbe verificare con il seguente comando per vedere se ci sono delle schede wireless:

  iwconfig

Se si ottiene un output simile al seguente, allora non avete schede wireless e molto probabilmente state usanto eth0.

$ iwconfig

lo        no wireless extensions.

eth0      no wireless extensions.

$

Quando si conosce l'interfaccia che si sta utilizzando, aprire il file '/etc/network/interfaces' e a seconda della distribuzione o dell'editor in uso si dovràc digitare:

# nano /etc/network/interfaces

Per Ubuntu e Xubuntu, premere alt+F2, e successivamente nella finestra che appare, scrivere:

gksudo gedit /etc/network/interfaces

e premere Enter.

Per Kubuntu: premere Alt+F2, successivamente nella finestra che compare scrivere:

kdesu kate /etc/network/interfaces

poi premere Enter.

= Titolo oesto...

  1. Passo 1otifica
  2. Passo 2
  3. Passo 3

Titolo 2

Titolo 1

Testo...

  1. Passo 1
  2. Passo 2
  3. Passo 3

Titolo 2

Testo...

Ulteriori risorse

  • Risorsa 1
  • Risorsa 2


CategoryNuoviDocumenti