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 07/02/2011, à 14:56

tophe59760

IPtable et Thundebird

Bonjour,

Je possède un serveur Ubuntu 10.04 qui fait office de passerelle internet (2 cartes réseaux sur le serveur) et de proxy http à l'aide de Squid.

15 pc sous xp pro en adressage privé se trouvent derrière le serveur et se connectent à internet en entrant un login et un mot de passe, une fois l'identification faite sur le serveur ils peuvent surfer.

Le problème est que les clients ne parviennent pas à lire leur mail via Thunderbird.

En parcourant le forum, je pense que la solution est dans le paramétrage d'IPtable. N'ayant jamais touché à ce dernier, il faudrait que quelqu'un :

- Si IPtable est bien la solution à mon problème

- qu'il ou elle m'explique précisément et avec méthode comment faire pour solutionner le problème.

2ème question : comment paramétrer thunderbird côté client ? quelle option dois-je choisir ?

- Pas de proxy
- Détection automatique
- Utilisation les paramètres proxy du système
- Configuration manuelle du proxy avec l'ip et le port du squid ?

Merci

Hors ligne

#2 Le 08/02/2011, à 00:06

chopinhauer

Re : IPtable et Thundebird

tophe59760 a écrit :

15 pc sous xp pro en adressage privé se trouvent derrière le serveur et se connectent à internet en entrant un login et un mot de passe, une fois l'identification faite sur le serveur ils peuvent surfer.

Ils accèdent au Web en passant par un proxy. Pour ce qui concerne Internet (qui est un réseau de communications, pas juste un service qui utilise ce réseau) ce n'est pas clair de ta description.

Je peux déduire que le pare-feu sous Ubuntu a été configuré pour bloquer toute tentative de connexion vers l'extérieur sur le port 80 (utilisé par le Web ; on oblige ainsi les utilisateurs à utiliser consciemment le proxy) ou ces connexions sont redirigées silencieusement vers le proxy (au lieu d'être routée vers la destination souhaitée). Mais qu'en est-il des autres connexions ? L'interdiction d'accès à Internet est totale ?

tophe59760 a écrit :

En parcourant le forum, je pense que la solution est dans le paramétrage d'IPtable. N'ayant jamais touché à ce dernier, il faudrait que quelqu'un :
- Si IPtable est bien la solution à mon problème
- qu'il ou elle m'explique précisément et avec méthode comment faire pour solutionner le problème.

À ce point tu dois te poser la question : est-ce que tu veux bloquer uniquement le trafic Web et le rediriger vers ton serveur proxy pour profiter des économies de bande passante qu'un cache va te donner ? Ou tu veux plutôt contrôler le trafic de tout genre qui sort de ton réseau ?

Dans le premier cas tu dois enlever le blocage pour tout ce qui n'est pas Web (ou au moins pour les autres services utilisés couramment, comme le courrier électronique). Il faut d'abord qu'on puisse connaître ta configuration Netfilter/Iptables. Tu peux tout lister avec :

sudo iptables-save

(normalement il n'y a pas de données confidentielles, mais regarde si ton adresse IP externe n'y apparaît pas et remplace-le par autre chose, genre A.B.C.D)

Dans le deuxième cas tu vas devoir configurer l'utilisation du proxy explicitement pour tous les services sauf le Web : l'astuce de rediriger silencieusement le trafic Web vers le proxy marche uniquement car proxy et les serveurs Web parlent le même protocole (HTTP), donc il n'y aura pas d'erreurs de communications, mais pour le reste, y compris le Web sécurisé (HTTPS) le client doit être conscient et savoir se servir du proxy (et le proxy doit être configuré pour accepter la méthode CONNECT vers le service demandé).

tophe59760 a écrit :

2ème question : comment paramétrer thunderbird côté client ? quelle option dois-je choisir ?
- Pas de proxy
- Détection automatique
- Utilisation les paramètres proxy du système
- Configuration manuelle du proxy avec l'ip et le port du squid ?

