Iptables : logiciel TeamSpeak

Iptables : logiciel TeamSpeak - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 31-05-2003 à 23:09:53    

Donc j'ai fait un script avec mes règles, et je ne comprend pas pourquoi la passerelle ne pouvait pas sortir et les machines derrières si.
 
Par exemple je fais un ping sur google.fr depuis ma passerelle, je recois un "ping: unknown host google.fr" alors que depuis ma station je recois la réponse.
 
Je pense que c'est parce que je n'ai pas autorisé le "localhost" a sortir, mais je ne vois pas comment lui indiquer.
 

Code :
  1. #on autorise le traffic sur lo
  2. iptables -A INPUT -i lo -j ACCEPT
  3. iptables -A OUTPUT -o lo -j ACCEPT
  4. #On accepte toutes les connexions venant du reseau local
  5. iptables -A INPUT -i eth0 -j ACCEPT
  6. iptables -A OUTPUT -o eth0 -j ACCEPT
  7. #on met le nat et le masquerading en place
  8. iptables -t nat -A POSTROUTING -s localhost -o ppp0 -j MASQUERADE
  9. iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
  10. #Toutes les connexions qui sortent du LAN vers le Net sont acceptees
  11. iptables -A FORWARD -i eth0 -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
  12. iptables -A FORWARD -s localhost -o ppp0 -m state --stat NEW,ESTABLISHED,RELATED -j ACCEPT


 
Je pense que ca vient de quelque part par la ;)
 
Merci pour votre aide


Message édité par Klaimant le 01-06-2003 à 10:36:44

---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 31-05-2003 à 23:09:53   

Reply

Marsh Posté le 31-05-2003 à 23:30:09    

Déjà, je pense pas qu'il faille faire du nat pour localhost. Donc pour moi, ces 2 lignes sont à enlever :

Code :
  1. iptables -t nat -A POSTROUTING -s localhost -o ppp0 -j MASQUERADE
  2. iptables -A FORWARD -s localhost -o ppp0 -m state --stat NEW,ESTABLISHED,RELATED -j ACCEPT


Et pour que le localhost accede au net, je pense que cette ligne devrait marcher (à confirmer) :

Code :
  1. iptables -A OUTPUT -s localhost -o ppp0 -j ACCEPT


 
Edit : Vérifie les DNS aussi


Message édité par Nis+ le 31-05-2003 à 23:31:47
Reply

Marsh Posté le 31-05-2003 à 23:42:16    

Ma faible expérience sous iptables m'a appris qu'il faut se méfier du FORWARD.
 
En gros, le FORWARD ne passe ni par INPUT ni par OUTPUT, il traverse littéralement le routeur et le traffic FORWARD n'est donc pas sujet aux règles définies par INPUT et OUTPUT.
Ca m'a joué des tours ce problème.

Reply

Marsh Posté le 01-06-2003 à 00:45:44    

NIS+ a écrit :

Déjà, je pense pas qu'il faille faire du nat pour localhost. Donc pour moi, ces 2 lignes sont à enlever :

Code :
  1. iptables -t nat -A POSTROUTING -s localhost -o ppp0 -j MASQUERADE
  2. iptables -A FORWARD -s localhost -o ppp0 -m state --stat NEW,ESTABLISHED,RELATED -j ACCEPT


Et pour que le localhost accede au net, je pense que cette ligne devrait marcher (à confirmer) :

Code :
  1. iptables -A OUTPUT -s localhost -o ppp0 -j ACCEPT


 
Edit : Vérifie les DNS aussi


 
Dns ok. Meme avec un ping sur ip ca ne marche pas
La ligne ne change rien.
 
 [:spikler]


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 01-06-2003 à 01:20:26    

et comme ca ?

Code :
  1. iptables -A OUTPUT -o ppp0 -j ACCEPT


 
si ca marche pas ben la je sais pas  :sweat:

Reply

Marsh Posté le 01-06-2003 à 01:28:00    

Klaimant > Il semble que ce ne soit pas clair pour toi à quoi correspondent les différentes chaines, voici donc un extrait d'un mémo que je m'étais fait à l'époque où j'avais monté ma gw :
 

Citation :


Les tables de Netfilter
 
- FILTER pour le filtrage
- NAT pour la translation d'adresse
- MANGLE pour marquer les paquets
 
 
Les tables et leurs chaînes
 
Chacune des 3 tables contient plusieurs chaînes dans lesquelles on va définir nos règles.  
 
FILTER
- chaîne INPUT : filtrage des paquets destinés aux processus locaux
- chaîne OUTPUT : filtrage des paquets sortant des processus locaux
- chaîne FORWARD : filtrage des paquets traversant l'hôte dans sa fonction de passerelle
 
 
NAT
- chaîne PREROUTING : translation d'adresse destination
- chaîne POSTROUTING : translation d'adresse source
- chaîne OUTPUT : translation de la destination des paquets générés localement
 
 
MANGLE
Avant : uniquement les chaînes PREROUTING et OUTPUT
Depuis la version 2.4.18 du noyau : toutes les chaînes


 
 
 
localhost désigne normallement la boucle locale, c'est à dire une interface destinée uniquement au dialogue des processus locaux
 
