Shorewall e Ipset

Ipset è un framework interno al kernel #Linux che permette, tramite il comando #ipset, di gestire una lista di IP e fare un matching quasi immediato. Lo si utilizza ad esempio per creare una lista di IP da blacklistare semplicemente inserendo l’IP all’interno della lista stessa.

In aggiunta alle normali regole di #Firewalling in genere aggiungo una lista di IP da bloccare come illustrato su questa pagina di #GitHub ipset-blacklist. Ma se per la gestione del #Firewall si usa #Shorewall la gestione della lista viene a essere leggermente complicata.

In sostanza la parte a cui prestare maggior attenzione è il restore della lista stessa. Un errore renderebbe il #firewall inutilizzabile e con sè anche il server.

Una volta creata la lista denominata #blacklist come descritto nel link disponibile sulla pagina #GitHub bisogna aggiungere la regola di DROP in #Shorewall mediante l’aggiunta della rule in blrules, ovvero avremo


# cat /etc/shorewall/blrules

#ACTION SOURCE DEST PROTO DPORT
DROP net:+blacklist all
#

Inizialmente avevo pensato di aggiungere in /etc/rc.local la regola per il restore della lista ma di fatto fallisce rendendo il #firewall in una condizione anomala che isola il server. Per far ciò bisogna aggiungere la parte #bash per il restore in /etc/shorewall/init. Avremo quindi:

# cat /etc/shorewall/init
# restore blacklist if present
if [ -f /etc/ipset-blacklist/ip-blacklist.restore ]; then
/sbin/ipset restore < /etc/ipset-blacklist/ip-blacklist.restore
fi
#

Fatti un paio di restart di controllo il tutto dovrebbe essere operativo.

About the Author: glycerin