Bonjour,
Attend les réponses d'autres "experts", puis reposte tes règles après
modifications, pour voir si t'as bien travailé ;-).
Bonjour,
Attend les réponses d'autres "experts", puis reposte tes règles après
modifications, pour voir si t'as bien travailé ;-).
Bonjour,
Attend les réponses d'autres "experts", puis reposte tes règles après
modifications, pour voir si t'as bien travailé ;-).
# gateway have access to dhcp (port 67)
$IPTABLES -A INPUT -p udp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Pareil, les deux dernières lignes sont inutiles pour la même raison.
Tu peux rajouter que le port local sera toujours 68....euh, je veux dire
123.
Pour plus de sécurité, tu peux ajouter l'adresse IP du serveur DHCP
# gateway have access to ntp (port 123)
$IPTABLES -A INPUT -p udp --sport 123 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 123 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 123 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 123 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Ces quatres lignes sont à supprimer.# gateway have access to web
$IPTABLES -A INPUT -p tcp --sport 80 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 80 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 443 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 443 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
tu peux charger le module multiport : ... -m multiports --sport 80,443..
et gagner deux lignes
# gateway have access to dhcp (port 67)
$IPTABLES -A INPUT -p udp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Pareil, les deux dernières lignes sont inutiles pour la même raison.
Tu peux rajouter que le port local sera toujours 68....euh, je veux dire
123.
Pour plus de sécurité, tu peux ajouter l'adresse IP du serveur DHCP
# gateway have access to ntp (port 123)
$IPTABLES -A INPUT -p udp --sport 123 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 123 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 123 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 123 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Ces quatres lignes sont à supprimer.
# gateway have access to web
$IPTABLES -A INPUT -p tcp --sport 80 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 80 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 443 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 443 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
tu peux charger le module multiport : ... -m multiports --sport 80,443..
et gagner deux lignes
# gateway have access to dhcp (port 67)
$IPTABLES -A INPUT -p udp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Pareil, les deux dernières lignes sont inutiles pour la même raison.
Tu peux rajouter que le port local sera toujours 68....euh, je veux dire
123.
Pour plus de sécurité, tu peux ajouter l'adresse IP du serveur DHCP
# gateway have access to ntp (port 123)
$IPTABLES -A INPUT -p udp --sport 123 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 123 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 123 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 123 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Ces quatres lignes sont à supprimer.# gateway have access to web
$IPTABLES -A INPUT -p tcp --sport 80 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 80 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 443 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 443 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
tu peux charger le module multiport : ... -m multiports --sport 80,443..
et gagner deux lignes
Les deux dernières lignes sont inutiles, le DNS se faisant uniquement en
UDP
Tu peux ajouter l'adresse des DNS, pour plus de sécurité.# gateway have access to dhcp (port 67)
$IPTABLES -A INPUT -p udp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Les deux dernières lignes sont inutiles, le DNS se faisant uniquement en
UDP
Tu peux ajouter l'adresse des DNS, pour plus de sécurité.
# gateway have access to dhcp (port 67)
$IPTABLES -A INPUT -p udp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Les deux dernières lignes sont inutiles, le DNS se faisant uniquement en
UDP
Tu peux ajouter l'adresse des DNS, pour plus de sécurité.# gateway have access to dhcp (port 67)
$IPTABLES -A INPUT -p udp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Attend les réponses d'autres "experts", puis reposte tes règles après
modifications, pour voir si t'as bien travailé ;-).
Attend les réponses d'autres "experts", puis reposte tes règles après
modifications, pour voir si t'as bien travailé ;-).
Attend les réponses d'autres "experts", puis reposte tes règles après
modifications, pour voir si t'as bien travailé ;-).
# Le firewall possede un serveur ftp accessible depuis l'exterieur
# Les debuts de connection sont loggués
# Le serveur fonctionne en principe pour les clients configurés en passif et en actif
# ftp the gateway from internet (server)
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 21 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF --sport 20 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF -m multiport --dport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF -m multiport --sport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --sport 1024:65535 --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --sport 20 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Le firewall possede un serveur ftp accessible depuis l'exterieur
# Les debuts de connection sont loggués
# Le serveur fonctionne en principe pour les clients configurés en passif et en actif
# ftp the gateway from internet (server)
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 21 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF --sport 20 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF -m multiport --dport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF -m multiport --sport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --sport 1024:65535 --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --sport 20 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Le firewall possede un serveur ftp accessible depuis l'exterieur
# Les debuts de connection sont loggués
# Le serveur fonctionne en principe pour les clients configurés en passif et en actif
# ftp the gateway from internet (server)
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 21 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF --sport 20 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF -m multiport --dport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF -m multiport --sport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --sport 1024:65535 --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --sport 20 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
On Sun, 14 Sep 2003 00:21:58 +0200
Bertrand Masius wrote:Attend les réponses d'autres "experts", puis reposte tes règles après
modifications, pour voir si t'as bien travailé ;-).
Voila, j'ai modifié et ajouté des commentaires. Merci de me dire si j'ai bein compris tous tes conseils :o)
C'est clair que c'est vraiment puissant comme logiciel netfilter !! J'ai aussi fait un script de QoS inspiré du wondershaper et utilsant diferentes diciplines de mise en attente (htp, sfq, red, imq) qui marche tres bien chez moi mais qui n'est tout de meme pas totallement au point... et là encore c'est iptable qui marque les paquets avec la table mangling... enfin bon, tout cela pour dire que les possibilités sont immences !
< Mode apprend Usenet >
Qu'en est il pour les autres plateformes ? *BSD, Unix proprietaires, etc... les outils sont ils encore *beacoup* plsu puissant ou est ce sensiblement equivalent ? Qu'utilisent les gros routeurs des fai ? J'avoue que c'est un domaine qui me rends assez curieux et que je trouve tres interessant. Linux sait il s'imposer en la matiere ?
# Le firewall peut demander service au dhcp du modem pour que celui ci lui donne son ip externe
# Je ne connais pas l'adresse ip du modem donc je ne peux pas restreindre à lui meme
# gateway can ask dhcp of the modem (port 67)
$IPTABLES -A INPUT -p udp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Tu peux préciser que le port local est le 68. Remarque, je trouve
# Restriction des packets icpm
# A voir et a améliorer, peut-etre a restreindre au ping seulement
# icmp / ping (hum...)
$IPTABLES -A OUTPUT -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -m limit --limit 10/min -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state NEW -m limit --limit 10/min -j ACCEPT
Je te propose les règles suivantes :
On Sun, 14 Sep 2003 00:21:58 +0200
Bertrand Masius <bozo74@hotmail.com> wrote:
Attend les réponses d'autres "experts", puis reposte tes règles après
modifications, pour voir si t'as bien travailé ;-).
Voila, j'ai modifié et ajouté des commentaires. Merci de me dire si j'ai bein compris tous tes conseils :o)
C'est clair que c'est vraiment puissant comme logiciel netfilter !! J'ai aussi fait un script de QoS inspiré du wondershaper et utilsant diferentes diciplines de mise en attente (htp, sfq, red, imq) qui marche tres bien chez moi mais qui n'est tout de meme pas totallement au point... et là encore c'est iptable qui marque les paquets avec la table mangling... enfin bon, tout cela pour dire que les possibilités sont immences !
< Mode apprend Usenet >
Qu'en est il pour les autres plateformes ? *BSD, Unix proprietaires, etc... les outils sont ils encore *beacoup* plsu puissant ou est ce sensiblement equivalent ? Qu'utilisent les gros routeurs des fai ? J'avoue que c'est un domaine qui me rends assez curieux et que je trouve tres interessant. Linux sait il s'imposer en la matiere ?
# Le firewall peut demander service au dhcp du modem pour que celui ci lui donne son ip externe
# Je ne connais pas l'adresse ip du modem donc je ne peux pas restreindre à lui meme
# gateway can ask dhcp of the modem (port 67)
$IPTABLES -A INPUT -p udp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Tu peux préciser que le port local est le 68. Remarque, je trouve
# Restriction des packets icpm
# A voir et a améliorer, peut-etre a restreindre au ping seulement
# icmp / ping (hum...)
$IPTABLES -A OUTPUT -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -m limit --limit 10/min -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state NEW -m limit --limit 10/min -j ACCEPT
Je te propose les règles suivantes :
On Sun, 14 Sep 2003 00:21:58 +0200
Bertrand Masius wrote:Attend les réponses d'autres "experts", puis reposte tes règles après
modifications, pour voir si t'as bien travailé ;-).
Voila, j'ai modifié et ajouté des commentaires. Merci de me dire si j'ai bein compris tous tes conseils :o)
C'est clair que c'est vraiment puissant comme logiciel netfilter !! J'ai aussi fait un script de QoS inspiré du wondershaper et utilsant diferentes diciplines de mise en attente (htp, sfq, red, imq) qui marche tres bien chez moi mais qui n'est tout de meme pas totallement au point... et là encore c'est iptable qui marque les paquets avec la table mangling... enfin bon, tout cela pour dire que les possibilités sont immences !
< Mode apprend Usenet >
Qu'en est il pour les autres plateformes ? *BSD, Unix proprietaires, etc... les outils sont ils encore *beacoup* plsu puissant ou est ce sensiblement equivalent ? Qu'utilisent les gros routeurs des fai ? J'avoue que c'est un domaine qui me rends assez curieux et que je trouve tres interessant. Linux sait il s'imposer en la matiere ?
# Le firewall peut demander service au dhcp du modem pour que celui ci lui donne son ip externe
# Je ne connais pas l'adresse ip du modem donc je ne peux pas restreindre à lui meme
# gateway can ask dhcp of the modem (port 67)
$IPTABLES -A INPUT -p udp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Tu peux préciser que le port local est le 68. Remarque, je trouve
# Restriction des packets icpm
# A voir et a améliorer, peut-etre a restreindre au ping seulement
# icmp / ping (hum...)
$IPTABLES -A OUTPUT -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -m limit --limit 10/min -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state NEW -m limit --limit 10/min -j ACCEPT
Je te propose les règles suivantes :
J'ai supprimé les --state ESTABLISHED car ceux-ci ne fonctionnent qu'en
mode "connecté", or icmp et udp ne sont pas des modes connectés. La
modif peut être faite partout.
Je me répond :
J'ai supprimé les --state ESTABLISHED car ceux-ci ne fonctionnent qu'en
mode "connecté", or icmp et udp ne sont pas des modes connectés. La
modif peut être faite partout.
Je me répond :
J'ai supprimé les --state ESTABLISHED car ceux-ci ne fonctionnent qu'en
mode "connecté", or icmp et udp ne sont pas des modes connectés. La
modif peut être faite partout.
Je me répond :
C'est RELATED qui peut être supprimé partout en UDP et TCP, sauf pour le
ftp.
voir man iptables pour précisions
C'est RELATED qui peut être supprimé partout en UDP et TCP, sauf pour le
ftp.
voir man iptables pour précisions
C'est RELATED qui peut être supprimé partout en UDP et TCP, sauf pour le
ftp.
voir man iptables pour précisions
On Sun, 14 Sep 2003 16:29:32 +0200
omnikron wrote:# Le firewall possede un serveur ftp accessible depuis l'exterieur
# Les debuts de connection sont loggués
# Le serveur fonctionne en principe pour les clients configurés en passif et en actif
# ftp the gateway from internet (server)
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 21 -m state --state NEW -j LOG_ACCEPT
ça c'est pour actif et passif, canal contrôle en entrée NEW
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF --sport 20 -m state --state NEW -j LOG_ACCEPT
ça c'est pour actif, canal contrôle en sortie NEW
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF -m multiport --dport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
ça c'est pour actif et passif en entrée ESTABLISHED pour 21, et NEW ( RELATED), ESTABLISHED pour 20 (a)
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF -m multiport --sport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
ça c'est pour actif et passif en sortie ESTABLISHED (b)
$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --sport 1024:65535 --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
ça c'est pareil que (a), en plus sélectif (meilleur). soit supprimer,
$IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --sport 20 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
ça c'est pareil que (b), en plus sélectif. supprimer ou intégrer.
Après tests, ceci ne fonctionne pas depuis l'exterieur en ftp passif (actif ok).
Peut-être ai-je mal compris un de tes conseils.
Que me conseillez vous ?
On Sun, 14 Sep 2003 16:29:32 +0200
omnikron <omnikron@wanadoo.fr> wrote:
# Le firewall possede un serveur ftp accessible depuis l'exterieur
# Les debuts de connection sont loggués
# Le serveur fonctionne en principe pour les clients configurés en passif et en actif
# ftp the gateway from internet (server)
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 21 -m state --state NEW -j LOG_ACCEPT
ça c'est pour actif et passif, canal contrôle en entrée NEW
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF --sport 20 -m state --state NEW -j LOG_ACCEPT
ça c'est pour actif, canal contrôle en sortie NEW
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF -m multiport --dport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
ça c'est pour actif et passif en entrée ESTABLISHED pour 21, et NEW ( RELATED), ESTABLISHED pour 20 (a)
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF -m multiport --sport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
ça c'est pour actif et passif en sortie ESTABLISHED (b)
$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --sport 1024:65535 --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
ça c'est pareil que (a), en plus sélectif (meilleur). soit supprimer,
$IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --sport 20 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
ça c'est pareil que (b), en plus sélectif. supprimer ou intégrer.
Après tests, ceci ne fonctionne pas depuis l'exterieur en ftp passif (actif ok).
Peut-être ai-je mal compris un de tes conseils.
Que me conseillez vous ?
On Sun, 14 Sep 2003 16:29:32 +0200
omnikron wrote:# Le firewall possede un serveur ftp accessible depuis l'exterieur
# Les debuts de connection sont loggués
# Le serveur fonctionne en principe pour les clients configurés en passif et en actif
# ftp the gateway from internet (server)
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 21 -m state --state NEW -j LOG_ACCEPT
ça c'est pour actif et passif, canal contrôle en entrée NEW
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF --sport 20 -m state --state NEW -j LOG_ACCEPT
ça c'est pour actif, canal contrôle en sortie NEW
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF -m multiport --dport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
ça c'est pour actif et passif en entrée ESTABLISHED pour 21, et NEW ( RELATED), ESTABLISHED pour 20 (a)
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF -m multiport --sport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
ça c'est pour actif et passif en sortie ESTABLISHED (b)
$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --sport 1024:65535 --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
ça c'est pareil que (a), en plus sélectif (meilleur). soit supprimer,
$IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --sport 20 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
ça c'est pareil que (b), en plus sélectif. supprimer ou intégrer.
Après tests, ceci ne fonctionne pas depuis l'exterieur en ftp passif (actif ok).
Peut-être ai-je mal compris un de tes conseils.
Que me conseillez vous ?
Qu'en est il pour les autres plateformes ? *BSD, Unix proprietaires,
etc... les outils sont ils encore *beacoup* plsu puissant ou est ce
sensiblement equivalent ?
Qu'utilisent les gros routeurs des fai ?
J'avoue que c'est un domaine qui me rends assez curieux et que je
trouve tres interessant. Linux sait il s'imposer en la matiere ?
// ---- begin du script ----
#!/bin/sh
#
# Begin of variables definitions
#
# EXTERNAL_IF est l'interface connecté au net
# INTERNAL_IF est l'interface connecté au reseau local
# IPTABLES est le chemin vers l'executable iptables
IPTABLES=/sbin/iptables
EXTERNAL_IF="eth1"
INTERNAL_IF="eth0"
#
# End of variables definitions
#
#
# Begin of functions definitions
#
start() {
echo "Starting Netfilter/Iptables"
# Le routage est d'abord desactivé
# Ca ne sert pas à grand chose mais bon ;o)
echo 0 > /proc/sys/net/ipv4/ip_forward
[...]
# Toutes les nouvelles connection pour lesquelles le paquet n'est pas
# un paquet SYN sont dropées
# drop new connections if packet is not a syn
$IPTABLES -A INPUT -p tcp ! --syn -i $EXTERNAL_IF -m state --state NEW -j LOG_DROP
$IPTABLES -A FORWARD -i $EXTERNAL_IF -o $INTERNAL_IF -m state --state NEW -j LOG_DROP
# Tout est accepté sur l'interface de loopback de la machine
# all accepted on lo
$IPTABLES -A INPUT -i lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
$IPTABLES -A OUTPUT -o lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
# Tout est accepté sur eth0, l'interface connectée au reseau local
# all accepted on eth0
$IPTABLES -A INPUT -i $INTERNAL_IF -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT
$IPTABLES -A OUTPUT -o $INTERNAL_IF -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT
# Le reseau local a acces a tout sur le net
# lan have access to all on internet
$IPTABLES -A FORWARD -i $INTERNAL_IF -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $EXTERNAL_IF -o $INTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
# Le firewall peut faire des requetes vers les dns du fai
# gateway can ask dns of my isp (port 53)
$IPTABLES -A INPUT -p udp --sport 53 -i $EXTERNAL_IF --src 212.27.32.176 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 53 -o $EXTERNAL_IF --dst 212.27.32.176 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p udp --sport 53 -i $EXTERNAL_IF --src 212.27.32.177 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 53 -o $EXTERNAL_IF --dst 212.27.32.177 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Le firewall peut demander service au dhcp du modem pour que celui ci lui donne son ip externe
# Je ne connais pas l'adresse ip du modem donc je ne peux pas restreindre à lui meme
# gateway can ask dhcp of the modem (port 67)
$IPTABLES -A INPUT -p udp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Le firewall a access aux services web, ftp et ntp (serveur de temps)
# gateway have access to web (80,443), ftp (21,20) and ntp (123)
$IPTABLES -A INPUT -p udp -m multiport --sport 80,443,21,20,123 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp -m multiport --dport 80,443,21,20,123 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp -m multiport --sport 80,443,21,20,123 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m multiport --dport 80,443,21,20,123 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Le firewall possede un serveur ftp accessible depuis l'exterieur
# Les debuts de connection sont loggués
# Le serveur fonctionne en principe pour les clients configurés en passif et en actif
# ftp the gateway from internet (server)
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 21 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF --sport 20 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF -m multiport --dport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF -m multiport --sport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --sport 1024:65535 --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --sport 20 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Le firewall accepte les connections ssh depuis l'exterieur
# Le debut de la connection est loggé
# ssh the gateway from internet (server)
#$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 22 -m state --state NEW -j LOG_ACCEPT
#$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
#$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF --sport 22 -j ACCEPT
# Le firewall redirige toutes les requetes arrivant sur le port 6022 vers le port 22 de la machine
# 192.168.1.11 (atlantis)
# ssh atlantis (forwarding to server)
$IPTABLES -A FORWARD -i $EXTERNAL_IF -o $INTERNAL_IF -p tcp --dport 22 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -t nat -A PREROUTING -i $EXTERNAL_IF -p tcp --dport 6022 -j DNAT --to-destination 192.168.1.11:22
# Pour empécher le spoofing
# Pris sur lealinux.org
# no spoofing
for i in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $i
done
# Restriction des packets icpm
# A voir et a améliorer, peut-etre a restreindre au ping seulement
# icmp / ping (hum...)
$IPTABLES -A OUTPUT -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -m limit --limit 10/min -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state NEW -m limit --limit 10/min -j ACCEPT
# Tous les autres paquets ne matchant aucune des regles sont loggés et droppés
# log dropped packets
$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp -j LOG_DROP
$IPTABLES -A INPUT -i $EXTERNAL_IF -p udp -j LOG_DROP
# Masquerade des ip du reseau local et activation du routage
# Permet entre autre le partage de connection
# masquerade of the lan
$IPTABLES -A POSTROUTING -t nat -o $EXTERNAL_IF -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "."
}
stop() {
echo "Stopping Netfilter/Iptables"
# Tout est accepté comme politique par default sur la chaine filter
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
# Tout est accepté comme politique par default sur la chaine nat
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
# Toutes les regles sont vidées
# Tables filter et nat
$IPTABLES -F
$IPTABLES -t nat -F
# Toutes les chaines perso sont detruites
# Tables filter et nat
$IPTABLES -X
$IPTABLES -t nat -X
# Le routage est desactivé
echo 0 > /proc/sys/net/ipv4/ip_forward
echo "."
}
#
# End of functions definitions
#
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
# Le parametre -L liste toutes les chaine en cours
# Tables filter et nat
$IPTABLES -L
$IPTABLES -t nat -L
;;
*)
echo "Usage: firewall {start|stop|restart|status}"
esac
exit
// ---- end du script ----
Qu'en est il pour les autres plateformes ? *BSD, Unix proprietaires,
etc... les outils sont ils encore *beacoup* plsu puissant ou est ce
sensiblement equivalent ?
Qu'utilisent les gros routeurs des fai ?
J'avoue que c'est un domaine qui me rends assez curieux et que je
trouve tres interessant. Linux sait il s'imposer en la matiere ?
// ---- begin du script ----
#!/bin/sh
#
# Begin of variables definitions
#
# EXTERNAL_IF est l'interface connecté au net
# INTERNAL_IF est l'interface connecté au reseau local
# IPTABLES est le chemin vers l'executable iptables
IPTABLES=/sbin/iptables
EXTERNAL_IF="eth1"
INTERNAL_IF="eth0"
#
# End of variables definitions
#
#
# Begin of functions definitions
#
start() {
echo "Starting Netfilter/Iptables"
# Le routage est d'abord desactivé
# Ca ne sert pas à grand chose mais bon ;o)
echo 0 > /proc/sys/net/ipv4/ip_forward
[...]
# Toutes les nouvelles connection pour lesquelles le paquet n'est pas
# un paquet SYN sont dropées
# drop new connections if packet is not a syn
$IPTABLES -A INPUT -p tcp ! --syn -i $EXTERNAL_IF -m state --state NEW -j LOG_DROP
$IPTABLES -A FORWARD -i $EXTERNAL_IF -o $INTERNAL_IF -m state --state NEW -j LOG_DROP
# Tout est accepté sur l'interface de loopback de la machine
# all accepted on lo
$IPTABLES -A INPUT -i lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
$IPTABLES -A OUTPUT -o lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
# Tout est accepté sur eth0, l'interface connectée au reseau local
# all accepted on eth0
$IPTABLES -A INPUT -i $INTERNAL_IF -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT
$IPTABLES -A OUTPUT -o $INTERNAL_IF -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT
# Le reseau local a acces a tout sur le net
# lan have access to all on internet
$IPTABLES -A FORWARD -i $INTERNAL_IF -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $EXTERNAL_IF -o $INTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
# Le firewall peut faire des requetes vers les dns du fai
# gateway can ask dns of my isp (port 53)
$IPTABLES -A INPUT -p udp --sport 53 -i $EXTERNAL_IF --src 212.27.32.176 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 53 -o $EXTERNAL_IF --dst 212.27.32.176 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p udp --sport 53 -i $EXTERNAL_IF --src 212.27.32.177 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 53 -o $EXTERNAL_IF --dst 212.27.32.177 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Le firewall peut demander service au dhcp du modem pour que celui ci lui donne son ip externe
# Je ne connais pas l'adresse ip du modem donc je ne peux pas restreindre à lui meme
# gateway can ask dhcp of the modem (port 67)
$IPTABLES -A INPUT -p udp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Le firewall a access aux services web, ftp et ntp (serveur de temps)
# gateway have access to web (80,443), ftp (21,20) and ntp (123)
$IPTABLES -A INPUT -p udp -m multiport --sport 80,443,21,20,123 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp -m multiport --dport 80,443,21,20,123 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp -m multiport --sport 80,443,21,20,123 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m multiport --dport 80,443,21,20,123 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Le firewall possede un serveur ftp accessible depuis l'exterieur
# Les debuts de connection sont loggués
# Le serveur fonctionne en principe pour les clients configurés en passif et en actif
# ftp the gateway from internet (server)
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 21 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF --sport 20 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF -m multiport --dport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF -m multiport --sport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --sport 1024:65535 --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --sport 20 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Le firewall accepte les connections ssh depuis l'exterieur
# Le debut de la connection est loggé
# ssh the gateway from internet (server)
#$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 22 -m state --state NEW -j LOG_ACCEPT
#$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
#$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF --sport 22 -j ACCEPT
# Le firewall redirige toutes les requetes arrivant sur le port 6022 vers le port 22 de la machine
# 192.168.1.11 (atlantis)
# ssh atlantis (forwarding to server)
$IPTABLES -A FORWARD -i $EXTERNAL_IF -o $INTERNAL_IF -p tcp --dport 22 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -t nat -A PREROUTING -i $EXTERNAL_IF -p tcp --dport 6022 -j DNAT --to-destination 192.168.1.11:22
# Pour empécher le spoofing
# Pris sur lealinux.org
# no spoofing
for i in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $i
done
# Restriction des packets icpm
# A voir et a améliorer, peut-etre a restreindre au ping seulement
# icmp / ping (hum...)
$IPTABLES -A OUTPUT -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -m limit --limit 10/min -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state NEW -m limit --limit 10/min -j ACCEPT
# Tous les autres paquets ne matchant aucune des regles sont loggés et droppés
# log dropped packets
$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp -j LOG_DROP
$IPTABLES -A INPUT -i $EXTERNAL_IF -p udp -j LOG_DROP
# Masquerade des ip du reseau local et activation du routage
# Permet entre autre le partage de connection
# masquerade of the lan
$IPTABLES -A POSTROUTING -t nat -o $EXTERNAL_IF -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "."
}
stop() {
echo "Stopping Netfilter/Iptables"
# Tout est accepté comme politique par default sur la chaine filter
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
# Tout est accepté comme politique par default sur la chaine nat
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
# Toutes les regles sont vidées
# Tables filter et nat
$IPTABLES -F
$IPTABLES -t nat -F
# Toutes les chaines perso sont detruites
# Tables filter et nat
$IPTABLES -X
$IPTABLES -t nat -X
# Le routage est desactivé
echo 0 > /proc/sys/net/ipv4/ip_forward
echo "."
}
#
# End of functions definitions
#
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
# Le parametre -L liste toutes les chaine en cours
# Tables filter et nat
$IPTABLES -L
$IPTABLES -t nat -L
;;
*)
echo "Usage: firewall {start|stop|restart|status}"
esac
exit
// ---- end du script ----
Qu'en est il pour les autres plateformes ? *BSD, Unix proprietaires,
etc... les outils sont ils encore *beacoup* plsu puissant ou est ce
sensiblement equivalent ?
Qu'utilisent les gros routeurs des fai ?
J'avoue que c'est un domaine qui me rends assez curieux et que je
trouve tres interessant. Linux sait il s'imposer en la matiere ?
// ---- begin du script ----
#!/bin/sh
#
# Begin of variables definitions
#
# EXTERNAL_IF est l'interface connecté au net
# INTERNAL_IF est l'interface connecté au reseau local
# IPTABLES est le chemin vers l'executable iptables
IPTABLES=/sbin/iptables
EXTERNAL_IF="eth1"
INTERNAL_IF="eth0"
#
# End of variables definitions
#
#
# Begin of functions definitions
#
start() {
echo "Starting Netfilter/Iptables"
# Le routage est d'abord desactivé
# Ca ne sert pas à grand chose mais bon ;o)
echo 0 > /proc/sys/net/ipv4/ip_forward
[...]
# Toutes les nouvelles connection pour lesquelles le paquet n'est pas
# un paquet SYN sont dropées
# drop new connections if packet is not a syn
$IPTABLES -A INPUT -p tcp ! --syn -i $EXTERNAL_IF -m state --state NEW -j LOG_DROP
$IPTABLES -A FORWARD -i $EXTERNAL_IF -o $INTERNAL_IF -m state --state NEW -j LOG_DROP
# Tout est accepté sur l'interface de loopback de la machine
# all accepted on lo
$IPTABLES -A INPUT -i lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
$IPTABLES -A OUTPUT -o lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
# Tout est accepté sur eth0, l'interface connectée au reseau local
# all accepted on eth0
$IPTABLES -A INPUT -i $INTERNAL_IF -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT
$IPTABLES -A OUTPUT -o $INTERNAL_IF -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT
# Le reseau local a acces a tout sur le net
# lan have access to all on internet
$IPTABLES -A FORWARD -i $INTERNAL_IF -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $EXTERNAL_IF -o $INTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
# Le firewall peut faire des requetes vers les dns du fai
# gateway can ask dns of my isp (port 53)
$IPTABLES -A INPUT -p udp --sport 53 -i $EXTERNAL_IF --src 212.27.32.176 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 53 -o $EXTERNAL_IF --dst 212.27.32.176 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p udp --sport 53 -i $EXTERNAL_IF --src 212.27.32.177 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 53 -o $EXTERNAL_IF --dst 212.27.32.177 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Le firewall peut demander service au dhcp du modem pour que celui ci lui donne son ip externe
# Je ne connais pas l'adresse ip du modem donc je ne peux pas restreindre à lui meme
# gateway can ask dhcp of the modem (port 67)
$IPTABLES -A INPUT -p udp --sport 67 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 67 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Le firewall a access aux services web, ftp et ntp (serveur de temps)
# gateway have access to web (80,443), ftp (21,20) and ntp (123)
$IPTABLES -A INPUT -p udp -m multiport --sport 80,443,21,20,123 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp -m multiport --dport 80,443,21,20,123 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p tcp -m multiport --sport 80,443,21,20,123 -i $EXTERNAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m multiport --dport 80,443,21,20,123 -o $EXTERNAL_IF -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Le firewall possede un serveur ftp accessible depuis l'exterieur
# Les debuts de connection sont loggués
# Le serveur fonctionne en principe pour les clients configurés en passif et en actif
# ftp the gateway from internet (server)
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 21 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF --sport 20 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF -m multiport --dport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF -m multiport --sport 21,20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp --sport 1024:65535 --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -o $EXTERNAL_IF -p tcp --sport 20 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Le firewall accepte les connections ssh depuis l'exterieur
# Le debut de la connection est loggé
# ssh the gateway from internet (server)
#$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 22 -m state --state NEW -j LOG_ACCEPT
#$IPTABLES -A INPUT -p tcp -i $EXTERNAL_IF --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
#$IPTABLES -A OUTPUT -p tcp -o $EXTERNAL_IF --sport 22 -j ACCEPT
# Le firewall redirige toutes les requetes arrivant sur le port 6022 vers le port 22 de la machine
# 192.168.1.11 (atlantis)
# ssh atlantis (forwarding to server)
$IPTABLES -A FORWARD -i $EXTERNAL_IF -o $INTERNAL_IF -p tcp --dport 22 -m state --state NEW -j LOG_ACCEPT
$IPTABLES -t nat -A PREROUTING -i $EXTERNAL_IF -p tcp --dport 6022 -j DNAT --to-destination 192.168.1.11:22
# Pour empécher le spoofing
# Pris sur lealinux.org
# no spoofing
for i in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $i
done
# Restriction des packets icpm
# A voir et a améliorer, peut-etre a restreindre au ping seulement
# icmp / ping (hum...)
$IPTABLES -A OUTPUT -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -m limit --limit 10/min -j ACCEPT
$IPTABLES -A INPUT -p icmp -m state --state NEW -m limit --limit 10/min -j ACCEPT
# Tous les autres paquets ne matchant aucune des regles sont loggés et droppés
# log dropped packets
$IPTABLES -A INPUT -i $EXTERNAL_IF -p tcp -j LOG_DROP
$IPTABLES -A INPUT -i $EXTERNAL_IF -p udp -j LOG_DROP
# Masquerade des ip du reseau local et activation du routage
# Permet entre autre le partage de connection
# masquerade of the lan
$IPTABLES -A POSTROUTING -t nat -o $EXTERNAL_IF -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "."
}
stop() {
echo "Stopping Netfilter/Iptables"
# Tout est accepté comme politique par default sur la chaine filter
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
# Tout est accepté comme politique par default sur la chaine nat
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
# Toutes les regles sont vidées
# Tables filter et nat
$IPTABLES -F
$IPTABLES -t nat -F
# Toutes les chaines perso sont detruites
# Tables filter et nat
$IPTABLES -X
$IPTABLES -t nat -X
# Le routage est desactivé
echo 0 > /proc/sys/net/ipv4/ip_forward
echo "."
}
#
# End of functions definitions
#
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
# Le parametre -L liste toutes les chaine en cours
# Tables filter et nat
$IPTABLES -L
$IPTABLES -t nat -L
;;
*)
echo "Usage: firewall {start|stop|restart|status}"
esac
exit
// ---- end du script ----