Iptables et proxy

bonjour,

je suis face depuis quelques temps a un probleme en rapport a squid. Je vais essayer de résumer :

  1. J’ai installé le trio clamav, squid et dansguardian sur mon serveur. Cela fonctionne parfaitement.
  2. En parralleleet independamment, j’ai mis en place des iptables (sur la même machine).Ce script fonctionne parfaitement.
  3. Mais lorsque je fais cohabiter les 2 -> le proxy bloque. J’en ait donc deduit que j’ai un problème d’iptables.

J’ai donc tout ouvert sur wlan0 (interface côte internet) :

- iptables -A INPUT -i wlan0 -j ACCEPT - iptables -A OUTPUT -o wlan0 -j ACCEPT
et ca fonctionne :slightly_smiling: .

Mais ce n’est pas protege, j’ai donc essaye de laisser passer seuleument les 3 ports concernes (squid, dansguardian et http):

[code] - iptables -A INPUT -p tcp --dport 80 -i wlan0 -j ACCEPT
- iptables -A OUTPUT -p tcp --sport 80 -o wlan0 -j ACCEPT

    - iptables -A INPUT -p tcp --dport 8080 -i wlan0 -j ACCEPT
    - iptables -A OUTPUT -p tcp --sport 8080 -o wlan0 -j ACCEPT

    - iptables -A INPUT -p tcp --dport 3128 -i wlan0 -j ACCEPT
    - iptables -A OUTPUT -p tcp --sport 3128 -o wlan0 -j ACCEPT[/code]

Mais ca ne marche pas. Aurais je oublié quelques chose ?

Merci
Ced

hello,

Tes démons tournent-ils sur l’interface wlan0 ? ils ne tournent pas sur ethX ? aussi as tu activé des règles pour la loopback, les modules iptables qui vont bien “ip_conntrack” par exemple ?

merci de ta reponse stonfi,

Je suppose que les demons squid et dansguardian tournent bien sur wlan0, puisque cela fonctionne parfaitement sans les iptables ou en ajoutant les deux règles cités précédemment. Apres, je n’ai rien vu de bizaree dans les fichiers de conf, mise a part la declaration du réseau qui doit avoir acces au proxy.

Pour les regles lo, j’ai ceci :

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

Voila,

Merci

ced

hello,

Essaies ça :

[code]
#!/bin/sh
IPT=/sbin/iptabes
modprobe ip_conntrack

#INPUT
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT
for DNS in $(grep ^n /etc/resolv.conf | awk ‘{print $2}’);
do
$IPT -A INPUT -i wlan0 -s $DNS -p udp --sport 53 -j ACCEPT
done
$IPT -A INPUT -i wlan0 -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -i wlan0 -p udp --dport 80 -j ACCEPT
$IPT -A INPUT -i wlan0 -p tcp --dport 8080 -j ACCEPT
$IPT -A INPUT -i wlan0 -p udp --dport 8080 -j ACCEPT
$IPT -A INPUT -i wlan0 -p tcp --dport 3128 -j ACCEPT
$IPT -A INPUT -i wlan0 -p udp --dport 3128 -j ACCEPT

OUTPUT

$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -o wlan0 -p tcp -dport 80 -j ACCEPT
$IPT -A OUTPUT -o wlan0 -p udp -dport 80 -j ACCEPT
$IPT -A OUTPUT -o wlan0 -p tcp -dport 8080 -j ACCEPT
$IPT -A OUTPUT -o wlan0 -p udp -dport 8080 -j ACCEPT
$IPT -A OUTPUT -o wlan0 -p tcp -dport 3128 -j ACCEPT
$IPT -A OUTPUT -o wlan0 -p udp -dport 3128 -j ACCEPT
for DNS in $(grep ^n /etc/resolv.conf | awk ‘{print $2}’);
do
$IPT -A OUTPUT -o wlan0 -d $DNS -p udp --dport 53 -j ACCEPT
done[/code]

Merci,

j’ai complété mon script avec le tiens. J’ai essaye d’ouvrir en udp, mais c’est pareil.

Par contre, penses tu que mes regles DNS y soit pr quelques chose ?

