на клепал новый скрипт
#!/bin/bash
IPT=»/sbin/iptables»
POLICY=»DROP» # политика по умолчанию (ACCEPT/DROP)
#######################################################################################################
# Настройки интерфейсов —— Interfaces Settings
LAN=»192.168.1.0/24″ # внутренняя сеть
LAN1_IF=»eth0″ # внутренний интерфейс
LAN1_IP=»192.168.1.2″ # адрес на внутреннем интерфейсе
LO_IF=»lo» # loopback-интерфейс
LO_IP=»127.0.0.1″ # loopback-адрес
LOOPBACK=»127.0.0.0/8″ # loopback-петля
DNS1=»80.82.32.9″ # DNS-провайдера
DNS2=»80.82.33.65″
/bin/echo 1 > /proc/sys/net/ipv4/ip_forward
/bin/echo 1 > /proc/sys/net/ipv4/ip_dynaddr
#######################################################################################################
# Созданеи цепочек фильтрации пакетов
#Сброс и устновка правил по умолчанию
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t mangle -F
$IPT -P INPUT $POLICY
$IPT -P FORWARD $POLICY
$IPT -P OUTPUT $POLICY
#Базовая проверка пакетов
$IPT -N common-check
$IPT -F common-check
# Отбрасываем невалидные пакты
$IPT -A common-check -m state —state INVALID -j DROP
$IPT -A common-check -p tcp —tcp-flags SYN,ACK SYN,ACK -m state —state NEW -j REJECT —reject-with tcp-reset
$IPT -A common-check -p tcp ! —syn -m state —state NEW -j DROP
$IPT -A common-check -p tcp —tcp-flags ALL FIN,URG,PSH -j DROP
$IPT -A common-check -p tcp —tcp-flags ALL ALL -j DROP
$IPT -A common-check -p tcp —tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPT -A common-check -p tcp —tcp-flags ALL NONE -j DROP
$IPT -A common-check -p tcp —tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A common-check -p tcp —tcp-flags SYN,FIN SYN,FIN -j DROP
#Правила входящего ssh
$IPT -N ssh
$IPT -F ssh
$IPT -A ssh -p tcp —dport 22 -j ACCEPT
$IPT -A ssh -m limit —limit 3/minute -p tcp —tcp-flags ALL RST —dport ssh -j ACCEPT
$IPT -A ssh -m limit —limit 3/minute -p tcp —tcp-flags ALL FIN —dport ssh -j ACCEPT
$IPT -A ssh -m limit —limit 3/minute -p tcp —tcp-flags ALL SYN —dport ssh -j ACCEPT
$IPT -A ssh -m state —state RELATED,ESTABLISHED -p tcp —dport ssh -j ACCEPT
#Правила входящего трафика с внутренней сети
$IPT -N lan-in
$IPT -F lan-in
$IPT -A lan-in -j ACCEPT # можно всё :)
#Входящие icmp запросы (пинг etc)
$IPT -N icmp_in
$IPT -F icmp_in
$IPT -A icmp_in -m state —state NEW -p icmp —icmp-type echo-request -j ACCEPT
$IPT -A icmp_in -m state —state NEW -p icmp —icmp-type time-exceeded -j ACCEPT
$IPT -A icmp_in -m state —state NEW -p icmp —icmp-type destination-unreachable -j ACCEPT
#Исходящие icmp запросы (пинг etc)
$IPT -N icmp-out
$IPT -F icmp-out
# Разрешаем icmp-reply во все сети в ответ на icmp-request’ы с сетей
$IPT -A icmp-out -p icmp —icmp-type 8 -j ACCEPT
$IPT -A icmp-out -m state —state NEW -p icmp —icmp-type time-exceeded -j ACCEPT
$IPT -A icmp-out -m state —state NEW -p icmp —icmp-type destination-unreachable -j ACCEPT
#Разрешает пакеты с уже установленный соединений
$IPT -N statefull
$IPT -F statefull
$IPT -A statefull -m state —state ESTABLISHED,RELATED -j ACCEPT
#######################################################################################################
# Распределение пакетов по цепочкам
#input
#Задание правил для входящего траффика
# Проверяем пакеты.
$IPT -A INPUT -j common-check
# Переправляем входящие по SSH
$IPT -A INPUT -p tcp —dport 22 -j ssh-in
# Переправляем входящие соединения с локалки
$IPT -A INPUT -s $LAN -j lan-in
# Переправляем входящие по icmp
$IPT -A INPUT -p icmp -j icmp_in
# Переправляем входящие на петлю, при его включении заметно улучшение отклика при ssh-авторизации
$IPT -A INPUT -i $LO_IF -d $LOOPBACK -j ACCEPT
# Ну, и разрешаем statefull-пекеты.
$IPT -A INPUT -j statefull
# фильтруем фходящий трафик на самбу-шары
$IPT -A INPUT -p tcp —dport 137:139 -j ACCEPT
$IPT -A INPUT -p udp —dport 137:139 -j ACCEPT
$IPT -A INPUT -p tcp —dport 445 -j ACCEPT
$IPT -A INPUT -p udp —dport 445 -j ACCEPT
#output
#Задание правил для исходящего траффика
$IPT -A OUTPUT -j common-check
$IPT -A OUTPUT -s $LAN -j ACCEPT
$IPT -A OUTPUT -p icmp -j icmp-out
$IPT -A OUTPUT -o $LO_IF -j ACCEPT
$IPT -A OUTPUT -j statefull
#forward
#Задание правил для сквазного траффика
# Отбрасываем плохие пакеты
$IPT -A FORWARD -j common-check
# Разрешаем весь исходящий трафик с локалки
$IPT -A FORWARD -s $LAN -j ACCEPT
# Разрешаем входящие пакеты, являющиеся частью установленного соединения
$IPT -A FORWARD -j statefull
# Проброс для торента
$IPT -t nat -A PREROUTING -p TCP —dport 59222 -i eth0 -j DNAT —to 192.168.1.2
$IPT -t nat -A PREROUTING -p UDP —dport 59222 -i eth0 -j DNAT —to 192.168.1.2