6 modprobe iptable_filter
8 modprobe ip_conntrack_ftp
16 NET_FAI=77.70.183.120/29
17 NET_DMZ=192.168.10.0/24
18 NET_RPV_BANGUI=10.39.0.0/20
19 NET_RPV_AUF=10.0.0.0/8
20 NET_MONTREAL=199.84.140.0/24
21 NET_USAGER=192.168.0.0/24
26 IP_VOIP=192.168.10.5 #XXX
28 NAT_USAGER=77.70.183.124
30 NAT_DMZ_DNS=77.70.183.125
31 NAT_DMZ_MAIL=77.70.183.125
32 NAT_DMZ_WEB=77.70.183.125
33 NAT_DMZ_MONTREAL=10.39.0.254
51 # par defaut on ferme tout (sauf en sortie)
56 #commmuniction en localhost
57 $IPF -A INPUT -i lo -j ACCEPT
58 $IPF -A OUTPUT -o lo -j ACCEPT
60 #full accès vers montréal
61 $IPF -A FORWARD -d $NET_MONTREAL -j ACCEPT
63 #Pas de sortie en port 25 excepté sur la messagerie interne
64 $IPF -A OUTPUT -p tcp -d $IP_MAIL --dport 25 -j ACCEPT
65 $IPF -A OUTPUT -p tcp --dport 25 -j DROP
67 # on accepte les flux en cours
68 $IPF -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
69 $IPF -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
71 # on accepte toujours les pings
72 $IPF -A INPUT -p icmp --icmp-type echo-request \
73 -m limit --limit 5/second -j ACCEPT
74 $IPF -A FORWARD -p icmp --icmp-type echo-request \
75 -m limit --limit 5/second -j ACCEPT
78 $IPF -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
80 ## le reste avec des chaines perso
81 # En provenance de l'extérieur pour le parefeu
83 $IPF -A INPUT -i $IF_INTERNET -j from-outside
86 $IPF -A ScanD -m limit --limit 1/s -j LOG \
87 --log-prefix "[Port Scan?]DROP "
90 $IPF -A from-outside -p tcp --tcp-flags ALL NONE -j ScanD
91 $IPF -A from-outside -p tcp --tcp-flags SYN,FIN SYN,FIN -j ScanD
92 $IPF -A from-outside -p tcp --tcp-flags SYN,RST SYN,RST -j ScanD
93 $IPF -A from-outside -p tcp --tcp-flags FIN,RST FIN,RST -j ScanD
94 $IPF -A from-outside -p tcp --tcp-flags ACK,FIN FIN -j ScanD
95 $IPF -A from-outside -p tcp --tcp-flags ACK,PSH PSH -j ScanD
96 $IPF -A from-outside -p tcp --tcp-flags ACK,URG URG -j ScanD
99 $IPF -A DDoS -m limit --limit 5/s --limit-burst 10 -j RETURN
100 $IPF -A DDoS -j LOG --log-prefix "[DOS Attack/SYN Scan?]DROP "
103 $IPF -A from-outside -p tcp --tcp-flags SYN,RST,ACK SYN -j DDoS
105 $IPF -A from-outside -d 255.255.255.255 -m limit --limit 1/s -j LOG --log-prefix "[INPUT Broadcast]DROP "
106 $IPF -A from-outside -d 255.255.255.255 -j DROP
109 # FORWARD en provenance de la DMZ
111 $IPF -A FORWARD -i $IF_DMZ -j from-dmz
112 $IPF -A from-dmz ! -o $IF_INTERNET -j ACCEPT
114 $IPF -A from-dmz -s $IP_VOIP -p udp --dport 4569 -j ACCEPT
115 $IPF -A from-dmz -s $IP_VOIP -p tcp --dport 4569 -j ACCEPT
118 $IPF -A from-dmz -o $IF_INTERNET -j dmz-internet
120 $IPF -A dmz-internet -s $IP_DNS -p udp --dport 53 -j ACCEPT
121 $IPF -A dmz-internet -s $IP_DNS -p tcp -m state --STATE NEW \
124 $IPF -A dmz-internet -s $IP_MAIL -p tcp -m multiport \
125 --dport 25,587 -j ACCEPT
127 $IPF -A dmz-internet -s $IP_WEB -p tcp -m state --state NEW \
130 # FORWARD en direction de la DMZ
132 $IPF -A FORWARD -o $IF_DMZ -j to-dmz
134 $IPF -A to-dmz -d $IP_DNS -p udp --dport 53 -j ACCEPT
135 $IPF -A to-dmz -d $IP_DNS -p tcp -m state --state NEW \
138 $IPF -A to-dmz -d $IP_MAIL -p tcp -m state --state NEW \
139 -m multiport --dport 25,143,587,993 -j ACCEPT
141 $IPF -A to-dmz -d $IP_WEB -p tcp -m state --state NEW \
142 -m multiport --dport 80,443 -j ACCEPT
144 $IPF -A to-dmz -d $IP_VOIP -p tcp -m state --state NEW \
145 --dport 4569 -j ACCEPT
146 $IPF -A to-dmz -d $IP_VOIP -p udp --dport 4569 -j ACCEPT
148 # FORWARD vers montréal
150 $IPF -A FORWARD -o $IF_IPSEC -j to-montreal
152 $IPF -A to-montreal -i $IF_RPV -j ACCEPT
154 $IPF -A to-montreal -i $IF_DMZ -p tcp -m state --state NEW \
155 --dport 53 -s $IP_DNS -j ACCEPT
156 $IPF -A to-montreal -i $IF_DMZ -p udp --dport 53 -j ACCEPT
158 $IPF -A to-montreal -j LOG --log-prefix " TROU RPV: "
159 $IPF -A to-montreal -j REJECT
162 #En provenance du RPV interne, en FORWARD
163 $IPF -N from-inside-rpv
164 $IPF -A FORWARD -i $IF_RPV -j from-inside-rpv
166 for TCP in 20 21 22 80 110 123 220 443 587 993 995 3690 5222 \
167 5223 5050 6667 11371 8443 9418
169 $IPF -A from-inside-rpv -o $IF_INTERNET -p tcp --dport $TCP \
170 -m state --state NEW -j ACCEPT
173 #En provenance du LAN, en FORWARD
175 $IPF -A FORWARD -i $IF_USAGER -j from-inside
177 for TCP in 20 21 22 80 110 123 220 443 587 993 995 3690 5222 \
178 5223 5050 6667 11371 8443 9418
180 $IPF -A from-inside -o $IF_INTERNET -p tcp --dport $TCP \
181 -m state --state NEW -j ACCEPT
186 # Table NAT , chain : PREROUTING
187 $IPN -A PREROUTING -i $IF_INTERNET -p udp -d $NAT_DMZ_DNS \
188 --dport 53 -j DNAT --to-destination $IP_DNS
190 $IPN -A PREROUTING -i $IF_INTERNET -p tcp -m state --state NEW \
191 -d $NAT_DMZ_MAIL -m multiport --dport 25,143,587,993 \
192 -j DNAT --to-destination $IP_MAIL
194 $IPN -A PREROUTING -i $IF_INTERNET -p tcp -m state --state NEW \
195 -d $NAT_DMZ_WEB -m multiport --dport 80,443 \
196 -j DNAT --to-destination $IP_WEB
200 # Table NAT , chain : POSTROUTING
201 $IPN -A POSTROUTING -s $IP_DNS -o $IF_INTERNET -j SNAT \
202 --to-source $NAT_DMZ_DNS
204 $IPN -A POSTROUTING -s $IP_MAIL -o $IF_INTERNET -j SNAT \
205 --to-source $NAT_DMZ_MAIL
207 $IPN -A POSTROUTING -s $IP_WEB -o $IF_INTERNET -j SNAT \
208 --to-source $NAT_DMZ_WEB
210 $IPN -A POSTROUTING -s $NET_USAGER -o $IF_INTERNET -j SNAT \
211 --to-source $NAT_USAGER
212 $IPN -A POSTROUTING -s $NET_RPV_BANGUI -o $IF_INTERNET -j SNAT \
215 $IPN -A POSTROUTING -s $NET_DMZ -o $IF_IPSEC -j SNAT \
216 --to-source $NAT_DMZ_MONTREAL