Mandriva
Page en cours | Menu | Page suivante

Les firewall ont une grande importance dans la sécurité d'un ordinateur connecté sur un réseau aussi agressif que l'internet mais ne sont pas la seule protection à mettre en place. Il permet d'autoriser, d'interdire et d'enregistrer les connexions vers et depuis une machine exterieure sur le service désiré.

Page 1 : Commandes de configuration Iptables/Netfilter

Introduction

La façon générale de procéder dans la sécurité informatique est de tout fermer puis d'ouvrir les ports nécessaires en respectant la règle "tout ce qui n'est pas spécifiquement autorisé est défendu". Il est fort recommandé aussi de ne pas faire tourner un service non nécessaire même si les ports d'accès à ces services sont fermés.iptables et netfilter font parties des différentes versions de Mandriva, il suffit d'installer les différents packages nécessaires.

Le script de démarrage pour gérer le firewall

Sur les distributions Mandriva, un script de démarrage /etc/init.d/iptables existe pour commander le service :

  • service iptables save : permet de sauvegarder l'état des tables dans /etc/sysconfig/iptables (en utilisant iptables-save),
  • service iptables start (ou restart) : permet de restaurer l'état des tables au moyen du fichier /etc/sysconfig/iptables
  • service iptables stop : efface toutes vos règles et met par défaut ACCEPT sur toutes les chaînes de toutes les tables
  • service iptables panic : Permet de verrouiller la machine en cas de problème.
  • iptables-save: sauvegarde de l'état actuel de Netfilter dans un fichier
iptables-save  > maconfig.iptables
  • iptables-restore: restaure le contenu du firewall dans un fichier
iptables-restore > maconfig.rules

Les commandes de configuration du firewall

Les règles sont testées dans l’ordre où elles sont dans la chaîne. Par exemple si nous avons les règles. Il existe trois type de tables sur lesquelles ont agit pour sécuriser notre PC. FILTER : C'est la table par défaut. Elle contient les règles de filtrage
NAT : Table utilisée pour la translation d'adresse ou de port
MANGLE : Table de modification de paquet

Iptables –[val1] [val2] [val3] –j [val4] [val5]
  • Val1 :
-N = new chain, on crée une nouvelle chaine.
-X = delete chain, on efface une chaine vide.
-P = Policy, on spécifie le target par défaut.
-I = insert, on ajoute un règle en tête du filtre.
-A = append, on ajoute une règle à la fin du filtre.
-D = delete, on efface une règle.
-R = replace, on remplace un règle.
-L = list, on liste un chaîne.
-F = flush, on efface les règle d’une chaîne.
-P = Policy, réaction par défaut.
-Z = Mettre à zero les compteurs de bits et de paquets d'une chaine.
! =peut être utilisé pour spécifier le contraire dans le sens "sauf"
  • val2 : Les chaines
Les règles peuvent être regrouper dans des chaines. Nous pouvons créer de nouvelles chaines ou utiliser les chaines de départ que l'on ne peut pas effacer : INPUT : paquets en entrée du firewall déstinés au PC
OUTPUT : paquets en sortie du firewall provenant du PC
FORWARD : paquet en entrée du firewall en transit (non destiné au PC)
MASQUERADE: Masquage de l'adresse IP
PREROUTING : juste comme le paquet arrive
POSTROUTING : sort du routage
  • Val3: Les éléments de syntaxe suivants servent à préciser les règles :
-s = source, ip source
-d = destination, ip cible
-p = protocol, type de protocol (tcp/udp/icmp/…)
-dport = destination-port, port de destination ou plage de port
-sport = souce-port, port source ou plage de port
-m multiport = module, permet de spécifier plusieurs ports à matcher
-m limit --limit 1/s = module, pour éviter le SYN flood, limite le nombre de paquet à 1 par sec
--mac-source FF:FF:FF:FF:FF:FF = pour filtrer les paquet suivant @mac -t = nom de la table concernée par l’action
-i = in-interface, interface (carte réseau) d’entrée
-o = out-interface, interface (carte réseau) de sortie
-n = sans résolution de nom
-v = verbose, iptables raconte sa vie avec plus de détails
-f = fragment, paquet fragmenté
  • Val4 : Les actions à mener en fonction des détails de la règle :
LOG = enregistrer le passage du paquet
ACCEPT = accépte le paquet si la règle est vérifiée
DROP = rejète le paquet sans message d'erreur si la règle est vérifiée
REJECT = rejète le paquet avec message d'erreur si la règle est vérifiée
SNAT = NAT Source, translation d'adresse IP source
DNAT = NAT Destination, translation d'adresse IP destination
MASQUERADE = Une gateway transforme les paquets sortants passant par elle pour donner l'illusion qu'ils sortent de la gateway elle-même par un port alloué dynamiquement ; lorsque la gateway recoit une réponse sur ce port, elle utilise une table de correspondance entre le port et les machines du réseau privé qu'elle gère pour lui faire suivre le paquet.
  • val5 :
--to ou --to-destination = permet de specifier une adresse IP, un bloc d'adresse IP et un port ou bloc de port de destination
--to-source = permet de specifier une adresse IP, un bloc d'adresse IP et un port ou bloc de port source (TCP et UDP seulement)
--log-prefix : Permet de spécifier un préfixe pour les logs.
--log-level = Level, permet de spécifier un niveau pour les logs log. Les noms valides (insensibles à la casse) sont `debug', `info', `notice', `warning', `err', `crit', `alert' et `emerg'. Ils correspondent respectivement aux nombres 7 à 0. Le niveau par défaut est `warning'.

