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 plus de 6 ans. Mis à jour il y a plus de 6 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 plus de 6 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 plus de 6 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 plus de 6 ans

  • Tâche parente mis à #28737

#3 Mis à jour par Joël Cuissinat il y a plus de 6 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 plus de 6 ans

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

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

  • Assigné à mis à Joël Cuissinat

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

Corrigé pour EOLE>=2.6.1

#7 Mis à jour par Joël Cuissinat il y a plus de 6 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 6 ans

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

Publié en stable le 20/08/2019.

Formats disponibles : Atom PDF