1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305 | #!/bin/sh
###############################################################################
# Переменные
echo "Назначаю переменные"
###############################################################################
# SYSCTL
SYSCTL="/sbin/sysctl -w"
# IPTables Переменные
IPT="/sbin/iptables"
IPTS="/sbin/iptables-save"
IPTR="/sbin/iptables-restore"
# Интернет интерфейсы
INET_IFACE1="eth0"
INET_ADDRESS1="192.168.48.97"
INET_IFACE2="eth2"
INET_ADDRESS2="xxx.xxx.xxx.xxx"
# Local Interface Information
LOCAL_IFACE="eth1"
LOCAL_IP="192.168.222.7"
LOCAL_NET="192.168.222.0/24"
LOCAL_BCAST="192.168.222.255"
# Open VPN
NET_VPN="10.0.0.0/255.255.255.0"
VPN_IFACE="tun0"
VPN_PORT="2022"
# Пробрасываемые порты
# Веб-морда почтового
# сервака
MAILSRV="192.168.222.5"
MAILPORT="443"
# RDP
# RDPSRV="192.168.222.10"
# RDPPORT="3389"
# Localhost Interface
LO_IFACE="lo"
LO_IP="127.0.0.1"
###############################################################################
# Загрузка нужных модулей
echo "Подгружаю модули для ядра ..."
###############################################################################
/sbin/depmod -a
# Обязательные модули
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
# /sbin/modprobe ipt_LOG
# /sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
### Не обязательные модули
# /sbin/modprobe ipt_unclean
# /sbin/modprobe multiport
# /sbin/modprobe ipt_tcpmss
# /sbin/modprobe ipt_mark
# /sbin/modprobe ipt_owner
# /sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ip_conntrack_ftp
# /sbin/modprobe ip_conntrack_irc
/sbin/modprobe ip_nat_ftp
# /sbin/modprobe ip_nat_irc
###############################################################################
# Настройки параметров ядра
echo "Настраиваю ядро ..."
###############################################################################
if [ "$SYSCTL" = "" ]
then
echo "1" > /proc/sys/net/ipv4/ip_forward
else
$SYSCTL net.ipv4.ip_forward="1"
fi
############################################################################
# This enables SYN flood protection. The SYN cookies activation allows your system to accept an unlimited
# number of TCP connections while still trying to give reasonable service during a denial of service attack.
############################################################################
if [ "$SYSCTL" = "" ]
then
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
else
$SYSCTL net.ipv4.tcp_syncookies="1"
fi
###########################################################################
# The following kernel settings were suggested by Alex Weeks. Thanks! This kernel parameter instructs the
# kernel to ignore all ICMP echo requests sent to the broadcast address. This prevents a number of smurfs
# and similar DoS nasty attacks.
###########################################################################
if [ "$SYSCTL" = "" ]
then
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
else
$SYSCTL net.ipv4.icmp_echo_ignore_broadcasts="1"
fi
###########################################################################
# This option can be used to accept or refuse source routed packets. It is usually on by default, but is
# generally considered a security risk. This option turns it off.
###########################################################################
if [ "$SYSCTL" = "" ]
then
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
else
$SYSCTL net.ipv4.conf.all.accept_source_route="0"
fi
###########################################################################
# This option can disable ICMP redirects. ICMP redirects are generally considered a security risk and
# shouldn't be needed by most systems using this generator.
##########################################################################
# if [ "$SYSCTL" = "" ] then
# echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects else $SYSCTL
# net.ipv4.conf.all.accept_redirects="0" fi
##########################################################################
# However, we'll ensure the secure_redirects option is on instead. This option accepts only from gateways in
# the default gateways list.
##########################################################################
if [ "$SYSCTL" = "" ]
then
echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects
else
$SYSCTL net.ipv4.conf.all.secure_redirects="1"
fi
###############################################################################
# Обнулить все настройки iptables
echo "Стираю все правила ..."
###############################################################################
# Сбросить все стандартные политики
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
# Сбросить все правила
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
# Сбросить все пользовательские цепочки
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
###############################################################################
# НАСТРОЙКА ПРАВИЛ
echo "Добавляю правила Брандмауера"
###############################################################################
# Таблица filter
# Цепочка INPUT
echo "--Таблица filter--"
echo "-----Цепочка INPUT"
###############################################################################
# настройка политик
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
# Настройки фильтра при сканировании
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
$IPT -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
# localhost
$IPT -A INPUT -p ALL -i $LO_IFACE -j ACCEPT
# DOCSIS compliant cable modems Drop them without logging.
$IPT -A INPUT -p ALL -d 224.0.0.1 -j DROP
# Сбросить netbios
$IPT -A INPUT -p UDP -s 0/0 --destination-port 137 -j DROP
$IPT -A INPUT -p UDP -s 0/0 --destination-port 138 -j DROP
# DNS
# $IPT -A INPUT -p udp --sport 53 -j ACCEPT
# $IPT -A INPUT -p tcp --sport 53 -j ACCEPT
# $IPT -A INPUT -p udp --dport 53 -j ACCEPT
# Разрешить ssh
$IPT -A INPUT -p tcp --dport 2002 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 2002 -j ACCEPT
# Postfix
$IPT -A INPUT -p tcp --dport 25 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 25 -j ACCEPT
# $IPT -A INPUT -i $INET_IFACE2 -p tcp --dport 25 -j ACCEPT
# FTP
$IPT -A INPUT -p tcp --dport 21 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 21 -j ACCEPT
# $IPT -A INPUT -i $INET_IFACE2 -p tcp --dport 21 -j ACCEPT
# VPN
$IPT -A INPUT -p udp --dport 2022 -j ACCEPT
$IPT -A INPUT -i $VPN_IFACE -j ACCEPT
# ICMP
$IPT -A INPUT -m state -p icmp --state INVALID -j DROP
$IPT -A INPUT -p icmp --icmp-type any -j ACCEPT
#
# eth0
$IPT -A INPUT -p ALL -i $INET_IFACE1 -m state --state ESTABLISHED,RELATED
-j ACCEPT
# eth2
$IPT -A INPUT -p ALL -i $INET_IFACE2 -m state --state ESTABLISHED,RELATED
-j ACCEPT
# Rules for the private network (accessing gateway system itself)
$IPT -A INPUT -p ALL -i $LOCAL_IFACE -s $LOCAL_NET -j ACCEPT
$IPT -A INPUT -p ALL -i $LOCAL_IFACE -d $LOCAL_BCAST -j ACCEPT
################################################################################
# Цепочка OUTPUT
echo "-----Цепочка OUTPUT"
################################################################################
# localhost
$IPT -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO_IFACE -j ACCEPT
# Доверяет на выходе но неправильные ICMP пакеты должны
# быть сброшены для предотвращения использования эксплойта
$IPT -A OUTPUT -m state -p icmp --state INVALID -j DROP
$IPT -A OUTPUT -p icmp --icmp-type any -j ACCEPT
# To internal network
$IPT -A OUTPUT -p ALL -s $LOCAL_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LOCAL_IFACE -j ACCEPT
# To internet
$IPT -A OUTPUT -p ALL -o $INET_IFACE1 -j ACCEPT
$IPT -A OUTPUT -p ALL -o $INET_IFACE2 -j ACCEPT
#
$IPT -A OUTPUT -p ALL -m state --state RELATED,ESTABLISHED -j ACCEPT
################################################################################
# Цепочка FORWARD
echo "-----Цепочка FORWARD"
################################################################################
# icmp
$IPT -A FORWARD -m state -p icmp --state INVALID -j DROP
# $IPT -A FORWARD -p icmp -j ACCEPT
# http
$IPT -A FORWARD -p ALL -j ACCEPT
# Разрешить запрос в интернет из локальной сети
$IPT -A FORWARD -m state -p icmp --state INVALID -j DROP
$IPT -A FORWARD -p tcp -i $LOCAL_IFACE -j ACCEPT
# Deal with responses from the internet
$IPT -A FORWARD -i $INET_IFACE1 -m state --state ESTABLISHED,RELATED
-j ACCEPT
$IPT -A FORWARD -i $INET_IFACE2 -m state --state ESTABLISHED,RELATED
-j ACCEPT
# OpenVPN
$IPT -A FORWARD -i $VPN_IFACE -o $LOCAL_IFACE -j ACCEPT
$IPT -A FORWARD -i $LOCAL_IFACE -o $VPN_IFACE -j ACCEPT
# Пророс порта 443
$IPT -A FORWARD -p tcp -i $INET_IFACE2 --destination-port $MAILPORT
--destination $MAILSRV -j ACCEPT
# Пророс порта 3389
# $IPT -A FORWARD -p tcp -i $INET_IFACE2 --destination-port $RDPPORT
# --destination $RDPSRV -j ACCEPT
################################################################################
# Таблица nat
# Цепочка PREROUTING
echo "--Таблица nat--"
echo "-----Цепочка PREROUTING"
################################################################################
# Пророс порта 443
$IPT -t nat -A PREROUTING -p tcp --dst $INET_ADDRESS2 --dport $MAILPORT
-j DNAT --to-destination $MAILSRV:$MAILPORT
$IPT -t nat -A PREROUTING -p tcp -i $LOCAL_IFACE --destination-port $MAILPORT
--destination $INET_ADDRESS2 -j DNAT --to-destination $MAILSRV:$MAILPORT
# Пророс порта 3389
# $IPT -t nat -A PREROUTING -p tcp --dst $INET_ADDRESS2 --dport $RDPPORT
# -j DNAT --to-destination $RDPSRV
#
# $IPT -t nat -A PREROUTING -p tcp -i $LOCAL_IFACE --destination-port $RDPPORT
# --destination $INET_ADDRESS2 -j DNAT --to-destination $RDP:$RDPPORT
# Redirect HTTP for a transparent proxy
$IPT -t nat -A PREROUTING -p tcp --destination-port 80
-j REDIRECT --to-ports 3128
################################################################################
# Цепочка PREROUTING
echo "-----Цепочка POSTROUTING"
################################################################################
# Пророс порта 443
$IPT -t nat -A POSTROUTING -p tcp --dst $MAILSRV --dport $MAILPORT
-j SNAT --to-source $INET_ADDRESS2
# Пророс порта 3389
# $IPT -t nat -A POSTROUTING -p tcp --dst $RDPSRV --dport $RDPPORT
# -j SNAT --to-source $INET_ADDRESS2
# Маскардинг
# $IPT -t nat -A POSTROUTING -o $INET_IFACE1 -j MASQUERADE
# $IPT -t nat -A POSTROUTING -o $INET_IFACE2 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $NET_VPN -o $INET_IFACE2 -j MASQUERADE
# Маршрутизация с подменой адреса
# eth0
$IPT -t nat -A POSTROUTING -o $INET_IFACE1
-j SNAT --to-source $INET_ADDRESS1
$IPT -t nat -A POSTROUTING -o $LOCAL_IFACE
-j SNAT --to-source $INET_ADDRESS1
# eth2
$IPT -t nat -A POSTROUTING -o $INET_IFACE2
-j SNAT --to-source $INET_ADDRESS2
$IPT -t nat -A POSTROUTING -o $LOCAL_IFACE
-j SNAT --to-source $INET_ADDRESS2
################################################################################
# Таблица mangle
# Цепочка OUTPUT
echo "--Таблица mangle--"
echo "-----Цепочка OUTPUT"
################################################################################
# Set the TTL
$IPT -t mangle -A OUTPUT -o $INET_IFACE1
-j TTL --ttl-set 128
$IPT -t mangle -A OUTPUT -o $INET_IFACE2
-j TTL --ttl-set 128
################################################################################
# END
echo "Настройка Брандмауера завершена!"
################################################################################
rasdark
|