Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # При использовании программы iptables в работе используются следущие параметры:
- # – сеть отправителя: -s (или –source);
- # – сеть получателя: -d (или –destination);
- # – порт отправителя: –sport, порт получателя: –dport;
- # – входящий интерфейс -i, исходящий интерфейс -o;
- # – протокол: -p или –protocol;
- # – отбрасывание пакета: -j DROP;
- # – прохождение пакета: -j ACCEPT;
- # – указание используемой таблицы правил (-t) и цепочки для добавления правила (-A).
- #
- # Для просмотра цепочек полезны следующие команды. Первая из них показывает пра-
- # вила из таблицы filter, вторая — из таблицы nat.
- # $ iptables -L -v
- # $ iptables -L -v -t nat
- #
- # Цепочка правил просматривается сверху вниз последовательно, пока не будет найдено прави-
- # ло, все условия которого удовлетворяются. По-умолчанию все исходящие (цепочка OUTPUT),
- # входящие (цепочка INPUT) и транзитные (цепочка FORWARD) пакеты проходят через межсетевой
- # экран.
- echo "Configuring firewall..."
- LAN=eth0
- INET=eth1
- VPN=tun0
- # Удаление всех правил в таблице "filter" (по-умолчанию) и "nat" (указать явно)
- iptables -F
- iptables -F -t nat
- # Удаление всех цепочек
- iptables -X
- iptables -X -t nat
- # По-умолчанию все маршрутизируемые пакеты выбрасываются.
- iptables --policy FORWARD DROP
- # Разрешаем любую маршрутизацию для интерфейса VPN
- iptables -A FORWARD -i $VPN -j ACCEPT
- iptables -A FORWARD -o $VPN -j ACCEPT
- # Включение SNAT для маршрутизируемых пакетов, выходящих
- # через eth1. Это правило выполняется после самой маршрутизации
- # (POSTROUTING) и помещается в таблицу правил "nat".
- iptables -t nat -A POSTROUTING -o $INET -j MASQUERADE
- # Разрешаем отправку/передачу пакетов с/на порты 80, 8080, 25 серверов
- iptables -A FORWARD -i $INET -d 10.101.4.0/24 -p tcp --dport 80 -j ACCEPT
- iptables -A FORWARD -o $INET -s 10.101.4.0/24 -p tcp --dport 80 -j ACCEPT
- iptables -A FORWARD -i $INET -d 10.101.4.0/24 -p tcp --dport 8080 -j ACCEPT
- iptables -A FORWARD -o $INET -s 10.101.4.0/24 -p tcp --dport 8080 -j ACCEPT
- iptables -A FORWARD -i $INET -d 10.101.4.0/24 -p tcp --dport 25 -j ACCEPT
- iptables -A FORWARD -o $INET -s 10.101.4.0/24 -p tcp --dport 25 -j ACCEPT
- # s11: пробрасываем порт 80
- iptables -t nat -A PREROUTING -p tcp --dport 80 -i $INET -j DNAT --to 10.101.4.10:80
- # s12: пробрасываем порты 8080 и 25
- iptables -t nat -A PREROUTING -p tcp --dport 8080 -i $INET -j DNAT --to 10.101.4.20:80
- iptables -t nat -A PREROUTING -p tcp --dport 25 -i $INET -j DNAT --to 10.101.4.20:25
- # Разрешаем 53 порт (DNS)
- iptables -A FORWARD -p tcp --dport 53 -o $INET -j ACCEPT
- iptables -A FORWARD -p udp --dport 53 -o $INET -j ACCEPT
- # pc13
- # Запрещаем доступ к lenta.ru:80
- iptables -A FORWARD -s 10.101.3.0/24 -d 81.19.85.0/24 -p tcp --dport 80 -j DROP
- # pc12
- # Запрещаем доступ к facebook.com
- iptables -A FORWARD -s 10.101.2.0/24 -d 66.220.0.0/16 -j DROP
- iptables -A FORWARD -s 10.101.2.0/24 -d 69.171.0.0/16 -j DROP
- # Запрещаем доступ к vkontakte.ru
- iptables -A FORWARD -s 10.101.2.0/24 -d 87.240.0.0/16 -j DROP
- iptables -A FORWARD -s 10.101.2.0/24 -d 93.186.0.0/16 -j DROP
- # Оставляем доступ на порты 80, 443, 110
- iptables -A FORWARD -s 10.101.2.0/24 -p tcp --dport 80 -j ACCEPT
- iptables -A FORWARD -s 10.101.2.0/24 -p tcp --dport 443 -j ACCEPT
- iptables -A FORWARD -s 10.101.2.0/24 -p tcp --dport 110 -j ACCEPT
- # Остальное, что выходит в Интернет, запрещаем
- iptables -A FORWARD -s 10.101.2.0/24 -o $INET -j DROP
- # pc11
- # Разрешаем доступ на yandex.ru
- iptables -A FORWARD -s 10.101.1.0/24 -d 87.250.0.0/16 -p tcp --dport 80 -j ACCEPT
- iptables -A FORWARD -s 10.101.1.0/24 -d 213.180.0.0/16 -p tcp --dport 80 -j ACCEPT
- iptables -A FORWARD -s 10.101.1.0/24 -d 93.158.0.0/16 -p tcp --dport 80 -j ACCEPT
- iptables -A FORWARD -s 10.101.1.0/24 -d 77.88.0.0/16 -p tcp --dport 80 -j ACCEPT
- # Остальное, что выходит в Интернет, запрещаем
- iptables -A FORWARD -s 10.101.1.0/24 -o $INET -j DROP
- # Для приходящих из LAN пакетов мы разрешим их маршрутизацию
- iptables -A FORWARD -m state --state NEW,ESTABLISHED -i $LAN -j ACCEPT
- # Включение приёма ответов для NAT
- iptables -A FORWARD -m state --state ESTABLISHED -i $INET -j ACCEPT
Add Comment
Please, Sign In to add comment