Firewall avec Iptables Mandrake 9.2

Le MNF (Multi Network Firewall) est un des produits pare-feu les plus richement pourvus en fonctionnalités du marché. Il est basé sur un kernel Linux 2.4 sécurisé. Ce forum est également destiné à accueillir tous les posts concernants les distributions Mandriva (anciennement Mandrake)

Modérateur: modos Ixus

Messagepar MoiCVincent » 10 Jan 2004 00:39

Heloooooooo ! <BR> <BR>Bon cette fois j'ai pas vraiment de probleme , je viens d'installer une Mandrake 9.2 qui me partage mon acces Internet <BR> <BR>Et pour la config du firewall j'ai tous fais a la main et ca fonctionne assez bien je doit dire maintenant c'est la premiere fois que je fait ca et je sais pas si c'est bien fait <BR> <BR>Si les habitués de la sécurité et des firewall pouvait m'indiquer les erreurs comises et le moyen d'ameliorer mon script <BR> <BR> <BR>Tous le commentaires sont les bienvennus ( Meme les grosse CRITIQUES ) <BR> <BR>Je sais , mes commentaires sont parfois bizzares mais c'est pour que je m'i retrouve <IMG SRC="images/smiles/icon_biggrin.gif"> <BR> <BR>Merci d'avance ! <BR> <BR> <BR>#!/bin/bash <BR> <BR># Chemin de l'executable IPTABLES <BR> IPT=/sbin/iptables <BR># Adresse de mon reseau Local <BR> MY_NET=192.168.20/24 <BR># Nom de mon interface pour aller sur le net <BR> NET_IFACE=ppp0 <BR> <BR># Liste des ports TCP a accepter en provenance du net <BR>NET_TCP="13 80" <BR># Liste des ports TCP a accepter en provenance du LAN <BR>LAN_TCP="13 22 80 137:139 901" <BR># Liste des ports UDP a accepter en provenance du net <BR>NET_UDP="13 80" <BR># Liste des ports UDP a accepter en provenance du LAN <BR>LAN_UDP="13 22 80 137:139 901" <BR># Liste des ports TCP a accepter en provenance du net vers le LAN ( FORWARD ) <BR>NET_LAN_TCP="80" <BR># Liste des ports UDP a accepter en provenance du net vers le LAN ( FORWARD ) <BR>NET_LAN_UDP="80" <BR> <BR> <BR> <BR># Activation du forwarding et Adresse IP dynamique <BR>echo "1" > /proc/sys/net/ipv4/ip_forward <BR>echo "1" > /proc/sys/net/ipv4/ip_dynaddr <BR> <BR># On vide toutes les chaines <BR>$IPT -F <BR> <BR># On efface toutes les chaines <BR>$IPT -X <BR> <BR># Gestion des paquets a loguer et a refuser <BR># on ajoute une nouvelle chaine LOG_DROP <BR>$IPT -N LOG_DROP <BR># on active le logging pour cette chaine avec le prefixe [IPTABLES DROP] : <BR>$IPT -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : ' <BR># enfin on rejette le paquet <BR>$IPT -A LOG_DROP -j DROP <BR> <BR># Gestion des paquets a loguer et a refuser non traite a la fin du script <BR># on ajoute une nouvelle chaine LOG_DROP_END <BR>$IPT -N LOG_DROP_END <BR># on active le logging pour cette chaine avec le prefixe [IPTABLES DROP] : <BR>$IPT -A LOG_DROP_END -j LOG --log-prefix '[IPTABLES DROP_END] : ' <BR># enfin on rejette le paquet <BR>$IPT -A LOG_DROP_END -j DROP <BR> <BR># Gestion des paquets a loguer et a accepter <BR># on ajoute une nouvelle chaine LOG_ACCEPT <BR>$IPT -N LOG_ACCEPT <BR># on active le logging pour cette chaine avec le prefixe [IPTABLES ACCEPT] : <BR>$IPT -A LOG_ACCEPT -j LOG --log-prefix '[IPTABLES ACCEPT] : ' <BR># enfin on accepte le paquet <BR>$IPT -A LOG_ACCEPT -j ACCEPT <BR> <BR># Gestion des paquets ssh a loguer et a accepter <BR># on ajoute une nouvelle chaine LOG_ACCEPT_SSH <BR>$IPT -N LOG_ACCEPT_SSH <BR># on active le logging pour cette chaine avec le prefixe [IPTABLES ACCEPT SSH] : <BR>$IPT -A LOG_ACCEPT_SSH -j LOG --log-prefix '[IPTABLES ACCEPT SSH] : ' <BR># enfin on accepte le paquet <BR>$IPT -A LOG_ACCEPT_SSH -j ACCEPT <BR> <BR># Gestion des paquets ICMP a loguer et a accepter <BR># on ajoute une nouvelle chaine LOG_ACCEPT_PING <BR>$IPT -N LOG_ACCEPT_PING <BR># on active le logging pour cette chaine avec le prefixe [IPTABLES ACCEPT PING] : <BR>$IPT -A LOG_ACCEPT_PING -j LOG --log-prefix '[IPTABLES ACCEPT PING] : ' <BR># enfin on accepte le paquet <BR>$IPT -A LOG_ACCEPT_PING -j ACCEPT <BR> <BR># politique par defaut : on rejette tout <BR>$IPT -P INPUT DROP <BR>$IPT -P OUTPUT DROP <BR>$IPT -P FORWARD DROP <BR> <BR># On accepte tout sur l'interface locale ( lo ) <BR>$IPT -A INPUT -i lo -j ACCEPT <BR>$IPT -A OUTPUT -o lo -j ACCEPT <BR> <BR># on va s'occuper du net <BR># on ne veux pas de filtrage sur le conexions sortantes <BR># Serveur -> NET <BR># On accepte toute les connexions tcp sortantes <BR>$IPT -A OUTPUT -o $NET_IFACE -p tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT <BR>$IPT -A INPUT -i $NET_IFACE -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT <BR># On accepte toute les connexions udp sortantes <BR>$IPT -A OUTPUT -o $NET_IFACE -p udp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT <BR>$IPT -A INPUT -i $NET_IFACE -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT <BR> <BR># On accepte et on logue les connexions SSH venant de l'exterieur <BR>$IPT -A INPUT -i $NET_IFACE -m state --state NEW,RELATED,ESTABLISHED -p tcp --dport 22 -j LOG_ACCEPT_SSH <BR>$IPT -A OUTPUT -o $NET_IFACE -m state --state RELATED,ESTABLISHED -p tcp --sport 22 -j LOG_ACCEPT_SSH <BR> <BR># on authorise ICMP sur le NET avec limitation <BR># ( max 40 ping /min ) seul le ping est authorise "icmp-type 8 et 0" <BR>$IPT -A OUTPUT -o $NET_IFACE -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT <BR>$IPT -A INPUT -i $NET_IFACE -p icmp --icmp-type 8 -m state --state NEW -m limit --limit 40/min -j LOG_ACCEPT_PING <BR>$IPT -A INPUT -i $NET_IFACE -p icmp --icmp-type 0 -m state --state NEW -m limit --limit 40/min -j LOG_ACCEPT_PING <BR>$IPT -A INPUT -i $NET_IFACE -p icmp -m state --state RELATED,ESTABLISHED -j LOG_ACCEPT_PING <BR> <BR>for port in $NET_TCP ; do <BR> $IPT -A INPUT -i $NET_IFACE -p tcp --dport $port -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT <BR>done <BR> <BR>for port in $NET_UDP ; do <BR> $IPT -A INPUT -i $NET_IFACE -p udp --dport $port -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT <BR>done <BR> <BR> <BR> <BR># maintenant on passe au LAN <BR># On accepte toute les connexions sortantes <BR>$IPT -A OUTPUT -o eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT <BR>$IPT -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT <BR> <BR># On accepte et on logue les connexions SSH venant du LAN <BR>#$IPT -A INPUT -i eth0 -m state --state NEW,ESTABLISHED -p tcp --dport 22 -j LOG_ACCEPT_SSH <BR>#$IPT -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport 22 -j LOG_ACCEPT_SSH <BR> <BR># on authorise ICMP sur le LAN <BR>$IPT -A OUTPUT -o eth0 -p icmp -j ACCEPT <BR>$IPT -A INPUT -i eth0 -p icmp -j ACCEPT <BR> <BR># filtrage des connexions au serveur <BR>for port in $LAN_TCP ; do <BR> $IPT -A INPUT -i eth0 -p tcp --dport $port -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT <BR>done <BR> <BR>for port in $LAN_UDP ; do <BR> $IPT -A INPUT -i eth0 -p udp --dport $port -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT <BR>done <BR> <BR> <BR># maintenant les connexions qui traversent <BR># Le LAN a un acces complet au net <BR>$IPT -A FORWARD -i eth0 -o $NET_IFACE -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT <BR>$IPT -A FORWARD -o eth0 -i $NET_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT <BR> <BR># Le ping NET vers LAN est limite <BR>$IPT -A FORWARD -i eth0 -o $NET_IFACE -p icmp -m state --state NEW,RELATED,ESTABLISHED -j LOG_ACCEPT_PING <BR>$IPT -A FORWARD -i $NET_IFACE -o eth0 -p icmp -m state --state RELATED,ESTABLISHED -j LOG_ACCEPT_PING <BR>$IPT -A FORWARD -i $NET_IFACE -o eth0 -p icmp -m state --state NEW -m limit --limit 40/min -j LOG_ACCEPT_PING <BR> <BR> <BR># on accepte quelques ports dans le sens NET -> LAN <BR>for port in $NET_LAN_TCP ; do <BR> $IPT -A FORWARD -i $NET_IFACE -o eth0 -p tcp --dport $port -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT <BR>done <BR> <BR>for port in $NET_LAN_UDP ; do <BR> $IPT -A FORWARD -i $NET_IFACE -o eth0 -p udp --dport $port -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT <BR>done <BR> <BR># Le lan dialogue sur le net avec l'IP publique du serveur <BR>$IPT -t nat -A POSTROUTING -s $MY_NET -j MASQUERADE <BR> <BR> <BR># On va faire un peu de gestion du debit <BR># Priorisation des connexions ftp et ssh <BR>$IPT -A PREROUTING -t mangle -p tcp --sport ssh -j TOS --set-tos Minimize-Delay <BR>$IPT -A PREROUTING -t mangle -p tcp --sport ftp -j TOS --set-tos Minimize-Delay <BR># On donne un maximum de débit aux transferts ftp, peu importe la latence <BR>$IPT -A PREROUTING -t mangle -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput <BR> <BR> <BR># tout ce qui n'a pas ete traite est rejete et logue <BR>$IPT -A FORWARD -j LOG_DROP_END <BR>$IPT -A INPUT -j LOG_DROP_END <BR>$IPT -A OUTPUT -j LOG_DROP_END <BR>
Noubliez pas , On est sur terre pour vivre !
Image
Avatar de l’utilisateur
MoiCVincent
Contre-Amiral
Contre-Amiral
 
Messages: 395
Inscrit le: 08 Jan 2004 01:00
Localisation: Normandie

Messagepar MoiCVincent » 10 Jan 2004 13:40

Ah ouais J'ai oublié ! <BR> <BR>Peux -ton lancer des commandes ( traceroute , ou autre ) lorseque Iptable detecte certains paquets ? <BR> <BR> <IMG SRC="images/smiles/icon_rolleyes.gif">
Noubliez pas , On est sur terre pour vivre !
Image
Avatar de l’utilisateur
MoiCVincent
Contre-Amiral
Contre-Amiral
 
Messages: 395
Inscrit le: 08 Jan 2004 01:00
Localisation: Normandie


Retour vers Mandriva MNF & SNF

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron