Bonjour à tous, je suis désolé de remettre ce sujet sur le tapis mais je n'arrive pas à trouver mon erreur dans le fichier que j'utilise pour configurer iptables en plus de squid pour un serveur sous ubuntu.
En effet, ce fichier fonctionnait très bien jusqu'à une mise à jour d'ubuntu lors de la sortie de la 9.04, et maintenant.... plus rien
, quelle que soit la version d'ubuntu. Je pense que j'ai modifié quelque chose ou oublié d'installer un module, mais quoi....?
Le problème est au niveau des forwards pour pop3 et smtp: rien ne passe...????
Et tant que j'y suis je n'arrive pas à faire passer le ftp, que ce soit avec squid ou avec iptables.
Merci d'avance à ceux qui auront le courage de se pencher sur mes problèmes: j'y ai passé plusieurs jours sans avancer du tout.
Je mets le fichier de config d'iptables , ainsi que le fichier conf de squid.
Iptables:
#!/bin/bash
# /8 /255.0.0.0
# /16 /255.255.0.0
# /24 /255.255.255.0
#
#
###################
LOCAL="eth0"
INTERNET="eth1"
PRIVATE="192.168.0.0/24"
SERVEUR="192.168.0.1"
# Fonction pour arrêter le firewall (on flush)
stop() {
#/etc/init.d/squid stop
echo -n "Flush des règles Iptables: "
# On remet la police par défaut à ACCEPT
#
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#
# On remet les polices par défaut pour la table NAT
#
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
#
# On vide (flush) toutes les règles existantes
#
iptables -F
iptables -t nat -F
#
# Et enfin, on efface toutes les chaînes qui ne
# sont pas à defaut dans la table filter et nat
iptables -X
iptables -t nat -X
# Message de fin ok
echo -e "[ \E[$40;32m OK \E[$40;0m ]"
#echo -e "[\E[$40;33mfailed\E[$40;0m]"#failed
}
start(){
#/etc/init.d/squid stop
#/etc/init.d/squid start
echo -n "Chargement des règles Iptables: "
# Pour activer le forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
###################
# 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
###################
###################
# Pas de synflood
if [ -e /proc/sys/net/ipv4/tcp_syncookies ] ; then
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
fi
###################
modprobe ip_conntrack
modprobe iptable_nat
#modprobe iptable_filter
# Pour autoriser les connexions ftp :
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
# Activation du partage de connexion
echo "1" > /proc/sys/net/ipv4/ip_forward
# Remise à zero d'iptables:
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
###################
iptables -N LOG_DROP #on crée la chaine des logs
iptables -A LOG_DROP -j LOG --log-prefix ' DROPING PAQUET : '
iptables -A LOG_DROP -j DROP
###################
# Regles par defaut:
# on refuse les connexions entrantes
iptables -P INPUT DROP
# on refuse les connexions destinées à être forwardées
iptables -P FORWARD DROP
# les connexions sortantes sont refusées par défaut
iptables -P OUTPUT DROP
###################
# Translation d'adresse pour tout ce qui sort vers l'internet
iptables -A POSTROUTING -t nat -o $INTERNET -j MASQUERADE
#####################################################################
# Regles générale sur les differente interfaces
# On accepte tout ce qui entre et sort de l'interface de loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# On accepte les packets entrants relatifs à des connexions déjà établies sur l'interface connectée au net
iptables -A INPUT -i $INTERNET -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o $INTERNET -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# On accepte les packets entrants relatifs à des connexions déjà établies sur l'interface connectée au lan
iptables -A INPUT -i $LOCAL -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o $LOCAL -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
####################################################################
# Regles
# Partage de fichiers uniquement en local
iptables -A INPUT -i $LOCAL -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -i $LOCAL -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 445 -j ACCEPT
# on accepte l'envoie de mail sur le serveur a partir du reseau local
#iptables -A INPUT -i $LOCAL -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 25 -j ACCEPT
#on laisse passer les requetes dns
iptables -A INPUT -i $LOCAL -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i $LOCAL -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 53 -j ACCEPT
#on laisse passer le proxy
#iptables -A INPUT -i $LOCAL -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 8080 -j ACCEPT
# on autorise le trafique web de partout
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# ssh
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# Redirection du port 80 vers le port 8080 ( celui du poxy squid )
iptables -t nat -A PREROUTING -s $PRIVATE -p tcp -m tcp --dport 80 -j REDIRECT --to-port 8080
iptables -A INPUT -i $LOCAL -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 8080 -j ACCEPT
# les pings
iptables -A INPUT -p icmp -i eth0 -j ACCEPT
iptables -A OUTPUT -p icmp -o eth0 -j ACCEPT
############################################################
# Forwarding
# Les connections venant du lan destiné a etre forwardé sont accepté. !!Toutes!!
#iptables -A FORWARD -i $LOCAL -o $INTERNET -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $LOCAL -o $INTERNET -p tcp \
--dport 110 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $LOCAL -o $INTERNET -p tcp \
--dport 25 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $LOCAL -o $INTERNET -p tcp \
--dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $LOCAL -o $INTERNET -p tcp \
--dport 38216 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Seules les connexions déjà établies ou en relation avec des connexions déjà établies sont acceptées venant du Net vers le LAN
iptables -A FORWARD -i $INTERNET -o $LOCAL -m state --state ESTABLISHED,RELATED -j ACCEPT
# Permet à l'ensemble du LAN de dialoguer sur internet avec la même adresse IP
iptables -t nat -A POSTROUTING -s $PRIVATE -j MASQUERADE
# Ici on refuse les connexion entrantes et les paquets invalides
iptables -A INPUT -i $INTERNET -m state --state NEW,INVALID -j LOG_DROP
iptables -A OUTPUT -o $INTERNET -m state --state INVALID -j LOG_DROP
# Toutes les règles qui n'ont pas passé les règles du firewall seront refusées et loguées...
iptables -A FORWARD -j LOG_DROP
iptables -A INPUT -j LOG_DROP
iptables -A OUTPUT -j LOG_DROP
# Message de fin ok
echo -e "[ \E[$40;32m OK \E[$40;0m ]"
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
stop
start
;;
status)
/sbin/iptables -L
/sbin/iptables -t nat -L
;;
*)
echo -e "Usage: proxy {start|stop|reload|status}"
exit 1
;;
esac
exit 0
Squid:
http_port 192.168.0.1:8080
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 16 MB
maximum_object_size 15 MB
cache_dir ufs /var/spool/squid 200 16 256
emulate_httpd_log on
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
# on crée les groupes pour les interdictions
acl grands src 192.168.0.2 192.168.0.3
acl maison src 192.168.0.0/255.255.255.0
#Horaires de connection
acl tpsconnection time M 19:00-20:30 \
T 19:00-20:30 \
W 16:00-20:00 \
H 19:00-21:30 \
F 19:00-21:30 \
A 09:00-12:00 16:00-20:00 \
S 16:00-20:30
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 # https, snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 873 # rsync
acl Safe_ports port 1863 # msn
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow grands
http_access allow maison tpsconnection
# Ces deux lignes permettent d'intégrer le plugin SquidGuard
url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
url_rewrite_children 8
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
coredump_dir /var/spool/squid
dns_nameservers 212.27.53.252 212.27.54.252
error_directory /usr/share/squid/errors/French
visible_hostname serveur-maison