1 (27.04.2011 20:56:03 отредактировано Kettler)

Накидал скрипт глянь а..
Гляньте скрипт может что подправить? Может что упустил.

#!/bin/bash

#ФОРВАРДИНГ
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr

#МОДУЛИ
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_conntrack_pptp

#ОЧИСТКА
iptables -F
iptables -F -t nat
iptables -F -t mangle

#ПОЛИТИКА
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#Маршруты
route add -net 192.168.128.0/24 gw 10.213.14.254
route add -host 10.213.1.63 gw 10.213.14.254
route add -host 10.213.17.14 gw 10.213.14.254
route add -host 10.213.47.18 gw 10.213.14.254
route add -host 10.213.6.182 gw 10.213.14.254
route add -host 192.168.131.111 gw 10.213.14.254

#МАСКАРДИНГ
iptables --table nat --append POSTROUTING --out-interface eth3 -j SNAT --to-source 10.213.14.55
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface bond0 -j SNAT --to-source 192.168.0.1
iptables --table nat --append POSTROUTING --out-interface virbr1 -j SNAT --to-source 192.168.100.1
iptables --table nat --append POSTROUTING --out-interface tun0 -j SNAT --to-source 192.168.200.1
iptables --table nat --append POSTROUTING --out-interface tun1 -j SNAT --to-source 192.168.200.1
iptables --table nat --append POSTROUTING --out-interface tun2 -j SNAT --to-source 192.168.200.1
iptables --table nat --append POSTROUTING --out-interface tun3 -j SNAT --to-source 192.168.200.1
iptables --table nat --append POSTROUTING --out-interface tun4 -j SNAT --to-source 192.168.200.1

#МАППИНГ
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp --dport 873 -j DNAT --to-destination 192.168.100.100:873
iptables -t nat -A PREROUTING -p tcp --dport 8450 -j DNAT --to-destination 192.168.100.100:8450
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp --dport 3389 -j DNAT --to-destination 192.168.100.100:3389
iptables -t nat -A PREROUTING -s 192.168.128.2 -p tcp --dport 3389 -j DNAT --to-destination 192.168.100.100:3389
iptables -t nat -A PREROUTING -s 10.213.1.63 -p tcp --dport 3389 -j DNAT --to-destination 192.168.100.100:3389

#web
iptables -t nat -A PREROUTING -s 192.168.128.2 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
iptables -t nat -A PREROUTING -s 10.213.1.63 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80

#ВЫРАВНИВАЕМ MTU
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

inet="ppp0"
local="eth3"

#############Firewall#############
# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP

# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Приводит к связыванию системных ресурсов, так что реальных обмен данными становится не возможным.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

#ЛОКАЛЬНЫЙ ТРАФФИК
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i bond0 -j ACCEPT
iptables -A OUTPUT -o bond0 -j ACCEPT
iptables -A INPUT -i virbr1 -j ACCEPT
iptables -A OUTPUT -o virbr1 -j ACCEPT
iptables -A INPUT -s 192.168.200.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.200.0/24 -j ACCEPT

# ICMP СЕРВЕР
iptables -A INPUT -i $inet -p icmp -j ACCEPT
iptables -A OUTPUT -o $inet -p icmp -j ACCEPT
iptables -A INPUT -i $local -p icmp -j ACCEPT
iptables -A OUTPUT -o $local -p icmp -j ACCEPT

#VTUN
iptables -A INPUT -s 10.213.17.14 -j ACCEPT
iptables -A OUTPUT -d 10.213.17.14 -j ACCEPT
iptables -A INPUT -s 10.213.47.18 -j ACCEPT
iptables -A OUTPUT -d 10.213.47.18 -j ACCEPT
iptables -A INPUT -s 10.213.6.182 -j ACCEPT
iptables -A OUTPUT -d 10.213.6.182 -j ACCEPT
iptables -A INPUT -s 192.168.131.111 -j ACCEPT
iptables -A OUTPUT -d 192.168.131.111 -j ACCEPT

#VTUN FORWARD
iptables -A FORWARD -s 192.168.0.2 -d 192.168.200.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.200.0/24 -d 192.168.0.2 -j ACCEPT

#VNC
iptables -A INPUT -i $local -p tcp -m multiport --ports 5900,5901,5902,5903,5904,5905,5906 -j ACCEPT
iptables -A OUTPUT -o $local -p tcp -m multiport --ports 5900,5901,5902,5903,5904,5905,5906 -j ACCEPT

