Era24 » Historique » Version 17
« Précédent -
Version 17/24
(diff) -
Suivant » -
Version actuelle
Gwenael Remond, 28/01/2013 17:10
Era24¶
Décoreller le backend du frontend¶
- commencer par faire le bilan des types de règles générés par Era
- 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
- SNAT
- DNAT
- 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
- 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