Après t'être assuré notamment que tu as renseigné les adresses du DNS sur ta passerelle
 
 
Pour tout laisser sortir et rentrer entre ta passerelle  et le net :
 

Code :
  1. #on laisse tout rentrer et sortir entre la passerelle et le net
  2. iptables -A INPUT -i ppp0 -j ACCEPT
  3. iptables -A OUTPUT -o ppp0 -j ACCEPT


 
 
Le minimum vital que doit faire ton firewall (empêcher les connexions à l'initiative de l'extérieur sur ta passerelle)
 

Code :
  1. # Toutes les connexions qui sortent de la passerelle vers le Net sont acceptées
  2. iptables -A OUTPUT -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
  3. # Seules les connexions déjà établies ou en relation avec des connexions établies sont acceptées venant du Net vers la passerelle
  4. iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT


 
 
 
 
Pas de masquage pour ta passerelle puisque celle-ci est directement connectée au net, je te suggère ça à la place de ton script  
 
(je zappe le début : réinit des tables, et passage de tout à DROP par défaut, je pense que tu sais comment on fait)
 
 

Code :
  1. #on autorise le traffic sur lo
  2. iptables -A INPUT -i lo -j ACCEPT
  3. iptables -A OUTPUT -o lo -j ACCEPT
  4. #On accepte toutes les connexions venant du reseau local
  5. iptables -A INPUT -i eth0 -j ACCEPT
  6. iptables -A OUTPUT -o eth0 -j ACCEPT
  7. #on met le nat et le masquerading en place
  8. iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
  9. #Toutes les connexions qui sortent du LAN vers le Net sont acceptees
  10. iptables -A FORWARD -i eth0 -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
  11. # Seules les connexions déjà établies ou en relation avec des connexions établies sont acceptées venant du Net vers le LAN
  12. iptables -A FORWARD -i ppp0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
  13. # Toutes les connexions qui sortent de la passerelle vers le Net sont acceptées
  14. iptables -A OUTPUT -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
  15. # Seules les connexions déjà établies ou en relation avec des connexions établies sont acceptées venant du Net vers la passerelle
  16. iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT


 
 
Il va sans dire que ceci doit être affiné si tu veux un minimum de sécurité, avec le script que je te propose, tu as uniquement :
- translation d'adresses
- interdiction des connexions à l'initiative de l'extérieur
 
ça va pas chier loin :o


Message édité par C_Po_Ma_Faute le 01-06-2003 à 01:40:58
Reply

Marsh Posté le 01-06-2003 à 10:15:14    

C_Po_Ma_Faute a écrit :


 

Code :
  1. #on laisse tout rentrer et sortir entre la passerelle et le net
  2. iptables -A INPUT -i ppp0 -j ACCEPT
  3. iptables -A OUTPUT -o ppp0 -j ACCEPT


 
 


 
Ca je voudrais pas justement, je voudrais que la passerelle soit aussi protégée. Au point de vue sécurité, je trouve çà un peu bête de laisser tous les ports ouverts sur la passerelle étant donné que c'est le noeud du réseau.
 
J'ai bien revérifier mes dns, mais par exemple, lorsque j'active juste le masquering (tout ouvert, pas de règles de filtrage), tout passe très bien.
 
 [:spikler]
 
EDIT : il me manquait ca !!
 

Code :
  1. # Toutes les connexions qui sortent de la passerelle vers le Net sont acceptées 
  2.   iptables -A OUTPUT -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT


Message édité par Klaimant le 01-06-2003 à 10:29:04

---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 01-06-2003 à 10:43:37    

Je pensais que le fait que la passerelle ne puisse pas sortir à l'extérieur était la solution de mon problème avec TeamSpeak (www.teamspeak.org).
 
J'ai bien sur ouvert le port exterieur 8765 en tcp et udp :
 

Code :
  1. # Acces au TS
  2. iptables -A INPUT -p tcp --dport 8765 -i ppp0 -j ACCEPT
  3. iptables -A OUTPUT -p tcp --dport 8765 -o ppp0 -j ACCEPT
  4. iptables -A INPUT -p udp --dport 8765 -i ppp0 -j ACCEPT
  5. iptables -A OUTPUT -p udp --dport 8765 -o ppp0 -j ACCEPT


 
Mais les clients externes lorsqu'il se connect ont l'erreur suivant :
 

Code :
  1. erreur 100 : do not receive UPD from server


 
J'ai testé avec tout ouvert, et celà marche très bien. Quelqu'un aurait une idée du problème.
 