iptables -A OUTPUT -o wlan0 -p udp --dport 53 -m state --state ! INVALID -j ACCEPT iptables -A INPUT -i wlan0 -p udp --sport 53 -m state --state RELATED,ESTABLISHED -j ACCEPT

Pour le reste, ton script etait similaire au miens.
Merci.
ced

D’ailleurs, le voici :

####################################################################################################
#################################### MISE A ZERO DES TABLES ########################################
####################################################################################################

#******************
#   Mise a zero  **
#******************

        iptables -F
        iptables -X
        iptables -Z
        iptables -t nat -F
        iptables -t nat -X
        iptables -t nat -Z
        echo - Vidage : [OK]

#**********************
# Regles par default **
#**********************

        iptables -P INPUT DROP
        iptables -P OUTPUT DROP
        iptables -P FORWARD DROP
        echo - DROP IOF : [OK]

#**************
# Regles Nat **
#**************

        iptables -t nat -F
        iptables -t nat -X

        iptables -t nat -P PREROUTING ACCEPT
        iptables -t nat -P POSTROUTING ACCEPT
        iptables -t nat -P OUTPUT ACCEPT

        echo - Accept Nat : [OK]


####################################################################################################
#################################### REGLE LOCALHOST l0 ############################################
####################################################################################################

#**********************
# Regles par default **
#**********************

        iptables -A INPUT -i lo -j ACCEPT
        iptables -A OUTPUT -o lo -j ACCEPT
        echo - Accept lo : [OK]

##############################################################################################################
####################################### REGLE DES CLIENTS LAN eth0 ###########################################
####   Rezo 192.169.0.0 Netmask 255.255.255.128 Adr 192.169.0.1 / 192.169.0.126 Broadcast 192.169.0.127   ####
#### Rezo 192.169.0.192 Netmask 255.255.255.192 Adr 192.169.0.193 / 192.169.0.254 Broadcast 192.169.0.255 ####
##############################################################################################################

#       iptables -t nat -A PREROUTING -s 192.169.0.0/255.255.255.128 -p tcp --dport 80 -j REDIRECT --to-port 8080

#**********************
# Regles par default **
#**********************

        iptables -A INPUT -s 192.168.0.0/255.255.255.128 -j ACCEPT
        iptables -A OUTPUT -s 192.168.0.0/255.255.255.128 -j ACCEPT
        iptables -A FORWARD -s 192.168.0.0/255.255.255.128 -j ACCEPT

        iptables -A INPUT -s 192.168.0.192/255.255.255.192 -j ACCEPT
        iptables -A OUTPUT -s 192.168.0.192/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -s 192.168.0.192/255.255.255.192 -j ACCEPT

        echo - Accept eth0 : [OK]

#***********************
# Forward 80 Interdit **
#***********************


#        iptables -A INPUT -i wlan0 -j ACCEPT
#        iptables -A OUTPUT -o wlan0 -j ACCEPT
#
#        iptables -A FORWARD -p tcp --sport 80 -s 192.168.0.0/255.255.255.128 -j DROP
#        iptables -A FORWARD -p tcp --dport 80 -s 192.168.0.0/255.255.255.128 -j DROP
#
#        iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#        iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
#
#        iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
#        iptables -A OUTPUT -p tcp --sport 8080 -j ACCEPT
#
#        iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
#        iptables -A OUTPUT -p tcp --sport 3128 -j ACCEPT

#        iptables -A INPUT -p udp --dport 80 -j ACCEPT
#        iptables -A OUTPUT -p udp --sport 80 -j ACCEPT
#
#        iptables -A INPUT -p udp --dport 8080 -j ACCEPT
#        iptables -A OUTPUT -p udp --sport 8080 -j ACCEPT
#
#        iptables -A INPUT -p udp --dport 3128 -j ACCEPT
#        iptables -A OUTPUT -p udp --sport 3128 -j ACCEPT
#
#       iptables -A INPUT -i br0 -p tcp -m tcp --dport 8080 --syn -j ACCEPT
#
#       iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 8080
#
#       iptables -t nat -A PREROUTING -i br0 -p tcp --dport 53 -j REDIRECT --to-port 8080


