Projet

Général

Profil

Era24 » Historique » Version 16

Gwenael Remond, 28/01/2013 17:08

1 1 Gwenael Remond
h1. Era24
2 1 Gwenael Remond
3 1 Gwenael Remond
h2. Décoreller le backend du frontend
4 1 Gwenael Remond
5 9 Gwenael Remond
* commencer par faire le bilan des types de règles générés par Era
6 4 Gwenael Remond
7 4 Gwenael Remond
h2. bilan des règles iptables générées par Era 
8 1 Gwenael Remond
9 12 Gwenael Remond
h3. règles sandards
10 12 Gwenael Remond
11 12 Gwenael Remond
* <code>BasicDirectiveProcessor</code>
12 12 Gwenael Remond
13 15 Gwenael Remond
* ACCEPT
14 1 Gwenael Remond
15 15 Gwenael Remond
<pre>
16 15 Gwenael Remond
/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
17 15 Gwenael Remond
</pre>
18 1 Gwenael Remond
19 15 Gwenael Remond
* DROP
20 1 Gwenael Remond
21 15 Gwenael Remond
<pre>
22 15 Gwenael Remond
/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
23 15 Gwenael Remond
</pre>
24 15 Gwenael Remond
25 1 Gwenael Remond
* SNAT
26 15 Gwenael Remond
27 12 Gwenael Remond
28 12 Gwenael Remond
* DNAT
29 12 Gwenael Remond
30 12 Gwenael Remond
* REDIRECT
31 12 Gwenael Remond
32 16 Gwenael Remond
<pre>
33 16 Gwenael Remond
/sbin/iptables -t filter -A ext-bas  -p tcp --dport 56 -j ACCEPT
34 16 Gwenael Remond
/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
35 16 Gwenael Remond
</pre>
36 16 Gwenael Remond
37 13 Gwenael Remond
* FORWARD
38 13 Gwenael Remond
39 13 Gwenael Remond
<pre>
40 13 Gwenael Remond
    if directive.action in (1, 2): # ACTION_DENY, ACTION_ALLOW
41 13 Gwenael Remond
        return BasicDirectiveProcessor(directive, default_policy=default_policy)
42 13 Gwenael Remond
    if directive.action == 4: # ACTION_REDIRECT
43 13 Gwenael Remond
        return RedirectDirectiveProcessor(directive)
44 13 Gwenael Remond
    if directive.action == 8: # ACTION_DNAT
45 13 Gwenael Remond
        return DNATDirectiveProcessor(directive, is_container)
46 13 Gwenael Remond
    if directive.action == 16: # ACTION_MASK
47 13 Gwenael Remond
        return SNATDirectiveProcessor(directive)
48 13 Gwenael Remond
    if directive.action == 32: # ACTION_FORWARD
49 13 Gwenael Remond
        return ForwardDirectiveProcessor(directive)
50 13 Gwenael Remond
</pre>
51 13 Gwenael Remond
52 12 Gwenael Remond
53 12 Gwenael Remond
h2. règles spécifiques 
54 12 Gwenael Remond
55 6 Gwenael Remond
* directive avec log
56 1 Gwenael Remond
* directive avec time
57 8 Gwenael Remond
58 8 Gwenael Remond
* possibilités d'inversions :
59 8 Gwenael Remond
60 8 Gwenael Remond
  * inversion d'une source (pour une source unique)
61 1 Gwenael Remond
  * inversion d'une destination (pour une destination unique)
62 9 Gwenael Remond
  * inversion d'un service (pas d'un groupe de services)
63 6 Gwenael Remond
64 6 Gwenael Remond
types de piles 
65 6 Gwenael Remond
66 6 Gwenael Remond
* pile principale <code>rules</code>
67 6 Gwenael Remond
* pile secondaire (à la fin), pour les règles implicites <code>implicit_rules</code> 
68 6 Gwenael Remond
69 11 Gwenael Remond
création d'une règle dans <code>processor.py</code>  : 
70 6 Gwenael Remond
71 6 Gwenael Remond
<pre>
72 6 Gwenael Remond
   def create_rule(self, target, chain_name, table, match_params, service_param, param_list):
73 6 Gwenael Remond
        # On crée la règle avec la bonne chaine
74 6 Gwenael Remond
        rule = TargettedRule(target, chain_name, table)
75 6 Gwenael Remond
        # On ajoute tous les paramètres à la règle
76 6 Gwenael Remond
        rule.add_parameter(service_param)
77 6 Gwenael Remond
        for param in param_list:
78 6 Gwenael Remond
            rule.add_parameter(param)
79 6 Gwenael Remond
        # on process les paramètre du module time
80 6 Gwenael Remond
        self.process_time(rule)
81 6 Gwenael Remond
        return rule
82 1 Gwenael Remond
</pre>
83 11 Gwenael Remond
84 11 Gwenael Remond
<code>iptrules.ParameterFactory</code> permet de générer des bouts de règles en une seule fois
85 6 Gwenael Remond
86 6 Gwenael Remond
87 1 Gwenael Remond
* règle de log
88 1 Gwenael Remond
89 1 Gwenael Remond
exemple DROP :
90 1 Gwenael Remond
91 1 Gwenael Remond
<pre>
92 1 Gwenael Remond
/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"
93 1 Gwenael Remond
/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
94 1 Gwenael Remond
</pre>
95 1 Gwenael Remond
96 2 Gwenael Remond
exemple ACCEPT avec une règle de log qui a une plage horaire
97 3 Gwenael Remond
98 3 Gwenael Remond
<pre>
99 2 Gwenael Remond
/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"
100 2 Gwenael Remond
/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
101 2 Gwenael Remond
/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
102 3 Gwenael Remond
</pre>
103 2 Gwenael Remond
104 1 Gwenael Remond
exemple SNAT : 
105 1 Gwenael Remond
106 1 Gwenael Remond
<pre>
107 1 Gwenael Remond
/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
108 1 Gwenael Remond
/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"
109 1 Gwenael Remond
/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
110 1 Gwenael Remond
</pre>
111 12 Gwenael Remond
112 14 Gwenael Remond
113 14 Gwenael Remond
* marquage (MARK) 
114 14 Gwenael Remond
115 14 Gwenael Remond
TODO 
116 12 Gwenael Remond
117 12 Gwenael Remond
* règle spécifique container 
118 12 Gwenael Remond
119 12 Gwenael Remond
<code>build_container_rule()</code>
120 12 Gwenael Remond
121 12 Gwenael Remond
TODO 
122 12 Gwenael Remond
123 1 Gwenael Remond
124 1 Gwenael Remond
h2. bilan des règles ipsets générées par Era
125 9 Gwenael Remond
126 9 Gwenael Remond
TODO 
127 9 Gwenael Remond
128 9 Gwenael Remond
h2. bilan des règles d'authentification (nufw) générée par Era
129 5 Gwenael Remond
130 5 Gwenael Remond
TODO