Probleme reception sms avec firewall

Bonjour à tous,

J’ai un soucis avec la configuration de mon firewall, mon entreprise utilise la plateforme EsendEX pour l’envoi de sms.
J’ai appelé EsendEX pour leur demander quels ports ils utilisent pour échanger de leurs serveurs vers l’entreprise. Ils m’ont répondu le port http et https donc 80 et 443.

Un manipulation simple mais qui ne fonctionne pas :s

Quand je met en route mon firewall, aucun sms ne sont recu :s.

Ma configuration : Serveur Debian 6
Contenu de /etc/firewall/main :

#!/bin/bash

IPTABLES="/sbin/iptables"

#Vidage des chaines:
$IPTABLES -F
$IPTABLES -X
#De la table NAT
$IPTABLES -t nat -F
$IPTABLES -t nat -X

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT

#Local
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

#Ping
$IPTABLES -A INPUT -p icmp -j ACCEPT
$IPTABLES -A OUTPUT -p icmp -j ACCEPT

#FTP
$IPTABLES -A INPUT -p tcp --dport 20:21 -j ACCEPT
#$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 20:21 -j ACCEPT

#SSH
$IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --sport 22 -j ACCEPT

#SMTP
$IPTABLES -A OUTPUT -p tcp --dport 25 -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 25 -j ACCEPT

#SMS Esendex
#$IPTABLES -A INPUT -p tcp --sport 9200 --dport 1024: -j ACCEPT
#$IPTABLES -A OUTPUT -p tcp --sport 1024: --dport 9200 -j ACCEPT

#DNS
$IPTABLES -A INPUT -p udp --sport 53 -s X.X.X.X -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 53 -d X.X.X.X -j ACCEPT

#HTTP
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT
$IPTABLES -A INPUT -p udp --dport 80 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --sport 80 -j ACCEPT
$IPTABLES -A OUTPUT -p udp --sport 80 -j ACCEPT

#NTP
$IPTABLES -A INPUT -p udp --dport 123 -j ACCEPT
$IPTABLES -A OUTPUT -p udp --sport 123 -j ACCEPT

#HTTPS
$IPTABLES -A INPUT -p tcp --dport 443 -j ACCEPT
$IPTABLES -A INPUT -p udp --dport 443 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --sport 443 -j ACCEPT
$IPTABLES -A OUTPUT -p udp --sport 443 -j ACCEPT

Voila, ce que vous voyez en commenté, port 9200 c’est en fait sur leur site j’ai recherché avant de les appeler, et j’avais trouvé ceci esendex.fr/Developpeurs/Conc … specifique donc je n’ai pas trop compris. En eyant appelé toute façon on m’a dit que c’était 80 et 443.

Pouvez vous m’aider ? :s
Merci

Ce jeu de règles iptables n’autorise pas les communications sortantes en HTTP et HTTPS, seulement les entrantes. Je pense que le problème vient de là.

Conseil général : pour déterminer ce qui est bloqué, ajouter des règles LOG à la fin de chaque chaîne, faire fonctionner l’application et examiner les logs du noyau.

Avis perso : ce jeu de règles iptables est très médiocre.
Notamment, se baser sur le port source pour accepter les paquets de réponse est 1) dépassé et 2) risqué. Il vaut mieux utiliser l’état de suivi de connexion (-m state ou -m conntrack). Typiquement :

[code]# autoriser les paquets des connexion établies en entrée et sortie

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

autoriser les connexions TCP sortantes vers le port NNN

iptables -A OUTPUT -p tcp --dport NNN -m state --state NEW -j ACCEPT

autoriser les connexions TCP entrantes vers le port NNN

iptables -A INPUT -p tcp --dport NNN -m state --state NEW -j ACCEPT
[/code]
(Il y aurait bien d’autres choses à dire encore.)

Bonjour,

Merci pour votre réponse

Je suis novice dans la configuration d’un parefeu. Donc j’ai fait comme je pouvais mais je n’ai pas compris justement à quoi sert les règles LOG, j’ai beau regarder sur internet, je n’arrive pas a comprendre comment on peut mettre ça en place.

Ma regle n’autorise pas les flux sortant ?

Ici sur mon serveur je lui dit bien qu’il peut recevoir des info venant du port 80 :
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT
$IPTABLES -A INPUT -p udp --dport 80 -j ACCEPT