#**************
# Regles Nat **
#**************

        iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.128 -o wlan0 -j MASQUERADE
        iptables -t nat -A POSTROUTING -s 192.168.0.192/255.255.255.192 -o wlan0 -j MASQUERADE

        iptables -A FORWARD -i br0 -o wlan0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A FORWARD -i wlan0 -o br0 -m state --state ESTABLISHED,RELATED -j ACCEPT

        echo - Accept Nat eth0 :         [OK]

############################################################################################################
#################################### REGLE DES CLIENTS LAN tap0 ############################################
### Rezo 192.169.0.128 Netmask 255.255.255.192 Adr 192.169.0.129 / 192.169.0.190 Broadcast 192.169.0.192 ###
############################################################################################################

#*****************
# Regles telnet **
#*****************

        iptables -A FORWARD -p tcp --sport 23 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -p tcp --dport 23 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        echo - Accept telnet for tap0 : [OK]

#****************************
# Regles bureau a distance **
#****************************

        iptables -A FORWARD -p tcp --sport 3389 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -p tcp --dport 3389 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        echo - Accept telnet for tap0 : [OK]

#**************
# Regles ssh **
#**************

        iptables -A INPUT -p tcp --sport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -p tcp --sport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT

        iptables -A INPUT -p tcp --dport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A OUTPUT -p tcp --dport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -p tcp --dport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT

        echo - Accept ssh for tap0 : [OK]

#***************
# Regles ftp **
#***************

        iptables -A FORWARD -p tcp --dport 20 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -p tcp --sport 20 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A INPUT -p tcp --dport 20 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport 20 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        echo - Accept ftp for tap0 : [OK]

        iptables -A FORWARD -p tcp --dport 21 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -p tcp --sport 21 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A INPUT -p tcp --dport 21 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport 21 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        echo - Accept ftp_data for tap0 : [OK]

        iptables -A FORWARD -p tcp --sport 1024:65535 --dport 1024:65535 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -p tcp --sport 1024:65535 --dport 1024:65535  -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A INPUT -p tcp --sport 1024:65535 --dport 1024:65535 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 1024:65535  -s 192.168.0.128/255.255.255.192 -j ACCEPT

#****************
# Regles samba **
#****************

        iptables -A INPUT -p TCP --dport 135 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A INPUT -p UDP --dport 135 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -p TCP --dport 135 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -p UDP --dport 135 -s 192.168.0.128/255.255.255.192 -j ACCEPT

        iptables -A INPUT -p TCP --dport 137 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A INPUT -p UDP --dport 137 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -p TCP --dport 137 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -p UDP --dport 137 -s 192.168.0.128/255.255.255.192 -j ACCEPT

        iptables -A INPUT -p UDP --dport 138 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -p UDP --dport 138 -s 192.168.0.128/255.255.255.192 -j ACCEPT

        iptables -A INPUT -p TCP --dport 139 -s 192.168.0.128/255.255.255.192 -j ACCEPT
        iptables -A FORWARD -p TCP --dport 139 -s 192.168.0.128/255.255.255.192 -j ACCEPT

        echo - Accept samba for tap0 : [OK]

############################################################################################################
#################################### REGLE DES CLIENTS wlan0 ###############################################
############################################################################################################

#**************
# Regles ssh **
#**************

        iptables -A INPUT -p tcp --dport ssh -i wlan0 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport ssh -o wlan0 -j ACCEPT
        echo - Accept ssh : [OK]

#****************
# Regles https **
#****************

        iptables -A INPUT -p tcp --dport https -i wlan0 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport https -o wlan0 -j ACCEPT
        echo - Accept https : [OK]

#***************
#  DNS Local  **
#***************

        iptables -A OUTPUT -o wlan0 -p udp --dport 53 -m state --state ! INVALID  -j ACCEPT
        iptables -A INPUT -i wlan0 -p udp --sport 53 -m state --state RELATED,ESTABLISHED -j ACCEPT
        echo - Accept dns : [OK]

#***************
# Regles ftp **
#***************

        iptables -A INPUT -p tcp --dport 20 -i wlan0 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport 20 -o wlan0 -j ACCEPT
        echo - Accept ftp for wlan0 : [OK]

        iptables -A INPUT -p tcp --dport 21 -i wlan0 -j ACCEPT
        iptables -A OUTPUT -p tcp --sport 21 -o wlan0 -j ACCEPT
        echo - Accept ftp_data for wlan0 : [OK]

        iptables -A INPUT -i wlan0 -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
        iptables -A OUTPUT -o wlan0 -p tcp --sport 1024:65535 --dport 1024:65535  -j ACCEPT

