Le Script dont il est question, dernière version : http://www.isalo.org/wiki.debian-fr/index.php?title=Parefeu_Simplifi%C3%A9
Afin de ne pas trop disgresser sur ce fil : digression-installation-parefeu-iptables-pour-les-nuls-t26303-400.html , j’ouvre celui-ci bien qu’il reprenne des idées du précédent et pourrait aider à améliorer ce dernier.
Suite à la lecture de ceci : debian.org/doc/manuals/secur … es.fr.html
Section “5.14.3.2 Configuration manuelle init.d” , j’ai voulu reprendre le script pour en faire un du type “parefeu pour les nuls” comme dans trucs et astuces : installation-parefeu-iptables-pour-les-nuls-t1901.html .
Le but étant d’éviter d’enregistrer la configuration d’iptables dans un fichier tiers, ce qui pose parfois souci lors du changement de noyau. (iptables-restore comprend mal les règles précédentes)
Le script reprend largement ce qui a été fait dans T&A, et tente de simplifier la configuration du parefeu en décommentant certaines lignes, ou en ajoutant les ports à ouvrir. Ainsi vous n’aurez pas à recopiez tout un tas de lignes, seulement le script.
Le script en question :
[code]#!/bin/sh
BEGIN INIT INFO
Provides: mon_parefeu
Required-Start: $local_fs
Should-Start:
Required-Stop: $local_fs
Should-Stop:
X-Start-Before: $network
X-Stop-After: $network
Default-Start: S
Default-Stop: 0 6
Short-description: Configure le parefeu
Description: Met en place les règles iptables.
END INIT INFO
Exemple de configuration de pare-feu
Défauts :
- Cette configuration s’applique à toutes les interfaces réseau.
Si vous voulez restreindre cela à une interface donnée,
utilisez ‘-i INTERFACE’ dans les appels iptables.
- Par défaut, le script autorise tout en sortie. Pour changer ce comportement
veuillez commenter la ligne /sbin/iptables -t filter -P OUTPUT ACCEPT
et décommenter les lignes #REMOTE_TCP_SERVICES=""
#REMOTE_UDP_SERVICES=""
ainsi que les blocs suivant : #if [ -n “$REMOTE_TCP_SERVICES” ] ; then
et #if [ -n “$REMOTE_UDP_SERVICES” ] ; then
description: Active/Désactive le pare-feu au démarrage
#---------------------------------------------------------------
readonly IPTABLES=/sbin/iptables
Services que le système offrira au réseau, à séparer avec des espaces
ftp : 21, ssh : 22, serveur web : 80, cups : 631, jabber : 5222
TCP_SERVICES="“
UDP_SERVICES=”"
Services que le système utilisera du réseau
Décommenter ces lignes pour limiter les services en sortie (défaut : autorise tout en sortie)
#REMOTE_TCP_SERVICES=""
#REMOTE_UDP_SERVICES=""
if ! [ -x $IPTABLES ]; then
exit 0
fi
fw_start () {
Vidage
fw_clear
echo "Parefeu - Suppression des règles : [OK]"
Interdictions
$IPTABLES -t filter -P INPUT DROP
$IPTABLES -t filter -P FORWARD DROP
$IPTABLES -t filter -P OUTPUT DROP
echo "Parefeu - interdictions générales établies : [OK]"
Loopback
$IPTABLES -t filter -A INPUT -i lo -j ACCEPT
Trafic d’entrée :
$IPTABLES -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Refus du ping pour éviter de répondre aux scans des éventuels vilains
$IPTABLES -t filter -A INPUT -p icmp -j LOG
$IPTABLES -t filter -A INPUT -p icmp -j DROP
Sortie autorisée,
à commenter si seuls certains services doivent être autorisés en sortie.
$IPTABLES -t filter -P OUTPUT ACCEPT
Services à autoriser en entrée
for PORT in $TCP_SERVICES; do
$IPTABLES -A INPUT -p tcp --dport ${PORT} -j ACCEPT
done
for PORT in $UDP_SERVICES; do
$IPTABLES -A INPUT -p udp --dport ${PORT} -j ACCEPT
done
Décommenter les lignes suivantes pour n’autoriser que certains
services en sortie
#for PORT in $REMOTE_TCP_SERVICES; do
# $IPTABLES -A OUTPUT -p tcp --dport ${PORT} -j ACCEPT
#done
#for PORT in $REMOTE_UDP_SERVICES; do
# $IPTABLES -A OUTPUT -p udp --dport ${PORT} -j ACCEPT
#done
#echo "Parefeu - Mise en place des règles : [OK]"
Décommenter les lignes après les traits
pour une machine faisant office de routeur avec NAT
ethx correspond à l’interface du LAN
ethy correspond à l’interface reliée à la truc-box
-------------------------------------------
#$IPTABLES -A INPUT -i ethx -j ACCEPT
#$IPTABLES -A INPUT -p icmp -j ACCEPT
#$IPTABLES -A FORWARD -i ethy -o ethx -m state --state RELATED,ESTABLISHED -j ACCEPT
#$IPTABLES -A FORWARD -o ethy -j ACCEPT
#$IPTABLES -t nat -A POSTROUTING -o ethy -j MASQUERADE
#echo "Parefeu - Routeur avec NAT : [OK]"
Toutes les autres connexions sont enregistrées dans syslog
#$IPTABLES -t filter -A OUTPUT -j LOG
$IPTABLES -t filter -A INPUT -j LOG --log-level=4
echo "Parefeu - Logging : [OK]"
}
fw_stop () {
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT
}
fw_clear () {
$IPTABLES -t filter -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -t raw -F
$IPTABLES -t filter -P INPUT ACCEPT
$IPTABLES -t filter -P OUTPUT ACCEPT
$IPTABLES -t filter -P FORWARD ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT
$IPTABLES -t mangle -P POSTROUTING ACCEPT
$IPTABLES -t mangle -P FORWARD ACCEPT
$IPTABLES -t mangle -P INPUT ACCEPT
$IPTABLES -t raw -P OUTPUT ACCEPT
$IPTABLES -t raw -P PREROUTING ACCEPT
$IPTABLES -F
}
fw_status () {
$IPTABLES -L --line-numbers
}
case “$1” in
start|restart)
echo "Starting firewall…"
fw_stop
fw_start
echo “done.”
;;
stop)
echo "Stopping firewall…"
fw_stop
echo “done.”
;;
clean)
echo "Clearing firewall rules…"
fw_clear
echo “done.”
;;
status)
echo "Firewall status"
fw_status
;;
*)
echo "Usage: $0 {start|stop|restart|clean|status}"
exit 1
;;
esac
exit 0
[/code]
Pour utiliser le script, il faut l’enregistrer comme /etc/init.d/mon_parefeu
Le rendre éxécutable : chmod +x /etc/init.d/mon_parefeu
L’activer au démarrage : insserv mon_parefeu
Bien sûr, il faudrait corriger/améliorer ce script. À vos commentaires!