Forum Linux.debian/ubuntu Proxy transparent squid3

Posté par  . Licence CC By‑SA.
Étiquettes :
0
12
fév.
2015

Bonsoir à tous,

Après de longues heures de recherches et de tests en tous genres, je me décide à venir vers vous pour tenter de solutionner mon problème.
BOX 192.168.1.1

Linux Proxy 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u1 x86_64 GNU/Linux
PROXY/FIREWALL
eth0 192.168.1.101/24 GW 192.168.1.1
eth1 172.16.1.254/24

Linux Mint 17 Qiana 3.13.0-24-generic
MINT
eth0 172.16.1.1/24 GW 172.16.1.254 DNS 192.168.1.1

Après installation et configuration de Squid3 (configuration basique)
dont voici la config:

http_port 3128
visible_hostname Proxy.Test
access_log /var/log/squid3/access.log
shutdown_lifetime 2 seconds
ACL
acl LAN src 172.16.1.0/24
acl banned dstdom_regex "/etc/squid3/banned.txt"
acl domain dstdomain .thecure.com
FILTERS
http_access allow LAN !banned !domain

Je configure également mon browser Firefox pour qu'il passe par le proxy donc
172.16.1.254:3128
Firewall sur stop on autorise tout, activation du routage et du Nat
Tout fonctionne à merveille

Par contre pour que le proxy soit transparent, c'est une autre paire de manches
Je rajoute transparent ( j'ai lu que c'était intercept maintenant?) après le port dans le fichier de configuration de squid3 donc
http_port 3128 transparent
Y a-t-il autre chose à rajouter dans le fichier?
Pas de proxy pour Firefox
Activation du firewall
L'ensemble des règles ont été testées et fonctionnent.
Par contre la/les règle(s) au point 12 concernant le proxy ne marche(nt) pas :(
Pas de redirection me semble-t-il!

Merci d'avance pour le temps que vous passerez à m'aider.

Voici la config

!/bin/bash

start() {

        echo "- Initialisation du Firewall:"

        # Vidage des tables et des regles
        iptables -t filter -F
        iptables -t filter -X
        iptables -t nat -F
        iptables -t nat -X
        echo "- 01. Remise  des regles par defaut: [OK]"

        # Interdire toutes les connections entrantes et sortantes
        iptables -t filter -P INPUT DROP
        iptables -t filter -P OUTPUT DROP
        iptables -t filter -P FORWARD DROP
        echo "- 02. Interdire toutes les connections entrantes et sortantes: [OK]"

        # Autoriser loopback
        iptables -t filter -A OUTPUT -o lo -p all -j ACCEPT
        iptables -t filter -A INPUT -i lo -p all -j ACCEPT
        echo "- 03. Autoriser Loopback: [OK]"

        # On drop tout ce qui est invalide
        iptables -t filter -A INPUT -m state --state INVALID -j DROP
        iptables -t filter -A OUTPUT -m state --state INVALID -j DROP
        echo "- 04. Drop tout ce qui est invalide: [OK]"

        # Ne pas casser les connection etablies
        iptables -t filter -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
        iptables -t filter -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
        iptables -t filter -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
        echo "- 05. Ne pas casser les connection etablies: [OK]"

        # Autoriser SSH
        # Max 2 connections possibles
        iptables -t filter -A INPUT -p tcp --dport 22 -m connlimit --connlimit-mask 24 --connlimit-above 2 -j REJECT
        iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
        iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT
        echo "- 06. Autoriser SSH: [OK]"

        # Autoriser ICMP -Ping-
        iptables -t filter -A FORWARD -p icmp -j ACCEPT
        iptables -t filter -A INPUT -p icmp -j ACCEPT
        iptables -t filter -A OUTPUT -p icmp -j ACCEPT
        # Limite du ping
        iptables -t filter -A INPUT -p icmp -m limit --limit 2/s --limit-burst 10 -j ACCEPT
        iptables -t filter -A INPUT -p icmp -j REJECT
        echo "- 07. Autoriser Icmp: [OK]"

        # Autoriser Http et le Https
        iptables -t filter -A OUTPUT -p tcp --dport 80 -o eth0 -j ACCEPT
        iptables -t filter -A OUTPUT -p tcp --dport 443 -o eth0 -j ACCEPT
        iptables -t filter -A FORWARD -p tcp --dport 80 -s 172.16.1.1 -o eth0 -j ACCEPT
        iptables -t filter -A FORWARD -p tcp --dport 443 -s 172.16.1.1 -o eth0 -j ACCEPT
        iptables -t filter -A FORWARD -p tcp --dport 9091 -s 172.16.1.1 -o eth0 -j ACCEPT
        echo "- 08. Autoriser Http et Https: [OK]"

        # Autoriser DNS
        iptables -t filter -A OUTPUT -p udp --dport 53 -o eth0 -j ACCEPT
        iptables -t filter -A FORWARD -p udp --dport 53 -o eth0 -j ACCEPT
        echo "- 09. Autoriser DNS: [OK]"

        # Activation du routage
        echo 1 > /proc/sys/net/ipv4/ip_forward
        echo "- 10. Activation du routage: [OK]"

        # Activation du NAT
        #iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
        iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.1.101
        echo "- 11. Activation du NAT: [OK]"

        # Redirection vers le Proxy

        #iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
        iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
        #iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner --gid-owner proxy -j ACCEPT
        #iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 172.16.1.254:3128
        echo "- 12. Redirection vers le Proxy Squid3: [OK]"

        echo
}

stop() {

        echo "- Remise du firewall par defaut:"

        # Vidage des tables et des regles
        iptables -t filter -F
        iptables -t filter -X
        iptables -t nat -F
        iptables -t nat -X
        echo "- 01. Vidage des tables et des regles: [OK]"

        # Regles par defaut
        iptables -P INPUT ACCEPT
        iptables -P OUTPUT ACCEPT
        iptables -P FORWARD ACCEPT
        echo "- 02. Autoriser toutes les connections entrantes et sortantes: [OK]"

        # Activation du routage
        echo 1 > /proc/sys/net/ipv4/ip_forward
        echo "- 03. Activation du routage: [OK]"

        # Activation du NAT
        #iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
        iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.1.101
        echo "- 04. Activation du NAT: [OK]"
        echo
}

restart() {

        echo "- Redemarrage du firewall:"
        echo
        stop && sleep 2 && start
        echo
        echo "- Arret et redemarrage du firewall: [OK]"
        echo
}

status() {

        echo "- Liste des regles"
        iptables -L -v
        echo
}

usage() {

        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
}

case "$1" in
        start)
        start
        ;;
        stop)
        stop
        ;;
        restart)
        restart
        ;;
        status)
        status
        ;;
        *)
        usage
        ;;
