Pages : 1
#1 Le 20/04/2006, à 13:19
- Sredlight
iptables pour serveurs http+mail
Bonjour à tous
Bon alors je vous explique mon problème:
J'ai une freebox en routeur dhcp qui forward les ports 80->80, 143->143, 25->25, 10000->22, 443->443 sur mon serveur (192.168.0.1) perso http/postfix/courier-imap
Donc ce que je veux c'est que tout le traffic entrant et sortant sur ces ports soit authorisé sur mon serveur. Les autres pc de mon réseau ont une autre ip et ne passent pas par le serveur donc pas de filtrage à ce niveau.
Internet<->Freebox<->switch<->MonServeur (192.168.0.1)
<->Mes autres pc (192.0.0.2)
Voici le script que j'essaie de faire marcher mais qui ne marche pas:
#!/bin/sh
# script /etc/firewall.sh
#########Début de l'initialisation#########
#Vidage des regles avant d'appliquer les nouvelles règles
#-F --flush : Permet de vider toutes les règles d'une chaîne.
iptables -F
#-X --delete-chain : Permet d'effacer une chaîne.
iptables -X
#Pas de spoofing
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $filtre
done
fi
# On va rajouter 2 nouvelles chaînes.
# Ceci permettra d'ajouter des nouvelles cibles qui
# auront la possibilité de loguer ce qui se passe.
# La on logue et on refuse le paquet,
# on rajoute un préfixe pour pouvoir
# s'y retrouver dans les logs
#iptables -N LOG_DROP
#iptables -A LOG_DROP -j LOG \
#--log-prefix '[IPTABLES DROP] : '
#iptables -A LOG_DROP -j DROP
# ici, on logue et on accepte le paquet,
# on rajoute un préfixe pour pouvoir
# s'y retrouver dans les logs
#iptables -N LOG_ACCEPT
#iptables -A LOG_ACCEPT -j LOG \
#--log-prefix '[IPTABLES ACCEPT] : '
#iptables -A LOG_ACCEPT -j ACCEPT
# On veut faire un firewall efficace,
# donc la politique a appliquer est de tout
# refuser par défaut et rajouter une a une
# les règles que l'on autorise.
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Pour éviter les problèmes, on va tout accepter sur
# la machine en local (interface lo).
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
####################FIN de l'initialisation#################################
####################Paramétrage des règles du firewall #####################
# On va quand même accepter les connexions ssh
#sur eth0/tcp entrantes et sortantes en NEW et ESTABLISHED
iptables -A INPUT -i eth0 --protocol tcp --source-port 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 --protocol tcp --source-port 22 -m state --state NEW,ESTABLISHED -j ACCEPT
#Pour accepter le traffic web (on veut surfer!)+les connexions NEW sur le serveur port 80
#Ici quelle sont les meilleures règles ? Les deux qui sont commentées ou celles qui sont décommentées ????
#iptables -A INPUT -i eth0 --protocol tcp --source-port 80 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -o eth0 --protocol tcp --destination-port 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p TCP --dport 80 -j ACCEPT
iptables -A OUTPUT -o eth0 -p TCP --sport 80 -j ACCEPT
#Pareil mais pour SSL du serveur
iptables -A INPUT -i eth0 --protocol tcp --source-port 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 --protocol tcp --destination-port 443 -m state --state NEW,ESTABLISHED -j ACCEPT
#Pareil mais pour le serveur mail : ports 143 et 25
iptables -A INPUT -i eth0 --protocol tcp --source-port 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 --protocol tcp --source-port 143 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 --protocol tcp --destination-port 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 --protocol tcp --destination-port 143 -m state --state NEW,ESTABLISHED -j ACCEPT
# Pour faire fun
echo "[Firewall loaded man]"
#######################################
Bref, en chargeant le firewall, l'acces à mon serveur web(80) est impossible ni même à internet... (je n'ai pas testé les autres trucs) mais déjà ca commence mal...
Un tit coup de main ? Merci bcp ...
Dernière modification par Sredlight (Le 20/04/2006, à 13:27)
Hors ligne
#2 Le 20/04/2006, à 14:08
- Sredlight
Re : iptables pour serveurs http+mail
Voici le résultat d'un iptables -L -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 ACCEPT tcp -- eth0 any anywhere anywhere tcp spt:ssh state NEW,ESTABLISHED
0 0 ACCEPT tcp -- eth0 any anywhere anywhere tcp dpt:www
0 0 ACCEPT tcp -- eth0 any anywhere anywhere tcp spt:https state NEW,ESTABLISHED
0 0 ACCEPT tcp -- eth0 any anywhere anywhere tcp spt:smtp state NEW,ESTABLISHED
0 0 ACCEPT tcp -- eth0 any anywhere anywhere tcp spt:imap2 state NEW,ESTABLISHED
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- any lo anywhere anywhere
0 0 ACCEPT tcp -- any eth0 anywhere anywhere tcp spt:ssh state NEW,ESTABLISHED
0 0 ACCEPT tcp -- any eth0 anywhere anywhere tcp spt:www
0 0 ACCEPT tcp -- any eth0 anywhere anywhere tcp dpt:https state NEW,ESTABLISHED
0 0 ACCEPT tcp -- any eth0 anywhere anywhere tcp dpt:smtp state NEW,ESTABLISHED
0 0 ACCEPT tcp -- any eth0 anywhere anywhere tcp dpt:imap2 state NEW,ESTABLISHED
Hors ligne
#3 Le 20/04/2006, à 15:06
- Sredlight
Re : iptables pour serveurs http+mail
ok bon il faut oublier ce que je viens d'écrire c'est complétement à coté de la plaque !!! ca risquait pas de marcher si je bloque les output !
Bon c'était un premier test
...
Je continue de cogiter
Dernière modification par Sredlight (Le 20/04/2006, à 17:20)
Hors ligne
#4 Le 20/04/2006, à 16:48
- Sredlight
Re : iptables pour serveurs http+mail
Bon j'ai trouvé !!! et ca marche impeccable !
Pardonnez-moi pour mon délire de tout à l'heure: je parlais tout seul !
#!/bin/sh
###########Début de l'initialisation################
#Vidage des regles avant d'appliquer les nouvelles
#-F --flush : Permet de vider toutes les règles d'une chaîne.
iptables -F
#-X --delete-chain : Permet d'effacer une chaîne.
iptables -X
#Pas de spoofing
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $filtre
done
fi
# On veut faire un firewall efficace,
# donc la politique a appliquer est de tout
# refuser par défaut et rajouter une a une
# les règles que l'on autorise.
# -P=la cible par défaut
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#output->Accepte tout le traffic sortant
# Pour éviter les problèmes, on va tout accepter sur
# la machine en local (interface lo).
iptables -A INPUT -i lo -j ACCEPT
########FIN de l'initialisation###########
#####Paramétrage des règles du firewall ##########
#Accepte les requetes rentrantes comme réponses à des requetes sortantes
#C'est ca qui déconnait !!!
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
#Redirection xxxxx->22 vu que mon serveur est en DMZ pour éviter les attaques ssh
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport xxxxx -j REDIRECT --to-ports 22
#Définition des règles d'entrées sur les ports systèmes
iptables -A INPUT -i eth0 -p tcp --destination-port 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --destination-port 25 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --destination-port 443 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --destination-port 22 -j ACCEPT
# Pour faire fun
echo "[Firewall loaded man]"
Et voilà ! Mon serveur fonctionne http/ssh/ssl/mail de nouveau !
Vous pouvez supprimer mon post si vous voulez ... ou je sais pas ... ca pourra peut-être servir à quelqu'un !
Moralité: iptables c'est bien mais c'est chaud !
Dernière modification par Sredlight (Le 20/04/2006, à 18:33)
Hors ligne
Pages : 1