Et il peut en envoyer de son port 80 :
$IPTABLES -A OUTPUT -p tcp --sport 80 -j ACCEPT
$IPTABLES -A OUTPUT -p udp --sport 80 -j ACCEPT

C’est pas ça ? :confused:

Et je n’ai pas trop saisi le rôle de NEW,ESTABLISHED et RELATED,
New j’autorise seulement les nouvelles connexions ?
Si je fait $IPTABLES -A OUTPUT -p tcp --sport 80 -m state --state NEW -j ACCEPT cela veut dire que je n’accepte que les nouvelles connexions sur le port 80 ?
Mais si je ne le met pas, sa change quoi ? une connexion internet est toujours nouvelle non ? sauf pour par exemple un serveur web c’est bien ça ?
Established c’est une connexion déjà établie ? et related je ne vois pas du tout.

Pourquoi mettre a la fois established et a la fois related ?

J’ai fait des règles simple mais ducou c’est compliqué pour moi de comprendre si vous pouvez m’aider :blush:

Merci

Iptables a une page de manuel, qu’il est profitable de consulter.

[quote=“flyght”]Ici sur mon serveur je lui dit bien qu’il peut recevoir des info venant du port 80 :
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT
$IPTABLES -A INPUT -p udp --dport 80 -j ACCEPT

Et il peut en envoyer de son port 80 :
$IPTABLES -A OUTPUT -p tcp --sport 80 -j ACCEPT
$IPTABLES -A OUTPUT -p udp --sport 80 -j ACCEPT

C’est pas ça ? :/[/quote]
Non.
Déjà, tu peux oublier UDP : HTTP n’utilise que TCP pour son transport.
Ensuite, ta règle INPUT accepte les paquets entrants à destination du port 80 (–dport), donc vers un serveur web local. Quant à la rège OUTPUT, elle accepte les paquets sortants provenant du port 80 (–dport), donc a priori les paquets émis par un serveur web local. Toi, tu veux au contraire communiquer avec un serveur web distant, donc envoyer des paquets à son port 80 et en recevoir de son port 80. Il faudrait donc intervertir --dport et --sport, mais comme je l’ai déjà écrit il est préférable d’utiliser le suivi de connexion.

[quote=“flyght”]Et je n’ai pas trop saisi le rôle de NEW,ESTABLISHED et RELATED,
New j’autorise seulement les nouvelles connexions ?[/quote]
Le suivi de connexion surveille les paquets entrants et sortants, les classe en connexions et leur attribue un état.

  • NEW : paquet qui crée une nouvelle connexion (qui n’existait pas auparavant)
  • ESTABLISHED : paquet qui appartient à une connexion existante
  • RELATED : paquet lié à une connexion existante (mais qui n’en fait pas partie à strictement parler, comme par exemple un paquet de contrôle ICMP ou un paquet qui crée une connexion de données FTP liée à une connexion de commande FTP existante)
  • INVALID : paquet qui ne correspond à aucune connexion existante et n’en crée par une nouvelle.

Mais il faut bien comprendre un point important : le suivi de connexion gère les connexions (flux de paquets faisant partie d’une même communication), mais les règles iptables traitent des paquets individuels.

Avec le squelette de règles que j’ai proposé plus haut, les deux premières règles se chargent des paquets appartenant ou liés aux connexion existantes. Ensuite, il suffit d’ajouter une règle pour accepter le paquet qui débute chaque type de connexion voulu.

Bonjour,

Merci beaucoup de conssacrer du temps pour m’expliquer.

Ah ok je viens de bien saisir le sens de mes règles, en effet ça n’allai pas, merci de m’avoir corrigé.

J’ai bien pris le temps de lire le man iptables en revanche ça reste hyper flou, c’est pour ça que j’ai fini par écrire sur le forum. Les explications du man sont plutot brèves mais pas reellement explicite je trouve.

Je vais essayé de me pencher sur les règles NEW,ESTABLISHED,RELATED et LOG car je ne comprend vraiment pas, mais quand je ne met rien cela fonctionne bien.

Merci

En attendant j’ai donc bien mis la règle dans le bon sens et cela fonctionne.
Les SMS sont bien reçu.

Merci beaucoup pour votre aide