####################################################################################################
#################################### REGLE DES PING & NMAP #########################################
####################################################################################################

#***************
# Regles icmp **
#***************

        iptables -A INPUT -p icmp -m state --state RELATED -j ACCEPT
        iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
        iptables -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
        iptables -A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
        iptables -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
        iptables -A INPUT -p icmp -m icmp --icmp-type 12 -j ACCEPT
        echo - Accept icmp : [OK]

#******************
#  AntiScanPort  **
#******************

        iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
        echo - Limit antiscanport : [OK]

#******************
#  AntiPingDead  **
#******************

        iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
        echo - Accept antipingdead : [OK]

hello,

Cela m’a l’air d’aplomb, sinon tu fais un dump du réseau pour ce qui circule et ce qui bloque.

ca yé, je pense avoir compris d’ou 'en vient (meme si je men doutais un petit peu).
Mon proxy lui meme n’arrive pas a acceder au net.
Mes logs de drop donnent :

Aug 22 18:26:03 luna kernel: [DIVERS REFUSE] : IN= OUT=wlan0 SRC=192.168.1.69 DST=83.243.20.80 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=4734 DF PROTO=TCP SPT=2512 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0 Aug 22 18:26:15 luna kernel: [DIVERS REFUSE] : IN= OUT=wlan0 SRC=192.168.1.69 DST=83.243.20.80 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=4735 DF PROTO=TCP SPT=2512 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0 Aug 22 18:26:22 luna kernel: [DIVERS REFUSE] : IN= OUT=wlan0 SRC=192.168.1.69 DST=217.12.3.11 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42024 DF PROTO=TCP SPT=3429 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0

Alors qu’elles regles mettrent pour qu’il y accede?
Pourquoi celle ci ne fonctionnent pas ?

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

Merci
ced

hello,

[quote]

- iptables -A INPUT -p tcp --dport 80 -i wlan0 -j ACCEPT - iptables -A OUTPUT -p tcp --sport 80 -o wlan0 -j ACCEPT[/quote]

Cette règle permet au firewall (à lui même) d’accéder au net par l’interface wlan0 et au net d’accéder au firewall sur le port 80,

Essaies cette règle :

iptables -A FORWARD -s 192.168.1.69/24 -p tcp --dport 80 -m state --state NEW,ESTABLISHED  -j ACCEPT 
iptables -A FORWARD -d 192.168.1.69/24 -p tcp --sport 80  -m state --state ESTABLISHED  -j ACCEPT

Proxy http squid transparent qui travaille sur le port 3128

Les règles ne sont pas compliquées, il suffit de comprendre ce qui se passe :p!

Toutes les requêtes http sont redirigées vers le port 3128 où squid est à l’écoute. La chaîne PREROUTING est atteinte avant les chaînes INPUT et OUTPUT, donc avant le filtrage des paquets.

iptables -t nat -A PREROUTING -i $LAN_IFACE -p tcp --dport 80 -j REDIRECT --to-port 3128

Ensuite, on travaille sur le filtrage des paquets :
Les connexions du réseau privé arrivent sur le proxy sur le port 3128, il faut donc les autorisées pour pouvoir les traiter avec squid.

iptables -A lan_in_new -p tcp --dport 3128 -j ACCEPT

Le proxy est situé sur le serveur et va donc faire transiter les connexions du réseau privé vers l’extérieur depuis l’interface internet.

iptables -A wan_out_new -p tcp --dport 80 -j ACCEPT

lan_in_new et wan_out_new étant des chaînes utilisateurs qui récupèrent les paquets d’état NEW respectivement pour la chaîne INPUT et OUTPUT. Il est donc nécessaire d’ajouter des règles pour autoriser le traffic pour l’état ESTABLISHED en plus.

merci stonfi pour ton aide,

J’ai essaye en comme tu me l’as dis, rien en faire, ni en tcp, ni en udp, ni en 3128 ou 8080 … j’y comprend plus rien.

