iptables

Iptable per principianti

Iptable per principianti
Iptables è fondamentalmente il firewall principale utilizzato per i sistemi Linux, ci sono alternative come nftables ma Iptables rimane il principale, è molto flessibile accettando comandi diretti dall'utente, puoi caricare e scaricare regole quando necessario per aumentare le politiche del tuo firewall precisione.

In realtà non hai nemmeno bisogno di conoscere la sintassi di Iptable per usarlo, hai strumenti grafici come Firewall Builder che possono rendere inutile il processo di apprendimento ma se il desiderio è quello di aumentare la conoscenza dell'amministrazione di Linux Iptables è il primo passo per imparare a fare pratica amministra la sicurezza sotto Linux e persino semplifica la gestione dei dispositivi di sicurezza CISCO o Fortigate e simili.

Iptables ti consente sostanzialmente di istruire il tuo sistema ad accettare, rifiutare o inoltrare una connessione a seconda dei parametri scelti, ad esempio per reindirizzare tutte le connessioni alla porta X a un indirizzo IP diverso, per bloccare tutte le connessioni provenienti da uno specifico IP, intervallo IP o per accettare tutte le connessioni provenienti da indirizzi IP autorizzati tra molte altre funzioni.

In questo tutorial impareremo come proteggere un Web Server, come inoltrare le connessioni agli indirizzi IP interni dalla nostra LAN e come offrire servizi specifici solo agli indirizzi IP autorizzati.

Installazione di Iptables

Per installare iptables su sistemi Debian/Ubuntu basta eseguire " apt update && apt install iptables" come root o con "sudo" come prefisso come nell'immagine seguente.

Apertura delle porte HTTP e HTTPS

Prima di tutto aggiungiamo tutte le policy ACCEPT a partire dal server web.

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

Per vedere le nostre regole aggiunte, esegui "iptables -L"

Dove:

iptables = chiama il programma
-UN = aggiunge una regola
INGRESSO = traffico in entrata
-p = protocollo
-ddport = porta di destinazione
-j = specificare il “target”, il target è il tipo di polizza: ACCEPT, DROP, QUEUE o RETURN.

Quindi sull'esempio dell'immagine sopra stiamo dicendo a Iptables di aggiungere una regola per il traffico in entrata attraverso il protocollo TCP e le porte 80 e 443 da accettare.

Possiamo modificare il comando per accettare la connessione solo da un IP specifico aggiungendo il parametro “-S”:

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

Dove:

S = fonte
Iptables -L = elenca tutte le regole caricate da iptables
Iptables -L -v = lo stesso con verbosità.

Possiamo anche testare il nostro firewall con nmap:

Come possiamo vedere la porta 80 è aperta sia secondo "iptables -L" che Nmap.

Nota: per maggiori informazioni sull'utilizzo di Nmap puoi leggere il nostro tutorial su di esso

Proteggi il tuo server

#Apri i servizi HTTP e HTTPS.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#Apri servizio porta SSH
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

Dove sono i nuovi parametri:

-m = significa "match" e viene utilizzato per chiamare le estensioni di Iptable come conntrack che non fa parte delle funzioni principali di iptable.

conntrack = Consente di tenere traccia delle informazioni sulle connessioni come indirizzi specifici o in questo caso lo stato della connessione. Questo deve essere usato con attenzione, poiché molte regole per difendere i server da alcuni attacchi utilizzano conntrack mentre il suo utilizzo è limitato dall'hardware e tale limitazione può essere utilizzata per sovraccaricare le risorse del server.

-ctstate = determina lo stato della regola da abbinare, i possibili stati sono: NUOVO, STABILITO, CORRELATO e NON VALIDO.

#Proteggi il tuo servizio SSH dagli attacchi di forza bruta consentendo solo un IP specifico
per accedere a iptables -A INPUT -p tcp -s X.X.X.X --dport 22 -m conntrack --ctstate NUOVO,
STABILITO -j ACCETTO
#Proteggi il tuo servizio SSH dagli attacchi di forza bruta limitando i tentativi di connessione
Iptables -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NUOVO -j 22-test
Iptables -A 22-test -m recenti --name CONNESSIONI --set --mask 255.255.255.255 --rsource
Iptables -A 22-test -m recenti --name CONNESSIONI --rcheck --mask 255.255.255.255
--rsource --seconds 30 --hitcount 3 -j 22-protection
Iptables -A 22-test -j ACCEPT
Iptables -A 22-protezione -j DROP