esac

exit 0
  • # lu vite fait

    Posté par  . Évalué à 2.

    j'ai lu vite fait,

    ton proxy fonctionne, puisque quand tu le met specifiquement là ou il faut dans la config du navigateur cela fonctionne.

    quand il doit etre transparent, il faut que tu renvoie le flux port 80, sur la carte reseau interne (eth1)
    vers le port 3128 du proxy

    apparemment dans le parefeu start il te manque cette regle
    il y a bien une ligne qui y ressemble mais elle est pour -i eth0
    c'est à dire que qui ressort du parefeu par la carte eth0
    et toi tu veux que ce soit transparent pour une machine sur le reseau 172.16.1.0/24

  • # Redirection

    Posté par  (site web personnel) . Évalué à 2.

    Tout le monde sauf le proxy transparent, sinon ça boucle…

    Système - Réseau - Sécurité Open Source

  • # Suite Proxy transparent

    Posté par  . Évalué à 1.

    J'ai trouvé une solution à mon problème

    Voici ce que j'ai modifié dans la config du firewall

    Proxy Squid3
    # "Acceptation en input du port 3128"
    iptables -t filter -A INPUT -p tcp --dport 3128 -i eth1 -j ACCEPT
    # "Redirection du port 80 vers 3128"
    iptables -t nat -A PREROUTING -p tcp --dport 80 -s 172.16.1.1 -j DNAT --to 172.16.1.254:3128

    et tout fonctionne!
    Merci à vous.

    esox

    • [^] # Re: Suite Proxy transparent

      Posté par  . Évalué à 2.

      simplification et passage à l'echelle :

      dans ta ligne PREROUTING, remplace -s 172.16.1.1par -i eth1
      et ca deviendra alors transparent pour tous les postes du reseau 172.16.1.0/24

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.