Projet

Général

Profil

Era24 » Historique » Version 21

Gwenael Remond, 28/01/2013 17:25

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