Personnellement je choisirais la configuration à niveau système : ainsi il va suffire de le configurer une fois pour toutes et les utilisateurs ne vont pas devoir renseigner ces informations eux-mêmes. Par contre j'ignore où se situe la configuration du proxy sous Windows.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#3 Le 08/02/2011, à 11:02

tophe59760

Re : IPtable et Thundebird

Bonjour Chopinhauer, décidément c'est toujours toi qui vole à mon secours ;-)

Le pare-feu sous ubuntu n'est pas activé.

Squid a été installé dans l'optique d'économiser de la bande passante et aussi à journaliser les accès des utilisateurs. Il n'y a pas de blocage particulier concernant l'accès à internet.

Les pc font partie d'une salle info. Les postes sont très verrouillés  (les utilisateurs ne peuvent exécuter qu'internet explorer, open office et Thunderbird). De plus, lorsqu'ils lancent internet explorer, ils doivent entrer leur login et mot de passe pour pouvoir accéder au web. (le serveur fait alors une vérification sur un serveur LDAP tierce).

Côté client, j'ai activé l'option proxy dans internet explorer en mettant l'adresse ip privée du serveur sur le port 3128

voici le résultat d'un sudo iptables-save

# Generated by iptables-save v1.4.4 on Tue Feb  8 09:44:09 2011
*filter
:INPUT ACCEPT [10012:3929254]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6864:3608426]
:ufw-after-forward - [0:0]
:ufw-after-input - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-before-input - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-output - [0:0]
:ufw-reject-forward - [0:0]
:ufw-reject-input - [0:0]
:ufw-reject-output - [0:0]
:ufw-track-input - [0:0]
:ufw-track-output - [0:0]
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input
-A INPUT -j ufw-after-logging-input
-A INPUT -j ufw-reject-input
-A INPUT -j ufw-track-input
-A FORWARD -j ufw-before-logging-forward
-A FORWARD -j ufw-before-forward
-A FORWARD -j ufw-after-forward
-A FORWARD -j ufw-after-logging-forward
-A FORWARD -j ufw-reject-forward
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
COMMIT
# Completed on Tue Feb  8 09:44:09 2011

Merci

Dernière modification par tophe59760 (Le 08/02/2011, à 11:08)

Hors ligne

#4 Le 08/02/2011, à 13:53

chopinhauer

Re : IPtable et Thundebird

Ce dont t'as besoin est une translation d'adresses réseau. Internet offre à la base une connectivité bout-à-bout et permet ainsi à chaque hôte d'envoyer des paquets à n'importe quel autre hôte directement.

Malheureusement avec la croissance des utilisateurs et la carence d'adresses IP, la plupart des réseau privés se trouve en dehors de Internet relié par des passerelle. Par exemple chez toi juste le modem/routeur se trouve sur Internet. Ces réseaux utilisent des adresses de la plage privé (192.168.X.Y, 10.X.Y.Z 172.16-31.X.Y) qui n'ont pas de validité en dehors du réseau local.

L'astuce pour permettre à ces machines de communiquer avec Internet et de remplacer l'adresse d'origine des paquets avec l'adresse du routeur. Les réponses vont arriver au routeur et celui-là va effectuer la traduction inverse et envoyer le paquet au destinataire local. Pour configurer cette ruse utilise :

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

remplace eth0 par le nom de l'interface vers Internet de ton routeur (le serveur proxy).

PS : La configuration actuelle ne nécessite pas que ton serveur proxy soit un routeur. Si tu ne l'as pas déjà fait, tu dois donc activer la fonction de routage :

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Pour rendre les deux changements permanents, ajoute la première commande dans /etc/rc.local (sans le 'sudo' devant qui sera inutile) et pour la deuxième modifie le fichier /etc/sysctl.conf pour avoir une ligne :

net.ipv4.ip_forward=1

