Iptables + authentification web proxy Squid

bonjour tout le monde voila je recquiert une aide car je bloque sur un probleme
J’ai configuré un serveur Firewall avec iptables puis je me suis installé le proxy Squid pour permettre une simple authentification utilisateurs pour acceder au net ! Sans iptables Squid marche nikel, mais dés que j’active iptables et avec mes regles , la connexion n’arrive pas a ce faire j’ai beau cherché sur le net des solutions mais je n’y suis pas parvenue pour le moment

voici mon script iptables si qqun a la solution :

[code]# Initialisation de la table FILTER

Par defaut, tout les paquets sont détruits

iptables -t filter -F
iptables -t filter -X
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP

Initialisation de la table 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

Initialisation de la table MANGLE

iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT

#Aucun filtrage sur la boucle locale
iptables -t filter -A OUTPUT -o lo -p icmp -j ACCEPT
iptables -t filter -A INPUT -i lo -p icmp -j ACCEPT

#Autorise la connexion internet sur l’interface eth4
iptables -A INPUT -i eth4 -j ACCEPT
iptables -A OUTPUT -o eth4 -j ACCEPT

Le plus important je pense est le INPUT et OUTPUT de netfilter
Squid est configuré sur son port de default 3128

#Autorise le NAT ( Accés internet )
iptables -t nat -A POSTROUTING -o eth4 -j MASQUERADE

#Permet la connexion du proxy sur internet
iptables -t nat -A OUTPUT -o eth4 -p tcp --dport 80 -j DNAT --to-destination 192.168.247.100:3128[/code]

Je souhaite juste combiner Squid avec iptables pour controler l’utilisateur qui se connecte sur le web a partir du Firewall

Ma config : Serveur Proxy / Firewall Debian à 5 interfaces
Je suis sous virtualisation vmware et eth4 est l’interface qui est NATER

Ceci n’est qu’une partie du code mais c’est ici que ca bloque
Je vous remercie de votre aide et de vos reponses :neutral_face: Linuxiens

#Aucun filtrage sur la boucle locale iptables -t filter -A OUTPUT -o lo -p icmp -j ACCEPT iptables -t filter -A INPUT -i lo -p icmp -j ACCEPT

J’ai pas lu toutes les lignes mais heu, là, je lis bien un -p icmp non? Ça vient peut être de là…

Pk cela viendrai de la ?

Car cette ligne indique si elle est correcte la possibilité de pinguer l’interface local (loopback)uniquement pour le icmp mais je ne pense pas car quand je n’avais pas le proxy d’installé j’arrivais trés bien a me connecter sur internet par le NAT et avec les regles INPUT et OUTPUT sur eth4 mais je vais quand même voir si ca pourrait être la cause mais bon je ne pense pas

Je rectifie et je suis desolé tu avait raison , et moi qui cherché sur une autre ligne d’ou venait le probleme, j’ai testé et ca marche puis je precise sur les 2 regles :

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

N’est ce pas dangereux pour le serveur Firewall de tout laisser passer?

[quote=“skn”]Pk cela viendrai de la ?

Car cette ligne indique si elle est correcte la possibilité de pinguer l’interface local (loopback)uniquement pour le icmp mais je ne pense pas car quand je n’avais pas le proxy d’installé j’arrivais trés bien a me connecter sur internet par le NAT et avec les regles INPUT et OUTPUT sur eth4 mais je vais quand même voir si ca pourrait être la cause mais bon je ne pense pas

Je rectifie et je suis desolé tu avait raison , et moi qui cherché sur une autre ligne d’ou venait le probleme, j’ai testé et ca marche puis je precise sur les 2 regles :

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

N’est ce pas dangereux pour le serveur Firewall de tout laisser passer?[/quote]

lo --> boucle locale. ils s’y passent parfois des trucs bizarres, par exemple un mot de passe root en clair (http) dans l’interface de configuration de cups c’est imprudent… mais bon, il faut que la personne malintentionnée soit déjà connectée localement sur la machine; si c’est le cas c’est mal barré. :slightly_smiling:

Le loopback est l’interface qui permet à l’ordianteur d’utiliser ses propres services. À moins d’un ordinateur schizo, tu peux avoir confiance. L’interface loopback sert sans arrêt, tu devais avoir d’autres soucis également…

J’aime bien la métaphore. Je vais arrêter de penser de peur qu’on lise dans mes pensées… C’est un peu le principe? :slightly_smiling:

J’ai un autre probleme comme tu me l’a dit, maintenant il me demande l’authentification utilisateurs mais la page internet ne se charge pas : j’obtiens ceci :

[code]The requested URL could not be retrieved

