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 53 e 54
Versione 53 del 22/02/2022 16.50.52
Dimensione: 7330
Commento:
Versione 54 del 22/02/2022 17.35.57
Dimensione: 6896
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 57: Linea 57:
= Impostare le policy di base = = Esempio di impostazione di policy di base =
Linea 59: Linea 59:
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 blocchi tutti i pacchetti in entrata: {{{ Nel seguente esempio viene bloccato tutto il traffico in entrata per poi successivamente consentire il traffico desiderato e ritenuto non malevolo, infine abilitando delle determinate porte.

 0. Per impostare una ''policy'' che blocchi tutti i pacchetti in entrata digitare: {{{
Linea 62: Linea 64:
 {{{#!wiki note
Questa policy, da sola, non permette l'utilizzo di normali funzionalità, come la navigazione web.
}}}
Linea 63: Linea 68:
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 è: {{{
 0. Impostare inoltre la seguente ''policy'': {{{
Linea 69: Linea 72:

==
Le prime regole utili ==

Innanzitutto dobbiamo
consentire tutto il traffico interno al nostro computer, che passa per l'interfaccia di ''loopback'' "'''lo'''" digitiando: {{{
 0. Per consentire tutto il traffico interno al computer, che passa per l'interfaccia di ''loopback'' "'''lo'''", digitare: {{{
Linea 76: Linea 76:
La seconda cosa che potremmo voler fare è navigare nel web e più in generale lasciare entrare tutto il traffico che è stato da noi richiesto: {{{  0. Per consentire il traffico in entrata che è stato richiesto legittimamente (per permettere ad esempio la navigazione web) digitare: {{{
Linea 79: Linea 79:

== 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 [[InternetRete/ConfigurazioneRete/OpenSsh|server SSH]], un [[Server/Web|server web]] o un programma che per svolgere il suo compito deve fungere anche da server.

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: {{{
   0. Per permettere ad utenti esterni di contattare il PC e di inviare dati (ad esempio se è installato un [[InternetRete/ConfigurazioneRete/OpenSsh|server SSH]], un [[Server/Web|server web]] o un programma che per essere eseguito deve fungere da server) è necessario consentire il traffico ''tcp'' sulla porta 22 (salvo diversa configurazione personalizzata). A tale scopo digitare:{{{
Linea 88: Linea 84:
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: {{{  0. Per consentire il traffico per il server web è necessario abilitare la porta 80 (salvo diversa configurazione personalizzata). A tale scopo digitare:{{{
Linea 92: Linea 88:
== Risultato finale ==

Abbiamo così ottenuto
una configurazione minimale che lascia uscire tutti i dati dal nostro computer verso l'esterno, e lascia entrare tutti i dati che abbiamo richiesto: {{{
Dopo questa procedura si avrà come risultato finale una configurazione che lascia uscire tutti i dati dal computer verso l'esterno ed entrare soltanto quelli richiesti:{{{
Linea 117: Linea 111:
 0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://iptables-persistent|iptables-persistent]]
 0. Dopo aver impostato le regole digitare questi 2 comandi: {{{
 0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://iptables-persistent|iptables-persistent]].
 0. Dopo aver impostato le regole digitare i seguenti due comandi: {{{

Attenzione! Questa è una Pagina di prova. Le informazioni riportate potrebbero essere incomplete, errate e potenzialmente pericolose. Per contribuire alla realizzazione di questa pagina consultare la discussione di riferimento.


Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Iptables è il firewall, da linea di comando, installato in modo predefinito su Ubuntu fino alla versione 20.04.
È un programma utilizzato 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 è stato sostituito da nftables. Tuttavia è ancora possibile usare Iptables.

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

Concetti di base

Un computer connesso a Internet scambia continuamente dati con il resto del mondo.

I dati che entrano nel nostro computer dall'esterno possono essere di tipo normale e legittimo (ad esempio la pagina di un sito richiesta da un browser, un messaggio in chat ecc.) oppure di tipo malevolo (ad esempio un cracker che cerca di accedere ad un computer all'insaputa dell'utente in maniera fraudolenta).
Il compito del firewall è riconoscere il traffico "buono" da quello "cattivo", bloccando quest'ultimo. Per farlo, ha bisogno di essere opportunamente istruito, mediante delle regole che impostate sul traffico dati che stabiliscano cosa è "buono" e cosa è "cattivo".

Iptables raggruppa tutti i controlli da eseguire 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, ad esempio, quando il traffico di dati non è indirizzato ad uno specifico computer, ma passa comunque attraverso quest'ultimo.

Ognuna di queste catene ha una policy, 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 da impostazione predefinita viene accettato tutto il traffico dati.

Selezione

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

Gestione semplificata

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

  • Ufw: strumento da terminale con comandi semplificati per le impostazioni di Iptables.

  • Gufw: interfaccia grafica per Ufw.

Mostrare la configurazione attuale

Per controllare la configurazione di iptables digitare:

iptables -L

oppure:

iptables -S

Qualora le informazioni mostrate non siano sufficienti, aggiungere le opzioni -v --line-numbers -n, come nell'esempio seguente:

iptables -L -v
iptables -L --line-numbers -n

Esempio di impostazione di policy di base

Nel seguente esempio viene bloccato tutto il traffico in entrata per poi successivamente consentire il traffico desiderato e ritenuto non malevolo, infine abilitando delle determinate porte.

  1. Per impostare una policy che blocchi tutti i pacchetti in entrata digitare:

    iptables -P INPUT   DROP

    Questa policy, da sola, non permette l'utilizzo di normali funzionalità, come la navigazione web.

  2. Impostare inoltre la seguente policy:

    iptables -P FORWARD   DROP
  3. Per consentire tutto il traffico interno al computer, che passa per l'interfaccia di loopback "lo", digitare:

    iptables -A INPUT  -i lo -j ACCEPT
  4. Per consentire il traffico in entrata che è stato richiesto legittimamente (per permettere ad esempio la navigazione web) digitare:

    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  5. Per permettere ad utenti esterni di contattare il PC e di inviare dati (ad esempio se è installato un server SSH, un server web o un programma che per essere eseguito deve fungere da server) è necessario consentire il traffico tcp sulla porta 22 (salvo diversa configurazione personalizzata). A tale scopo digitare:

    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  6. Per consentire il traffico per il server web è necessario abilitare la porta 80 (salvo diversa configurazione personalizzata). A tale scopo digitare:

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

Dopo questa procedura si avrà come risultato finale una configurazione che lascia uscire tutti i dati dal computer verso l'esterno ed entrare soltanto quelli richiesti:

iptables -L -v

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:

  1. Installare il pacchetto iptables-persistent.

  2. Dopo aver impostato le regole digitare i seguenti due comandi:

    iptables-save > /etc/iptables/rules.v4
    ip6tables-save > /etc/iptables/rules.v6

Ulteriori risorse


CategorySicurezza