Configurare iptables dopo il 1° accesso al server (2)

Nello scorso appuntamento, ti ho parlato di iptables e ti ho proposto anche una prima configurazione di base per bloccare alcuni degli attacchi più comuni.

Tenendo presente che nell’esempio che stiamo analizzando il tuo server deve comportarsi da webserver, è giusto ora procedere con una configurazione pensata per aprire le porte dei servizi che abbiamo elencato la volta scorsa, a cui devi aggiungere l’interfaccia di localhost:

[code type=”php”]
iptables -A INPUT -i lo -j ACCEPT
[/code]

In pratica, stai dicendo a iptables di aggiungere (-A) una regola per accettare (-j ACCEPT) ai pacchetti in ingresso (INPUT) per filtrare tutto il traffico proveniente dall’interfaccia localhost (-i lo). In questo modo, il tuo server potrà collegarsi a un eventuale database residente sul server stesso, ma il database non sarà esposto al traffico internet (a meno che tu non definisca un’apposita regola).

Ora, devi configurare il funzionamento del webserver per accogliere il traffico web:

[code type=”php”]
iptables -A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp –dport 443 -j ACCEPT
[/code]

Con questi comandi, stai dicendo a iptables di aggiungere (-A) una nuova regola che accetti (-j ACCEPT) le connessioni in ingresso (INPUT), su interfaccia TCP/IP (-p tcp) corrispondenti al TCP/IP (-m tcp) con porta di destinazione 80 o 443 (–dport 80).

E devi fare lo stesso per le connessioni SMTP per l’invio delle email:

[code type=”php”]
iptables -A INPUT -p tcp -m tcp –dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp –dport 465 -j ACCEPT
[/code]

e per la ricezione su POP3:

[code type=”php”]
iptables -A INPUT -p tcp -m tcp –dport 110 -j ACCEPT
iptables -A INPUT -p tcp -m tcp –dport 995 -j ACCEPT
[/code]

e su IMAP:

[code type=”php”]
iptables -A INPUT -p tcp -m tcp –dport 143 -j ACCEPT
iptables -A INPUT -p tcp -m tcp –dport 993 -j ACCEPT
[/code]

Ultime configurazioni di iptables e salvataggio

Ricordati, infine, di permettere la connessione SSH, magari limitandola a un solo indirizzo IP, da cui consentire l’amministrazione remota del tuo server:

[code type=”php”]
iptables -A INPUT -p tcp -s TUO_INDIRIZZO_IP -m tcp –dport 22 -j ACCEPT
[/code]

dove il parametro –s indica l’indirizzo IP da cui deriva il traffico e TUO_INDIRIZZO_IP va sostituito con l’indirizzo IP che vuoi autorizzare all’accesso SSH.

Ora, devi ricordarti di aggiungere quelle famose regole di default di cui ti ho parlato la volta scorsa:

[code type=”php”]
iptables -I INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP
[/code]

In questo modo, permetti al tuo server di fornire risposta a chi sta dall’altra parte della connessione su tutte le connessioni in uscita già stabilite e allo stesso tempo, accetti tutte le connessioni in uscita, bloccando qualsiasi altra in ingresso.

Il firewall è così configurato e non ti resta che verificare il listato delle regole che hai appena inserito:

[code type=”php”]
iptables –L
[/code]

e una volta effettuati i dovuti controlli devi salvare la configurazione nel corrispondente file iptables che si trova nel percorso /etc/sysconfig dell’installazione Linux CentOS:

[code type=”php”]
iptables -save | sudo tee /etc/sysconfig/iptables
[/code]

a cui devi far seguire un restart del servizio iptables:

[code type=”php”]
service iptables restart
[/code]

Per concludere, ti ricordo che quanto fatto fino a ora ti permette di mettere in sicurezza il tuo server per quanto riguarda il protocollo IPv4. Se usi indirizzi IPv6, ricordati di mettere in sicurezza anche questa interfaccia network, magari usando la controparte di iptables dedicata all’IPv6, nota come ip6tables.

Condividi