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 27/12/2007, à 23:28

adrien.lm

serveur web (apache2) et proxy transparent (squid+iptables)

salut,
je voudrai mettre sur une machine un proxy transparent ainsi qu'un serveur web; es-ce possible ? comment dois-je configurer iptables? pour l'instant ma config iptables ressemble à  ceci

EDIT : J'ai poster dans la section internet et réseau aussi mais personne ne veut me répondre !!! o๠dois-je poster car mon sujet chevauche 2 sections !!

#!/bin/sh

# script /etc/firewall.sh


# Activation du forwarding
# C'est pas pour faire joli, on aura des règles
# de forward et il faut bien que les paquets
# traversent la machine, donc on met ce fichier à  1

echo 1 > /proc/sys/net/ipv4/ip_forward

# Alors la, on va appliquer quelques astuces
# pour empêcher les attaques de type spoofing
# et bloquer les réponses ICMP du firewall,
# comme ça c'est très propre. Attention, le
# fait de bloquer le trafic ICMP sur
# le firewall bloque les pings.

# Je veux 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 icmp

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Pour faire bien, on va vider toutes les règles
# avant d'appliquer les nouvelles règles de firewall

iptables -F
iptables -X

# 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.
# Bien sur, on a RTFM un peu et on a vu que
# l'option -P permet de définir
# la cible par défaut

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).
# Je déconseille de retirer cette règle car
# ça pose pas mal de problèmes et ça peut
# faire perdre la main sur la machine

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Bon, la partie initialisation et préparation est
# terminée, passons aux choses sérieuses

# Comme on l'a dit dans la présentation de
# l'architecture réseau, le firewall fait
# également office de proxy grà¢ce par exemple
# à  un squid installé dessus. On va donc
# accepter que le proxy ait une connexion
# internet directe. Tant qu'à  faire, on va
# mettre des états pour que ça soit bien sécuris?(chge ppp0 sur la connection internet)

iptables -A OUTPUT -o eth4 -m state \
--state NEW,ESTABLISHED -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth4 -m state \
--state ESTABLISHED -p tcp --sport 80 -j ACCEPT

# Maintenant, on va faire en sorte que le
# proxy soit totalement transparent pour le LAN
# bénéficiant de la connexion internet.
# L'astuce consiste a rediriger toutes les
# requêtes ayant un port de destination 80
# vers le port 3128 du proxy, ici c'est le
# firewall (qui est sur le firewall et qui
# a l'adresse IP 192.168.2.1 ).        et qui est en local donc normalement on peut faire 127.0.0.1 smile
# Une règle de NAT suffira largement pour faire ça.

iptables -t nat -A PREROUTING -i eth1 -p tcp \
--dport 80 -j DNAT --to-destination 192.168.1.24:3128

# accès ssh depuis le net et depuis le local

iptables -A INPUT -p tcp --dport 22 -i eth1 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -o eth1 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -i eth4 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -o eth4 -j ACCEPT

# idem pour l'accès au serveur web sur a machine ( proxy firewall , serveur vpn ...)

iptables -A INPUT -p tcp --dport 80 -i eth1 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -o eth1 -j ACCEPT

iptables -A INPUT -p tcp --dport 80 -i eth4 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -o eth4 -j ACCEPT

# Toutes les règles qui n'ont pas passé les
# règles du firewall seront refusées et loguées...
# facile :

iptables -A FORWARD -j LOG_DROP
iptables -A INPUT -j LOG_DROP
iptables -A OUTPUT -j LOG_DROP

faut-il que je modifie le serveur apache pour qu'il fonctionne sur un autre port ? et si oui es-ce qu'il va être facilement joignable par le net ensuite ?

MERCI
et joyeuse année

Dernière modification par adrien.lm (Le 28/12/2007, à 00:23)

Hors ligne

#2 Le 28/12/2007, à 00:17

adrien.lm

Re : serveur web (apache2) et proxy transparent (squid+iptables)

il me semble qu'il faudrait p-t vous faire un shéma de l'installation :

modem <==> serveur(web,proxy,vpn,...) <==> routeur <==> clients du réseau
                 eth4                                 eth1

Dernière modification par adrien.lm (Le 28/12/2007, à 00:18)

Hors ligne