Projet

Général

Profil

Era24

Décoreller le backend du frontend

  • types de règles générés par Era
    • règles générées par des directives -> OK
    • règles générées par le compilateur lui-même (politique par défaut, netbios, icmp, inclusions statiques...) -> TODO
  • rappel : les types de directives :
    if directive.action in (1, 2): # ACTION_DENY, ACTION_ALLOW
        return BasicDirectiveProcessor(directive, default_policy=default_policy)
    if directive.action == 4: # ACTION_REDIRECT
        return RedirectDirectiveProcessor(directive)
    if directive.action == 8: # ACTION_DNAT
        return DNATDirectiveProcessor(directive, is_container)
    if directive.action == 16: # ACTION_MASK
        return SNATDirectiveProcessor(directive)
    if directive.action == 32: # ACTION_FORWARD
        return ForwardDirectiveProcessor(directive)

bilan des règles iptables générées par Era

règles sandards

  • BasicDirectiveProcessor
  • ACCEPT
/sbin/iptables -t filter -A ext-bas -m state --state NEW -p tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN  -s 0/0 -d 0.0.0.0 -j ACCEPT
  • DROP
/sbin/iptables -t filter -A bas-ext -m state --state NEW -p tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN  -s 0.0.0.0 -d 0/0 -j DROP

directive non basiques :

  • SNAT
/sbin/iptables -t nat -A POSTROUTING -p tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN -s 0/0 -d 0.0.0.0 -j ACCEPT
/sbin/iptables -t filter -A ext-bas -p tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN  -s 0/0 -d 0.0.0.0 -j ACCEPT
  • DNAT
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN  -s 0/0 -d 0.0.0.0 -j ACCEPT
  • REDIRECT
/sbin/iptables -t filter -A ext-bas  -p tcp --dport 56 -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN  -s 0/0 -d 0.0.0.0 -j REDIRECT --to-ports 56
  • FORWARD
/sbin/iptables -t filter -I FORWARD -p tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN -s 0/0 -d 0.0.0.0 -j ACCEPT
/sbin/iptables -t filter -I FORWARD -p tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN -s 0/0 -d 0.0.0.0 -m state --state RELATED,ESTABLISHED -j ACCEPT

règles spécifiques

  • directive avec log
  • directive avec time
  • possibilités d'inversions :
    • inversion d'une source (pour une source unique)
    • inversion d'une destination (pour une destination unique)
    • inversion d'un service (pas d'un groupe de services)

types de piles

  • pile principale rules
  • pile secondaire (à la fin), pour les règles implicites implicit_rules

création d'une règle dans processor.py :

   def create_rule(self, target, chain_name, table, match_params, service_param, param_list):
        # On crée la règle avec la bonne chaine
        rule = TargettedRule(target, chain_name, table)
        # On ajoute tous les paramètres à la règle
        rule.add_parameter(service_param)
        for param in param_list:
            rule.add_parameter(param)
        # on process les paramètre du module time
        self.process_time(rule)
        return rule
iptrules.ParameterFactory permet de générer des bouts de règles en une seule fois
  • règle de log

exemple DROP :

/sbin/iptables -t filter -A dmz-ext -m state --state NEW -p tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN -i eth3 -o %%interface_gw -s 0/0 -d 0/0 -j LOG --log-prefix "iptables: era dmz-ext" 
/sbin/iptables -t filter -A dmz-ext -m state --state NEW -p tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN -i eth3 -o %%interface_gw -s 0/0 -d 0/0 -j DROP

exemple ACCEPT avec une règle de log qui a une plage horaire

/sbin/iptables -t filter -A dmz-ext -m state --state NEW -p tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN -i eth3 -o %%interface_gw -s 0/0 -d 0/0 -m time --timestart 10:00 --timestop 12:00 --weekdays Mon,Tue -j LOG --log-prefix "iptables: era dmz-ext" 
/sbin/iptables -t filter -A dmz-ext -m state --state NEW -p tcp --dport 8500 --tcp-flags SYN,RST,ACK SYN -i eth3 -o %%interface_gw -s 0/0 -d 0/0 -m time --timestart 10:00 --timestop 12:00 --weekdays Mon,Tue -j DROP
/sbin/iptables -t filter -A dmz-ext -i eth3 -o %%interface_gw -s 19.168.234.15/255.255.255.255 -d 0/0 -j ACCEPT

exemple SNAT :

/sbin/iptables -t nat -A POSTROUTING -o %%interface_gw -s 19.168.234.15/255.255.255.255 -d 0/0 -j SNAT --to-source %%adresse_ip_eth0
/sbin/iptables -t filter -A dmz-ext -i eth3 -o %%interface_gw -s 19.168.234.15/255.255.255.255 -d 0/0 -j LOG --log-prefix "iptables: era dmz-ext" 
/sbin/iptables -t filter -A dmz-ext -i eth3 -o %%interface_gw -s 19.168.234.15/255.255.255.255 -d 0/0 -j ACCEPT
  • marquage (MARK)

TODO

  • ipsec

TODO

  • règle spécifique container
build_container_rule()

TODO

bilan des règles ipsets générées par Era

TODO

bilan des règles d'authentification (nufw) générée par Era

TODO