<-
Nasgaïa > Forums > Documentation > Doc HTML

Nanofw, accès simplifié à iptables

Auteurs: Martial

Date: 2003-06-28

Modif:

Fonctionnement et utilisation du service nanofw basé sur iptables, et personnalisation de la configuration.

Voir aussi

top

Présentation

fig 1

Nanofw consiste en un service pour simpleinit, il s'agit donc d'un script shell relativement simple (que nous ajoutons au nba de iptables) dont le comportement est influencé par la configuration dans /etc/sysconfig/nanofw, et des fichiers optionnels dans /etc/sysconfig/nanofw.d/.

Nanofw est destiné à un usage simple et rapide, et ne prétend pas être un véritable firewall complet, il s'agit essentiellement d'un filtre de paquets IP, qui vous donne par défaut un accès à la majorité des services web externes, tandis qu'il bloque par défaut les requêtes entrantes non sollicitées. L'idée est de vous aider à vous prémunir contre les tentatives d'intrusions incessantes, préserver votre vie privée, et surtout ne pas laisser des services ouverts à tous sans vous en rendre compte et laisser des gens exploiter d'éventuelles failles de sécurité (toujours possible malgré tout) ou des erreurs de configuration.

Nanofw peut servir pour des postes clients, ou pour une passerelle.

top

Activation du service

De par sa nature très simple, la configuration proposée par défaut ne permet de lancer le service sans devoir être connecté à internet au préalable (DNS, adresses IP attribuées dynamiquement ne poseront donc aucun problème); vous pouvez vous (dé)connecter quand bon vous semblera et à volonté.

Pour activer le service:

chmod +x /etc/init.d/runlevel.3/nanofw

Pour tester immédiatement:

telinit nanofw start

Et bien sûr, pour arrêter le service:

telinit nanofw stop

top

Configuration

enable_nat=
Indiquez la valeur 1 pour activer le NAT (Network Addresses Translations), ceci donnera aux machines de votre réseau un accès "transparent" aux ressources laissées accessibles par le reste de la configuration - si vous êtes en train de monter une passerelle (gateway) pour partager une connection internet, il vous faut activer ceci.

configuration sur le poste client

Pour qu'un poste client fonctionne derrière une telle passerelle, la démarche à suivre est classique, pour rappel:

route add defaut gw ip_de_la_machine_nat

N'oubliez pas d'indiquez les bons DNS dans le /etc/resolv.conf du client, il peut s'agir selon votre cas des DNS du FAI, de la passerelle elle même qui fait office de serveur DNS (ex: avec bind et/ou named), ou parfois des deux. (démarche similaire sur les autres systèmes d'exploitations).

nat_iface=
Indiquez ici le nom de l'interface sur laquelle pratiquer le NAT, afin que les machines qui y sont connectées bénéficient du partage. Par exemple, si la carte réseau de la passerelle qui vous connecte au reste de votre réseau local (les postes clients) est eth0, indiquez le ici.

enable_log_drop=
Mettez cette valeur à 1 pour activer le log des requêtes bloquées en entrée et en sortie. Les messages seront visible dans le fichier /var/log/messages - activer le log est contre-performant, et n'est utile que pour diagnostiquer un problème ou tester.

ipt_mods=
Indiquez ici sous la forme d'une liste séparée d'espaces (et entre guillemets) les modules iptables additionnels à charger. Par défaut, la valeur est de ip_conntrack_ftp ip_conntrack_irc, ce qui autorise le ftp actif ainsi que les dcc sur irc (besoins très courants). Ajoutez les modules dont vous pouvez avoir besoin pour certains services spécifiques (ex: streaming, jeu en réseau etc...). Vous trouverez des informations plus poussées sur le site de iptables.

top

Configuration personnalisée

Les répertoires /etc/sysconfig/nanofw.d/start et /etc/sysconfig/nanofw.d/stop ont deux rôles précis:

  1. Accueillir des règles supplémentaire fournies avec un paquet nba, soit à titre d'exemple, soit pour assurer un service fonctionnel.
  2. Accueillir vos propres règles personnalisées

Les règles doivent être placées dans de simples fichiers dont le nom se termine pas l'extension .sh, il seront lus par le service nanofw, après les règles normales (vous pouvez donc les outrepasser de cette manière). start/ et stop correspondent bien sur au lancement et à l'arrêt du service nanofw

L'ordre suivi est alphabétique - si dans un cas bien précis vous devez être sur qu'une règle A se lance avant une règle B, mettez simplement ces règles dans un même fichier dans l'ordre souhaité.

Exemple

Imaginons que vous ayez pour une raison quelconque (ex: vous montez un serveur web publique) besoin d'ouvrir le port 3306 (MySQL) en entrée et en tcp, voici la démarche à suivre:

Créer un fichier texte /etc/sysconfig/nanofw.d/start/mysql.sh et indiquez y:

$ipt -A INPUT -p tcp --dport 3306 -j ACCEPT
$ipt -A OUTPUT -p tcp --dport 3306 -j ACCEPT

Note: Si vous n'agissez pas sur une table particulière (cad autre que INPUT OUTPUT FORWARD ou nat ), vous n'avez pas besoin de faire ce qui suit, c'est juste pour l'exemple - nanofw stop effacera de toute façon les règles ci-dessus.

Créer un fichier texte /etc/sysconfig/nanofw.d/stop/mysql.sh et indiquez y:

$ipt -A INPUT -p tcp --dport 3306 -j DROP
$ipt -A OUTPUT -p tcp --dport 3306 -j DROP

top

Conclusion

Vous pouvez voir que la configuration par défaut est orienté client, pour naviguer avec un minimum de sécurité - pour ouvrir explicitement un service à l'extérieur (http, ssh, etc...), utilisez le mécanisme de personnalisation décris plus haut, après vous être dûment documenté sur iptables (voir liens en haut de pages), qui propose énormément de possibilités variées et puissantes.