Dove:
Nella prima riga la nostra regola dice “-m conntrack -ctstate NUOVO” il che significa che se la connessione è nuova passa alla regola "22-test".

La seconda riga dice packages netmask 255.255.255.255 sono nominati come CONNESSIONI .

La terza riga dice se a CONNESSIONI sembra più di 3 volte entro 30 secondi il firewall continua ad applicare la catena 22-protezione. La quarta riga dice se il CONNESSIONI non sembrava più di 3 volte entro 30 secondi può essere accettato.
Quinta riga, che appartiene al 22-protezione la catena dice di cadere CONNESSIONI se sembra più di 3 volte entro 30 secondi.

Ora per finire, rifiutiamo tutte le connessioni non accettate e consentiamo tutto il traffico in uscita:

iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP

Dove -P indica la catena dell'obiettivo, ricorda che l'obiettivo è la politica, ACCEPT, DROP, QUEUE o RETURN. In questo caso stiamo dicendo che la politica predefinita per il traffico in uscita è accettare e la politica predefinita per il traffico in entrata è rifiutare, a meno che non abbiamo specificato qualcosa di diverso nelle regole precedenti. Questo è un firewall molto semplice che non include regole per molti attacchi, per scopi di apprendimento e non per la produzione, alla fine dell'articolo allego un firewall che ho usato per la produzione su un server, ha commenti che spiegano ogni regola.

INOLTRO DI UNA CONNESSIONE A UNA PORTA SPECIFICA A UN INDIRIZZO IP SPECIFICO

Questo è molto utile anche per gli utenti desktop che vogliono instradare una connessione tramite un dispositivo specifico, può essere utile anche per i giocatori, di solito lo facciamo dalle impostazioni del router ma supponiamo che il dispositivo di routing stia eseguendo Iptables.

iptables -A PREROUTING -t nat -p tcp -d X.X.X.X --dport 8080 -j DNAT --to-destination
sì.sì.sì.Y:80
iptables -A POSTROUTING -t nat -p tcp -j SNAT --to-source X.X.X.X

Le regole sopra richiamano NAT (Network Address Translation) per specificare le connessioni tramite il protocollo TCP, all'indirizzo X.X.X.X e la porta 8080 verranno reindirizzate all'indirizzo Y.sì.sì.Y, porta 80. La seconda regola specifica che le risposte devono essere inviate all'indirizzo di origine (X.X.X.X). Possiamo usare queste regole per consentire l'accesso a una telecamera IP, per abilitare il gioco online con reti esterne, ecc.

Questo tutorial aveva lo scopo di introdurre i principianti a Iptables e spiega solo un numero limitato di funzioni di base. Di seguito puoi vedere un esempio di un firewall ben pianificato che è stato utilizzato per un server di produzione, include da alcune delle regole che abbiamo già visto a regole più complesse per prevenire attacchi DDoS tra le altre.
Il prossimo tutorial sarà sullo sniffing all'interno delle reti locali, ma in un prossimo tutorial spiegherò alcune delle regole applicate al firewall di seguito.  Grazie per aver seguito LinuxHint.com, continua a seguirci per futuri aggiornamenti su Iptables e Linux in generale.

Bonus: esempio di firewall di produzione

