Ubuntu Server Configurazione Base iptables

Di seguito troverete alcuni semplici passi per configurare in maniera permanente iptables su ubuntu server. Per prima cosa occorre installare il pacchetto iptables-persistent. Questo semplice script permette configurare iptables all’avvio del sistema.
sudo apt-get install iptables-persistent

Passiamo ora alla configurazione, aprire il file rules
sudo vi /etc/iptables/rules

inserite la configurazione proposta di seguito (solo ssh ed http/s) ed abilitate eventuali altri servizi che vi servono. Fate attenzione a configurare correttamente il/i vostri server DNS.


# Public server IPTables Policy
#
# Written and Composed by Luigi Di Naro
#
# This assumes a few things.
# We use DNS servers from our ISP; 213.186.33.99
# Internal Network Consists of many things, but...
#
# Webserver
# SSH server
#
##############
# The Basics #
##############
#
# Turn on traffic filtering
*filter
#
# Default policies
:INPUT DROP
:FORWARD DROP
# I want to allow most websites, just not the trouble some ones.
:OUTPUT ACCEPT
#
# Accept all traffic from the loopback interface.
-A INPUT -i lo -j ACCEPT
#
# Accept legitimate responses to traffic we generate.
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#
# Allow established traffic
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#
#############################
# Services We Want to Allow #
#############################
#
# Allow ssh
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
#
# Allow web traffic
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
#
#
# Allow inbound DNS responses from our ISPs DNS servers.
-A INPUT -s 213.186.33.99 -i eth0 -p udp -m state --state ESTABLISHED -m udp --sport 53 -j ACCEPT
-A INPUT -s 213.186.33.99 -i eth0 -p tcp -m tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
#
###################
# Everything Else #
###################
#
# Drop Everything Else
-A INPUT -j DROP
#
# Log Traffic
-I INPUT 5 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
#
# Make it all true.
COMMIT

La configurazione è minimale e si riferisce ad un server pubblico che distribuisce contenuti tramite http da controllare con ssh (il caso più comune).

Se volete aggiungere nuovi servizi duplicate la sezione http con il nuovo protocollo, se avete più di un dns duplicate le due righe della sezione DNS.

Una volta attivato il firewall:

sudo /etc/init.d/iptables-persistent start

il vostro sistema accetterà connessioni in ingresso solo per le porte HTTP/S ed SSH.

Buona sperimentazione con iptables.