Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Carlin0/Prove5"
Differenze tra le versioni 37 e 38
Versione 37 del 21/02/2022 14.34.21
Dimensione: 8663
Autore: carlin0
Commento:
Versione 38 del 21/02/2022 16.02.18
Dimensione: 7273
Autore: carlin0
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 22: Linea 22:
Per scegliere cosa usare tra '''Iptables''' e '''Nftables''' leggere la [[https://wiki.ubuntu-it.org/Sicurezza/Nftables#Selezione|relativa guida]]. Per scegliere se usare '''Iptables''' o '''Nftables''' leggere la [[https://wiki.ubuntu-it.org/Sicurezza/Nftables#Selezione|relativa guida]].
Linea 34: Linea 34:
Ognuna di queste catene ha una ''policy'', una politica, cioè un'azione predefinita da eseguire quando tutti gli altri controlli della catena hanno fallito nel riconoscere se il dato era buono o meno. Ognuna di queste catene ha una ''policy'', una politica, cioè un'azione predefinita da eseguire quando tutti gli altri controlli della catena hanno fallito nel riconoscere se il dato era buono o meno, occorre però tenere conto che l'impostazione predefinita accetta tutto.
Linea 36: Linea 36:
== Gestione semplificata == = Gestione semplificata =
Linea 42: Linea 42:
== Cosa serve per impostare iptables == = Impostare le regole =
Linea 44: Linea 44:
Il firewall è incluso in Ubuntu ed è attivo all'avvio del sistema senza richiedere alcuna azione da parte dell'utente. Anche '''iptables''' è incluso in Ubuntu, e bisogna usarlo da [[AmministrazioneSistema/RigaDiComando|riga di comando]] per configurare il firewall.

Per usare iptables sono necessari i [[AmministrazioneSistema/Sudo|privilegi di amministrazione]].
 
== Limitazione di questa guida ==

Dal momento che i comandi che trovate in questa guida servono a modificare la configurazione del firewall "a caldo", senza scrivere niente in file di configurazione, ma caricando direttamente le impostazioni in memoria, al successivo avvio del computer la configurazione fatta non sarà più disponibile.

Per ovviare a questo problema si possono inserire i comandi in uno script da lanciare all'avvio del computer.
Il firewall è incluso in Ubuntu ed è attivo all'avvio del sistema senza richiedere alcuna azione da parte dell'utente. Anche '''iptables''' è incluso in Ubuntu, e bisogna usarlo da [[AmministrazioneSistema/Terminale|terminale]] per configurare il firewall.
Linea 56: Linea 48:
Per avere sott'occhio in ogni momento la configurazione del firewall, è sufficiente digitare in un terminale:{{{ Per avere sott'occhio in ogni momento la configurazione di '''iptables''' è sufficiente digitare:{{{
Linea 58: Linea 50:
}}}

Per esempio, con Ubuntu appena installato, il firewall è sì attivo, ma non ha ancora una vera configurazione, perciò l'output dovrebbe essere: {{{
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
}}}oppure: {{{
iptables -S
Linea 76: Linea 56:
A volte le informazioni mostrate non sono sufficienti; in questi casi basta aggiungere '''-v''' oppure '''-vv''' al precedente comando. Per esempio: {{{
iptables -vv -L
A volte le informazioni mostrate non sono sufficienti; in questi casi basta aggiungere opzioni al precedente comando. Per esempio: {{{
iptables -L -vv
iptables
-L --line-numbers -n
Linea 82: Linea 63:
Per iniziare, possiamo bloccare tutto il traffico proveniente dal mondo esterno (per poi in seguito consentire solo il traffico che riteniamo buono), impostando una ''policy'' che faccia scomparire nel nulla tutti i pacchetti in entrata: {{{ Per iniziare, possiamo bloccare tutto il traffico proveniente dal mondo esterno (per poi in seguito consentire solo il traffico che riteniamo buono), impostando una ''policy'' che faccia blocchi tutti i pacchetti in entrata: {{{
Linea 93: Linea 74:
Linea 96: Linea 76:
Innanzitutto dobbiamo consentire tutto il traffico interno al nostro computer, che passa per l'interfaccia di ''loopback'' "'''lo'''". Quindi da terminale digitiamo: {{{ Innanzitutto dobbiamo consentire tutto il traffico interno al nostro computer, che passa per l'interfaccia di ''loopback'' "'''lo'''" digitiando: {{{
Linea 112: Linea 92:
In ogni momento possiamo controllare come abbiamo configurato il firewall, come spiegato precedentemente.
Linea 117: Linea 95:

Il programma di filesharing aMule deve accettare connessioni in entrata per poter funzionare al meglio. Per impostazione predefinita usa le porte 4662(con protocollo tcp) e 4672(con protocollo udp), quindi le seguenti regole indicano al firewall di accettare il traffico in ingresso su quelle due porte: {{{
iptables -A INPUT -p tcp --dport 4662 -j ACCEPT
iptables -A INPUT -p udp --dport 4672 -j ACCEPT
}}}

Insomma, il meccanismo dovrebbe essere chiaro.
Linea 146: Linea 117:
= Persistenza =

Per rendere le regole impostate ''persistenti'', ovvero fare in modo che vengano salvate e ricaricate al prossimo avvio:



Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Iptables è il programma a riga di comando in spazio utente usato per configurare l'insieme di regole di filtraggio dei pacchetti e del NAT di Linux. È pensato per gli amministratori di sistema.

Da Ubuntu 20.10 nftables è impostato in modo predefinito, tuttavia è ancora possibile usare Iptables.

Tutti i comandi citati in questa pagina vanno digitati nel terminale con i privilegi di amministrazione .

Selezione

Per scegliere se usare Iptables o Nftables leggere la relativa guida.

Concetti di base

Un computer connesso ad internet scambia continuamente dati col resto del mondo.

I dati che dal mondo esterno entrano nel nostro computer possono essere di tipo "buono", come ad esempio una pagina di un sito che abbiamo richiesto, un amico che ci contatta in chat o un file che stiamo scaricando con un programma di filesharing, e di tipo "cattivo", come ad esempio un cracker che ci contatta in vari modi e a nostra insaputa per cercare di entrare nel nostro computer.

Il compito del firewall è riconoscere il traffico buono da quello cattivo, e bloccare il traffico cattivo. Per farlo, ha bisogno che siamo noi a dirgli cosa è buono e cosa no, mediante delle regole per fare i controlli sul traffico di dati.

Iptables raggruppa tutti i controlli che può fare sul traffico in entrata, nella cosiddetta Chain INPUT, catena di input. I controlli sul traffico in uscita sono invece raggruppati nella Chain OUTPUT. La Chain FORWARD serve per esempio quando il traffico di dati non è indirizzato a noi ma passa comunque per il nostro computer.

Ognuna di queste catene ha una policy, una politica, cioè un'azione predefinita da eseguire quando tutti gli altri controlli della catena hanno fallito nel riconoscere se il dato era buono o meno, occorre però tenere conto che l'impostazione predefinita accetta tutto.

Gestione semplificata

A seconda delle proprie esigenze può tornare comodo l'utilizzo di alcuni software che semplificano il settaggio di Iptables:

  • Ufw: tool da linea di comando con comandi semplificati per le impostazioni di Iptables.

    • Gufw: interfaccia grafica per Ufw.

Impostare le regole

Il firewall è incluso in Ubuntu ed è attivo all'avvio del sistema senza richiedere alcuna azione da parte dell'utente. Anche iptables è incluso in Ubuntu, e bisogna usarlo da terminale per configurare il firewall.

Mostrare la configurazione attuale

Per avere sott'occhio in ogni momento la configurazione di iptables è sufficiente digitare:

iptables -L

oppure:

iptables -S

In modo predefinito il firewall lascia passare tutto, come indicano le scritte "policy ACCEPT" e l'assenza di altre regole.

A volte le informazioni mostrate non sono sufficienti; in questi casi basta aggiungere opzioni al precedente comando. Per esempio:

iptables -L -vv
iptables -L --line-numbers -n

Impostare le policy di base

Per iniziare, possiamo bloccare tutto il traffico proveniente dal mondo esterno (per poi in seguito consentire solo il traffico che riteniamo buono), impostando una policy che faccia blocchi tutti i pacchetti in entrata:

iptables -P INPUT   DROP

In questo momento non possiamo navigare nel web, e più in generale il nostro PC non si accorgerà di qualsiasi dato ci venga spedito da chicchessia. Niente paura, fra qualche riga vedremo come istruire iptables a lasciare passare il traffico a cui siamo interessati.

Un'altra buona policy da impostare è:

iptables -P FORWARD   DROP

Le prime regole utili

Innanzitutto dobbiamo consentire tutto il traffico interno al nostro computer, che passa per l'interfaccia di loopback "lo" digitiando:

iptables -A INPUT  -i lo -j ACCEPT

La seconda cosa che potremmo voler fare è navigare nel web e più in generale lasciare entrare tutto il traffico che è stato da noi richiesto:

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

Consentire l'ingresso su porte specifiche

Ci sono situazioni in cui vogliamo permettere a un utente esterno di contattare il nostro PC e di inviarci dati, per esempio se abbiamo installato un server SSH, un server web o un programma che per svolgere il suo compito deve fungere anche da server, ad esempio un programma di filesharing come aMule.

Il nostro server SSH usa la porta 22 (a meno che non lo abbiamo configurato diversamente), quindi dobbiamo dire a iptables di lasciare entrare il traffico tcp sulla porta 22 (il relativo traffico di risposta lo abbiamo già permesso prima), quindi:

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

Il server web usa la porta 80 (anche qui, a meno di configurazioni personalizzate), quindi consentiamo tutto il traffico che dall'esterno chiede di entrare attraverso la nostra porta 80:

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

Risultato finale

Abbiamo così ottenuto un piccolo firewall che lascia uscire tutti i dati dal nostro computer verso l'esterno, e lascia entrare tutti i dati che abbiamo richiesto:

iptables -vv -L

Chain INPUT (policy DROP)
 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 

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

Chain OUTPUT (policy ACCEPT)
 pkts bytes target     prot opt in     out     source               destination  

Persistenza

Per rendere le regole impostate persistenti, ovvero fare in modo che vengano salvate e ricaricate al prossimo avvio:

Ulteriori risorse


CategorySicurezza