Squid transparent HTTPS + Squid lent - Réseaux - Systèmes & Réseaux Pro
Marsh Posté le 07-11-2008 à 15:32:23
je viens de voir qu"il n"y avait pas la fin de mon iptables lol
voila la fin :
######################################################################
# G E S T I O N F I R E W A L L -> L A N
######################################################################
iptables -A INPUT -i eth0 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED -j ACCEPT
######################################################################
# G E S T I O N L A N -> F I R E W A L L
######################################################################
iptables -A INPUT -i eth0 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth1 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth1 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d 194.2.0.20 -m state --state NEW -p udp --dport 53 -o eth1 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p tcp -m multiport --dport http,https -o eth1 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
et je précise aussi que mes blacklists sont tres tres grosse pour mon ssquidguard, je ne sais pas si ca peut etre la cause de la grosse lenteur de mon internet en passant par squid
VOila ! jespere que vous pourez me sauver de ma galere
Merci beaucoup ++
Niko
Marsh Posté le 07-11-2008 à 21:21:28
j'en connais pas asser pour t'aider mais... c'est quoi la conf de ta machine? cpu/ram? Et tes cartes réseau?
Marsh Posté le 12-11-2008 à 09:46:16
Merci d'avoir jeté un oeil , ce n'est pas un pb de puissance machine ou reseau c'est sur et certain, mais je pense que sa lenteur est du a mes blacklists qui sont trop grande.
Par contre pour le HTTPS je recherche toujours la solution, personne ne peut m'aider ???
Marsh Posté le 12-11-2008 à 11:29:35
- Là tu n'as que des règles d'INPUT, càd à destination de ta machine linux... tu n'autorises pas ce qui doit passer à travers ! Il faut que tu crées une règle de forward (routage) qui autorise les connexions vers tcp/443.
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
- A laquelle il faudrait rajouter une règle de masquerading (nat source) :
iptables -t nat -A POSTROUTING -i eth0 -o eth1 -p tcp --dport 443 -j MASQUERADE
- Si ce n'est pas déjà fait, il faut activer le routage des paquets à travers ta machine via la commande :
echo > 1 /proc/sys/net/ipv4/ip_forward
Remarques :
- Tu devrais rajouter les subnet source de ton LAN dans cette règle, c'est plus clean "-s 192.168.1.0/24" par ex.
- Pourquoi est-ce que ton firewall a besoin de se connecter sur le lan ?! Pour moi ça pourrait être un trou dans ta sécurité (règle iptables -A OUTPUT -o eth0 -m state --state NEW,ESTABLISHED -j ACCEPT)
- Tu as des règles qui se superposent
- Autoriser tout le monde sur ton LAN à se connecter à tous les ports de ta machine linux est peut être un peu trop "sympa". A voir...
- En effet, si tes BL sont énormes, c'est normal que ton SQUID se vautre suffit de valider/infirmer avec un "top"
Bref je te conseille de te documenter sur les rôles des chaînes INPUT/OUTPUT/FORWARD -c'est vraiment pas dur en plus- tu comprendras mieux pourquoi ta conf merdait et tu pourras l'améliorer
Marsh Posté le 12-11-2008 à 12:19:36
nikofybc a écrit : |
Tu peux agir directement au niveau du client, en ne sélectionnant le proxy QUE pour le HTTP.
Le plus propre et pratique est quand même de valider les étapes une à une
1) je valide que mon proxy fonctionne nickel
2) je met en place le proxy transparent / Iptable .
++
Marsh Posté le 12-11-2008 à 13:08:31
reckoner a écrit : - Là tu n'as que des règles d'INPUT, càd à destination de ta machine linux... tu n'autorises pas ce qui doit passer à travers ! Il faut que tu crées une règle de forward (routage) qui autorise les connexions vers tcp/443. |
Si il faut que ça passe par le proxy, il faut pas autoriser le routage et le nat entre l'interne et l'externe sinon tu bypasse le proxy si tu as envie
Marsh Posté le 12-11-2008 à 18:02:14
Pour ma part, aucune idee pour la partie iptables.
Par contre, peut etre une piste cote squid : la ligne "url_rewrite_children 5" me parait pouvoir poser probleme, surtout si tu as de grosses blacklists comme tu dis. Si tu as beaucoup d'utilisateurs en simultane, 5 rewriters ca me semble un poil faible.
Pour en etre sur, verifie dans tes logs squid si tu n'aurais pas des messages du style :
"WARNING: All redirector processes are busy."
"WARNING: xxx pending requests queued"
"Consider increasing the number of redirector processes
in your config file."
Marsh Posté le 12-11-2008 à 21:59:56
Je@nb a écrit : |
Ben je suis d'accord mais le monsieur dit que squid ça marche pas en proxy transparent en https (c'est en réalité un peu plus compliqué, ça génèrerait surtout des warnings sur les certificats, car le CN ne correspondrait pas au FQDN du site ouaibe demandé). Donc à part en définissant le squid comme proxy sur les navigateurs des postes clients (ce qui impliquerait que le proxy ne soit plus transparent), il faut faire du routage + nat, je vois pas trop d'autre solution !
Marsh Posté le 13-11-2008 à 10:35:12
merci a tous pour vos reponse !
j'ai testé tes commandes iptables Reckoner et ca ne me laisse toujours pas passer un site si il est en HTTPS, je ne pige pas !! c'est vrai que je suis un peu largué sur les regles iptables mais bon jessai de me débrouiller en lisant des trucs a droite a gauche
sinon tu me disais que j'avais des regles qui se superposaient ? lesquels ? et surtout ca a une incidence sur quelque chose ou pas ?
je sais que jen demande beaucoup mais la ca commence a faire un bon bout de temps que je travailles la dessus que je fais des tests et ca ne marche tjrs pas, mon patron commence a simpatienter et moi je commence vraiment a avoir envie de tout casser lol
merci encore
Cordialement
Niko
Marsh Posté le 13-11-2008 à 14:59:06
Ca n'a aucune incidence, t'en fais pas, c'est juste plus dur à la lecture et pour toi si tu modifies un jour ton archi.
Là ça ne marche pas parce que tu n'autorises pas tes clients à faire des requêtes DNS je pense... si tu essaies https://<ip_d'un_serveur_https> ça devrait marcher (avec un bon gros warning).
Si c'est le cas, ajoute une règle qui fait du nat source pour les requêtes dns des clients :
iptables -t nat -A POSTROUTING -i eth0 -o eth1 -d <ip_de_ton_dns_utilise_par les clients> -p udp --dport 53 -j MASQUERADE
Mais attention : ma solution fait en sorte que les clients sortent en https directement, sans passer par le SQUID. Tu es bien d'accord là-dessus ?
Marsh Posté le 13-11-2008 à 15:38:51
oui c'est exactement ca que je veux je vais tester ca rapidement et je vais voir ce que ca donne.
Pour ce qui est de la lenteur je suis entrain dessayer de modifier la valeur de url_rewrite_children, je l'ai augmenté et mainteannt quand je relance squid, squidguard met un temps interminable a me refaire mes BDD pour les blacklists lol je vais attendre encore un peu et je vais voir ce que ca donne sinon je baisserais et reessayerais. Je vous tiens au courant de mon avancement
Merci encore pour les reponses rapide
Niko
Marsh Posté le 13-11-2008 à 16:32:24
Bon alors j'ai fais un test avec ta commandes iptables mais HTTPS ca ne passe toujours pas, je vais refaire d'autre tests.
Mais enfaite quand je saisis ta ligne : iptables -t nat -A POSTROUTING -i eth0 -o eth1 -d <ip_de_ton_dns_utilise_par les clients> -p udp --dport 53 -j MASQUERADE
pour l'ajouter a iptables il me marque : can't use -i with POSTROUTING
donc je suis obligé denlever cette option car iptables ne veut pas prendre cet option
Marsh Posté le 14-11-2008 à 15:13:28
HELLO
bon je ne trouve toujours rien !! je suis dans la galere, mon squid est lent et le HTTPS ne passe pas, si quelqu'un aurait le courage de me donner un iptables complet pour mon squid a savoir que mon squid se trouve entre mon routeur FAI et ma passerelle, il est en transparent, eth0 donne sur le LAN et eth1 donne sur internet
de plus j'ai remarque que quand je redemarrais mon squid il marquait "initializing https proxy context", je ne sais pas si c'est bon ou mauvais ??
Merci beaucoup
Nikofybc
Marsh Posté le 14-11-2008 à 16:56:17
Oui, j'ai fait un mauvais copier coller, enlève le -i xxx et mets les deux règles de masquerading (https+dns).
Marsh Posté le 14-11-2008 à 22:51:48
Ce que je préconise
Squid en transparent pour le port 80 (regle iptables)
Pas de NAT pour le lan vers l'exterieur
le HTTPS est géré par un proxy.pac (parametrage auto envoyé par le DHCP)
Marsh Posté le 15-11-2008 à 12:53:44
splurf a écrit : Ce que je préconise |
Dans ce cas autant ne pas mettre http en transparent. Le but est -j'imagine- de ne pas à avoir de conf à passer côté client.
Marsh Posté le 15-11-2008 à 14:51:51
Le but est en effet de ne pas avoir de conf à passer côté client et SURTOUT de permettre aux clients DHCP n'honorant pas l'option de surfer en HTTP.
Marsh Posté le 20-11-2008 à 10:34:45
oui voila moi je ne veux pas de conf sur les postes client, mais le PAC est un fichier qui balance les infos directement aux clients donc normalement ca pourrait le faire, mais je ne trouve pas d'infos sur un .pac pour un squid.
Sinon mon squid est toujours aussi lent :s pas de soluce ??
Merci pr ttes vos reps
Niko
Marsh Posté le 22-11-2008 à 00:30:32
Salut je viens te poster mon iptables que j'utilise pour squid et qui marche niquel ( https, ect...) je te mais aussi mon squid.conf qui marche sans problème pour moi.
Le squid.conf :
Code :
|
Le script iptables :
Code :
|
Voilà j'espère que cela pourra t'aider.
cordialement,micko
Marsh Posté le 24-11-2008 à 11:17:40
Merci c'est genial micko, je test tout ca et je te tiens au courant si mon probleme est résolu
Niko
Marsh Posté le 27-11-2008 à 09:48:27
Beh pour l'instant ca ne change rien, je pense que je vais bientot jetter l'éponge je ne trouve aucune soluce...
Marsh Posté le 27-11-2008 à 13:46:10
Bas si tu a appliquer exactement le fichier pour l'iptable il n'y-a aucune raison pour que cela ne marche pas sachant que moi je n'ai aucun soucis, tu aurais pas un autre pare feu ? ou un routeur ne laisant pas passé ?
Marsh Posté le 30-11-2008 à 20:47:50
j'ai utilisé ça chez moi (jusqu'au dernier update debian qui a changé la version de squid, et la flemme de la modifier pour réactiver).
Si tu fais du forward avec iptables du port https, il ne devrait pas y avoir de prob.
Pour la partie DNS, tu ne devrait pas laisser tes clients y aller directement, mais plutôt installer un bind en DNS cache sur ta passerelle, et l'autoriser lui à se connecter sur internet.
Sinon, poste (en mode 'fixed') le résultat d'un iptables -L.
Enfin, si ca fonctionne toujours pas, tu peux définir une cible spécifique pour iptables qui loggue tout. Tu pourras ensuite plus facilement debugguer ce qui pose problème.
Marsh Posté le 07-11-2008 à 15:22:18
bonjour a tous !!
VOila je réalise pour ma société un SQUID transparent couplé a squidguard pour limiter les sites des utilisateurs qui abusent mais j'ai un probleme ! meme deux !!
Dans un premier temps je signales jusque qu'il fonctionne en transparent sans prob et squidguard aussi mais jai deux soucis :
- le premier est qu'un fois mis en production sur le réseau internet se retrouve beaucoup plus lent !! alors que ca ne devrait pas etre le cas autant je ne sais pas trop quoi faire sachant que jai testé de nombreuses config
- ensuite, le plus important, je sais qu'avec squid en transparent le HTTPS ne passe pas mais je souhaiterais redirigé le HTTPS (port 443) sans qu'il passe par le port 3128 de mon squid, il faut savoir que je redirige le port 80 vers 3128 avec iptables afin que tout passe par mon squid. comment puis-je faire ? pour l'architecture réseau mon squid se situe entre le routeur de mon FAI et la passerelle du LAN, les utilisateurs passent tous par la passerelle pour avoir le net.
J'utilise FEDORA 9 et SQUID 3.0
mon fichier squid.conf est le suivant :
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 400 MB
maximum_object_size_in_memory 15 MB
cache_dir ufs /var/spool/squid 3200 16 256
cache_swap_low 75
cache_swap_high 90
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
pid_filename /var/run/squid.pid
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30
#auth_param ntlm max_challenge_reusses 0
#auth_param ntlm max_challenge_lifetime 2 minutes
auth_param ntlm keep_alive on
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid AD
auth_param basic credentialsttl 2 hours
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443
acl SSL_ports port 563
acl SSL_ports port 873
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl Safe_ports port 901
acl purge method PURGE
acl CONNECT method CONNECT
acl sefico.lan src ##.#.##.#/255.255.255.0
acl bdmassocies.lan src ###.###.###.#/255.255.255.0
acl banned_list url_regex "/etc/squid/banned.list"
acl password proxy_auth REQUIRED
acl snmppublic snmp_community public
snmp_port 3401
no_cache deny sefico.lan
no_cache deny bdmassocies.lan
http_access deny banned_list
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow sefico.lan
http_access allow bdmassocies.lan
http_access deny all
http_access deny !password
snmp_access allow snmppublic all
http_reply_access allow all
icp_access allow all
visible_hostname squid.sefico.lan
log_fqdn on
append_domain .SEFICO.LAN
url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
url_rewrite_children 5
mon iptables est le suivant :
iptables -F
# Nous supprimons d'éventuelles chaînes personnelles :
iptables -X
# Nous les faisons pointer par défaut sur DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
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
######################################################################
# G E S T I O N M A C H I N E L O C A L E
######################################################################
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
######################################################################
# G E S T I O N F I R E W A L L -> L A N
#########%2