# Разрешаем серверу http, https
iptables -A INPUT -i $inet -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -o $inet -p tcp --dport  80 -j ACCEPT

iptables -A INPUT -i $inet -p tcp --sport 21 -j ACCEPT
iptables -A OUTPUT -o $inet -p tcp --dport  21 -j ACCEPT

iptables -A INPUT -i $inet -p tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -o $inet -p tcp --dport  443 -j ACCEPT

iptables -A INPUT -i $inet -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -o $inet -p udp --dport 53 -j ACCEPT

iptables -A INPUT -i $inet -p udp --sport 20 -j ACCEPT
iptables -A OUTPUT -o $inet -p udp --dport 20 -j ACCEPT

iptables -A INPUT -i $local -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o $local -p tcp --sport  22 -j ACCEPT

iptables -A INPUT -i $local -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -o $local -p udp --dport 53 -j ACCEPT


#Разрешаем порты для l2tp
iptables -A INPUT -i $local -p udp --dport 1701 --sport 1701 -j ACCEPT
iptables -A OUTPUT -o $local -p udp --sport 1701 --dport 1701 -j ACCEPT
iptables -A INPUT -i $local -p udp --dport 500 --sport 500 -j ACCEPT
iptables -A OUTPUT -o $local -p udp --sport 500 --dport 500 -j ACCEPT
iptables -A INPUT -i $local -p udp --dport 47 --sport 47 -j ACCEPT
iptables -A OUTPUT -o $local -p udp --sport 47 --dport 17 -j ACCEPT

#############Шейпер#############

#Режем входящую
NUMBERS_LAN="bond0 virbr1"
for number_vl in `echo $NUMBERS_LAN`
do
tc qdisc del dev $number_vl root
tc qdisc add dev $number_vl root handle 1: htb
tc class add dev $number_vl parent 1: classid 1:1 htb rate 100Mbit

tc class add dev $number_vl parent 1:1 classid 1:200 htb rate 200Mbit ceil 200Mbit burst 15
tc class add dev $number_vl parent 1:1 classid 1:100 htb rate 100Mbit ceil 100Mbit burst 15
tc class add dev $number_vl parent 1:1 classid 1:90 htb rate 512Kbit ceil 512Kbit burst 15
tc class add dev $number_vl parent 1:1 classid 1:80 htb rate 128Kbit ceil 512Kbit burst 15

tc qdisc add dev $number_vl parent 1:200 handle 200: sfq perturb 10
tc qdisc add dev $number_vl parent 1:100 handle 100: sfq perturb 10
tc qdisc add dev $number_vl parent 1:90 handle 90: sfq perturb 10
tc qdisc add dev $number_vl parent 1:80 handle 80: sfq perturb 10

tc filter add dev $number_vl parent 1:0 protocol ip prio 1 handle 200 fw classid 1:200
tc filter add dev $number_vl parent 1:0 protocol ip prio 1 handle 100 fw classid 1:100
tc filter add dev $number_vl parent 1:0 protocol ip prio 2 handle 90 fw classid 1:90
tc filter add dev $number_vl parent 1:0 protocol ip prio 3 handle 80 fw classid 1:80
done

#Это всем нашим юзерам
iptables -t mangle -A FORWARD -s 192.168.0.0/24 -o $inet -j MARK --set-mark 80
iptables -t mangle -A FORWARD -i $inet -d 192.168.0.0/24 -j MARK --set-mark 80
iptables -A FORWARD -s 192.168.0.0/24 -p tcp -m multiport --dport 110,25,143,1024,55777 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -p tcp -m multiport --sport 110,25,143,1024,55777 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -p udp -m multiport --dport 110,25,143,1024,55777 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -p udp -m multiport --sport 110,25,143,1024,55777 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -p icmp -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -p icmp -j ACCEPT

#Разрешаем NETBIOS
iptables -t mangle -A FORWARD -i bond0 -o eth3 -j MARK --set-mark 100
iptables -t mangle -A FORWARD -i eth3 -o bond0 -j MARK --set-mark 100
iptables -A FORWARD -i bond0 -o eth3 -p udp -m multiport  --ports 135,136,137,138,139,445 -j ACCEPT
iptables -A FORWARD -i bond0 -o eth3 -p tcp -m multiport  --ports 135,136,137,138,139,445 -j ACCEPT
iptables -A FORWARD -i eth3 -o bond0 -p udp -m multiport  --ports 135,136,137,138,139,445 -j ACCEPT
iptables -A FORWARD -i eth3 -o bond0 -p tcp -m multiport  --ports 135,136,137,138,139,445 -j ACCEPT