J’ai essayé d’accepter tt le FORWARD, ca ne marche pas, donc ca viendrait bien de l’INPUT et OUTPUT.
une autre idee ?

mci
ced

Oui la mienne, le traffic du proxy ne passe pas par la chaîne FORWARD.

hello,

Peut être :

iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 8080

En admettant que squid ecoute sur le port 8080

donc g ouvert :

[code]    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

    iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 8080 -j ACCEPT

    iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 3128 -j ACCEPT

    iptables -A INPUT -p udp --dport 80 -j ACCEPT
    iptables -A OUTPUT -p udp --sport 80 -j ACCEPT

    iptables -A INPUT -p udp --dport 8080 -j ACCEPT
    iptables -A OUTPUT -p udp --sport 8080 -j ACCEPT

    iptables -A INPUT -p udp --dport 3128 -j ACCEPT
    iptables -A OUTPUT -p udp --sport 3128 -j ACCEPT

    iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 8080[/code]

lorsque je fais un lynx google.fr sur le proxy, j’obtiens une erreur 400. Les logs de squid me disent : “4 192.168.1.69 TCP_DENIED/400 1773 GET error:invalid-request - NONE/- text/html”

cote client :

- si je laisse la config du proxy dans le navigateur, j'obtiens : 

1187806713.850 14 127.0.0.1 TCP_MISS/400 2387 GET http://hardware.fr/ - DIRECT/83.243.20.80 text/html 1187806870.704 16 127.0.0.1 TCP_NEGATIVE_HIT/400 2396 GET http://hardware.fr/ - NONE/- text/html

- si je supprime la configuration du navigateur (acces direct au net), ce fonctionnera, mais ca ne passera pas par squid (normal puisque il y a les regles FORWARD).

Pour eviter ca, j’ai ajoute :

iptables -A FORWARD -p tcp --sport 80 -s 192.169.0.0/255.255.255.0 -j DROP iptables -A FORWARD -p tcp --dport 80 -s 192.169.0.0/255.255.255.0 -j DROP
mais ca fait pareil.

Et en interdisant tous les FORWARD, la, ca ne marche plus.

Je pensais avoir compris un peu les iptables, mais je m’apercoit ke cette techno est vraiment tres (voire trop) etendu.

Mci
ced

J’ai sûrement dû mal m’exprimer, car je ne comprends pas ce que vous essayé de faire. Je vous ai tout expliqué dans mon premier post.

Vous travaillez sur le port 3128 et 8080, il faudrait savoir sur quel port squid écoute et si vous travailler en mode transparent pour appliquer une redirection via iptables.

Il n’y pas besoin de mettre une usine à gaz en place pour un proxy. Allez voir dans la section Truc et Astuces le tutorial si vous ne comprenez pas ce que vous ecrivez.

oups, alors la je suis desole, mais j’ai l’impression que les iptables me montent a la tête … lol
Je dis ca car je n’avais pas vu vos post cher thialme, j’en suis desole, je vais teste ca desuite.
Je travaille effectivement sur le 3128 et le 8080

Pardon, la j’ai vraiment pas compris pourquoi vous me dites ca !!! :open_mouth:

pour supprimer les chaînes utilisateurs, mais je n'en ai vu aucune

[code]
iptables -A INPUT -s 192.168.0.0/255.255.255.128 -j ACCEPT
iptables -A OUTPUT -s 192.168.0.0/255.255.255.128 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/255.255.255.128 -j ACCEPT

iptables -A INPUT -s 192.168.0.192/255.255.255.192 -j ACCEPT
iptables -A OUTPUT -s 192.168.0.192/255.255.255.192 -j ACCEPT
iptables -A FORWARD -s 192.168.0.192/255.255.255.192 -j ACCEPT
[/code]

Une adresse ip n'appartient pas à une interface, donc il est préférable de faire le filtrage sur eth0 ...

[code]
iptables -A FORWARD -i br0 -o wlan0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i wlan0 -o br0 -m state --state ESTABLISHED,RELATED -j ACCEPT 
[/code]

Tu mentionnes les états ESTABLISHED et RELATED pour certaines interfaces, alors que ces états ne peuvent être obtenus qu'à la suite d'un état NEW.