(sans # devant le net).

PS : Cette configuration va fournir aux machines une connectivité directe pour tous les services de Internet, vu que tu veux journaliser les accès Web il faudra bloquer le service Web pour rendre l'utilisation du proxy obligatoire :

sudo iptables -A FORWARD -p tcp --dport 80 -j REJECT

Edit : ip_forward à la place de forward.

Dernière modification par chopinhauer (Le 09/02/2011, à 14:34)


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#5 Le 09/02/2011, à 13:18

tophe59760

Re : IPtable et Thundebird

Sur mon serveur j'ai deux interfaces réseau

eth0 : qui possède une adresse ip publique en 195.x.x.x
eth1 : qui possède une adresse ip privé en 192.168.1.254

J'ai donc tapé dans le terminal :

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

commande effectuée sans accrocs

ensuite : echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

idem pas de problème

ensuite j'ai édité le fichier etc/rc.local et j'ai ajouté la ligne :

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

puis j'ai édité le fichier /etc/sysctl.conf et j'ai ajouté la ligne suivante : net.ipv4.forward=1

A ce stade, je suppose si j'ai bien compris ton raisonnement que tous les paquets entrants ou sortants "traversent" le serveur sans filtrage aucun. A ce stade, je devrais donc, à partir d'un poste client, pouvoir surfer sur le web sans passer par le proxy ?

J'ai essayé et çà ne marche pas. J'ai testé aussi thunderbird et je ne relève pas le courrier et ce, quelque soit la config réseau choisie à l'intérieur même de thunderbird (pas de proxy, proxy manuelle, ...)

Petite remarque dans le fichier /etc/sysctl.conf j'y ai vu une ligne commentée quasi identique à celle que tu m'as indiquée. Il s'agit de net.ipv4.ip_forward=1

A tout hasard, pensant que tu aurais pu te tromper dans la syntaxe, j'ai testé en décommantant cette ligne mais çà n'a rien changé non plus.

Du coup, je n'ai pas tapé la dernière règle que tu m'as transmise sudo iptables -A FORWARD -p tcp --dport 80 -j REJECT vu que çà devrait déjà fonctionné avant çà.

Dis-moi si j'ai mal compris ou mal effectuée une commande.

Dernière modification par tophe59760 (Le 09/02/2011, à 13:21)

Hors ligne

#6 Le 09/02/2011, à 14:47

chopinhauer

Re : IPtable et Thundebird

Oui, les commandes que t'as utilisé sont correctes (et mea_culpa j'ai perdu le ip_ devant le forward). Juste les première deux sont nécessaire pour activer la traduction d'adresses (NAT) et le routage respectivement. Les deux autres opérations servent pour que les deux premières soient exécutées au démarrage de la machine.

À tout hasard, comment sont configurées les machines clientes ? Elles on bien 192.168.1.254 comme passerelle ?


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#7 Le 09/02/2011, à 15:17

tophe59760

Re : IPtable et Thundebird

Oui les machines clientes sont en :

IP : 192.168.1.x
Masque : 255.255.255.0
Passerelle : 192.168.1.254

DNS : 192.168.1.254

En théorie c'est bien çà ? activer le forwarding devrait permettre dans un premier aux clients d'avoir le net sans passer par le proxy, c'est à dire uniquement en indiquant l'adresse du serveur comme passerelle ?

Dans le doute, j'avais ensuite réutilisé la ligne de commande en mettant eth1
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

mais je suppose que c'est bien eth0 (l'adresse ip publique du serveur) qu'il faut mettre ?

Hors ligne

#8 Le 09/02/2011, à 21:47

chopinhauer

Re : IPtable et Thundebird

Oui, c'est eth0 (par ailleurs eth0 ce n'est pas l'adresse du serveur, mais la carte réseau/interface vers l'extérieur ; une interface peut avoir plusieurs adresses de type différent).

La cible MASQUERADE dit de prendre l'adresse IP d'origine et la remplacer par l'adresse principale de l'interface sortante (eth0). Seulement ainsi on peut être sur que le hôte Internet contacté pourra répondre : les adresses 192.168. sont valable seulement localement, donc le hôte Internet contacté ne pourrait pas répondre.

Pour tester, configurez "pas de proxy" dans le navigateur.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#9 Le 10/02/2011, à 10:36

