Shorewall est un pare-feu simple, basé sur des fichiers de configuration. Une fois lancé, il « compilera » les règles en commandes iptables compréhensibles par le système.

Suivant votre configuration, vous pourrez être amené à loguer ce qui se passe, ce qui peut être utile lors de DROP ou REJECT. Attention tout de même, ces logs peuvent gonfler assez vite et c’est là le problème : Shorewall écrit ses logs dans syslog et messages (pour celui-ci, cela dépend du niveau de log configuré) présent dans /var/log. Ce qui a pour effet de noyer les autres messages, provenant du système par exemple, dans les logs de Shorewall.

Installation d’ulogd

On va donc utiliser ulogd qui va nous permettre de router les logs de Shorewall dans un autre fichier. Commençons par l’installer :

[bash]aptitude install ulogd[/bash]

Une fois installer, il faut éditer le fichier /etc/ulogd.conf. Puis repérer les lignes suivantes :

[bash][LOGEMU]
file= »/var/log/ulog/syslogemu.log »
sync=1[/bash]

On va remplacer le chemin du fichier de log par « /var/log/shorewall.log« , ce qui nous donne :

[bash][LOGEMU]
file= »/var/log/shorewall.log »
sync=1[/bash]

On crée le fichier :

[bash]touch /var/log/shorewall.log && chmod 666 /var/log/shorewall.log[/bash]

Puis on relance ulogd pour prendre en compte les modifications :

[bash]/etc/init.d/ulogd restart[/bash]

On va maintenant configurer shorewall pour qu’il route les logs vers ulogd, on commence par écrire dans le fichier « /etc/shorewall/params » cette ligne :

[text]LOG=ULOG[/text]

On va ensuite éditer le fichier policy, ou tout autre fichier qui contient l’information de log, et remplacer le niveau de log par « $LOG », par exemple :

[text]net     all     DROP            $LOG
all     all     REJECT          $LOG[/text]

Une fois fait, relancez Shorewall et vérifiez que le fichier shorewall.log se rempli bien :

[bash]tail -f /var/log/shorewall.log
May  3 16:32:44 othala Shorewall:net2fw:DROP: IN=eth0 OUT= MAC=00:30:18:4c:c0:1a:00:24:d4:af:71:30:08:00  SRC=86.29.xxx.xxx DST=192.168.xxx.xxx LEN=52 TOS=00 PREC=0x00 TTL=110 ID=6017 DF PROTO=TCP SPT=55912 DPT=44609 SEQ=2879260085 ACK=0 WINDOW=8192 SYN URGP=0
May  3 16:32:47 othala Shorewall:net2fw:DROP: IN=eth0 OUT= MAC=00:30:18:4c:c0:1a:00:24:d4:af:71:30:08:00  SRC=86.29.xxx.xxx DST=192.168.xxx.xxx LEN=52 TOS=00 PREC=0x00 TTL=110 ID=6018 DF PROTO=TCP SPT=55912 DPT=44609 SEQ=2879260085 ACK=0 WINDOW=8192 SYN URGP=0[/bash]

 

Faire tourner les logs avec logrotate

Pour plus de confort, on peut faire tourner les logs. Pour ce faire, on va utiliser logrotate. On va donc créer et éditer le fichier « /etc/logrotate.d/shorewall » comme suit :

[text]/var/log/shorewall.log {
weekly
rotate 4
compress
missingok
create 0666 root adm
postrotate
/etc/init.d/ulogd restart 2>/dev/null
endscript
}[/text]

Pour tester, on peut lancer la commande suivante :

[bash]logrotate –force /etc/logrotate.d/shorewall[/bash]

Ce qui donne :

[text]-rw-rw-rw- 1 root     adm         0 May  3 16:49 shorewall.log
-rw-r–r– 1 root     root      29M May  3 16:48 shorewall.log.1.gz[/text]

Amusez vous bien. 🙂