Nonostante Linux sia uno dei sistemi operativi più affidabili e sicuri, grazie alle sue caratteristiche, ci sarà sempre qualche tipo di vulnerabilità, sia essa inerente al sistema o involontariamente da parte dell'utente. Per aumentare la sicurezza di Linux abbiamo vari strumenti progettati per proteggere servizi, processi, profili o file e oggi ci concentreremo su uno speciale chiamato Iptables.
Cos'è Iptables?Iptables è uno strumento firewall avanzato integrato nel kernel Linux che fa parte di un progetto chiamato netfilter.
Grazie a Iptables saremo in grado di gestire in modo accurato e diretto tutte le connessioni in entrata e in uscita al server. Iptables è sviluppato per l'indirizzamento IPv4 mentre per IPv6 abbiamo Ip6tables.
1. Struttura di Iptables in Linux
La struttura che troviamo in Iptables è la seguente:
CrudoÈ responsabile del filtraggio dei pacchetti prima di qualsiasi altra tabella esistente
FiltroQuesta è la tabella predefinita dell'applicazione
NatViene utilizzato per la traduzione degli indirizzi di rete
mangrovieViene utilizzato per l'alterazione di pacchetti di rete specializzati
SicurezzaPuò essere implementato per le regole di connessione alla rete di controllo degli accessi obbligatori
2. Struttura dei comandi in Iptables su Linux
In Iptables, ogni regola è un comando che indica come deve essere gestito il traffico dei pacchetti di rete.
Possiamo utilizzare la seguente struttura:
-A INPUT -i eth0 -p tcp -m state - ESTABLISHED, RELATED --sport 80 -j ACCEPTI parametri utilizzati sono:
- -A: Indica che le regole verranno aggiunte a Iptables
- -i: Indica l'interfaccia su cui verrà applicata la regola
- -p: si riferisce al protocollo in cui verrà applicata la regola
- -m: si riferisce al fatto che esiste una condizione che deve essere soddisfatta per applicare la regola
- --state: consente l'accettazione di nuove connessioni
- --sport: indica la porta di origine
- -j: (Salta) indica che possono accettare tutto il traffico che soddisfa le condizioni date.
3. Creare regole usando Iptables su Linux
Sebbene possiamo aggiungere le regole manualmente, è molto più pratico creare un file di regole e quindi importarlo. In questo caso creeremo il file nel percorso /tmp/iptables-ip4 e potremo utilizzare un editor per la sua rispettiva regolazione:
sudo nano / tmp / iptables-ip4La sintassi sarà la seguente:
* filtro # Regole per aggiungere COMMITOra creeremo le seguenti regole all'interno di detto file:
Loopback = È l'interfaccia esterna di Linux
-A INPUT -i lo -j ACCEPT -A OUTPUT -o lo -j ACCEPT
Ping = Ci permette di controllare le connessioni di rete
-A INPUT -i eth0 -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT -A INPUT -i eth0 -p icmp -m state --state ESTABLISHED, RELATED -j ACCEPT -A OUTPUT - o eth0 -p icmp -j ACCEPT
Web = Attraverso queste regole controlliamo il traffico in entrata e in uscita.
-A INPUT -i eth0 -p tcp -m state --state ESTABLISHED, RELATED --sport 80 -j ACCEPT -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED, RELATED --sport 443 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -j ACCEPT
In caso di aggiunta del DNS utilizzeremo le seguenti righe:
-A INPUT -i ens3 -s 192.168.0.1 -p udp --sport 53 -m state --state ESTABLISHED, RELATED -j ACCEPT -A OUTPUT -o ens3 -d 192.168.0.1 -p udp --dport 53 -m udp -j ACCETTA
Nota:Qui dobbiamo modificare l'IP se necessario
Ora = Queste regole consentono la connessione a NTP per la corretta sincronizzazione dell'ora
-A INPUT -i eth0 -p udp -m state --state ESTABLISHED, RELATED --dport 123 -j ACCEPT -A OUTPUT -o eth0 -p udp -m udp --sport 123 -j ACCEPT
Stampa = Consente l'abilitazione delle porte USB per il collegamento delle stampanti
-A INPUT -p udp -m udp --dport 631 -j ACCEPT -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A OUTPUT -p udp -m udp --sport 631 -j ACCEPT -A USCITA -p tcp -m tcp --sport 631 -j ACCEPT
Email = Possiamo abilitare i vari protocolli di posta elettronica
# IMAP -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED, RELATED --sport 993 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 993 -j ACCEPT
# POP3 -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED, RELATED --sport 995 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 995 -j ACCEPT
# SMTP -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED, RELATED --sport 465 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m tcp --dport 465 -j ACCEPT
SSH = Abilita connessioni sicure al computer utilizzando il protocollo SSH
# Input -A INPUT -i ens3 -p tcp -m state --state NEW, ESTABLISHED --dport 22 -j ACCEPT -A OUTPUT -o ens3 -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT
# Output -A OUTPUT -o ens3 -p tcp -m state --state NEW, ESTABLISHED --dport 22 -j ACCEPT -A INPUT -i ens3 -p tcp -m state --state ESTABLISHED --sport 22 -j ACCEPT
DHCP: possiamo creare regole per autorizzare l'indirizzamento IP tramite DHCP
-A INPUT -i eth0 -p udp -m state --state ESTABLISHED, RELATED --sport 67:68 -j ACCEPT -A OUTPUT -o eth0 -p udp -m udp --dport 67:68 -j ACCEPT
Rifiuta tutte le connessioni: possiamo aggiungere le seguenti righe per disabilitare tutto quanto sopra:
-A INPUT -j REJECT -A FORWARD -j REJECT -A OUTPUT -j REJECT
Tutte queste righe verranno aggiunte nel file menzionato:
INGRANDIRE
Salviamo le modifiche
Ctrl + O
Lasciamo l'editor usando
Ctrl + X
4. Importare le regole usando Iptables Linux
Una volta modificato il file, possiamo importare queste regole in Iptable eseguendo il seguente comando:
sudo iptables -F && sudo iptables -XPossiamo vedere lo stato delle regole usando il comando sudo iptables -S:
INGRANDIRE
Nel caso in cui vogliamo ripristinare tutte le regole eseguiremo la seguente riga:
sudo iptables-restore </ tmp / itpables-ip4Se vogliamo che queste regole siano permanenti, eseguiremo quanto segue:
sudo apt install iptables-persistentIn questo modo Iptables è il nostro miglior alleato nella configurazione del firewall in ambienti Linux.