Pour avoir de l'aide, il n'y a que demander. Exemple:

  • iptables -m --help
  • iptables -p --help
  • iptables --help
  • man iptables

Les fichiers de configurations

  • Elle autorise le transfert de paquet entre 2 interfaces.
echo 1 > /proc/sys/net/ipv4/ip_forward
  • Autorise ou refuse le protocole ICMP (réponse au ping)
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
  • Ignore les ping envoyés par broadcasts ou multicasts. Souvent utilisé pour eviter les "Ping Scanning"
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

*Ignore tous les ping envoyés par broadcasts, multicasts ou ceux destiné à la machine directement.

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  • Accepte la redirection de ping dans le cas d'un routeur ou d'une passerelle.
echo 1 > /proc/sys/net/ipv4/conf/all/accept_redirects
  • Empêche l' "ip spoofing". Le noyau vérifie que la concordance IP/Interface soit cohérente. Par exemple une IP privée ne sera pas accepter si elle vient par l'interface connecter à internet.
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

Les commandes pour gérer les modules Netfilter

  • Lister : lsmod
  • Charger le module et ceux dont il dépend : modprobe module
  • Décharger le module et ceux dont il dépend : modprobe -r module
Pour les monter automatiquement, il y a trois possibilités:
  • Les monter dans le script de configuration des règles de filtrage
  • Les monter dans /etc/conf.modules
  • Intégrer les service automatiquement dans le noyau

Les modules de Netfilter

  • ip_conntrack: suivi de connection
Il permet d'obtenir des informations sur toutes connexion en cours. Ces informations sont principalement:
    • NEW = Une nouvelle connexion est établie.
    • ESTABLISHED = La connexion analysée a déjà été établie.
    • RELATED = La connexion est en relation avec une autre connexion déjà établie (par exemple, dans le FTP actif).
    • INVALID = Le paquet n'appartient à aucune des trois catégories précédentes.
Grâce à ces informations, on peut mettre enplace des règles qui refusent ou autorise les connexion exterieur suivant si elle existait déjà ou pas.
  • -m state --state = Défini l'état de connection requis
  • Toutes les connexions qui sortent du LAN vers le Net sont acceptées
iptables -A FORWARD -i eth0 -o ppp0 -m state \--state NEW,ESTABLISHED,RELATED -j ACCEPT
  • Nous aurions aussi bien pu écrire :
iptables -A FORWARD -i eth0 -o ppp0 -m state \--state ! INVALID -j ACCEPT
  • Seules les connexions déjà établies ou en relation avec des connexions établies sont acceptées venant du Net vers le LAN
iptables -A FORWARD -i ppp0 -o eth0 -m state \--state ESTABLISHED,RELATED -j ACCEPT
  • ip_conntrack_ftp:
Pour le ftp c'est un peu plus complexe. Ce module est nécessaire

iptables -A INPUT -i ppp0 -p tcp \--sport 21 -m state \--state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp \--dport 21 -m state \--state NEW,ESTABLISHED -j ACCEPT

Cela pour que la connexion puisse s'établir. Ensuite (et c'est la qu'on a besoin de ip_conntrack_ftp) :

iptables -A INPUT -i ppp0 -p tcp \--sport 20 -m state \--state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp \--dport 20 -m state \--state ESTABLISHED -j ACCEPT
Pour que serveur puisse établir la connexion pour les données (en mode actif). Et enfin :
iptables -A INPUT -i ppp0 -p tcp \--sport 1024:65535 \--dport 1024:65535 -m state \--state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp \--sport 1024:65535 \--dport 1024:65535 -m state \--state ESTABLISHED,RELATED -j ACCEPT
  • ip_conntrack_irc:
  • ip_conntrack_h323
  • ip_conntrack_pptp
  • ip_nat_ftp:
  • ip_nat_irc
  • iptable_filter
  • iptable_nat
netfilter_dev Permet le chargement du module de gestion du filtrage de paquets. iptables Permet de charger le module admettant l'interaction entre le module de filtrage et iptables (outil supportant la gestion du filtrage). ipt_state Permet de charger le module gérant la table d'états des connexions. ipt_tcp Permet de charger le module régissant les connexions TCP. ipt_udp Permet de charger le module gérant les connexions UDP. ipt_LOG Permet de charger le module fournissant la journalisation. ipt_defrag Permet de charger le module admettant le ré-assemblage des paquets fragmentés. ip_conntrack Permet de charger le module gérant la mise en mémoire des demandes de connexions. ip_conntrack_ftp Permet de charger le module gérant la mise en mémoire des demandes de connexions pour le cas du FTP. ip_nat Permet de charger le module gérant la table des masquages d'adresses. ip_nat_ftp Permet de charger le module gérant la table des masquages d'adresses pour le cas du FTP.

Les patchs netfilters

Page en cours | Menu | Page suivante

KB - Bem-vindo à Base de Conhecimento Clube Mandriva > Security > Page 1 : Commandes de configuration Iptables/Netfilter
Versão a ser apresentada 1.33 last modified by mushu-petit-dragon on 22/08/2005 at 01:07

 


fr

RSS

Criador: mushu-petit-dragon on 2005/08/21 16:55
(c) Mandriva 2007
18888888