Utilizzare IPTables
Lo strumento principale per gestire il firewall su Ubuntu è iptables, corredato di alcuni tool, tra cui iptables-restore, iptables-save ed iptables. Iptables permette di definire politiche di comportamento ed eventuali eccezioni, ovvero accettare o rifiutare determinati tipi di connessioni ad eccezione di alcuni specifici casi da noi definiti.
Vi sono 2 modi per utilizzare iptables:
-
RIGA DI COMANDO
Veloce e temporaneo, qualsiasi regola verrà dimenticata al riavvio. Si può impostare una regola o una politica per volta, quindi in alcuni casi potrebbe essere necessario concatenare più comandi per evitare di isolare il server dall’esterno.
Definizione Politiche INPUT, FORWARD ed OUTPUT:
1iptables -PDefinizione regole per l’apertura o la chiusura di porte specifiche:
1iptables -A -
ELENCO REGOLE SU FILE
Pratico ed efficiente per configurazioni definitive.
Il file può essere usato temporaneamente o definitivamente.
Il file di configurazione deve seguire alcune regole, se si desidera specificare le politiche è necessario precedere tale elenco da *filter ed ogni voce deve essere preceduta dal due-punti (:), inoltre nell’ultima riga deve esserci COMMIT per confermare l’esecuzione delle politiche e delle regole. Il cancelletto (#) è il simbolo utilizzato per i commenti.Un esempio di configurazione:
12345678# Dichiarazione Politiche*filter:INPUT:FORWARD:OUTPUT-A INPUT-A OUTPUTCOMMITUna volta compilato il file di configurazione dovremo servirci dei seguenti comandi per poter caricare o salvare una configurazione iptables da o su file.
-
Applicare e salvare la configurazione
Caricare una configurazione da file:
1iptables-restore < [nome file]Salvare la configurazione su file:
1iptables-save > [nome file]Salvare la configurazione in modo permanente (è possibile omettere il comando “sudo -i” se si è già root):
12sudo -iiptables-save > /etc/iptables.up.rules
-
Configurare il firewall
Inserire le parti di proprio interesse (oltre alle prime 3 che sono indispensabili) nel proprio file di configurazione o eseguire una serie di comandi iptables concatenati. Ricordarsi inoltre di inserire COMMIT alla fine del file di configurazione
-
Consultare e Ripulire (LIST & FLUSH)
Prima di iniziare potrebbe essere necessario rimuovere o verificare le regole iptables esistenti sul proprio server.
Consultare la lista delle regole in vigore (LIST):
1iptables -LRipulire l’elenco regole (FLUSH):
1234# Autorizzo le connessioni in ingressoiptables -P INPUT ALLOW# Elimino le regoleiptables -F -
Politiche Filtri
Le politiche permettono di definire il comportamento predefinito del firewall per i vari tipi di pacchetti in transito (connessioni). Una buona politica di base rifiuta (DROP) qualsiasi pacchetto in ingresso o reindirizzato (FORWARD) ed ammette tutti quelli in uscita (OUTPUT).
Definizione delle politiche base nel file di configurazione:
1234*filter:INPUT DROP:FORWARD DROP:OUTPUT ACCEPTDefinizione delle politiche base da riga di comando (concatenare i comandi assieme a quelli loopback, di persistenza e per l’apertura della porta SSH per evitare di restare isolati fuori dal server):
123iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT ACCEPT -
LOOPBACK
Si accettino tutti pacchetti in entrata dall’interfaccia di loopback (la porta usata dal server per dialogare con se stesso: localhost / 127.0.0.1)
1-A INPUT -i lo -j ACCEPT -
Persistenza connessioni (STABILITE e CORRELATE)
Le connessioni sono di 3 tipi: Nuove, Stabilite e Correlate; è quindi necessario garantire l’accesso ai pacchetti di quelle Stabilite e Correlate in modo da autorizzare automaticamente le risposte a connessioni che partono dal server verso l’esterno o la comunicazione su ulteriori porte per servizi che usano una porta per la richiesta di connessione ed un altra, a volte casuale, per la comunicazione.
1-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -
SSH (indispensabile se si lavora in remoto)
Apertura porta TCP 22 per accettare le connessioni ssh in ingresso.
1-A INPUT -p tcp --dport 22 -j ACCEPT -
HTTP
Apertura della porta TCP 80 per accettare le connessioni in ingresso al server web.
1-A INPUT -p tcp --dport 80 -j ACCEPT -
HTTPS
Apertura della porta TCP 443 per accettare le connessioni in ingresso al server web sicuro.
1-A INPUT -p tcp --dport 443 -j ACCEPT -
DNS
Apertura della porta UDP 53 per poter fornire il servizio DNS (come ad esempio bind9, puoi consultare una guida completa qui) ad altri computer della rete o verso l’esterno. Consenso richieste TCP su qualsiasi porta dalla porta di partenza 53.
12-A INPUT -p udp --dport 53 -j ACCEPT-A INPUT -p tcp --sport 53 -j ACCEPT -
SAMBA
Apertura delle porte TCP 139,445 e UDP 137,138 per rendere accessibile il servizio SAMBA
1234-A INPUT -p tcp --dport 139 -j ACCEPT-A INPUT -p tcp --dport 445 -j ACCEPT-A INPUT -p udp --dport 137 -j ACCEPT-A INPUT -p udp --dport 138 -j ACCEPT -
FTP
Apertura della porta TCP 21 per il server FTP
1-A INPUT -p tcp --dport 21 -j ACCEPT -
SMTP
Apertura della porta TCP 25 per il server SMTP
1-A INPUT -p tcp --dport 25 -j ACCEPTApertura della porta TCP 587 per il server SMTP
1-A INPUT -p tcp –dport 587 -j ACCEPT -
IMAP
Apertura delle porte TCP 143 per il server IMAP
1-A INPUT -p tcp --dport 143 -j ACCEPT -
IMAPS
Apertura delle porte TCP 993 per il server IMAP in modalità sicura
1-A INPUT -p tcp --dport 993 -j ACCEPT -
POP3
Apertura delle porte TCP 110 e 995 per il server POP3
12-A INPUT -p tcp --dport 110 -j ACCEPT-A INPUT -p tcp --dport 993 -j ACCEPT -
Hamachi
Apertura delle porte TCP 12957,32976 e della porta UDP 17771 per permettere al servizio di tunnelling logmein-hamachi di funzionare correttamente.
123-A INPUT -p tcp --dport 12957 -j ACCEPT-A INPUT -p tcp --dport 32976 -j ACCEPT-A INPUT -p udp --dport 17771 -j ACCEPT -
COMMIT (solo nel file di configurazione)
Come precedentemente descritto, è necessario inserire tale comando alla fine del documento di configurazione; non ne è previsto l’utilizzo quando si definiscono le regole da riga di comando poiché vengono elaborate immediatamente.
12# Fine delle politiche e delle regoleCOMMIT
-
Questo post è disponibile anche in: Inglese