iptables -F
#---- Abilita la protezione dei messaggi di errore non validi
abilita /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
#---- Attiva il filtro del percorso inverso. Più sicuro, ma interrompe il routing asimmetrico e/o IPSEC
abilitare /proc/sys/net/ipv4/conf/*/rp_filter
#---- Non accettare pacchetti indirizzati alla sorgente. Il routing di origine viene utilizzato raramente per scopi legittimi
scopi disabilita /proc/sys/net/ipv4/conf/*/accept_source_route
#---- Disabilita l'accettazione del reindirizzamento ICMP che può essere utilizzata per modificare le tabelle di routing
disabilita /proc/sys/net/ipv4/conf/*/accept_redirects
#---- Poiché non accettiamo reindirizzamenti, non inviare nemmeno messaggi di reindirizzamento
disabilita /proc/sys/net/ipv4/conf/*/send_redirects
#---- Ignora i pacchetti con indirizzi impossibili
disabilita /proc/sys/net/ipv4/conf/*/log_martians
#---- Protegge dai numeri di sequenza di wrapping e aiuta la misurazione del tempo di andata e ritorno
abilitare /proc/sys/net/ipv4/tcp_timestamps
#---- Aiuto contro attacchi syn-flood DoS o DDoS usando particolari scelte di iniziali
I numeri di sequenza TCP abilitano /proc/sys/net/ipv4/tcp_syncookies
#---- Usa l'ACK selettivo che può essere utilizzato per indicare che mancano pacchetti specifici
disabilita /proc/sys/net/ipv4/tcp_sack
modprobe nf_conntrack_ipv4
modprobe nf_nat
# modprobe nf_conntrack_ipv6
# modprobe nf_conntrack_amanda
# modprobe nf_nat_amanda
modprobe nf_conntrack_h323
modprobe nf_nat_h323
modprobe nf_conntrack_ftp
modprobe nf_nat_ftp
# modprobe nf_conntrack_netbios_ns
# modprobe nf_conntrack_irc
# modprobe nf_nat_irc
# modprobe nf_conntrack_proto_dccp
# modprobe nf_nat_proto_dccp
modprobe nf_conntrack_netlink
# modprobe nf_conntrack_pptp
# modprobe nf_nat_pptp
# modprobe nf_conntrack_proto_udplite
# modprobe nf_nat_proto_udplite
# modprobe nf_conntrack_proto_gre
# modprobe nf_nat_proto_gre
# modprobe nf_conntrack_proto_sctp
# modprobe nf_nat_proto_sctp
# modprobe nf_conntrack_sane
modprobe nf_conntrack_sip
modprobe nf_nat_sip
# modprobe nf_conntrack_tftp
# modprobe nf_nat_tftp
# modprobe nf_nat_snmp_basic
#Ora possiamo iniziare ad aggiungere servizi selezionati al nostro filtro firewall. La prima cosa del genere
è un'interfaccia localhost iptables -A INPUT -i lo -j ACCEPT
#Abbiamo detto al firewall di prendere tutti i pacchetti in arrivo con flag tcp NONE e di ELIMINARLI semplicemente.
iptables -A INPUT -p tcp ! -m conntrack --ctstate NEW -j DROP
#Diciamo a iptables di aggiungere (-A) una regola all'ingresso (INPUT)- SSH funziona sulla porta 50683
invece 22.
iptables -A INPUT -p tcp -m tcp --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specifico ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specifico ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s specifico ip --dport 50683 -j ACCEPT
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -m recenti --set
--nome SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 50683 -m recente --update --seconds 60 --hitcount 4
--rttl --name SSH -j LOG --log-prefix "SSH_brute_force"
iptables -A INPUT -p tcp --dport 50683 -m recente --update --seconds 60 --hitcount 4
--rttl --name SSH -j DROP
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -m recenti --set
--nome SSH
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -m recente --update
--secondi 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-prefix SSH_bru
iptables -A INPUT -p tcp --dport 50683 -m conntrack --ctstate NEW -m recente --update
--secondi 60 --hitcount 4 --rttl --name SSH -j DROP
#Ora permetto imap e smtp.
-A INPUT -p tcp --dport 25 -j ACCEPT
# Consente connessioni pop e pop
-A INPUT -p tcp --dport 110 -j ACCEPT
-A INPUT -p tcp --dport 995 -j ACCEPT
############ IMAP e IMAPS ############
-A INPUT -p tcp --dport 143 -j ACCEPT
-A INPUT -p tcp --dport 993 -j ACCEPT
########### MYSQL ###################
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
########## Sistema R1soft CDP ###############
iptables -A INPUT -p tcp -m tcp -s specifico ip --dport 1167 -j ACCEPT
############### estroverso ###################
iptables -I INPUT -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT
### Consenti in corso, blocca l'ingresso non definito ###
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
iptables -L -n
iptables-save | tee /etc/iptables.test.regole
iptables-restore < /etc/iptables.test.rules
#service iptables si riavvia
Trackpad e puntatore del mouse su schermo AppyMouse per tablet Windows
Gli utenti di tablet spesso mancano il puntatore del mouse, soprattutto quando sono abituati a usare i laptop laptop. Gli smartphone e i tablet touchs...
Il pulsante centrale del mouse non funziona in Windows 10
Il tasto centrale del mouse ti aiuta a scorrere lunghe pagine web e schermate con molti dati. Se si ferma, finirai per usare la tastiera per lo scorri...
Come cambiare i pulsanti sinistro e destro del mouse su PC Windows 10
È abbastanza normale che tutti i mouse dei computer siano progettati ergonomicamente per gli utenti destrimani. Ma sono disponibili dispositivi mouse ...