Rechercher dans ce blog

jeudi 28 janvier 2010

Configuration manuel ipfw sous leopard

Configuration manuel ipfw sous leopard


Directement collé de 

http://daniel.polombo.fr/2008/06/configuration-manuelle-dipfw-sous-leopard/ 

Merci à lui. 

Créer un script de démarrage
Pour créer un script qui démarre avec l’OS sous Leopard, la solution que j’ai retenue est celle du launchd. Pour cela, il faut créer (avec les droits d’administration) un sous-répertoire dans /Library/StartupItems :
# mkdir -p /Library/StartupItems/Firewall
On y crée ensuite le fichier StartupParameters.plist avec le contenu suivant :
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> <plist version="0.9"> <dict> <key>Description</key> <string>My Firewall Rules</string> <key>OrderPreference</key> <string>Late</string> <key>Provides</key> <array> <string>Custom IPFW firewall rules</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>

Cela définit notre StartupItem comme étant à charger au démarrage de l’OS, et plutôt vers la fin du démarrage.
Il nous reste à créer un script exécutable, portant le même nom que le répertoire, qui contiendra nos commandes :

touch /Library/StartupItems/Firewall/Firewall

chmod 755 /Library/StartupItems/Firewall/Firewall
Ce script va réaliser la mise en oeuvre des règles IPFW qui nous intéressent.
Un exemple de script IPFW
Pas de filtrage des connexions sortantes, et un filtrage assez massif des connexions entrantes, mis à part quelques protocoles servant à découvrir ou utiliser des services
(partages CIFS, services Bonjour, DHCP), et bien sûr les connexions déjà établies via les fonctionnalités de stateful filtering d’IPFW
#!/bin/sh . /etc/rc.common IPFW="/sbin/ipfw -q" StartService() { ConsoleMessage "Lancement des regles IPFW maison" # vidage de la table de règles ${IPFW} -f flush # ouverture locale uniquement de l'interface loopback ${IPFW} add 1000 allow all from any to any via lo0 ${IPFW} add 1001 deny all from any to 127.0.0.0/8 # autorisation des paquets appartenant à des connexions identifiées # (pour le stateful filtering) ${IPFW} add 2000 check-state # autorisation des connexions TCP sortantes (paquet SYN) et # mise en place de l'identification de la connexion (stateful) ${IPFW} add 2001 allow tcp from me to any out setup keep-state # autorisation des connexions UDP sortantes et mise # en place de l'identification de la connexion (stateful) ${IPFW} add 2003 allow udp from me to any out keep-state # autorisation des connexions ICMP sortantes et mise # en place de l'identification de la connexion (stateful) ${IPFW} add 2004 allow icmp from me to any out keep-state # autorisation de certains protocoles de résolution ${IPFW} add 04000 allow udp from any to any 5353 in # mDNS (Bonjour) ${IPFW} add 04010 allow udp from any to any 427 in # svrloc (Bonjour) ${IPFW} add 04020 allow udp from any to any 68 in # DHCP ${IPFW} add 04030 allow udp from any to any 137 in # Samba (NetBIOS) # toi, t'as des baskets, tu rentres pas! # (si on n'a pas encore matché une règle, c'est que c'est non) ${IPFW} add 9999 deny all from any to any } StopService() { ConsoleMessage "Stopping custom IPFW rules" ${IPFW} -f flush } RunService "$1"

Aucun commentaire:

Enregistrer un commentaire