#/bin/bash# Локальный и внешний интерфейсы...export WAN_IF=eth0export LAN_IF=br0# Адреса локального и внешнего интерфейса...export WAN_IF_ADDR=xx.xx.xx.xxexport LAN_IF_ADDR=yy.yy.yy.yy# Адреса локальной и внешней подсетей...export WAN_NET_ADDR=xx.xx.xx.xx/xxexport LAN_NET_ADDR=yy.yy.yy.yy/yy# Широковещательные локальный и внешний адресаexport WAN_BROADCAST=xx.xx.xx.255export LAN_BROADCAST=yy.yy.yy.255# Обнуление текущих правил...iptables -t filter -Fiptables -t nat -F########## Входящие соединения# Политика по умолчаниюiptables -P INPUT DROP# Блокировка броадкастовiptables -A INPUT -m addrtype --dst-type BROADCAST -j DROP# По уже установленным соединениямiptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT# HTTP,SSH,OpenVPNiptables -A INPUT -p TCP -m multiport --dports http,xxxxxx,openvpn -j ACCEPT# DNS,NTPiptables -A INPUT -p UDP -m multiport --dports domain,ntp -j ACCEPT# localhost трафик...iptables -A INPUT --in-interface lo -j ACCEPT# ping запросыiptables -A INPUT -p ICMP --icmp-type echo-request -j ACCEPT# Лог принятых запросов, отвергнутых и не попавших ни под одно из правилiptables -A INPUT -j LOG --log-prefix "*****iptables INPUT drop "########## Проходящие запросы# Политика по умолчаниюiptables -P FORWARD DROP# Блокировка броадкастовiptables -A FORWARD -m addrtype --dst-type BROADCAST -j DROP# Прохождение по уже установленным соединениямiptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT# Прохождение локального траффика (VPN клиенты)iptables -A FORWARD -p ALL --source $LAN_NET_ADDR --destination $LAN_NET_ADDR -j ACCEPT# Запросы во вне к основным интернет службам (ftp, mail, web, icq, jabber, etc.)iptables -A FORWARD -p TCP --in-interface $LAN_IF --source $LAN_NET_ADDR -m multiport --dports ftp,smtp,pop3,http,http-alt,https,aol,xmpp-client -j ACCEPT# Запросы во вне к вспомогательным службамiptables -A FORWARD -p TCP --in-interface $LAN_IF --source $LAN_NET_ADDR -m multiport --dports rsync,ssh,xxxxxx,openvpn -j ACCEPT# Запросы из вне к серверам видеонаблюдения GOAL (с последующим пробросом портов на соответствующие видеосервера)iptables -A FORWARD -p TCP --in-interface $WAN_IF -m multiport --dports xxxx,xxxx,xxxx,xxxx,xxxx -j ACCEPT# Запросы во вне к серверам видеонаблюдения MSH и Video7iptables -A FORWARD -p TCP --in-interface $LAN_IF --source $LAN_NET_ADDR -m multiport --dports 1204,1205,20900 -j ACCEPT# Запросы во вне к DNS и NTP серверамiptables -A FORWARD -p UDP --in-interface $LAN_IF --source $LAN_NET_ADDR -m multiport --dports domain,ntp -j ACCEPT# ping запросы во внеiptables -A FORWARD -p ICMP --in-interface $LAN_IF --icmp-type echo-request -j ACCEPT# Лог проходящих запросов, отвергнутых и не попавших ни под одно из правилiptables -A FORWARD -j LOG --log-prefix "*****iptables FORWARD drop "# NAT для маскарадинга во внеiptables -t nat -A POSTROUTING --out-interface $WAN_IF -j SNAT --to-source $WAN_IF_ADDR# Проброс из вне на сервера видеонаблюдения для клиентов GOAL-cityiptables -t nat -A PREROUTING -p TCP -m tcp --destination $WAN_IF_ADDR --dport xxxx -j DNAT --to-destination xx.xx.xx.xx:3107iptables -t nat -A PREROUTING -p TCP -m tcp --destination $WAN_IF_ADDR --dport xxxx -j DNAT --to-destination xx.xx.xx.xx:3107iptables -t nat -A PREROUTING -p TCP -m tcp --destination $WAN_IF_ADDR --dport xxxx -j DNAT --to-destination xx.xx.xx.xx:3107iptables -t nat -A PREROUTING -p TCP -m tcp --destination $WAN_IF_ADDR --dport xxxx -j DNAT --to-destination xx.xx.xx.xx:3107iptables -t nat -A PREROUTING -p TCP -m tcp --destination $WAN_IF_ADDR --dport xxxx -j DNAT --to-destination xx.xx.xx.xx:3107########## Исходящие запросы# Политика по умолчанию...iptables -P OUTPUT DROP# Блокировка броадкастовiptables -A OUTPUT -m addrtype --dst-type BROADCAST -j DROP# По уже установленным соединениямiptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT# Запросы FTP,HTTP,SSH,RSYNCiptables -A OUTPUT -p TCP -m multiport --dports ftp,http,xxxxxx,rsync -j ACCEPT# Запросы DNS,NTP,DNS-transferiptables -A OUTPUT -p UDP -m multiport --dports domain,ntp -j ACCEPTiptables -A OUTPUT -p TCP --dport domain -j ACCEPT# Запросы на серверов видеонаблюдения GOALiptables -A OUTPUT -p TCP --out-interface $LAN_IF --destination $LAN_NET_ADDR --dport 3107 -j ACCEPT# localhost трафик...iptables -A OUTPUT --out-interface lo -j ACCEPT# ping запросыiptables -A OUTPUT -p ICMP --icmp-type echo-request -j ACCEPT# Лог запросов, отвергнутых и не попавших ни под одно из правилiptables -A OUTPUT -j LOG --log-prefix "*****iptables OUTPUT drop "########## Настройки# Разрешаем ip-форвардингecho 1 > /proc/sys/net/ipv4/ip_forwardfor f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done# Сохраняем правила/etc/init.d/iptables save# Добавляем запуск iptables в автозагрузку#rc-update add iptables default# nano /etc/sysctl.conf# Разрешаем форвардинг на уровне sysctl#net.ipv4.ip_forward = 1#net.ipv4.conf.default.rp_filter = 1# В случае, если динамический IP-адрес#net.ipv4.ip_dynaddr = 1