Фев 262011
 

на клепал новый скрипт

#!/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

 

 

 Leave a Reply

(required)

(required)

36 Запросов к базе. 0,397 Генерации страницы, 36MB Использование памяти.
Вы зашли с IP: 54.225.16.10