Quand je tape tail -f /var/log/squid3/access.log je vois bien que le trafic transit bien par squid.
Mais dès que je rentre la règle iptables, j’ai toujours le même souci ma navigation est totalement bloquée pour tout ce qui est en http alors que le https aucun problème.
voici ce que j’ai fait pour ma redirection proxy transparent dans ctparental, c’est pas du squid mais c’est le même principe, un proxy transparent en local sur la machine. (sa ne marche que pour le http le https il faut obligatoirement que le proxy soit paramétrées dans le navigateur!!!
en adaptent pour toi sa devrai donner quelque chose comme sa.
### SUPPRESSION de TOUTES LES ANCIENNES TABLES (OUVRE TOUT!!) ###
user=toto
IPTABLES=${IPTABLES:="/sbin/iptables"}
PROXYport=${PROXYport:="3128"}
$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -D OUTPUT -j squidnat 2> /bin/null
$IPTABLES -t nat -F squidnat 2> /bin/null
$IPTABLES -t nat -X squidnat 2> /bin/null
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
#force passage par le proxy pour les utilisateurs filtrés
$IPTABLES -t nat -A squidnat ! -d 127.0.0.1/8 -m owner --uid-owner "$user" -p tcp --dport 80 -j DNAT --to 127.0.0.1:"$PROXYport"
# on interdit l'acces https sans passer par le proxy pour les utilisateur filtré.
$IPTABLES -A OUTPUT ! -d 127.0.0.1/8 -m owner --uid-owner "$user" -p tcp --dport 443 -j REJECT
On ne peut pas simplement piquer une règle iptables, ou même une commande dans un script, et s’attendre à ce que ça marche comme veut. Un jeu de règles iptables, et plus généralement un script shell, est un ensemble coherent dans lequel chaque élément depend des autres.
La commande que tu as piquée utilise une variable d’environnement $IPTABLES qui est définie plus haut dans le script. De même, la règle iptables utilise une chaîne utilisateur squidnatqui est définie plus haut dans le script. Si tu ne recopies pas ces définitions ou ne modifies pas la commande pour ne pas les utiliser, ça ne marchera pas.
Pour finir, l’exemple donné redirige les connexions HTTP d’un utilisateur particulier (“toto”, définie dans la variable $user) vers le proxy, contrairement à ta règle précédente qui redirigeait toutes les connexions HTTP ne provenant pas de l’utilisateur “proxy”. La dernière règle que tu essaies de mettre en place redirigerait seulement les connexions HTTP de l’utilisateur “proxy”, ce qui n’a pas de sens.
$user doit être remplacer par l’utilisateur que tu veut forcer a passé par ton proxy et non par l’utilisateur du service proxy.
de plus il faut aussi comme dit plus haut ,faut adapter un peut, par exemple $IPTABLES et a remplacer par /sbin/iptables , si tu ne défini pas ta variable plus haut dans ton scripte iptables.
par contre fait attention a la redirection de tous les utilisateur sauf un en particulier car sa impacte tous ton systeme y comprit les outils de mise a jour apt …
Tout d’abord je m’excuse pour les erreurs grossières que je fais. Je sais que pour vous cela parait enfantin mais moi c’est la première fois que je me lance dans l’installation d’un proxy et dans le monde des règles iptables en partant de rien. Ne m’en voulez pas donc d’être largué par moment. [quote=“PascalHambourg, post:45, topic:69227”]
La commande que tu as piquée utilise une variable d’environnement $IPTABLES qui est définie plus haut dans le script.
[/quote]
Je viens seulement de comprendre qu’il fallait d’abord créer un script si j’ai compris dans /sbin/iptables. Est ce qu’il faut lui donner des droits ? Moi je me suis contenté de tout taper en ligne de commande en root. Je sais ça va vous paraître débile [quote=“hulk, post:46, topic:69227”]
$user doit être remplacer par l’utilisateur que tu veut forcer a passé par ton proxy et non par l’utilisateur du service proxy.
[/quote]
Concrètement je procède comment pour créer cet utilisateur ? Sachant donc que tout se passe sous le même ordinateur. [quote=“hulk, post:46, topic:69227”]
par contre fait attention a la redirection de tous les utilisateur sauf un en particulier car sa impacte tous ton systeme y comprit les outils de mise a jour apt …
[/quote]
Pareil je fais comment pour faire attention à la redirection ?
Désolé pour toute ces questions mais j’avoue que je suis dépassé.
Comme me le disait un mec à la hotline de free dernièrement, “je suis votre cerveau et vous êtes mes bras, contentez vous de suivre mes instructions !!!”
Donc please soyez mon cerveau. Merci d’avance pour votre patience.
quelques commandes utiles pour voir tes règles active.
en root ou avec sudo devant.
iptables -L
et iptables -t nat -L
/sbin/iptables n’est pas un scripte mais la commande pour ajouter enlevais … des règles iptables .
comme indiquer dans le lien ci-dessus tu doit créer un scripte qui ce lance au démarrage de l’ordinateur dans le quel tu mais toutes tes commandes
/sbin/iptables …
…
Merci hulk pour le lien mais c’est par là que j’avais commencé. J’ai d’ailleurs commencé par poster ma question sur le lien Digression Installation parefeu (iptables & ip6tables) "pour les nuls"
Puis on m’a dit qu’il fallait créer un nouveau sujet, ce que j’ai donc fais ici et maintenant on me demande de retourner là bas. Je sens que je ne vais pas m’en sortir
J’y retourne et je vais voir
pour le post tu a bien fait d’en faire un nouveau , mais dans le lien il y a les explication sur comment mètre en places des règles iptables de base .
si tu suit le tutoriel de ce poste tu créer un scripte dans /etc/init.d/mon_parefeu .
une foie celui-ci fait.
fait ceci :
remplacer toto par le login de l’utilisateur a filtrer.
### SUPPRESSION de TOUTES LES ANCIENNES TABLES (OUVRE TOUT!!) ###
## on définit la variable PROXYport
PROXYport="3128"
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -t nat -D OUTPUT -j squidnat 2> /bin/null
/sbin/iptables -t nat -F squidnat 2> /bin/null
/sbin/iptables -t nat -X squidnat 2> /bin/null
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -t nat -N squidnat
/sbin/iptables -t nat -A OUTPUT -j squidnat
#force passage par le proxy pour les utilisateurs filtrés
/sbin/iptables -t nat -A squidnat ! -d 127.0.0.1/8 -m owner --uid-owner "toto" -p tcp --dport 80 -j DNAT --to 127.0.0.1:"$PROXYport"
# on interdit l'acces https sans passer par le proxy pour les utilisateur filtré.
/sbin/iptables -A OUTPUT ! -d 127.0.0.1/8 -m owner --uid-owner "toto" -p tcp --dport 443 -j REJECT"}
si tu a plusieurs utilisateurs a filtrer tu a juste a répéter les lignes avec toto dedans .
et tu termine par /etc/init.d/mon_parefeu stop ce qui vas permettre la sauvegardes de tes règles iptables .
tu fait aussi update-rc.d mon_parefeu defaults ce qui paramètre le systeme pour lancer le scripte /etc/init.d/mon_parefeu start a l’ouverture du system.
Ok je te remercie Hulk, je commence à y voir plus clair. C’est vrai que je n’y pensais plus du tout au pare feu. D’ailleurs dans le lien précédent où j’avais posté la 1ère fois, on m’avait dit : « Tu n’as pas besoin d’un pare-feu complet » et dans la présente discussion il n’en a plus du tout été question. Si bien que lorsque tu es intervenu je n’avais pas compris qu’il fallait à nouveau se référer au pare-feu.
Petite précision, tu me dis :
Est ce que je suis texto tout le tutoriel ((1) Installation; (2) Configuration; (3) Modifications) et j’ajoute ensuite ce que tu m’a indiqué ou bien je me contente juste de faire :
touch /etc/init.d/mon_parefeu
chmod +x /etc/init.d/mon_parefeu
Dans kedit, ouvrez le fichier /etc/init.d/mon_parefeu
Et ensuite je fais un copier/coller de ce que tu m’a indiqué en mettant bien sûr au début « #!/bin/sh » et le bon utilisateur ?
Encore une fois je m’excuse si mes questions peuvent paraître bêtes.
toute mes excuses j’avais oubliée la création de la chain squidnat dans mes lignes.
j’ai corrigée l’erreur dans le post précédent, en faisant comme suit sa devrai résoudre ce problème.
/etc/init.d/mon_parefeu clean
puis recommence la procédure a partir de copier/coller.
cette ligne de commande devrai te confirmé que c’est bien pris en compte. iptables -t nat -L
Et là ça revient à la ligne avec une petit “>” et le curseur qui clignote, j’ai bien essayé de voir d’ou pouvait venir l’erreur mais je n’y arrive pas.
Pour info la commande [quote=“hulk, post:55, topic:69227”]
iptables -t nat -L
[/quote]
une erreur , il faut suprimer les caractères "} en gras dans la commande , ce qui donne. /sbin/iptables -A OUTPUT ! -d 127.0.0.1/8 -m owner --uid-owner powernet -p tcp --dport 443 -j REJECT
Alors cette fois concernant les règles plus aucun message d’erreur. Que ce fut laborieux
Par contre le filtrage ne se fait pas, pourtant Squid est bien lancé (squid3 -z), lorsque je navigue je le vois bien en tapant “tail -f /var/log/squid3/access.log”.
Mais quand je ping youporn.com, j’ai juste la ligne
PING youporn.com (31.192.116.24) 56(84) bytes of data.
puis rien ??
En outre je navigue sans soucis sur les sites en http mais tout ce qui est en https est bloqué y compris google (c’est exactement l’inverse de la situation du début).
Je sens que je vais laissé tomber, je ne sais pas si du coup ce sont mes ACL qui sont mauvaises, si il y a un problème de port 3128 ? 3129 ? “transparent” ou “intercept” ou est ce une règle iptables ?
Je vais peut être me rabattre sur une autre solution qui j’espère sera plus simple à moins que quelqu’un voit la solution.
En tout cas je pars en déplacement jusqu’à la semaine prochaine, d’ici là les choses se seront peut être décantées et la solution viendra peut être d’elle même qui sait…
c’est le fonctionnement normal ton trafique http étans redirigé sur squid de manière transparent tu accède bient aux site http via squid , mais pour le https iptable bloque juste l’accès au port 443 ver tous le monde sauf ton proxy, il faut quant même paramétrer le proxy https dans le navigateur si tu veux accédés au https.