#!/bin/bash
IPT="/sbin/iptables"
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
echo "Starting IPv4 Firewall..."
# Скидываем все цепочки iptables
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
# Загружаем модули
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
# Интерфейс смотрящий в интернет
INET="ppp0"
# Разрешаем траффик для loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
#Закрываем все цепочки
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
#Маскардинг в инет и локалку
$IPT --table nat --append POSTROUTING --out-interface vlan3 -j MASQUERADE
$IPT --table nat --append POSTROUTING --out-interface vlan4 -j MASQUERADE
$IPT --table nat --append POSTROUTING --out-interface ${INET} -j MASQUERADE
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# Разрешаем локальный траффик для локальной сети
$IPT -A INPUT -i vlan3 -j ACCEPT
$IPT -A OUTPUT -o vlan3 -j ACCEPT
$IPT -A INPUT -i vlan4 -j ACCEPT
$IPT -A OUTPUT -o vlan4 -j ACCEPT
# ICMP Разрешаем пинг с интернета до сервера
$IPT -A INPUT -i ${INET} -p icmp -j ACCEPT
$IPT -A OUTPUT -o ${INET} -p icmp -j ACCEPT
# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP
# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Приводит к связыванию системных ресурсов, так что реальных обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Разрешаем серверу DNS (tcp/udp)
$IPT -A INPUT -i ${INET} -p udp --sport 53 -j ACCEPT
$IPT -A OUTPUT -o ${INET} -p udp --dport 53 -j ACCEPT
$IPT -A INPUT -i ${INET} -p tcp --sport 53 -j ACCEPT
$IPT -A OUTPUT -o ${INET} -p tcp --dport 53 -j ACCEPT
# Разрешаем серверу http, https, ssh, ftp (открываем порты 80,443,21,22)
$IPT -A INPUT -i ${INET} -p tcp --destination-port 80 -j ACCEPT
$IPT -A INPUT -o ${INET} -p tcp --destination-port 443 -j ACCEPT
$IPT -A INPUT -i ${INET} -p tcp --destination-port 21 -j ACCEPT
$IPT -A INPUT -i ${INET} -p tcp --destination-port 22 -j ACCEPT
#Разрешаем гулять всем подсетям
$IPT -A FORWARD -i vlan4 -o vlan3 -j ACCEPT
$IPT -A FORWARD -i vlan3 -o vlan4 -j ACCEPT
#Разрешаем ICMP пакеты из vlan3, vlan4 в интернет
$IPT -A FORWARD -i ${INET} -o vlan3 -p icmp -j ACCEPT
$IPT -A FORWARD -i vlan3 -o ${INET} -p icmp -j ACCEPT
$IPT -A FORWARD -i ${INET} -o vlan4 -p icmp -j ACCEPT
$IPT -A FORWARD -i vlan4 -o ${INET} -p icmp -j ACCEPT
##############################################################################
##################### Разрешаем доступ в инет и в локалку ##################
##############################################################################
##############################################################################
##################### 192.168.1.0/24 #########################################
#### 50225 - АРМ ПФР
#### 50110,50025 - АРМ Страхователь
#### 3389 - Парус 8
#############################################################################
$IPT -A FORWARD -s 192.168.1.177 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21,50225,50110,50025,3389 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.1.177 -p tcp -m multiport --sport 80,443,110,25,143,5190,21,50225,50110,50025,3389 -j ACCEPT
$IPT -A FORWARD -s 192.168.1.178 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21,50225,50110,50025,3389 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.1.178 -p tcp -m multiport --sport 80,443,110,25,143,5190,21,50225,50110,50025,3389 -j ACCEPT
$IPT -A FORWARD -s 192.168.1.179 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21,50225,50110,50025,3389 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.1.179 -p tcp -m multiport --sport 80,443,110,25,143,5190,21,50225,50110,50025,3389 -j ACCEPT
$IPT -A FORWARD -s 192.168.1.180 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21,50225,50110,50025,3389 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.1.180 -p tcp -m multiport --sport 80,443,110,25,143,5190,21,50225,50110,50025,3389 -j ACCEPT
$IPT -A FORWARD -s 192.168.1.186 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21,50225,50110,50025,3389 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.1.186 -p tcp -m multiport --sport 80,443,110,25,143,5190,21,50225,50110,50025,3389 -j ACCEPT
$IPT -A FORWARD -s 192.168.1.190 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21,50225,50110,50025,3389 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.1.190 -p tcp -m multiport --sport 80,443,110,25,143,5190,21,50225,50110,50025,3389 -j ACCEPT
################## Компьютеры админов #######################################
$IPT -A FORWARD -s 192.168.1.173 -o ${INET} -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.1.173 -j ACCEPT
$IPT -A FORWARD -s 192.168.1.173 -o ${INET} -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.1.173 -j ACCEPT
##############################################################################
##############################################################################
##################### 192.168.3.0/24 #########################################
##############################################################################
$IPT -A FORWARD -s 192.168.3.10 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.3.10 -p tcp -m multiport --sport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -s 192.168.3.123 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.3.123 -p tcp -m multiport --sport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -s 192.168.3.249 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.3.249 -p tcp -m multiport --sport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -s 192.168.3.250 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.3.250 -p tcp -m multiport --sport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -s 192.168.3.253 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.3.253 -p tcp -m multiport --sport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -s 192.168.3.246 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.3.246 -p tcp -m multiport --sport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -s 192.168.3.245 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.3.245 -p tcp -m multiport --sport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -s 192.168.3.244 -o ${INET} -p tcp -m multiport --dport 80,443,110,25,143,5190,21 -j ACCEPT
$IPT -A FORWARD -i ${INET} -d 192.168.3.244 -p tcp -m multiport --sport 80,443,110,25,143,5190,21 -j ACCEPT
###############################################################################