Donc autant les autoriser pour toutes les interfaces, en plus cela allégera le code de ton script.

[code]
iptables -A INPUT -p tcp --sport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT
iptables -A FORWARD -p tcp --sport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT
iptables -A FORWARD -p tcp --dport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT 
[/code]

Pourrait être remplacé par :
[code]
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i tap0 -p tcp --syn -m conntrack --ctstate NEW --dport 22 -j ACCEPT          (serveur SSH local)
iptables -A OUTPUT -o tap0 -p tcp --syn -m conntrack --ctstate NEW --dport 22 -j ACCEPT         (serveur SSH distant)
iptables -A FORWARD -p tcp --syn --dport 22 -m conntrack --ctstate NEW -j ACCEPT
[/code]

Après tu peux enlever les états NEW et --syn si tu t'assures que les paquets arrivant jusque là ne sont pas des scans.

[code]
iptables -A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
[/code]
C'est utilisé pour couper les connexions en ralentissant le traffic (source quench)

[code]
iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
[/code]
Si tu autorises les connexions de types ESTABLISHED, pas besoin de le préciser car le echo-reply est dans cet état là.

J'ai pas vu de règles pour ce qui est de la chaîne FORWARD et OUTPUT pour le type icmp, mais j'ai dû les louper.

[code]
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT 
[/code]

Il est intéressant de bloquer les scans à l'origine en plus, paquets INVALID, NEW not SYN paquets, SYN flood. De plus les scanners s'adaptent à la limitation engendrée par les firewalls

[code]
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
[/code]

J'aurais plutôt limité la taille des paquets echo-request avec une limitation comme toi sur le débit.

pour supprimer les chaînes utilisateurs, mais je n’en ai vu aucune

iptables -A INPUT -s 192.168.0.0/255.255.255.128 -j ACCEPT
iptables -A OUTPUT -s 192.168.0.0/255.255.255.128 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/255.255.255.128 -j ACCEPT

iptables -A INPUT -s 192.168.0.192/255.255.255.192 -j ACCEPT
iptables -A OUTPUT -s 192.168.0.192/255.255.255.192 -j ACCEPT
iptables -A FORWARD -s 192.168.0.192/255.255.255.192 -j ACCEPT

Une adresse ip n’appartient pas à une interface, donc il est préférable de faire le filtrage sur eth0 …

iptables -A FORWARD -i br0 -o wlan0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i wlan0 -o br0 -m state --state ESTABLISHED,RELATED -j ACCEPT 

Tu mentionnes les états ESTABLISHED et RELATED pour certaines interfaces, alors que ces états ne peuvent être obtenus qu’à la suite d’un état NEW.

Donc autant les autoriser pour toutes les interfaces, en plus cela allégera le code de ton script.

iptables -A INPUT -p tcp --sport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT
iptables -A FORWARD -p tcp --sport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT
iptables -A FORWARD -p tcp --dport 22 -s 192.168.0.128/255.255.255.192 -j ACCEPT 

Pourrait être remplacé par :

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i tap0 -p tcp --syn -m conntrack --ctstate NEW --dport 22 -j ACCEPT          (serveur SSH local)
iptables -A OUTPUT -o tap0 -p tcp --syn -m conntrack --ctstate NEW --dport 22 -j ACCEPT         (serveur SSH distant)
iptables -A FORWARD -p tcp --syn --dport 22 -m conntrack --ctstate NEW -j ACCEPT

Après tu peux enlever les états NEW et --syn si tu t’assures que les paquets arrivant jusque là ne sont pas des scans.

iptables -A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT

C’est utilisé pour couper les connexions en ralentissant le traffic (source quench)

iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT

Si tu autorises les connexions de types ESTABLISHED, pas besoin de le préciser car le echo-reply est dans cet état là.

J’ai pas vu de règles pour ce qui est de la chaîne FORWARD et OUTPUT pour le type icmp, mais j’ai dû les louper.

iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT 

Il est intéressant de bloquer les scans à l’origine en plus, paquets INVALID, NEW not SYN paquets, SYN flood. De plus les scanners s’adaptent à la limitation engendrée par les firewalls

iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

J’aurais plutôt limité la taille des paquets echo-request avec une limitation comme toi sur le débit.