#BACKUP PC
iptables -t mangle -A FORWARD -s 192.168.0.2 -o $inet -j MARK --set-mark 90
iptables -t mangle -A FORWARD -i $inet -d 192.168.0.2 -j MARK --set-mark 90
iptables -A FORWARD -s 192.168.0.2 -o $inet -p tcp -m multiport --dport 80,8450,20,21 -j ACCEPT
iptables -A FORWARD -i $inet -d 192.168.0.2 -p tcp -m multiport --sport 80,8450,20,21 -j ACCEPT

#BACKUP WEB
iptables -t mangle -A FORWARD -s 10.213.1.63 -d 192.168.0.2 -j MARK --set-mark 100
iptables -t mangle -A FORWARD -s 192.168.0.2 -d 10.213.1.63 -j MARK --set-mark 100
iptables -A FORWARD -s 10.213.1.63 -d 192.168.0.2 -p tcp -m multiport --dport 80 -j ACCEPT
iptables -A FORWARD -s 192.168.0.2 -d 10.213.1.63 -p tcp -m multiport --sport 80 -j ACCEPT

iptables -t mangle -A FORWARD -s 192.168.128.2 -d 192.168.0.2 -j MARK --set-mark 100
iptables -t mangle -A FORWARD -s 192.168.0.2 -d 192.168.128.2 -j MARK --set-mark 100
iptables -A FORWARD -s 192.168.128.2 -d 192.168.0.2 -p tcp -m multiport --dport 80 -j ACCEPT
iptables -A FORWARD -s 192.168.0.2 -d 192.168.128.2 -p tcp -m multiport --sport 80 -j ACCEPT

#ТЕРМИНАЛЬНЫЙ СЕРВЕР
iptables -t mangle -A FORWARD -i virbr1 -o eth3 -j MARK --set-mark 100
iptables -t mangle -A FORWARD -i eth3 -o virbr1 -j MARK --set-mark 100
iptables -A FORWARD -i virbr1 -o eth3 -j ACCEPT
iptables -A FORWARD -i eth3 -o virbr1 -j ACCEPT

iptables -t mangle -A FORWARD -i virbr1 -o bond0 -j MARK --set-mark 200
iptables -t mangle -A FORWARD -i bond0 -o virbr1 -j MARK --set-mark 200
iptables -A FORWARD -i virbr1 -o bond0 -j ACCEPT
iptables -A FORWARD -i bond0 -o virbr1 -j ACCEPT

iptables -t mangle -A FORWARD -s 192.168.100.0/24 -o $inet -j MARK --set-mark 90
iptables -t mangle -A FORWARD -i $inet -d 192.168.100.0/24 -j MARK --set-mark 90
iptables -A FORWARD -s 192.168.100.0/24 -o $inet -p tcp -m multiport --dport 80,8450,20,21 -j ACCEPT
iptables -A FORWARD -i $inet -d 192.168.100.0/24 -p tcp -m multiport --sport 80,8450,20,21 -j ACCEPT
iptables -A FORWARD -s 192.168.100.0/24 -p icmp  -j ACCEPT
iptables -A FORWARD -d 192.168.100.0/24 -p icmp  -j ACCEPT

iptables -A FORWARD -i bond0 -o virbr1 -p tcp -m multiport --ports 3389,8450 -j MARK --set-mark 200
iptables -A FORWARD -i virbr1 -o bond0 -p tcp -m multiport --ports 3389,8450 -j MARK --set-mark 200
iptables -A FORWARD -i bond0 -o virbr1 -p tcp -m multiport --ports 3389,8450 -j ACCEPT
iptables -A FORWARD -i virbr1 -o bond0 -p tcp -m multiport --ports 3389,8450 -j ACCEPT

iptables -A FORWARD -i eth3 -o virbr1 -p tcp -m multiport --ports 3389,8450 -j MARK --set-mark 100
iptables -A FORWARD -i virbr1 -o eth3 -p tcp -m multiport --ports 3389,8450 -j MARK --set-mark 100
iptables -A FORWARD -i eth3 -o virbr1 -p tcp -m multiport --ports 3389,8450 -j ACCEPT
iptables -A FORWARD -i virbr1 -o eth3 -p tcp -m multiport --ports 3389,8450 -j ACCEPT

