Script per testare regole iptables da remoto

Lo script sotto indicato rappresenta un semplice modo per testare, senza rischiare di rimanere "tagliati fuori" le iptables su un firewall Linux remoto.
La tecnica è molto semplice, prima di mettere in produzione effettiva la modifica delle regole del firewall si fa un prova temporanea delle nuove regole per poi ristabilire quelle originarie.
Partendo dal principio che le regole in produzione sono giuste (quantomeno per quanto riguarda l'accesso al firewall) se le regole nuove comportano un mal funzionamento alle connessioni in atto (solitamente si viene tagliati fuori) le vecchie, che vengono richiamate a fine script, dovrebbero risistemare la situazione.

Lo script riportato prevede la presenza del file /etc/firewall/wall (ridefinibile con una variabile iniziale) che contiene le regole in produzione attualmente utilizzate.
Lo script semplicemente esegue l'argomento se viene passato (un analogo script con le nuove regole) o esegue /etc/firewall/wall.new (che dovrebbe essere la copia modificata di wall con le regole di
produzione), imposta il nuovo firewalling "aspetta" 20 secondi visualizzando una barra di progressione (utile per capire se si viene "tagliati fuori" o la connessione al firewall remoto rimane attiva) e poi riesegue le vecchie regole, permettendo, in caso di errori nelle nuove regole, di rientrare sul sistema.
I 20 secondi (ovviamente modificabili) sono anche utili per testare le nuove funzionalità del firewall, a prescindere dal fatto che riguardino la possibilità di accesso remoto alla macchina.

Quando le verifiche sono state "approvate" si rinomina il file wall.new in wall e lo si esegue in modo da renderle definitive.
Per reimpostare le regole al reboot ovviamente da qualche parte (tipo in /etc/rc.d/local.rc) si deve garantire l'esecuzione di /etc/firewall/wall.

#! /bin/bash
# Script di test delle regole di un firewall

# Path dello script che attiva il firewall (in produzione
PROD=/etc/firewall/wall

# Lo script modificato con le nuove regole può essere /etc/firewall/wall.new o il nome di file passato come argomento a questo script
if [ "$1" = "" ]
then
  PROVA=/etc/firewall/wall.new
else
  PROVA=./$1
fi

echo ""
# Provo le nuove regole di firewall
$PROVA

echo ""
echo "|    |    |    |    |"
i=0
while [ $i -le 20 ]
do
  echo -n "="
  sleep 1
  let i=$i+1
done
echo ""
echo ""

# Riattivo le regole precedenti
$PROD
echo ""

Privacy Policy