Ultima puntata, almeno per ora, su come impostare un firewall sulla nostra distribuzione linux. Dopo aver preso confidenza nelle precedenti puntate con il comando Iptables per creare un piccolo firewall a protezione della nostra distribuzione, ecco come unire insieme il tutto in uno script eseguibile che si avvia automaticamente all’accensione del pc. Editiamo pertanto lo script che io ho chiamato iptables-firewall.sh con il seguente comando:
# nano /etc/iptables-firewall.sh
Iniziamo a scrivere lo script:
#!/bin/bash
# VARIABILE PER IPTABLES #
IPT=”/sbin/iptables
# ANNULLO EVENTUALI REGOLE E CATENE PRECEDENTI #
$IPT -F
$IPT -X
# NUOVA POLICY TRAFFICO #
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
# ABILITO TRAFFICO LOOPBACK #
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
# IMPOSTO REGOLE PER PACCHETTI ICMP DI PING #
$IPT -A INPUT -p icmp –icmp-type echo-reply -m state –state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p icmp –icmp-type echo-request -m limit –limit 5/s -m state –state NEW -j ACCEPT
$IPT -A INPUT -p icmp –icmp-type destination-unreachable -m state –state NEW -j ACCEPT
$IPT -A INPUT -p icmp –icmp-type time-exceeded -m state –state NEW -j ACCEPT
$IPT -A INPUT -p icmp –icmp-type timestamp-request -m state –state NEW -j ACCEPT
$IPT -A INPUT -p icmp –icmp-type timestamp-reply -m state –state ESTABLISHED,RELATED -j ACCEPT
# BLOCCO CONNESSIONI SENZA SYN E PROTEZIONE ATTACCHI DoS #
$IPT -N syn-flood
$IPT -A INPUT -i eth0 -p tcp –syn -j syn-flood
$IPT -A syn-flood -m limit –limit 1/s –limit-burst 4 -j RETURN
$IPT -A syn-flood -j DROP
$IPT -A INPUT -p tcp ! –syn -m state –state NEW -j DROP
# CONSENTO TRAFFICO DA CONNESSIONI GIA’ STABILITE #
$IPT -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
# CONSENTO CONNESSIONI SSH SULLA PORTA 2222 #
$IPT -A INPUT -p tcp –dport 2222 -m state –state NEW -j ACCEPT
# AGGIUNGERE QUI TUTTE LE CONNESSIONI SULLE PORTE IN INGRESSO DA ABILITARE #
# FINE #
Questo script deve essere eseguibile e inoltre modificabile/editabile solo dall’utente root, cioè l’amministratore del pc in ambiente linux. E’ necessario pertanto dopo averlo salvato nella directory “/etc” cambiarne le proprietà con i seguenti comandi:
# chmod 700 /etc/iptables-firewall.sh
# chown root:root /etc/iptables-firewall.sh
Per fare in modo che ogni volta che si accende il pc, queste regole di firewall vengano caricate è necessario aggiungere un comando di caricamento al file di configurazione dell’interfaccia di rete pubblica. Editiamo pertanto il file con il comando:
#nano /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.0.111
netmask 255.255.255.0
gateway 192.168.0.1
dns-search somedomain.org
dns-nameservers 195.238.2.21 195.238.2.22
broadcast 192.168.0.0
pre-up /etc/iptables-firewall.sh
Aggiungiamo la riga evidenziata in grassetto, salviamo e riavviamo il pc. Le regole di Iptables saranno caricate e il firewall funzionante.