iptables -A FORWARD -i ppp0 -o virbr1 -p tcp -m multiport --ports 8450 -j MARK --set-mark 90
iptables -A FORWARD -i virbr1 -o ppp0 -p tcp -m multiport --ports 8450 -j MARK --set-mark 90
iptables -A FORWARD -i ppp0 -o virbr1 -p tcp -m multiport --ports 8450 -j ACCEPT
iptables -A FORWARD -i virbr1 -o ppp0 -p tcp -m multiport --ports 8450 -j ACCEPT

#Режем исходящую
tc qdisc del dev $inet root
tc qdisc add dev $inet root handle 1: htb
tc class add dev $inet parent 1: classid 1:1 htb rate 100Mbit

tc class add dev $inet parent 1:1 classid 1:90 htb rate 512Kbit ceil 512Kbit burst 15
tc class add dev $inet parent 1:1 classid 1:80 htb rate 128Kbit ceil 512Kbit burst 15

tc qdisc add dev $inet parent 1:80 handle 90: sfq perturb 10
tc qdisc add dev $inet parent 1:80 handle 80: sfq perturb 10

tc filter add dev $inet parent 1:0 protocol ip prio 1 handle 90 fw classid 1:90
tc filter add dev $inet parent 1:0 protocol ip prio 2 handle 80 fw classid 1:80
Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

2

Kettler,

# Очистили цепочки
iptables -F
iptables -F -t nat
iptables -F -t mangle

# И удалили их
iptables -X
iptables -X -t nat
iptables -X -t mangle

Ну так для полноты, ведь если их очистили, они никуда не делись, потом заново они в скрипте создаются, так?

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

3 (27.04.2011 23:05:10 отредактировано zenon)

И вот не весть конечно что но отбрасывает немного:

iptables -N bad_tcp_packets
iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn: "
iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP


ы. Вот побольше drop списочек:

ptables -A INPUT -p icmp -m icmp --icmp-type 13 -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags PSH,ACK PSH -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j REJECT --reject-with icmp-host-unreachable

Только от сканера портов:

# Защита от сканеров портов:
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP

или

# любой пакет идущий на не 22,80 порт блокируется с ip адресом отправившим его на 120 секунд,
# на 120 секунд блокируется все пакеты с этого ip, тем самым предотвращается сканирование портов
iptables -A INPUT -m recent --rcheck --seconds 120 --name FUCKOFF -j DROP
iptables -A INPUT -p tcp -m multiport ! --dports 22,80 -m recent --set --name FUCKOFF -j DROP

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

4

newzenon чем флаги думаю лучше статус не?
А на счёт
iptables -A INPUT -m recent --rcheck --seconds 120 --name FUCKOFF -j DROP
iptables -A INPUT -p tcp -m multiport ! --dports 22,80 -m recent --set --name FUCKOFF -j DROP
подумаю

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

5

iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn: "
мне это на фиг логирование

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

6 (28.04.2011 00:32:48 отредактировано zenon)

Kettler, тут видишь как, вроде как всё нормально, а вот кого - нибудь услышать с реальным "боевым" опытом.
Ну или отчеты о военных действиях.  smile
А так в логи вешать, да поглядывать.
Хотя может это и лишние престраховки.

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

7 (28.04.2011 00:35:47 отредактировано Kettler)

Это не лишнее и если бы надо было поверь настроил)
И вешать надо не на NEW а на ESTABLISHED

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

8

Сразу на -m state --state NEW,RELATED,ESTABLISHED

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

9

от NEW задолбаешься логи чтить  wink

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

10

Kettler, просто из интереса - а маршруты у тебя для чего?

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

11 (28.04.2011 09:06:01 отредактировано Kettler)

Локальная сеть прова. Обьединяю удалённые маршрутизаторы на линукс туннелями vtun
По vtun бежит nfs + snmp

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

12 (29.04.2011 11:11:57 отредактировано zenon)

Такой вот вариант:

iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

У себя сделал вот так:

iptables -A INPUT -p all  -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

13

newzenon пишет:

Такой вот вариант:

iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

У себя сделал вот так:

iptables -A INPUT -p all  -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

