Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/04/2006, à 13:19

Sredlight

iptables pour serveurs http+mail

Bonjour à tous smile

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... hmm

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 !!! lol ca risquait pas de marcher si je bloque les output !
Bon c'était un premier test hmm

...
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 ! hmm


#!/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