iptables:correction
[ongolaboy.git] / scripts / parefeu / firewall.bangui
CommitLineData
c0cd7c06
WM
1#!/bin/sh
2
3modprobe ip_tables
4modprobe ip_nat_ftp
5modprobe ip_nat_irc
6modprobe iptable_filter
7modprobe iptable_nat
8modprobe ip_conntrack_ftp
9
10IPT="/sbin/iptables"
11IPF="$IPT -t filter"
12IPN="$IPT -t nat"
13IPM="$IPT -t mangle"
14
15# Des constantes
16NET_FAI=77.70.183.120/29
17NET_DMZ=192.168.10.0/24
bd7babbf
WM
18NET_RPV_BANGUI=10.39.0.0/20
19NET_RPV_AUF=10.0.0.0/8
c0cd7c06 20NET_MONTREAL=199.84.140.0/24
bd7babbf 21NET_USAGER=192.168.0.0/24
c0cd7c06
WM
22
23IP_WEB=192.168.10.4
24IP_DNS=192.168.10.2
25IP_MAIL=192.168.10.2
26IP_VOIP=192.168.10.5 #XXX
27
28NAT_USAGER=77.70.183.124
29NAT_RPV=77.70.183.124
30NAT_DMZ_DNS=77.70.183.125
31NAT_DMZ_MAIL=77.70.183.125
32NAT_DMZ_WEB=77.70.183.125
bd7babbf 33NAT_DMZ_MONTREAL=10.39.0.254
c0cd7c06
WM
34
35IF_INTERNET="eth0"
36IF_DMZ="eth2"
37IF_RPV="eth1"
38IF_USAGER="eth3"
39IF_IPSEC="ipsec0"
40
41
42# on efface tout
43$IPF -F INPUT
44$IPF -F FORWARD
45$IPF -F OUTPUT
46$IPN -F PREROUTING
47$IPN -F POSTROUTING
48$IPM -F FORWARD
49
50
51# par defaut on ferme tout (sauf en sortie)
52$IPF -P INPUT DROP
53$IPF -P FORWARD DROP
54$IPF -P OUTPUT ACCEPT
55
56#commmuniction en localhost
57$IPF -A INPUT -i lo -j ACCEPT
58$IPF -A OUTPUT -o lo -j ACCEPT
59
60#full accès vers montréal
61$IPF -A FORWARD -d $NET_MONTREAL -j ACCEPT
62
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
66
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
70
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
76
77##ssh sur le firewall
78$IPF -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
79
80## le reste avec des chaines perso
81# En provenance de l'extérieur pour le parefeu
82$IPF -N from-outside
83$IPF -A INPUT -i $IF_INTERNET -j from-outside
84
85$IPF -N ScanD
86$IPF -A ScanD -m limit --limit 1/s -j LOG \
87 --log-prefix "[Port Scan?]DROP "
88$IPF -A ScanD -j DROP
89
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
97
98$IPF -N DDoS
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 "
101$IPF -A DDoS -j DROP
102
103$IPF -A from-outside -p tcp --tcp-flags SYN,RST,ACK SYN -j DDoS
104
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
107
108
109# FORWARD en provenance de la DMZ
110$IPF -N from-dmz
111$IPF -A FORWARD -i $IF_DMZ -j from-dmz
112$IPF -A from-dmz ! -o $IF_INTERNET -j ACCEPT
113
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
116
117$IPF -N dmz-internet
118$IPF -A from-dmz -o $IF_INTERNET -j dmz-internet
119
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 \
122 --dport 53 -j ACCEPT
123
124$IPF -A dmz-internet -s $IP_MAIL -p tcp -m multiport \
125 --dport 25,587 -j ACCEPT
126
127$IPF -A dmz-internet -s $IP_WEB -p tcp -m state --state NEW \
128 --dport 80 -j ACCEPT
129
130# FORWARD en direction de la DMZ
131$IPF -N to-dmz
132$IPF -A FORWARD -o $IF_DMZ -j to-dmz
133
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 \
136 --dport 53 -j ACCEPT
137
138$IPF -A to-dmz -d $IP_MAIL -p tcp -m state --state NEW \
139 -m multiport --dport 25,143,587,993 -j ACCEPT
140
141$IPF -A to-dmz -d $IP_WEB -p tcp -m state --state NEW \
142 -m multiport --dport 80,443 -j ACCEPT
143
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
147
148# FORWARD vers montréal
149$IPF -N to-montreal
150$IPF -A FORWARD -o $IF_IPSEC -j to-montreal
151
152$IPF -A to-montreal -i $IF_RPV -j ACCEPT
153
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
157
158$IPF -A to-montreal -j LOG --log-prefix " TROU RPV: "
159$IPF -A to-montreal -j REJECT
160
161
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
165
166for TCP in 20 21 22 80 110 123 220 443 587 993 995 3690 5222 \
167 5223 5050 6667 11371 8443 9418
168do
169 $IPF -A from-inside-rpv -o $IF_INTERNET -p tcp --dport $TCP \
170 -m state --state NEW -j ACCEPT
171done
172
173#En provenance du LAN, en FORWARD
174$IPF -N from-inside
175$IPF -A FORWARD -i $IF_USAGER -j from-inside
176
177for TCP in 20 21 22 80 110 123 220 443 587 993 995 3690 5222 \
178 5223 5050 6667 11371 8443 9418
179do
180 $IPF -A from-inside -o $IF_INTERNET -p tcp --dport $TCP \
181 -m state --state NEW -j ACCEPT
182done
183
184
185
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
189
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
193
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
197
198
199
200# Table NAT , chain : POSTROUTING
201$IPN -A POSTROUTING -s $IP_DNS -o $IF_INTERNET -j SNAT \
202 --to-source $NAT_DMZ_DNS
203
204$IPN -A POSTROUTING -s $IP_MAIL -o $IF_INTERNET -j SNAT \
205 --to-source $NAT_DMZ_MAIL
206
207$IPN -A POSTROUTING -s $IP_WEB -o $IF_INTERNET -j SNAT \
208 --to-source $NAT_DMZ_WEB
209
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 \
213 --to-source $NAT_RPV
bd7babbf
WM
214
215$IPN -A POSTROUTING -s $NET_DMZ -o $IF_IPSEC -j SNAT \
216 --to-source $NAT_DMZ_MONTREAL