Auteur Sujet: Mise en place d'un pare-feu simple avec iptables.  (Lu 1432 fois)

sh4d0w

  • Petit Nouveau
  • *
  • Messages: 43
  • Karma: 2
    • enter-nutyx.xyz
Mise en place d'un pare-feu simple avec iptables.
« le: sam. mai 09 13:59:34 2015 »
  • Introduction
Ce petit guide explique la mise en place d'un pare-feu "de base" sur NuTyX.
Il devrait vous permettre d'avoir un pare-feu qui démarre et s'éteint automatiquement avec votre réseau tout en protégeant votre machine.
Les règles du pare-feu seront statiques dans un script, donc sans l'utilisation des fonctions 'iptables-save' et 'iptables-restore'.
Il s'agit de règles simples et destinées à servir de base à la construction de son propre pare-feu. A vous de l'adapter en fonction de vos besoins et de votre exigence en terme de sécurité.

  • Installation
On installe Iptables 1.4.21 depuis les dépôts :
check
search iptables
get iptables

  • Création du script
Pour configurer votre pare-feu, créez ce fichier nommé parefeu dans /etc/rc.d/init.d/

#!/bin/sh
## Fichier /etc/rc.d/init.d/parefeu

##------------------------------##
parefeu_start() {
echo "Démarrage du pare-feu .."

# Politiques par défaut
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Autoriser loopback
iptables -A INPUT -i lo -j ACCEPT

# Autoriser les connections établies
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Autoriser ssh en local
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT

# Autoriser transmission
iptables -A INPUT -p tcp --dport 51413 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 56969 -m state --state NEW -j ACCEPT
}

##------------------------------##
parefeu_stop () {
echo "Arrêt du pare-feu .."

# Suppression des règles
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
}

##------------------------------##
parefeu_restart() {
parefeu_stop;
sleep 2;
parefeu_start;
}

case "$1" in
'start')
parefeu_start
;;

'stop')
parefeu_stop
;;

'restart')
parefeu_restart
;;

'status')
iptables -nvL
;;

*)
echo "Usage: parefeu {start|stop|restart|status}"
;;
esac

Puis rendez le exécutable et avec les bonnes permissions
sudo chmod 700 /etc/rc.d/init.d/parefeu
  • Quelques explications
## Les règles
Iptables -P permet de définir la politique par défaut d'un chaine.
On peut voir que dans cette configuration on DROP (Refuser silencieusement) tout ce qui arrive (INPUT) et tout ce qui transite (FORWARD).
On remarque que tout ce qui est émis depuis le pare-feu (OUTPUT) est accepté.
Note : Il est courant de lire sur le net que la meilleure façon de procéder et de tout interdire puis d'autoriser au cas par cas selon les besoins dans la chaine OUTPUT.
Cependant cette méthode complique la configuration du pare-feu et dépasse le cadre de ce guide.
Plus loin on autorise l'interface du loopback et surtout les connexions déjà établies.
Cette règle est très importante lorsqu'on configure un pare-feu sur une machine distante, via ssh par exemple, et permet de ne pas se retrouver enfermé en dehors du pare-feu.
A titre d'exemple, j'ai ajouté des autorisations pour les connexions ssh provenant du réseau local, et une autorisation pour l'utilisation du torrent.

## Fonctionnement
Comme vous pouvez le voir en parcourant le script, le pare-feu possède les fonctions : allumer, éteindre, état et redémarrer.
Pour les utiliser : sudo /etc/rc.d/init.d/parefeu start (ou stop/status/restart)
  • Mise en route
Notre script avec la configuration du pare-feu est prêt, maintenant il faudrait qu'il démarre automatiquement!
Rendez vous dans /etc/rc.d/.
On va configurer le script pour démarrer juste avant le réseau et s'éteindre juste après.
On remarque plusieurs dossiers nommés rc0.d/ rc1.d/ etc...
Ils correspondent au différents niveaux de init : voir /etc/inittab
Commençons par rc0.d/ :

cd /etc/rc.d/rc0.d/ && ldrwxr-xr-x  2 root root 4,0K mai    9 12:02 .
drwxr-xr-x 11 root root  115 févr. 14 20:33 ..
lrwxrwxrwx  1 root root   14 févr. 14 20:33 K00cups -> ../init.d/cups
lrwxrwxrwx  1 root root   18 mai    9 11:20 K40setclock -> ../init.d/setclock
lrwxrwxrwx  1 root root   16 mai    9 11:20 K45random -> ../init.d/random
lrwxrwxrwx  1 root root   17 mai    9 11:20 K80network -> ../init.d/network
lrwxrwxrwx  1 root root   14 oct.  29  2014 K85dbus -> ../init.d/dbus
lrwxrwxrwx  1 root root   18 mai    9 11:20 K90sysklogd -> ../init.d/sysklogd
lrwxrwxrwx  1 root root   21 mai    9 11:20 S60sendsignals -> ../init.d/sendsignals
lrwxrwxrwx  1 root root   18 mai    9 11:20 S90localnet -> ../init.d/localnet
lrwxrwxrwx  1 root root   14 mai    9 11:20 S99halt -> ../init.d/halt

