Introduction

Le pare-feu Netfilter permet de restreindre les entrées/sorties réseau suivant un ensemble de règles. Ces règles sont gérées par l'utilitaire iptables. Ce service est critique car il est un composant essentiel de sécurité. Pour l'instant, les règles iptables ne concernent qu'IPv6.

Information Caractéristiques
Site web origine http://www.netfilter.org/
Version installée 1.4.14
Code C
Paquet iptables

Pré-requis

  • Pour la réinstallation d'iptables, il est nécessaire d'avoir réinstallé le système.
  • Iptables est destiné à être installé sur une distribution Debian Wheezy de base.

Installation du logiciel

Normalement, iptables est installé par défaut lors de l'installation du système. Au cas où, voici la commande à lancer:

# aptitude install iptables

Répertoires concernés

  • L’exécutable d'iptables est stocké dans /sbin/iptables.
  • Les fichiers de configuration du pare-feu utilisent iptables pour fonctionner.
  • Les fichiers de configuration du pare-feu sont des fichiers de configuration de pare-feu qu'on peut activer en lançant iptables-restore. Ils sont stockés dans /etc/firewall.
  • Il s'agit de /etc/firewall/iptables.up.rules.ipv4 et de /etc/firewall/iptables.up.rules.ipv6.
  • Pour être activés au démarrage, une option est inscrite dans /etc/network/if-pre-up.d/iptables.

Restaurations

Les éléments à restaurer sont les scripts shell ainsi que les options réseau. Se référer à la procédure de restauration générique pour y parvenir.

# restore netfilter /etc/firewall/
# chown -R root:root /etc/firewall/

Contenu du script iptables.up.rules.ipv4

Normalement, la restauration permet de récupérer ce fichier. En cas de problème avec la sauvegarde, on pourra utiliser le fichier suivant pour configurer le service:

# Fichier de configuration de pare-feu IPv4
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:LOG_DROP - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 192.168.0.0/24 -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -i eth0 -p icmp -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -s 192.168.0.0/24 -i eth0 -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -s 192.168.0.0/24 -i eth0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -s 192.168.0.0/24 -i eth0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 68 -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -j LOG_DROP
-A FORWARD -j LOG_DROP
-A OUTPUT -o lo -j ACCEPT
# enable wakeonlan
-A OUTPUT -o eth0 -p udp -m udp --dport 9 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 25 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 113 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 465 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 43 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 43 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 67 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 68 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 995 -j ACCEPT
-A OUTPUT -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p icmp -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 123 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 123 -j ACCEPT
-A OUTPUT -j LOG_DROP
-A LOG_DROP -j LOG --log-prefix "[ipv4 netfilter DROP]:" --log-level 1
-A LOG_DROP -j DROP
COMMIT

Contenu du script iptables.up.rules.ipv6

Normalement, la restauration permet de récupérer ce fichier. En cas de problème avec la sauvegarde, on pourra utiliser le fichier suivant pour configurer le service:

# Fichier de configuration IPv6
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:LOG_DROP - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -s fe80::/10 -j ACCEPT
-A INPUT -s 2a01:e35:8a57:24e0::/64 -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -i eth0 -p ipv6-icmp -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -s 2a01:e35:8a57:24e0::/64 -i eth0 -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -s 2a01:e35:8a57:24e0::/64 -i eth0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -s 2a01:e35:8a57:24e0::/64 -i eth0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -s 2a01:e35:8a57:24e0::/64 -i eth0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -j LOG_DROP
-A FORWARD -j LOG_DROP
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -s fe80::/10 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 25 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 113 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 465 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 43 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 43 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 995 -j ACCEPT
-A OUTPUT -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p ipv6-icmp -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 123 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 123 -j ACCEPT
-A OUTPUT -j LOG_DROP
-A LOG_DROP -j LOG --log-prefix "[ipv6 netfilter DROP]:" --log-level 1
-A LOG_DROP -j DROP
COMMIT

Configuration réseau

Pour prendre en compte le contenu des fichiers situés dans /etc/firewall/, il suffit de créer un fichier exécutable dans /etc/network/if-pre-up.d. Sur cette machine, il est nommé iptables:

#!/bin/sh

/sbin/iptables-restore < /etc/firewall/iptables.up.rules.ipv4
/sbin/ip6tables-restore < /etc/firewall/iptables.up.rules.ipv6

exit 0

Procédure de vérification du service

  • TODO