While trying to retrieve the URL: http://www.google.com/

The following error was encountered:

Unable to determine IP address from host name for www.google.com 

The dnsserver returned:

Timeout 

This means that:

The cache was not able to resolve the hostname presented in the URL.
Check if the address is correct.

Your cache administrator is webmaster. [/code]

Apparement il sait pas comment gerer les requetes dns !

Me faut il une petite regles iptables ou installer un dns local bien que j’en voit pas l’utilitité d’un dns local.
Ce qui est bizarre c’est que aprés l’authentification je tombe sur la page internet debian.org mais lorsque je commence a naviguer sur d’autre page du site ca charge mais c’est trés long. Peut etre un probléme liés a la taille du cache Squid ?

Sans iptables la navigation ne pose pas de probléme en revanche, quand je met en place mes regles iptables, je ne peut naviguer que sur les pages que j’ai deja visiter dans la configuration du serveur sans aucun filtrage.

Mon fichier FW :

[code]# Initialisation de la table FILTER

Par defaut, tout les paquets sont détruits

iptables -t filter -F
iptables -t filter -X
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP

Initialisation de la table 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

Initialisation de la table MANGLE

iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT

#Aucun filtrage sur la boucle locale
iptables -t filter -A OUTPUT -o lo -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT

#Autorise la translation d’adresse ( Accés Lan vers internet )
iptables -t nat -A POSTROUTING -o eth4 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.102.0/24 -j MASQUERADE

#Autorise les requetes dns
iptables -t filter -A INPUT -i eth4 -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -o eth4 -p udp --sport 53 -j ACCEPT

puis j’ai tester avec d’autre lignes trouver sur un site mais rien a faire

iptables -A OUTPUT -o eth4 -s 192.168.247.100 -d 0.0.0.0/0 -p TCP --sport 53 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth4 -s 192.168.247.100 -d 0.0.0.0/0 -p UDP --sport 1024: --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -i eth4 -s 0.0.0.0/0 -d 192.168.247.100 -p TCP --dport 53 -m state --state ! INVALID -j ACCEPT
iptables -A INPUT -i eth4 -s 0.0.0.0/0 -d 192.168.247.100 -p UDP --sport 53 --dport 1024: -m state --state ESTABLISHED -j ACCEPT
[/code]

Qui peut m’aider j’ai besoin d’aide svp

L’adresse IP d’eth4 est : 192.168.247.100

Autre test :
iptables -t filter -A FORWARD -o eth4 -s 192.168.247.100 -d 0.0.0.0 -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -i eth4 -s 0.0.0.0 -d 192.168.247.100 -p udp --dport 53 -j ACCEPT

Je viens de tester mais le probléme est tjr le même ! Aprés la demande d’authentification du proxy, je tombe sur le message d’erreur

Est ce que le DNS fonctionne sur le serveur Squid?

c’est a dire ? car mon proxy est installé et configuré sur mon serveur Firewall, je n’ai aucun serveur dns d’installer localement

Juste le nom de serveur dans le fichier resolv.conf !

Mon fichier resolv.conf : nameserver 192.168.247.2 cette adresse correspond à la passerelle ( gateway ip adress) qui est configuré dans vmware : => Vmware\Virtual network settings\Nat

Et dans le proxy je crois qu’il n’y a rien qui fait reference au dns, ce qui est sure c’est que sans iptables tout marche ( Connection internet par identification proxy ) et dés que iptables rentre en scéne, il n’y a plus que l’authentification qui marche et ensuite message d’erreur.

Probléme résolus, j’en avait pas besoin auparavant mais avec le proxy et iptables il me fallait rajouter :

[code]iptables -A OUTPUT -s 192.168.247.100 -d 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -d 192.168.247.100 -p tcp --sport 80 -j ACCEPT

iptables -A OUTPUT -o eth4 -p udp --sport 1024: --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth4 -p udp --sport 53 --dport 1024: -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
[/code]
Est ce que qqun pourrait me dire si au niveau des état c’est sécurisé ?
quel état rajouter sur les deux premieres ?

New pour Output ?
Etablished pour input venant d’internet ?

Pour le dns quel état en output / input ?

Car j’ai du mal a m’y retrouver quand ca marche pour les 2 flux
Merci de votre aide, avis

Effectivement, les deux premières règles autorisent ton proxy à aller sur Internet donc elles sont importantes, les deux suivantes sont très restrictives, je ne vois pas leur intérêt (autorisation requêtes DNS si elles proviennent d’un port 1024, j’enlèverais le --dport 1024 et le --sport 1024, sinon, ça pourra bloquer une requête un jour si le port 1024 est occupé).