Dans ce dossier correspondant à l'init 0, c'est à dire l'arrêt de la machine, on va se calquer sur network.
On peut voir : K80network -> ../init.d/network
Ce lien symbolique permet d’éteindre (Kill) le réseau. Le nombre détermine l'ordre d’exécution.
On veut donc éteindre notre parefeu juste après le reseau, donc :
sudo ln -s ../init.d/parefeu K81parefeu
Il faut ensuite répéter cette opération dans les répertoires rc0.d/ jusqu'au rc6.d/
Dans chaque répertoire, quand network est réglé sur K80, on règle parefeu sur K81
Si network est réglé sur S20, on souhaite démarrer (Start) le pare-feu avant le réseau, donc :
sudo ln -s ../init.d/parefeu S19parefeu
Voilà, vérifiez les 6 dossiers, les S et K, et le chiffre juste avant network au démarrage, juste après pour l'arrêt.
Il ne nous reste plus qu'à démarrer le pare-feu :
sudo /etc/rc.d/init.d/parefeu start
Pour faire simple, créez vous un alias dans ~./bashrc :

alias parefeu='sudo /etc/rc.d/init.d/parefeu'
On peut alors démarrer le pare-feu de cette manière :

parefeu start
et vérifier les règles :

parefeu status
  • Sources

- https://wiki.archlinux.org/index.php/Simple_stateful_firewall
- http://www.octetmalin.net/linux/scripts/iptables-demarrer-arret-redemarrage-start-stop-restart-pare-feu-firewall.php
- http://www.yvangodard.me/mon-script-iptables/

  • Pour aller plus loin

iptables -h
- http://www.delafond.org/traducmanfr/man/man8/iptables.8.html

  • Tester son pare-feu

- https://www.grc.com/x/ne.dll?bh0bkyd2
(si vous êtes derrière un box, vous allez tester la box...)

nmap -Pn votre_IP depuis une autre machine
--> voir http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/




« Modifié: dim. mai 10 06:02:26 2015 par sh4d0w »
Retrouvez mes constructions sur install-nutyx.xyz - mes vidéos sur enter-nutyx.xyz

Thierry

  • Administrator
  • Super Héros
  • *****
  • Messages: 1114
  • Karma: 11
  • Sexe: Homme
    • NuTyX distribution
Re : Mise en place d'un pare-feu simple avec iptables.
« Réponse #1 le: sam. mai 09 17:33:36 2015 »
Bravo pour ce superbe article.

Je dois bien t'avouer que c'est je crois la première fois que je vois ce genre d'initiative sur le site. Oui je pèse mes mots. Car il s'agit bel et bien d'un article fini et complet.

Si tu es d'accords, je te propose de t'inscrire sur github.com et de l'ajouter sur le git de saravane comme fichier html sous  www/fr/documentation/setup-firewall.html Il sera alors visible directement dans http://www.nutyx.org/fr/setup-firewall.html.

Tu n'as qu'a ajouter le texte rédigé ici en pull request

N'hésite pas à me demander de l'aide
« Modifié: mar. mai 12 15:41:04 2015 par tnut »

sh4d0w

  • Petit Nouveau
  • *
  • Messages: 43
  • Karma: 2
    • enter-nutyx.xyz
Re : Mise en place d'un pare-feu simple avec iptables.
« Réponse #2 le: dim. mai 10 08:55:15 2015 »
Bonjour tnut.
J'ai bien crée un compte sur github, pour l'instant j'essaie de comprendre la plateforme pour pouvoir déposer le fichier.
Si je n'y arrive pas je te contacterai.
A bientôt.
Retrouvez mes constructions sur install-nutyx.xyz - mes vidéos sur enter-nutyx.xyz

sh4d0w

  • Petit Nouveau
  • *
  • Messages: 43
  • Karma: 2
    • enter-nutyx.xyz
Re : Mise en place d'un pare-feu simple avec iptables.
« Réponse #3 le: dim. mai 10 17:43:49 2015 »
Comme convenu le fichier setup-firewall.html est sur github :
https://github.com/sh4d0w31410/NuTyX_dev
Je débute avec git, j'ai préféré ne pas toucher au répertoire de saravane et déposer le fichier dans mon propre répertoire pour l'instant.
Je t'ai un peu avancé la mise en page html ;)
A bientôt.
Retrouvez mes constructions sur install-nutyx.xyz - mes vidéos sur enter-nutyx.xyz

Thierry

  • Administrator
  • Super Héros
  • *****
  • Messages: 1114
  • Karma: 11
  • Sexe: Homme
    • NuTyX distribution
Re : Mise en place d'un pare-feu simple avec iptables.
« Réponse #4 le: lun. mai 11 07:05:51 2015 »
Super je l'intègrerai au site dans la semaine en ajoutant quelques lignes sur le service existant iptable.service