· 7 years ago · Feb 20, 2018, 07:24 AM
1#!/bin/sh
2
3# При иÑпользовании программы iptables в работе иÑпользуютÑÑ Ñледущие параметры:
4# – Ñеть отправителÑ: -s (или –source);
5# – Ñеть получателÑ: -d (или –destination);
6# – порт отправителÑ: –sport, порт получателÑ: –dport;
7# – входÑщий Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ -i, иÑходÑщий Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ -o;
8# – протокол: -p или –protocol;
9# – отбраÑывание пакета: -j DROP;
10# – прохождение пакета: -j ACCEPT;
11# – указание иÑпользуемой таблицы правил (-t) и цепочки Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° (-A).
12#
13# Ð”Ð»Ñ Ð¿Ñ€Ð¾Ñмотра цепочек полезны Ñледующие команды. ÐŸÐµÑ€Ð²Ð°Ñ Ð¸Ð· них показывает пра-
14# вила из таблицы filter, Ð²Ñ‚Ð¾Ñ€Ð°Ñ â€” из таблицы nat.
15# $ iptables -L -v
16# $ iptables -L -v -t nat
17#
18# Цепочка правил проÑматриваетÑÑ Ñверху вниз поÑледовательно, пока не будет найдено прави-
19# ло, вÑе уÑÐ»Ð¾Ð²Ð¸Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ удовлетворÑÑŽÑ‚ÑÑ. По-умолчанию вÑе иÑходÑщие (цепочка OUTPUT),
20# входÑщие (цепочка INPUT) и транзитные (цепочка FORWARD) пакеты проходÑÑ‚ через межÑетевой
21# Ñкран.
22
23echo "Configuring firewall..."
24
25LAN=eth0
26INET=eth1
27VPN=tun0
28
29# Удаление вÑех правил в таблице "filter" (по-умолчанию) и "nat" (указать Ñвно)
30iptables -F
31iptables -F -t nat
32
33# Удаление вÑех цепочек
34iptables -X
35iptables -X -t nat
36
37# По-умолчанию вÑе маршрутизируемые пакеты выбраÑываютÑÑ.
38iptables --policy FORWARD DROP
39
40# Разрешаем любую маршрутизацию Ð´Ð»Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñа VPN
41iptables -A FORWARD -i $VPN -j ACCEPT
42iptables -A FORWARD -o $VPN -j ACCEPT
43
44# Включение SNAT Ð´Ð»Ñ Ð¼Ð°Ñ€ÑˆÑ€ÑƒÑ‚Ð¸Ð·Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… пакетов, выходÑщих
45# через eth1. Ðто правило выполнÑетÑÑ Ð¿Ð¾Ñле Ñамой маршрутизации
46# (POSTROUTING) и помещаетÑÑ Ð² таблицу правил "nat".
47iptables -t nat -A POSTROUTING -o $INET -j MASQUERADE
48
49# Разрешаем отправку/передачу пакетов Ñ/на порты 80, 8080, 25 Ñерверов
50iptables -A FORWARD -i $INET -d 10.101.4.0/24 -p tcp --dport 80 -j ACCEPT
51iptables -A FORWARD -o $INET -s 10.101.4.0/24 -p tcp --dport 80 -j ACCEPT
52iptables -A FORWARD -i $INET -d 10.101.4.0/24 -p tcp --dport 8080 -j ACCEPT
53iptables -A FORWARD -o $INET -s 10.101.4.0/24 -p tcp --dport 8080 -j ACCEPT
54iptables -A FORWARD -i $INET -d 10.101.4.0/24 -p tcp --dport 25 -j ACCEPT
55iptables -A FORWARD -o $INET -s 10.101.4.0/24 -p tcp --dport 25 -j ACCEPT
56
57# s11: пробраÑываем порт 80
58iptables -t nat -A PREROUTING -p tcp --dport 80 -i $INET -j DNAT --to 10.101.4.10:80
59
60# s12: пробраÑываем порты 8080 и 25
61iptables -t nat -A PREROUTING -p tcp --dport 8080 -i $INET -j DNAT --to 10.101.4.20:80
62iptables -t nat -A PREROUTING -p tcp --dport 25 -i $INET -j DNAT --to 10.101.4.20:25
63
64# Разрешаем 53 порт (DNS)
65iptables -A FORWARD -p tcp --dport 53 -o $INET -j ACCEPT
66iptables -A FORWARD -p udp --dport 53 -o $INET -j ACCEPT
67
68# pc13
69# Запрещаем доÑтуп к lenta.ru:80
70iptables -A FORWARD -s 10.101.3.0/24 -d 81.19.85.0/24 -p tcp --dport 80 -j DROP
71
72# pc12
73# Запрещаем доÑтуп к facebook.com
74iptables -A FORWARD -s 10.101.2.0/24 -d 66.220.0.0/16 -j DROP
75iptables -A FORWARD -s 10.101.2.0/24 -d 69.171.0.0/16 -j DROP
76# Запрещаем доÑтуп к vkontakte.ru
77iptables -A FORWARD -s 10.101.2.0/24 -d 87.240.0.0/16 -j DROP
78iptables -A FORWARD -s 10.101.2.0/24 -d 93.186.0.0/16 -j DROP
79# ОÑтавлÑем доÑтуп на порты 80, 443, 110
80iptables -A FORWARD -s 10.101.2.0/24 -p tcp --dport 80 -j ACCEPT
81iptables -A FORWARD -s 10.101.2.0/24 -p tcp --dport 443 -j ACCEPT
82iptables -A FORWARD -s 10.101.2.0/24 -p tcp --dport 110 -j ACCEPT
83# ОÑтальное, что выходит в Интернет, запрещаем
84iptables -A FORWARD -s 10.101.2.0/24 -o $INET -j DROP
85
86# pc11
87# Разрешаем доÑтуп на yandex.ru
88iptables -A FORWARD -s 10.101.1.0/24 -d 87.250.0.0/16 -p tcp --dport 80 -j ACCEPT
89iptables -A FORWARD -s 10.101.1.0/24 -d 213.180.0.0/16 -p tcp --dport 80 -j ACCEPT
90iptables -A FORWARD -s 10.101.1.0/24 -d 93.158.0.0/16 -p tcp --dport 80 -j ACCEPT
91iptables -A FORWARD -s 10.101.1.0/24 -d 77.88.0.0/16 -p tcp --dport 80 -j ACCEPT
92# ОÑтальное, что выходит в Интернет, запрещаем
93iptables -A FORWARD -s 10.101.1.0/24 -o $INET -j DROP
94
95# Ð”Ð»Ñ Ð¿Ñ€Ð¸Ñ…Ð¾Ð´Ñщих из LAN пакетов мы разрешим их маршрутизацию
96iptables -A FORWARD -m state --state NEW,ESTABLISHED -i $LAN -j ACCEPT
97# Включение приёма ответов Ð´Ð»Ñ NAT
98iptables -A FORWARD -m state --state ESTABLISHED -i $INET -j ACCEPT