tophe59760

Re : IPtable et Thundebird

J'avais testé "pas de proxy" dans le navigateur et cela n'avait pas fonctionné.

Par contre, pour le DNS ne faudrait-il pas mettre les DNS "extérieurs" ? J'y ai pensé hier soir en regardant la config de ma freebox qui fait NAT aussi. Dans le test que j'ai fait hier, j'avais laissé l'ip du proxy 192.168.1.254 en dns principal.

Hors ligne

#10 Le 10/02/2011, à 13:24

chopinhauer

Re : IPtable et Thundebird

Ah, voilà la source probable de ton problème : si tu n'as pas de serveur DNS sur la machine proxy, bien que la connexion soit opérative, les clients ne pourrons pas transformer les noms de domaine en adresse IP. Quand ils étaient configurés pour utiliser le proxy ce n'était pas grave, car tu leur avais donné l'adresse IP du proxy et celui-ci avait la bonne configuration pour le DNS.

Pour distinguer entre le cas "connexion hors service" et "service de noms hors service" fait :

ping -c 5 8.8.8.8

et

ping -c 5 www.google.fr

Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#11 Le 10/02/2011, à 14:39

tophe59760

Re : IPtable et Thundebird

Excuse-moi mais je ne comprends pas le sens des termes dans ta phrase :

Pour distinguer entre le cas "connexion hors service" et "service de noms hors service"

Dois-je donc mettre l'ip d'un DNS extérieur sur mes postes clients ?

Le ping je dois le faire sur le serveur ou sur les postes clients ?

ping -c 5 8.8.8.8 puis ping -c 5 www.google.fr

A quoi correspond l'ip 8.8.8.8 ?

Désolé de ces questions de débutants.

Hors ligne

#12 Le 10/02/2011, à 14:45

chopinhauer

Re : IPtable et Thundebird

tophe59760 a écrit :

Dois-je donc mettre l'ip d'un DNS extérieur sur mes postes clients ?

Oui, ou d'un DNS tout court, mais vu que tu ne l'as probablement pas installé sur le serveur Ubuntu, tu dois utiliser ceux de ton FAI

tophe59760 a écrit :

Le ping je dois le faire sur le serveur ou sur les postes clients ?

ping -c 5 8.8.8.8 puis ping -c 5 www.google.fr

A quoi correspond l'ip 8.8.8.8 ?

Sur le serveur t'auras probablement un résultat positif pour les deux. C'est sur les clients que tu peux essayer et si t'as configuré DNS correctement les deux vont marcher, sinon juste le premier.

8.8.8.8 c'est l'adresse du serveur google-public-dns-a.google.com, mais l'important est que ça répond au ping et c'est facile à retenir. Tout comme son copain 8.8.4.4.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#13 Le 10/02/2011, à 17:24

tophe59760

Re : IPtable et Thundebird

C'est bon çà fonctionne, c'était bien le DNS extérieur à mettre sur les postes clients.

Du coup, j'ai pu obtenir la navigation web sans passer par le proxy, ce qui est normal.

Une fois cela vérifié, j'ai inséré la règle :

sudo iptables -A FORWARD -p tcp --dport 80 -j REJECT

et du coup là je suis obligé de ré-activer le proxy pour obtenir le web.

Ne serait-ce pas judicieux d'ajouter une règle pour le https ?

sudo iptables -A FORWARD -p tcp --dport 143 -j REJECT

Lorsqu'on insère une règle via cette commande, celle-ci est bien permanente malgré un re-démarrage potentiel du serveur ?

En tout cas encore merci Chopinhauer pour tes explications claires et précises, chose rare sur les forums.

Hors ligne

#14 Le 10/02/2011, à 20:23

chopinhauer

Re : IPtable et Thundebird

tophe59760 a écrit :

Ne serait-ce pas judicieux d'ajouter une règle pour le https ?

sudo iptables -A FORWARD -p tcp --dport 143 -j REJECT

