Projet

Général

Profil

Tâche #28738

Scénario #28737: Traitement express MEN (27-35)

Bug dans la génération des règles iptables de log en cas de DNAT sur des ports différents

Ajouté par Laurent HAEFFELE il y a presque 5 ans. Mis à jour il y a plus de 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
11/07/2019
Echéance:
% réalisé:

100%

Restant à faire (heures):
0.0

Description

Nous avons sur certains établissements des règles de DNAT depuis l'extérieur vers des machines internes à l'établissement.
Les règles iptables générées par ERA ne sont pas correctes car la règles de LOG conserve le port initial alors que la règles d'autorisation utilise bien le port destination.
Par exemple si nous redirigeons les flux entrant sur le port 22222 du amon vers le port 3389 de la machine 10.168.253.221, cela va générer les règles suivantes :

/sbin/iptables -t nat -A PREROUTING -p tcp --dport 22222 --tcp-flags SYN,RST,ACK SYN -i eth0 -s A.B.C.D/255.255.255.255 -d 0.0.0.0/0.0.0.0 -j DNAT --to-destination 10.168.253.221:3389
/sbin/iptables -t filter -A ext-z1_ -p tcp --dport 22222 --tcp-flags SYN,RST,ACK SYN -i eth0 -o eth2 -s A.B.C.D/255.255.255.255 -d 10.168.253.221 -j LOG --log-prefix "iptables: era ext-bas" 
/sbin/iptables -t filter -A ext-z1_ -p tcp --dport 3389 --tcp-flags SYN,RST,ACK SYN -i eth0 -o eth2 -s A.B.C.D/255.255.255.255 -d 10.168.253.221 -j ACCEPT

L'erreur se trouve dans la règle de log qui devrait être :

/sbin/iptables -t filter -A ext-z1_ -p tcp --dport 3389 --tcp-flags SYN,RST,ACK SYN -i eth0 -o eth2 -s A.B.C.D/255.255.255.255 -d 10.168.253.221 -j LOG --log-prefix "iptables: era ext-bas" 

Révisions associées

Révision 67f233e0 (diff)
Ajouté par Joël Cuissinat il y a presque 5 ans

NAT: log iptable rule dport must be the natted port

Otherwise the LOG --dport is the external opened port which can't match
in filter table.

  • era/backend/processors.py (DNATDirectiveProcessor.process): move the
    "process_log()" call to use the natted "service_param2".

Ref: #28738

Historique

#1 Mis à jour par Joël Cuissinat il y a presque 5 ans

Scénario pour reproduire une situation équivalente dans le contexte etb1.amon :
era -f /usr/share/era/modeles/4zones.xml
  • exterieur->dmz
  • Ajouter
    • Service : faire glisser un service avec port (ex : "8500")
    • Action : DNAT + faire glisser une extrémité DMZ (ex : serveur_scribe_dmz) + nouveau port : 3389
    • cocher journaliser
  • Valider, tout fermer et enregistrer

Application :

bastion regen
iptables-save | grep -E "8500|3389" 

Résultat :
-A PREROUTING -i ens4 -p tcp -m tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN -j DNAT --to-destination 10.1.3.5:3389
-A ext-dmz -d 10.1.3.5/32 -i ens4 -o ens7 -p tcp -m tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN -j LOG --log-prefix "iptables: era ext-dmz" 
-A ext-dmz -d 10.1.3.5/32 -i ens4 -o ens7 -p tcp -m tcp --dport 3389 --tcp-flags SYN,RST,ACK SYN -j ACCEPT

#2 Mis à jour par Joël Cuissinat il y a presque 5 ans

  • Tâche parente mis à #28737

#3 Mis à jour par Joël Cuissinat il y a presque 5 ans

Grâce l'expérience à tâtons, j'obtiens un point d'entrée à la ligne 530 de era/backend/processors.py ...

#4 Mis à jour par Joël Cuissinat il y a presque 5 ans

  • Projet changé de ERA à Distribution EOLE
  • Statut changé de Nouveau à En cours

#5 Mis à jour par Joël Cuissinat il y a presque 5 ans

  • Assigné à mis à Joël Cuissinat

#6 Mis à jour par Joël Cuissinat il y a presque 5 ans

Corrigé pour EOLE>=2.6.1

#7 Mis à jour par Joël Cuissinat il y a presque 5 ans

  • Statut changé de En cours à Résolu
  • % réalisé changé de 0 à 100

#8 Mis à jour par Joël Cuissinat il y a plus de 4 ans

  • Statut changé de Résolu à Fermé
  • Restant à faire (heures) mis à 0.0

Publié en stable le 20/08/2019.

Formats disponibles : Atom PDF