смысл -p all ? ведь всё равно сработает ток не те порты которые открыты

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

14

Вот нарыл где-то:

#!/bin/sh

# Задаем некоторые переменные:

# Переменная, задающая путь к файлу запуска iptables.
IPT="/sbin/iptables"

# Ваш сетевой интерфейс. Это нужно, чтобы не писать в правилах одно и тоже.
INET_IFACE="ppp0"

# Номера непривилегированных портов 
UNPRIPORTS="1024:65535"

start_fw()
{
    # Включить перенаправление пакетов через ядро.
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    # Сбросить правила и удалить цепочки.
    $IPT -F
    $IPT -X
    
    # Политики по умолчанию.
    $IPT -P INPUT DROP
    $IPT -P FORWARD ACCEPT
    $IPT -P OUTPUT DROP

    # Разрешаем прохождение любого трафика по интерфейсу обратной петли.
    $IPT -A INPUT -i lo -j ACCEPT
    $IPT -A OUTPUT -o lo -j ACCEPT
    
    # Запрещаем любые новые подключения с любых интерфейсов, кроме lo к компьютеру.
    $IPT -A INPUT -m state ! -i lo --state NEW -j DROP
    
    # Если интерфейс не lo, то запрещаем входить в список его адресов.
    $IPT -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP
    
    # Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
    $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
    
    # Предупреждаю вас о туповатых провайдерах, которые назначают IP адреса, отведенные IANA для локальных сетей.
    # Например адреса 10.X.X.X. Для этого надо установить правило, пропускающие трафик с этих серверов, ранее цепочки INPUT.
    $IPT -t nat -I PREROUTING -i $INET_IFACE -s 10.0.0.1/32 -j ACCEPT
    
    # Эти правила предохраняют от некоторых типов атак:
    
    # SYN наводнение.
    # Приводит к связыванию системных ресурсов, так что реальных обмен данными становится не возможным.
    $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
    $IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
    
    # UDP наводнение 
    # Службы использующие UDP, очень часто становятся мишенью для атак с целью вывода системы из строя.
    $IPT -A INPUT -p UDP -s 0/0 --destination-port 138 -j DROP 
    $IPT -A INPUT -p UDP -s 0/0 --destination-port 113 -j REJECT 
    $IPT -A INPUT -p UDP -s 0/0 --source-port 67 --destination-port 68 -j ACCEPT  
    $IPT -A INPUT -p UDP -j RETURN 
    $IPT -A OUTPUT -p UDP -s 0/0 -j ACCEPT 
    
    # ICMP - перенаправление 
    # ICMP - сообщение указывает системе изменить содержимое таблиц маршрутизации с тем, что бы направлять 
    # пакеты по более короткому маршруту. Может быть использовано взломщиком для перенаправления вашего трафика через свою машину.
    $IPT -A INPUT --fragment -p ICMP -j DROP 
    $IPT -A OUTPUT --fragment -p ICMP -j DROP 
    
    # Разрешаем  ICMP соединение. Значительная часть ICMP используется для передачи сообщений о 
    # том, что происходит с тем или иным UDP или TCP соединением.
    $IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type source-quench -j ACCEPT
    $IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type source-quench -j ACCEPT
    
    # Разрешаем себе ping наружу - нас же не попингуешь - пакеты отбрасываются.
    $IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type echo-reply -j ACCEPT
    $IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type echo-request -j ACCEPT

    # Разрешаем передачу пакета - некорректный параметр - используется, если в заголовке пакета содержится недопустимая запись,
    # или если контрольная сумма заголовка не соответствует контрольной сумме, указанной передающим узлом.
    $IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type parameter-problem -j ACCEPT
    $IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type parameter-problem -j ACCEPT

    # Запрещаем подключение к X серверу через сетевые интерфейсы.
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 6000:6063 -j DROP --syn
    
    # Прописываем порты, которые открыты в системе, но которые не должны быть открыты на сетевых интерфейсах:
    # $IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE -j DROP --dports #порта
    $IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE -j DROP --dports 783
    $IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE -j DROP --dports 3310
    $IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE -j DROP --dports 10000
    
    # DNS сервер имен разрешаем.
    $IPT -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 53 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 53 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p udp -m udp -i $INET_IFACE --dport $UNPRIPORTS --sport 53 -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 1024:65353 --sport 53 -j ACCEPT
    
    # Разрешаем AUTH-запросы на удаленные сервера, на свой же компьютер - запрещаем.
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 113 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 113 -j ACCEPT ! --syn
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 113 -j DROP
    
    # Открываем некоторые порты:
    
    # SMTP клиент (25)
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 25 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 25 -j ACCEPT ! --syn
    
    # POP3 клиент (110)
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 110 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 110 -j ACCEPT ! --syn
    
    # IMAP4 клиент (143)
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 143 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 143 -j ACCEPT ! --syn
    
    # SSH клиент (22)
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 22 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 22 -j ACCEPT ! --syn
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 22 --sport 1020:1023 -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 1020:1023 --sport 22 -j ACCEPT ! --syn
    
    # FPT клиент (21)
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 21 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 21 -j ACCEPT ! --syn
    
    # HTTP/HTTPS клиент (80, 443)
    $IPT -A OUTPUT -p tcp -m tcp -m multiport -o $INET_IFACE --sport $UNPRIPORTS -j ACCEPT --dports 80,443
    $IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE --dport $UNPRIPORTS -j ACCEPT --sports 80,443 ! --syn
    
    # Разрешаем finger, whois, gorper, wais. Traceroute - разрешаем себе, к нам не проломятся - запрещено. Telnet 
    # запретил, чтобы соблазна не было передавать пароли прямым текстом.
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 20 -j ACCEPT
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 20 --sport $UNPRIPORTS -j ACCEPT ! --syn
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport $UNPRIPORTS --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport $UNPRIPORTS -j ACCEPT ! --syn
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 23 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 23 -j ACCEPT ! --syn
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 79 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 79 -j ACCEPT ! --syn
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 43 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 43 -j ACCEPT ! --syn
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 70 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 70 -j ACCEPT ! --syn
    $IPT -A OUTPUT -p tcp -m tcp -o $INET_IFACE --dport 210 --sport $UNPRIPORTS -j ACCEPT
    $IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport $UNPRIPORTS --sport 210 -j ACCEPT ! --syn
    $IPT -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 33434:33523 --sport 32769:65535 -j ACCEPT
      
    # Разрешаем прохождение DHCP запросов через iptables. Нужно, если IP адрес динамический.
    $IPT -A OUTPUT -p udp -m udp -o $INET_IFACE --dport 67 --sport 68 -j ACCEPT
    $IPT -A INPUT -p udp -m udp -i $INET_IFACE --dport 68 --sport 67 -j ACCEPT
    
}