apres une petite pause, j’ai mieux relu votre post thialme. Je suis entierement d’accord avec votre 1er post, ca, je l’avais compris.
Pour ma part, ce n’est pas 3128 mais 8080, puisque il y a un filtrage de dansgardian auparavant :

Donc voila ce que j’ai fais :

1 - dans squid.conf, j’ai ajouté la ligne http_port 3128 transparent
2 - ajout de la regle de redirection (que je restreindrais plus tard) :

iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 8080

3 - Ajout des regles de filtrage (je sais, pas besoins de toutes, mais idem que precedemment) :

[code] iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

    iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 8080 -j ACCEPT

   iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 3128 -j ACCEPTT[/code]

4 - [quote]Il est donc nécessaire d’ajouter des règles pour autoriser le traffic pour l’état ESTABLISHED en plus :[/quote]

Je comprend donc qu’il faut ajouter :

[code]
iptables -A INPUT -p tcp --dport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

    iptables -A INPUT -p tcp --dport 8080 -m state --state ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 8080 -m state --state ESTABLISHED -j ACCEPT

   iptables -A INPUT -p tcp --dport 3128 -m state --state ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT[/code]

et la, ca ne marche toujours pas. Je ne suis pas sur de mon point 4, pourrais tu un peu plus m’eclairer thialme ???

Merci
Ced

http_port mon_ip_coté_lan:3128 transparent c’est plus restrictif

J’ai squidGuard d’installé en supplément de squid pour gérer mes autorisations et il me semble que cela fonctionne pareil que dansguardian. Je redirige le port 80 vers le port 3128 où squid est à l’écoute. SquidGuard arrive par dessus pour faire un peu de filtrage mais je ne vois pas pourquoi on devrait faire transiter cela sur le port 8080 avant. Comment les paquets sont-ils redirigés vers squid sur le port 3128 ?
Comment veux tu restreindre ta règle de redirection ?

Comment ton proxy fait pour aller sur le net, je ne vois pas d’autorisation pour accéder à un serveur web distant ? Toutes les règles mentionnées concernent des serveurs locaux.

Ajoute simplement :

iptables -A INPUT -m state --state RELATED, ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

pour prendre en compte tous les états RELATED et ESTABLISHED pour les chaînes INPUT et OUTPUT.

bonjour,

je viens de lire tes deux derniers posts thialme.
Pour le dernier, je te remercie de m’avoir refais mes scripts, mais je ne cherche pas non plus l’optimisation parfaite, je veux juste que ca marche, et ce que j’ai fais, je le comprend bien, donc je le changerais plus tard.

pour ce que tu m’as dit dans le premier post:

Je suis d’accord, mais mon lan et vpn sont liés par un pont, et j’ai partagé mon reseau a 3 partie. J’ai donc travaillé sur les masques, et apparemment, quand on filtre par interface, ca marche pas quand c’est un pont. Si tu as trouvé la solution, je te remercie de me la donner, car sur le net … ya rien !

Maintenant, pour ce qui est du deuxième post :

1- [quote]http_port mon_ip_coté_lan:3128 transparent c’est plus restrictif [/quote]

je connaisait pas cette syntaxe, je testerais plus tard

2- Dansguardian travaille sur le port 8080, qui verifie les trames (antivirus et autorisations) et les balance au port 3128 local (d’apres le fichier de conf). Donc que je redirige pe sur le 8080 ou le 3128, pour moi, c’est pareil (sauf que ca passe pas par dansguardian dans le 2ieme cas)

3- [quote]Comment ton proxy fait pour aller sur le net, je ne vois pas d’autorisation pour accéder à un serveur web distant ?[/quote]

C’est justement ce que l’on essaye de faire depuis hier avec mon cher ami stonfi, et on a bien compris que le probleme venait de la !

4 - j’ai bien essayé ceci, ms bon … ca marche pas.

Bref, pour resumer, nous en sommes enfin arrivé a la même conclusion, à savoir que mon proxy n’accede pas au net. Tout ce qui est en rapport aux redirection, fonctionnement et autres, ce n’est pas le probleme actuellement.
Alors, revenont au point de depart comment faire pour qu’il y accede en laissant mes chaines INPUT et OUTPUT en DROP par default ???

Voila, merci
Ced