syslog :
 

Code :
  1. Jun  2 10:48:12 OuBa TSS[9317]: tsserver.log: CMD <- hReply: 1 ClientLogin ClientName: tutu ClientPw: pass ClientVer: 1.5.0
  2. Jun  2 10:48:12 OuBa TSS[9317]: tsserver.log: Created client tutu
  3. Jun  2 10:48:12 OuBa TSS[9317]: tsserver.log: Assigned playerId for client tutu[2]
  4. Jun  2 10:48:24 OuBa TSS[9317]: tsserver.log: TCP/IP Disconnected ClientId: 2 ClientName: tutu
  5. Jun  2 10:48:24 OuBa TSS[9317]: tsserver.log: Distroying client tutu[2]


 
 [:spikler]


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 01-06-2003 à 12:25:45    

Klaimant a écrit :

Je pensais que le fait que la passerelle ne puisse pas sortir à l'extérieur était la solution de mon problème avec TeamSpeak (www.teamspeak.org).
 
J'ai bien sur ouvert le port exterieur 8765 en tcp et udp :
 

Code :
  1. # Acces au TS
  2. iptables -A INPUT -p tcp --dport 8765 -i ppp0 -j ACCEPT
  3. iptables -A OUTPUT -p tcp --dport 8765 -o ppp0 -j ACCEPT
  4. iptables -A INPUT -p udp --dport 8765 -i ppp0 -j ACCEPT
  5. iptables -A OUTPUT -p udp --dport 8765 -o ppp0 -j ACCEPT


 
Mais les clients externes lorsqu'il se connect ont l'erreur suivant :
 

Code :
  1. erreur 100 : do not receive UPD from server


 
J'ai testé avec tout ouvert, et celà marche très bien. Quelqu'un aurait une idée du problème.
 
syslog :
 

Code :
  1. Jun  2 10:48:12 OuBa TSS[9317]: tsserver.log: CMD <- hReply: 1 ClientLogin ClientName: tutu ClientPw: pass ClientVer: 1.5.0
  2. Jun  2 10:48:12 OuBa TSS[9317]: tsserver.log: Created client tutu
  3. Jun  2 10:48:12 OuBa TSS[9317]: tsserver.log: Assigned playerId for client tutu[2]
  4. Jun  2 10:48:24 OuBa TSS[9317]: tsserver.log: TCP/IP Disconnected ClientId: 2 ClientName: tutu
  5. Jun  2 10:48:24 OuBa TSS[9317]: tsserver.log: Distroying client tutu[2]


 
 [:spikler]  


 
Si j'ai bien compris tu as un serveur sur ta passerelle qui écoute sur le port 8765 en TCP et idem en UDP
 
il faut donc que tu laisses entrer les paquets avec comme port destination 8765 et sortir ceux qui ont comme port source 8765, ça donne donc :
 

Code :
  1. # Acces au TS
  2. iptables -A INPUT -p tcp --dport 8765 -i ppp0 -j ACCEPT
  3. iptables -A OUTPUT -p tcp --sport 8765 -o ppp0 -j ACCEPT
  4. iptables -A INPUT -p tcp --dport 8765 -i ppp0 -j ACCEPT
  5. iptables -A OUTPUT -p tcp --sport 8765 -o ppp0 -j ACCEPT


Message édité par C_Po_Ma_Faute le 01-06-2003 à 12:26:35
Reply

Marsh Posté le 01-06-2003 à 12:30:02    

A mais oui je suis bete j'ai mis que des dport...
 
Excuse-moi.
 
Je vais tester ca
 
 [:spikler]


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 01-06-2003 à 12:30:02   

Reply

Marsh Posté le 01-06-2003 à 13:59:22    

Bon j'ai remodif et retesté, et les clients externe se connectant sur ppp0 se font jeter, enfin destroyer pour etre exact ;)
 
 [:spikler]


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 01-06-2003 à 16:06:56    

Je résume :
 
- lorsque tu ouvres tout  : ça passe
- en ouvrant uniquement le port 8765 en TCP et idem en UDP : ça ne passe pas
 
 
Il y fort à parier que ton serveur TeamSpeak n'utilise pas uniquement ces ports.

Reply

Marsh Posté le 01-06-2003 à 22:19:48    

C_Po_Ma_Faute a écrit :

Je résume :
 
- lorsque tu ouvres tout  : ça passe
- en ouvrant uniquement le port 8765 en TCP et idem en UDP : ça ne passe pas
 
 
Il y fort à parier que ton serveur TeamSpeak n'utilise pas uniquement ces ports.


 
Correct, mais dans le fichier de config du zinzin, il n'y a qu'une ligne parlant du port et elle a comme valeur 8765.
 
Bon ben j'irais faire un tour chez l'éditeur merci bien.
 
 [:spikler]


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed