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 17/04/2006, à 14:28

Baptiste0

Un proxy transparent ? Comment ?

Salut,

J'ai installé un filtre de contrôle parental, avec Squid et Dansguardian. Je ne sais pas à quoi sert Squid (sur le port 3128) puisque de toute façon Dansguardian ne s'utilise que sur le port 8090 (chez moi).
Dansguardian est très efficace, pour peu de mettre un proxy dans Firefox : 127.0.0.1:8090
La protection devient alors illusoire puisqu'il suffit de recocher "connexion directe à Internet" ! J'aimerais donc que lorqu'il y a connexion directe à Internet, on utilise le proxy 127.0.0.1:8090.
J'ai essayé cette règle iptables : sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8090
...Qui ne marche évidemment pas, tout passe toujours par Internet.

J'aimerai connaître la procédure exacte pour pouvoir installer un tel paramétrage... et protéger les enfants smile
Quelle règle(s) iptables ? Comment faire en sorte qu'elle(s) s'applique(nt) automatiquement au démarrage ?

Merci
Baptiste.

#2 Le 18/04/2006, à 18:38

Baptiste0

Re : Un proxy transparent ? Comment ?

Je me permet d'insister un peu car c'est pour moi très important de réussir à mettre en place cette protection...

Un grand merci d'avance
Baptiste.

#3 Le 18/04/2006, à 19:19

YBM

Re : Un proxy transparent ? Comment ?

Les navigateurs tournent bien sur d'autres machines que celle où est installée le proxy ? (c'est ce que semble indiquer le "-i eth0")

Squid est capable de comprendre ce qui lui arrive quand des connexions http lui arrivent dans les gencives, peut être pas dansguardian. Je te conseille de chaîner squid avec dansguardian et de configurer squid comme indiqué ici : http://www.tldp.org/HOWTO/TransparentProxy.html
(testé sur une Breezy il y a peu. en suivant les parties 4 et 5, deux minutes chrono)

Hors ligne

#4 Le 18/04/2006, à 21:21

Baptiste0

Re : Un proxy transparent ? Comment ?

Pas du tout, le proxy Squid est sur la même machine que les navigateurs... le tuto tient toujours ?

#5 Le 18/04/2006, à 23:26

YBM

Re : Un proxy transparent ? Comment ?

oui mais il ne faut pas mettre "-i eth0 " sinon ça ne concerne que les paquets qui arrivent par cette interface...

et en local c'est par "lo" pas par "eth0"

ça devrait déjà te rapprocher de la solution, reste ensuite à voir si le chaînage par squid est obligatoire (à voir dans la doc de dansguardian s'il peut fonctionner tout seul comme proxy transparent)

Hors ligne

#6 Le 19/04/2006, à 00:15

Baptiste0

Re : Un proxy transparent ? Comment ?

YBM a écrit :

oui mais il ne faut pas mettre "-i eth0 " sinon ça ne concerne que les paquets qui arrivent par cette interface...

et en local c'est par "lo" pas par "eth0"

ça devrait déjà te rapprocher de la solution, reste ensuite à voir si le chaînage par squid est obligatoire (à voir dans la doc de dansguardian s'il peut fonctionner tout seul comme proxy transparent)

Ok, merci.
Le truc c'est que si je passe par Squid (port 3128), dansguardian ne s'applique plus hmm

je teste dès demain.

#7 Le 19/04/2006, à 00:39

YBM

Re : Un proxy transparent ? Comment ?

il faut alors configurer squid d'une part pour qu'il accepte le mode transparent (cf le tutorial) et secondo pour qu'il se chaîne avec dansguardian (mais AVANT regarde si dansguardian fonctionne en mode transparent si on lui demande gentiment et reroute vers son numéro de port à lui si c'est le cas)

(pour le chaînage incoditionnel sur un autre proxy c'est un truc du genre
cache_peer 127.0.0.1 parent  8090 0 proxy-only default no-query
dans squid.conf)

Dernière modification par YBM (Le 19/04/2006, à 00:42)

Hors ligne

#8 Le 19/04/2006, à 10:57

Baptiste0

Re : Un proxy transparent ? Comment ?

Je vais voir ça tout à l'heure.

Un énorme merci à toi,
Baptiste.

#9 Le 19/04/2006, à 19:52

jr95

Re : Un proxy transparent ? Comment ?

J'ai la même config sur mes PC.
Dansguardian a bien besoin d'un proxy transparent.
J'ai installé dansguardian, squid et oidentd (pour l'authentification).
Pour la configuration de squid en proxy transparent, je me suis inspiré d'un article de Lionel Tricon dans le Linux magazine n° 65 d'octobre 2004 (une copie de cet article est disponible sur le site de Lionel Tricon http://lionel.tricon.free.fr
Il décrit la config de squid ainsi que les règles netfilter à appliquer (avec la mise à dispo du script qui va bien)


Les modifs que j'ai faite dans ce script sont:
     - adaptation des variables IPT et OUT
     - mise en commentaire de la définition de la variable IN
     - modif/ajout des règles netfilter relatives au NAT:
          ${IPT} -t nat -A OUTPUT -p tcp --dport 80 -m owner --uid-owner proxy -j ACCEPT
          ${IPT} -t nat -A OUTPUT -p tcp --dport 3128 -m owner --uid-owner proxy -j ACCEPT
          ${IPT} -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 8090
Ces 3 dernières règles sont mises à la place de
          ${IPT} -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to-port 3128

Le script ainsi modifié est mis dans /etc/init.d/firewall_passerelle et des liens symboliques sont faits dessus pour /etc/rc0.d/K80firewall_passerelle, /etc/rc1.d/K80firewall_passerelle, /etc/rc2.d/S20firewall_passerelle, /etc/rc3.d/S20firewall_passerelle, /etc/rc4.d/S20firewall_passerelle, /etc/rc5.d/S20firewall_passerelle et /etc/rc6.d/K80firewall_passerelle


Pour la partie squid, j'ai modifié/ajouté les lignes suivantes (c'est plus ou moins ce qui est écrit dans l'article) :
        acl our_networks src 192.168.0.0/24
        http_access allow our_networks
        cache_effective_user proxy
        cache_effective_group proxy
        httpd_accel_host virtual
        httpd_accel_port 80
        httpd_accel_single_host off
        httpd_accel_with_proxy on
        httpd_accel_uses_host_header on

J'ai configuré dansguardian pour utiliser le port 8090 et utiliser l'authentification par IDENT (variable usernameidmethodident = on); cette authentification est faite par oidentd.
La seule modif que j'ai faite dans le configuration de oidentd est dans le fichier /etc/default/oidentd, où j'ai mis la variable OIDENT_BEHIND_PROXY=no

J'ai aussi défini des filtergroups supplémentaires ; un pour root (utilisé entre autres pour la vérif périodique des mises à jour d'ubuntu) et un par enfant.

Le groupe par défaut (n° 1) est configuré avec des droits minimaux.
Le browser et l'environnement de chaque utilisateur sont configurés pour utiliser le proxy localhost:8090
J'ai du faire cela car la redirection du port 80 vers le port 8090 de iptables fait perdre le propriétaire du port d'origine (je n'ai pas encore trouvé pourquoi et puis j'ai un peu abandonné les recherches).
Avec cette méthode, si un enfant modifie ses paramétrages proxy, il a un accès (encore plus ?) restreint à Internet.

Il a aussi fallu que je rajoute dans le fichier /etc/apt/apt.conf les lignes :
Acquire
{
  // HTTP method configuration
  http
  {
    Proxy "http://127.0.0.1:8086";
  };
};

J'espère que ces informations peuvent t'aider.

Jacques.

Dernière modification par jr95 (Le 19/04/2006, à 19:53)

Hors ligne

#10 Le 25/04/2006, à 16:09

Baptiste0

Re : Un proxy transparent ? Comment ?

YBM a écrit :

oui mais il ne faut pas mettre "-i eth0 " sinon ça ne concerne que les paquets qui arrivent par cette interface...

et en local c'est par "lo" pas par "eth0"

ça devrait déjà te rapprocher de la solution, reste ensuite à voir si le chaînage par squid est obligatoire (à voir dans la doc de dansguardian s'il peut fonctionner tout seul comme proxy transparent)

Désolé pour le gros retard.
Ben déjà c'est mal parti, en ayant tapé ça :
iptables -t nat -A PREROUTING -i lo -p tcp --dport 80 -j REDIRECT --to-port 3128
Les logs de Squid ne se remplissent pas (contrairement à quand je passe par le proxy localhost:3128), donc les requêtes sans proxy ne passent pas par Squid... et si j'ai bien pigé, là, en l'occurence, elles devraient...
:--(

Merci jr95, je vais aussi tester.

#11 Le 25/04/2006, à 16:35

Baptiste0

Re : Un proxy transparent ? Comment ?

Jacques... Merci big_smile:D !
Magnifique. Que dire... ça marche, ça marche, ça marche !!

Génial !

Un grand merci à YBM aussi, dont la solution devait être tout aussi bonne, mais on se refait pas, quand on a du mal avec l'anglais...

wink

#12 Le 25/04/2006, à 19:28

jr95

Re : Un proxy transparent ? Comment ?

Bonsoir,

"génial" est en bien grand mot wink car je viens de m'apercevoir d'un bug : rien n'empêche de modifier les browsers de manière à utiliser le port 3128 (celui de squid) au lieu du 8090. Dans ce cas, le contrôle parental n'est plus effectif sad.

J'ai résolu en rajoutant des règles netfilter.

Avant la redirection du port 80 vers le port 8090 dans le script firewall_passerelle, j'ai rajouté les 2 lignes suivantes  :

${IPT} -t nat -A OUTPUT -p tcp --dport 3128 -m owner --uid-owner dansguardian -j ACCEPT
${IPT} -t nat -A OUTPUT -p tcp --dport 3128 -m owner ! --uid-owner root -j DROP

La première accepte les paquets venant de l'utilisateur 'dansguardian', la seconde rejette les paquets ne venant pas de 'root' (afin que apt-get & Co fonctionnent).

J'ai aussi modifié le fichier /etc/apt/apt.conf pour utiliser le port 3128 et non pas le 8090, cela ne sert pas à grand chose de passer par dansguardian pour apt-get & Co.

Jacques

Hors ligne

#13 Le 25/04/2006, à 20:34

YBM

Re : Un proxy transparent ? Comment ?

bien vu
(je pense bien que la solution de jr95 est en fait la même que "la mienne" - celle du howto de squid en fait)

Hors ligne

#14 Le 29/04/2006, à 14:19

Baptiste0

Re : Un proxy transparent ? Comment ?

jr95 a écrit :

"génial" est en bien grand mot wink car je viens de m'apercevoir d'un bug : rien n'empêche de modifier les browsers de manière à utiliser le port 3128 (celui de squid) au lieu du 8090. Dans ce cas, le contrôle parental n'est plus effectif sad.

Les enfants sont curieux, mais de là à tomber sur 3128...;)
Merci de me l'avoir signalé, je modifierais le script.

#15 Le 11/05/2006, à 16:01

Baptiste0

Re : Un proxy transparent ? Comment ?

Ah, petite question supplémentaire : comment faire pour autoriser les connexions SSH venant de mon ordi ?
Je dois régulièrement mettre à jour leur système et vu que leurs sessions sont limitées, je suis obligé de les déconnecter, de prendre l'ordi, etc... Pas très pratique (ni très populaire wink ).
Une idée pour que je puisse me connecter à l'ordi sans voir ma tentive refusée ?

#16 Le 11/05/2006, à 17:57

ppmt

Re : Un proxy transparent ? Comment ?

il faut rajouter des regles pour autoriser le port 22

moi j'ai ca dans mon iptable

-A INBOUND -p tcp -m tcp --dport 22 -j ACCEPT
-A INBOUND -p udp -m udp --dport 22 -j ACCEPT

mais il doit y avoir moyen de restreindre ca a une adresse bien precise


le dock dont vous avez toujours rêvé  Cairo-Dock
irc://irc.freenode.net/#Cairo-Dock-fr

Hors ligne

#17 Le 11/05/2006, à 18:56

jr95

Re : Un proxy transparent ? Comment ?

J'ai rajouté dans le script la ligne suivante dans la partie ajout de règles

${IPT} -A INPUT -i ${OUT} -p tcp -m state --state NEW --destination-port 22 -j ACCEPT

On doit pouvoir restreindre à une adresse (ou une plage d'adresses) en rajoutant "-s IP"

Hors ligne

#18 Le 16/05/2006, à 19:14

Baptiste0

Re : Un proxy transparent ? Comment ?

ppmt, ça ne marche pas, mais ta solution parfaitement, jr95.

Par contre j'obtiens ça avec apt-get :
Impossible de récupérer http://archive.ubuntu.com/ubuntu/pool/main/l/lynx/lynx_2.8.5-2ubuntu1_i386.deb  Connexion à 127.0.0.1: 8086 (127.0.0.1) impossible. - connect (111 Connexion refusée)

Un rapport avec le proxy ou pas ?

Merci
Baptiste.

#19 Le 16/05/2006, à 19:31

Baptiste0

Re : Un proxy transparent ? Comment ?

Mmm, désolé, il suffisait d'indiquer que l'on souhaitait utiliser le proxy 3128 smile

#20 Le 16/05/2006, à 19:36

jr95

Re : Un proxy transparent ? Comment ?

Il suffit de dire que apt utilise le port 3128 dans le fichier /etc/apt/apt.conf.
Regarde le fichier /usr/share/doc/apt/examples/configure-index.gz pour savoir quelles lignes mettre.

Edit : je suis lent à taper ce soir smile Tu as trouvé la réponse pendant tout ce temps.
Bonne nuit.

Jacques

Dernière modification par jr95 (Le 16/05/2006, à 19:37)

Hors ligne

#21 Le 07/10/2006, à 11:11

Baptiste0

Re : Un proxy transparent ? Comment ?

Bonjour,

Me revoilà, avec une nouvelle question.
Ce script est parfait, mais j'aimerais qu'il ne se lance qu'avec l'utilisateur "enfants", et pas avec les autres. Ça inclue donc le démarrage à l'ouverture de la session et son arrêt à sa fermeture (extinction de l'ordi ou même fermeture de session pour lancer un autre utilisateur)...

Savez-vous comment faire ?

Merci d'avance,
Baptiste.

#22 Le 09/12/2006, à 21:41

Lacsap

Re : Un proxy transparent ? Comment ?

Ca peut toujours servir...
http://easy.open.and.free.fr/TinyDansguard/