case "$1" in
start)    echo -n "Starting firewall: iptables"
    start_fw
        echo "." 
    ;;
stop)    echo -n "Stopping firewall: iptables"
    iptables -F
    iptables -X
        echo "."
        ;;
save)    echo -n "Saving firewall: iptables"
    iptables-save > /etc/rules-save
    echo "."
    ;;    
restart) echo -n "Restarting firewall: iptables"
    iptables -F
    iptables -X
    cat /etc/rules-save | iptables-restore
        echo "."
        ;;
reload|force-reload) echo -n "Reloading configuration files for firewall: iptables"
        echo "."
        ;;
*)    echo "Usage: /etc/init.d/rc.iptables start|stop|restart|reload|force-reload"
        exit 1 
        ;;
esac
exit 0
История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

15 (29.04.2011 13:59:01 отредактировано Kettler)

На данных примерах сам разбирался

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

16

А ты торренты как открываешь?

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

17

Дома

# Разрешаем torrent
iptables -A INPUT -i ppp0 -p tcp --sport 51413 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 51413 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp --sport 51413 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p udp --dport 51413 -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp -m multiport  --ports 49152:65535 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp -m multiport  --ports 49152:65535 -j ACCEPT

Ну и конечно клиент настроен на заданные порты у меня transmision daemon

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

18

51413 - веб-морда?

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.

19 (29.04.2011 14:10:51 отредактировано Kettler)

нет
peer-port - 51413
web морда - 9091

peer-port-random-high - 65535
peer-port-random-low - 49152

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

20

Kettler пишет:

peer-port - 51413

У меня deluge, peer-port она сама как-то выставляет.
Просто не пойму почему из стандартных 6881:6899
не хочет брать ставлю больше 49999 - нормально работает.

История показывает, что во всем новом обычно кроется какой-то подвох.
Классическая ошибка, которую совершают проектировщики
абсолютно надежных систем, - недооценка изобретательности клинических идиотов.