HTTPS est chiffré entre le client et le serveur, du coup l'utilisation d'un proxy HTTP pour faire du HTTPS se limite à l'établissement de la connexion, le proxy ne pourra pas faire d'intermédiaire pour le transfert des données et le cache ne sera pas utilisé. Donc niveau bande passante cela ne change rien (ça augmente par contre la charge sur le serveur proxy).

Si tu veux par contre interdire les connexions en te basant sur le nom de domaine ou adresse IP, tu peux interdire le HTTPS direct.

Par ailleurs le port utilisé d'habitude par HTTPS est 443.

tophe59760 a écrit :

Lorsqu'on insère une règle via cette commande, celle-ci est bien permanente malgré un re-démarrage potentiel du serveur ?

Non, seul les changements que tu fais dans des fichiers de configuration vont être pris en compte au re-démarrage de la machine (ou les commandes qui causent une modification de fichiers). iptables, qui sert à configurer le pare-feu Linux Netfilter, ne modifie aucun fichier. Du coup tout ce qui doit être exécuté après le démarrage doit être dans les script d'initiation. /etc/rc.local est un script qui est exécuté à la fin des autres scripts et c'est idéal pour les opérations qu'on sait pas trop où placer ailleurs (à différence de net.ipv4.ip_forward qui sera configuré dans /etc/init/procps.conf)).

Quand le nombre de règle pour le pare-feu devient élevé, on utilise soit iptables-save pour sauver la configuration actuelle dans un fichier et iptables-restore pour la lire au démarrage (dans /etc/rc.local), soit un autre outil de configuration du pare-feu. Ufw est l'outil choisi par l'équipe Canonical, mais je trouve qu'il est très bien pour un hôte normal, mais pas pour un routeur : par exemple il n'y a pas un moyen simple pour faire la manipulation que tu veux faire, ni de gérer la chaîne FORWARD (qui décide le sort des paquets routés, donc assez importante pour un routeur…).


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#15 Le 11/02/2011, à 10:27

tophe59760

Re : IPtable et Thundebird

Pour le HTTPS je pensais juste à avoir une trace de la connexion histoire de journaliser.

tu me dis que net.ipv4.ip_forward sera configuré dans /etc/init/procps.conf

Je ne comprends plus car dans un précédent message tu m'as dis :

Pour rendre les deux changements permanents, ajoute la première commande dans /etc/rc.local (sans le 'sudo' devant qui sera inutile) et pour la deuxième modifie le fichier /etc/sysctl.conf pour avoir une ligne :

net.ipv4.ip_forward=1

Quel est le lien ou la différence entre /etc/init/procps.conf et /etc/sysctl.conf ?

Enfin pour rendre permanent la règle iptables -A FORWARD -p tcp --dport 80 -j REJECT  si jecomprends bien j'ai deux possibilités :

- soit inscrire la ligne directement dans le script /etc/rc.local

- soit sauvegarder ma règle dans un fichier texte à l'aide d'iptables en faisant : iptables-save > /etc/iptables-save

puis d'exécuter mon fichier /etc/iptables-save au démarrage du serveur à l'aide du script de démarrage /etc/rc.local en utilisant cette fois-ci la commande iptables-restore

iptables-restore < /etc/iptables-restore

Dis-moi si je me trompe.

Par contre, je n'ai pas compris l'intérêt de l'argument -c de ces deux commandes.

Dernière modification par tophe59760 (Le 11/02/2011, à 11:43)

Hors ligne

#16 Le 11/02/2011, à 12:00

chopinhauer

Re : IPtable et Thundebird

tophe59760 a écrit :

Quel est le lien ou la différence entre /etc/init/procps.conf et /etc/sysctl.conf ?

Le premier est un script exécuté au démarrage, qui exécute sysctl qui est une commande qui lit son fichier de configuration /etc/sysctl.conf.

tophe59760 a écrit :

Dis-moi si je me trompe.

Par contre, je n'ai pas compris l'intérêt de l'argument -c de ces deux commandes.

Netfilter en plus de maintenir une liste de règles, maintient des compteurs qui disent combien de paquets sont-ils passés par chaque règle.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne