211

Здравствуйте!
После загрузки правил iptables ругается.

Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `SSHDROP'
Flushing chain `shaper'
Flushing chain `PREROUTING'
Flushing chain `POSTROUTING'
Flushing chain `OUTPUT'
Flushing chain `PREROUTING'
Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `POSTROUTING'
Deleting chain `SSHDROP'
Deleting chain `shaper'
Deleting chain `shaper'
iptables: No chain/target/match by that name.

Чего ему не хватает?
Вот содержимое firewall.sh:

#!/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 ipt_recent ip_list_tot=4000

# Объявление переменных
export IPT="/sbin/iptables -v"

# Интерфейс который смотрит в интернет
export WAN=eth0

# Локальная сеть
export LAN=eth1 export LAN_IP_RANGE=192.168.0.0/24

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

#
# шейпер:
$IPT -X shaper
$IPT -N shaper

#
# ~7,5Mbit/s - udp-трафик (торенты, Skype):
$IPT -A shaper -p udp -i $LAN -o $WAN -m hashlimit --hashlimit-upto  500/s --hashlimit-burst 5000 --hashlimit-name shp-udp-10out --hashlimit-mode srcip -j ACCEPT
$IPT -A shaper -p udp -i $WAN -o $LAN -m hashlimit --hashlimit-upto  500/s --hashlimit-burst 5000 --hashlimit-name shp-udp-10in  --hashlimit-mode srcip -j ACCEPT
$IPT -A shaper -p udp ! --dport 53 -j DROP

#
# ~10M на www:
$IPT -A shaper -p tcp --dport 80 -i $LAN -o $WAN -m hashlimit --hashlimit-upto 1000/s --hashlimit-burst 5000 --hashlimit-name shp-www-10out --hashlimit-mode srcip -j ACCEPT
$IPT -A shaper -p tcp --dport 80 -i $LAN -o $WAN -j REJECT
$IPT -A shaper -p tcp --sport 80 -i $WAN -o $LAN -m hashlimit --hashlimit-upto  800/s --hashlimit-burst 5000 --hashlimit-name shp-www-10in  --hashlimit-mode srcip -j ACCEPT
$IPT -A shaper -p tcp --sport 80 -i $WAN -o $LAN -j REJECT

#
# ~10M  остальные протоколы:
$IPT -A shaper -p tcp -i $LAN -o $WAN -m hashlimit --hashlimit-upto 1000/s --hashlimit-burst 5000 --hashlimit-name shp-tcp-10out --hashlimit-mode srcip -j ACCEPT
$IPT -A shaper -p tcp -i $WAN -o $LAN -m hashlimit --hashlimit-upto  800/s --hashlimit-burst 5000 --hashlimit-name shp-tcp-10in  --hashlimit-mode srcip -j ACCEPT
$IPT -A shaper -p tcp -j REJECT
$IPT -A shaper -p icmp -j ACCEPT

# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено -
# запрещено):
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN -j ACCEPT

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

# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

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

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

# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -o $LAN -i $WAN -j REJECT

# Маскарадинг
$IPT -t nat -A POSTROUTING -s $LAN_IP_RANGE -o $WAN -j MASQUERADE

# Открываем порт для ssh
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -p udp --dport 22 -j ACCEPT

# Защищаем 22 порт SSH от брутфорса (перебора паролей)
# Задача следующих правил ограничить соединения на порт ssh 10-тью попытками 
# в течении 10 минут с 1 ip адреса. Создаем новую цепочку правил SSHDROP
$IPT -N SSHDROP

# Все новые соединения на порт 22 пропускаем через цепочку SSHDROP
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -j SSHDROP
$IPT -A SSHDROP -m recent --set --name SSH

# Если требуется будем писать лог соединений ssh
$IPT -A SSHDROP -m recent --update --seconds 300 --hitcount 10 --name SSH -j LOG --log-level info --log-prefix "SSH DROP: "

# Если начальные условия нарушены то запретим соединение
$IPT -A SSHDROP -m recent --update --seconds 300 --hitcount 10 --name SSH -j DROP

# Защита от DDOS
$IPT -I INPUT 1 -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 15 --connlimit-mask 32 -j DROP
$IPT -A INPUT -s 193.201.218.170 -j DROP
$IPT -A INPUT -p tcp -m tcp --dport 80 -m string --string "GET / HTTP" --algo kmp --to 1024 -m recent --set --name httpddos --rsource 
$IPT -A INPUT -p tcp -m tcp --dport 80 -m string --string "GET / HTTP" --algo kmp --to 1024 -m recent --update --seconds 10 --hitcount 2 --name httpddos --rsource -j DROP

# Открываем порт для ftp
$IPT -A INPUT -p tcp --dport 21 -j ACCEPT
$IPT -A INPUT -p udp --dport 21 -j ACCEPT

# Открываем порт для почты
$IPT -A INPUT -p tcp --dport 993 -j ACCEPT
$IPT -A INPUT -p udp --dport 993 -j ACCEPT
$IPT -A INPUT -p tcp --dport 25 -j ACCEPT
$IPT -A INPUT -p udp --dport 25 -j ACCEPT
$IPT -A INPUT -p tcp --dport 143 -j ACCEPT
$IPT -A INPUT -p udp --dport 143 -j ACCEPT
$IPT -A INPUT -p tcp --dport 110 -j ACCEPT
$IPT -A INPUT -p udp --dport 110 -j ACCEPT

# Открытие портов для торрентов
$IPT -A INPUT -p tcp --dport 6881:6889 -m state --state NEW -j ACCEPT
# Откытие 443 порта
$IPT -A INPUT -p tcp --dport 443 -j ACCEPT
$IPT -A INPUT -p udp --dport 443 -j ACCEPT

# Откытие 53 и 953 порта для bind
$IPT -A INPUT -p tcp --dport 53 -j ACCEPT
$IPT -A INPUT -p udp --dport 53 -j ACCEPT

# Откытие порта 10000 для webmin
$IPT -A INPUT -p tcp --dport 10000 -j ACCEPT
$IPT -A INPUT -p udp --dport 10000 -j ACCEPT

# Открываем 80 и 81 порт для веб сайтов
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -p udp --dport 80 -j ACCEPT

# Открытие порта для голосового сервера Team Speak
$IPT -A INPUT -p tcp --dport 9987 -j ACCEPT
$IPT -A INPUT -p udp --dport 9987 -j ACCEPT
$IPT -A INPUT -p tcp --dport 30033 -j ACCEPT
$IPT -A INPUT -p udp --dport 30033 -j ACCEPT
$IPT -A INPUT -p tcp --dport 10011 -j ACCEPT
$IPT -A INPUT -p udp --dport 10011 -j ACCEPT
$IPT -A INPUT -p tcp --dport 57834 -j ACCEPT
$IPT -A INPUT -p udp --dport 57834 -j ACCEPT

# Открытие порта 3306
$IPT -A INPUT -p tcp --dport 3306 -j ACCEPT
$IPT -A INPUT -p udp --dport 3306 -j ACCEPT

# Забаненные IP-адреса
$IPT -A INPUT -s 80.53.125.66 -j LOG --log-prefix "IP 80.53.125.66 DROP:"
$IPT -A INPUT -s 80.53.125.66 -j DROP
$IPT -A INPUT -s 93.188.8.67 -j LOG --log-prefix "IP 93.188.8.67 DROP:"
$IPT -A INPUT -s 93.188.8.67 -j DROP
$IPT -A INPUT -s 205.251.132.3 -j LOG --log-prefix "IP 205.251.132.3 DROP:"
$IPT -A INPUT -s 205.251.132.3 -j DROP
$IPT -A INPUT -s 94.249.190.116 -j LOG --log-prefix "IP 94.249.190.116 DROP:"
$IPT -A INPUT -s 94.249.190.116 -j DROP
$IPT -A INPUT -s 178.150.232.225 -j LOG --log-prefix "IP 178.150.232.225 DROP:"
$IPT -A INPUT -s 178.150.232.225 -j DROP
$IPT -A INPUT -s 225.232.150.178 -j LOG --log-prefix "IP 225.232.150.178 DROP:"
$IPT -A INPUT -s 225.232.150.178 -j DROP
$IPT -A INPUT -s 200.10.237.25 -j LOG --log-prefix "IP 200.10.237.25 DROP:"
$IPT -A INPUT -s 200.10.237.25 -j DROP
$IPT -A INPUT -s 157.25.198.213 -j LOG --log-prefix "IP 157.25.198.213 DROP:"
$IPT -A INPUT -s 157.25.198.213 -j DROP
$IPT -A INPUT -s 64.40.108.238 -j LOG --log-prefix "IP 64.40.108.238 DROP:"
$IPT -A INPUT -s 64.40.108.238 -j DROP
$IPT -A INPUT -s 109.86.107.39 -j LOG --log-prefix "IP 109.86.107.39 DROP:"
$IPT -A INPUT -s 109.86.107.39 -j DROP
$IPT -A INPUT -s 39.107.86.109 -j LOG --log-prefix "IP 39.107.86.109 DROP:"
$IPT -A INPUT -s 39.107.86.109 -j DROP
$IPT -A INPUT -s 174.142.39.135 -j LOG --log-prefix "IP 174.142.39.135 DROP:"
$IPT -A INPUT -s 174.142.39.135 -j DROP
$IPT -A INPUT -s 59.99.230.91 -j LOG --log-prefix "IP 59.99.230.91 DROP:"
$IPT -A INPUT -s 59.99.230.91 -j DROP
$IPT -A INPUT -s 218.108.247.153 -j LOG --log-prefix "IP 218.108.247.153 DROP:"
$IPT -A INPUT -s 218.108.247.153 -j DROP
$IPT -A INPUT -s 88.191.80.218 -j LOG --log-prefix "IP 88.191.80.218 DROP:"
$IPT -A INPUT -s 88.191.80.218 -j DROP
$IPT -A INPUT -s 178.137.165.100 -j LOG --log-prefix "IP 178.137.165.100 DROP:"
$IPT -A INPUT -s 178.137.165.100 -j DROP

#Вывод информации
$IPT -L -n -t nat

212

ERT пишет:

Чего ему не хватает?

Запусти

$ bash -x script-name

и посмотри.
Почитай http://rus-linux net/nlib.php?name=/MyL … -02-3.html

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

213

Так правила кажись все загружаются.

 bash -x /etc/firewall.sh
+ echo 1
+ echo 1
+ modprobe iptable_nat
+ modprobe ip_conntrack_ftp
+ modprobe ip_nat_ftp
+ modprobe ipt_recent ip_list_tot=4000
+ export 'IPT=/sbin/iptables -v'
+ IPT='/sbin/iptables -v'
+ export WAN=eth0
+ WAN=eth0
+ export LAN=eth1 export LAN_IP_RANGE=192.168.0.0/24
+ LAN=eth1
+ LAN_IP_RANGE=192.168.0.0/24
+ /sbin/iptables -v -F
Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `SSHDROP'
Flushing chain `shaper'
+ /sbin/iptables -v -F -t nat
Flushing chain `PREROUTING'
Flushing chain `POSTROUTING'
Flushing chain `OUTPUT'
+ /sbin/iptables -v -F -t mangle
Flushing chain `PREROUTING'
Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `POSTROUTING'
+ /sbin/iptables -v -X
Deleting chain `SSHDROP'
Deleting chain `shaper'
+ /sbin/iptables -v -t nat -X
+ /sbin/iptables -v -t mangle -X
+ /sbin/iptables -v -X shaper
Deleting chain `shaper'
iptables: No chain/target/match by that name.
+ /sbin/iptables -v -N shaper
+ /sbin/iptables -v -A shaper -p udp -i eth1 -o eth0 -m hashlimit --hashlimit-upto 500/s --hashlimit-burst 5000 --hashlimit-name shp-udp-10out --hashlimit-mode srcip -j ACCEPT
ACCEPT  udp opt -- in eth1 out eth0  0.0.0.0/0  -> 0.0.0.0/0  limit: up to 500/sec burst 5000 mode srcip
+ /sbin/iptables -v -A shaper -p udp -i eth0 -o eth1 -m hashlimit --hashlimit-upto 500/s --hashlimit-burst 5000 --hashlimit-name shp-udp-10in --hashlimit-mode srcip -j ACCEPT
ACCEPT  udp opt -- in eth0 out eth1  0.0.0.0/0  -> 0.0.0.0/0  limit: up to 500/sec burst 5000 mode srcip
+ /sbin/iptables -v -A shaper -p udp '!' --dport 53 -j DROP
DROP  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:!53
+ /sbin/iptables -v -A shaper -p tcp --dport 80 -i eth1 -o eth0 -m hashlimit --hashlimit-upto 1000/s --hashlimit-burst 5000 --hashlimit-name shp-www-10out --hashlimit-mode srcip -j ACCEPT
ACCEPT  tcp opt -- in eth1 out eth0  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:80 limit: up to 1000/sec burst 5000 mode srcip
+ /sbin/iptables -v -A shaper -p tcp --dport 80 -i eth1 -o eth0 -j REJECT
REJECT  tcp opt -- in eth1 out eth0  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:80 reject-with icmp-port-unreachable
+ /sbin/iptables -v -A shaper -p tcp --sport 80 -i eth0 -o eth1 -m hashlimit --hashlimit-upto 800/s --hashlimit-burst 5000 --hashlimit-name shp-www-10in --hashlimit-mode srcip -j ACCEPT
ACCEPT  tcp opt -- in eth0 out eth1  0.0.0.0/0  -> 0.0.0.0/0  tcp spt:80 limit: up to 833/sec burst 5000 mode srcip
+ /sbin/iptables -v -A shaper -p tcp --sport 80 -i eth0 -o eth1 -j REJECT
REJECT  tcp opt -- in eth0 out eth1  0.0.0.0/0  -> 0.0.0.0/0  tcp spt:80 reject-with icmp-port-unreachable
+ /sbin/iptables -v -A shaper -p tcp -i eth1 -o eth0 -m hashlimit --hashlimit-upto 1000/s --hashlimit-burst 5000 --hashlimit-name shp-tcp-10out --hashlimit-mode srcip -j ACCEPT
ACCEPT  tcp opt -- in eth1 out eth0  0.0.0.0/0  -> 0.0.0.0/0  limit: up to 1000/sec burst 5000 mode srcip
+ /sbin/iptables -v -A shaper -p tcp -i eth0 -o eth1 -m hashlimit --hashlimit-upto 800/s --hashlimit-burst 5000 --hashlimit-name shp-tcp-10in --hashlimit-mode srcip -j ACCEPT
ACCEPT  tcp opt -- in eth0 out eth1  0.0.0.0/0  -> 0.0.0.0/0  limit: up to 833/sec burst 5000 mode srcip
+ /sbin/iptables -v -A shaper -p tcp -j REJECT
REJECT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  reject-with icmp-port-unreachable
+ /sbin/iptables -v -A shaper -p icmp -j ACCEPT
ACCEPT  icmp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0
+ /sbin/iptables -v -P INPUT DROP
+ /sbin/iptables -v -P OUTPUT DROP
+ /sbin/iptables -v -P FORWARD DROP
+ /sbin/iptables -v -A INPUT -i lo -j ACCEPT
ACCEPT  all opt -- in lo out *  0.0.0.0/0  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -i eth1 -j ACCEPT
ACCEPT  all opt -- in eth1 out *  0.0.0.0/0  -> 0.0.0.0/0
+ /sbin/iptables -v -A OUTPUT -o lo -j ACCEPT
ACCEPT  all opt -- in * out lo  0.0.0.0/0  -> 0.0.0.0/0
+ /sbin/iptables -v -A OUTPUT -o eth1 -j ACCEPT
ACCEPT  all opt -- in * out eth1  0.0.0.0/0  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
ACCEPT  all opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  state RELATED,ESTABLISHED
+ /sbin/iptables -v -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
ACCEPT  all opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  state NEW,RELATED,ESTABLISHED
+ /sbin/iptables -v -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j shaper
shaper  all opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  state NEW,RELATED,ESTABLISHED
+ /sbin/iptables -v -A FORWARD -i eth1 -o eth0 -j ACCEPT
ACCEPT  all opt -- in eth1 out eth0  0.0.0.0/0  -> 0.0.0.0/0
+ /sbin/iptables -v -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
TCPMSS  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp flags:0x06/0x02 TCPMSS clamp to PMTU
+ /sbin/iptables -v -A INPUT -m state --state INVALID -j DROP
DROP  all opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  state INVALID
+ /sbin/iptables -v -A FORWARD -m state --state INVALID -j DROP
DROP  all opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  state INVALID
+ /sbin/iptables -v -A INPUT -p tcp '!' --syn -m state --state NEW -j DROP
DROP  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp flags:!0x17/0x02 state NEW
+ /sbin/iptables -v -A OUTPUT -p tcp '!' --syn -m state --state NEW -j DROP
DROP  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp flags:!0x17/0x02 state NEW
+ /sbin/iptables -v -A FORWARD -o eth1 -i eth0 -j REJECT
REJECT  all opt -- in eth0 out eth1  0.0.0.0/0  -> 0.0.0.0/0  reject-with icmp-port-unreachable
+ /sbin/iptables -v -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
MASQUERADE  all opt -- in * out eth0  192.168.0.0/24  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -p tcp --dport 22 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:22
+ /sbin/iptables -v -A INPUT -p udp --dport 22 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:22
+ /sbin/iptables -v -N SSHDROP
+ /sbin/iptables -v -A INPUT -p tcp --dport 22 -m state --state NEW -j SSHDROP
SSHDROP  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:22 state NEW
+ /sbin/iptables -v -A SSHDROP -m recent --set --name SSH
  all opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  recent: SET name: SSH side: source
+ /sbin/iptables -v -A SSHDROP -m recent --update --seconds 300 --hitcount 10 --name SSH -j LOG --log-level info --log-prefix 'SSH DROP: '
LOG  all opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  recent: UPDATE seconds: 300 hit_count: 10 name: SSH side: source LOG flags 0 level 6 prefix `SSH DROP: '
+ /sbin/iptables -v -A SSHDROP -m recent --update --seconds 300 --hitcount 10 --name SSH -j DROP
DROP  all opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  recent: UPDATE seconds: 300 hit_count: 10 name: SSH side: source
+ /sbin/iptables -v -I INPUT 1 -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 15 --connlimit-mask 32 -j DROP
DROP  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:80 flags:0x17/0x02 #conn/32 > 15
+ /sbin/iptables -v -A INPUT -s 193.201.218.170 -j DROP
DROP  all opt -- in * out *  193.201.218.170  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -p tcp -m tcp --dport 80 -m string --string 'GET / HTTP' --algo kmp --to 1024 -m recent --set --name httpddos --rsource
  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:80 STRING match "GET / HTTP" ALGO name kmp TO 1024 recent: SET name: httpddos side: source
+ /sbin/iptables -v -A INPUT -p tcp -m tcp --dport 80 -m string --string 'GET / HTTP' --algo kmp --to 1024 -m recent --update --seconds 10 --hitcount 2 --name httpddos --rsource -j DROP
DROP  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:80 STRING match "GET / HTTP" ALGO name kmp TO 1024 recent: UPDATE seconds: 10 hit_count: 2 name: httpddos side: source
+ /sbin/iptables -v -A INPUT -p tcp --dport 21 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:21
+ /sbin/iptables -v -A INPUT -p udp --dport 21 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:21
+ /sbin/iptables -v -A INPUT -p tcp --dport 993 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:993
+ /sbin/iptables -v -A INPUT -p udp --dport 993 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:993
+ /sbin/iptables -v -A INPUT -p tcp --dport 25 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:25
+ /sbin/iptables -v -A INPUT -p udp --dport 25 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:25
+ /sbin/iptables -v -A INPUT -p tcp --dport 143 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:143
+ /sbin/iptables -v -A INPUT -p udp --dport 143 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:143
+ /sbin/iptables -v -A INPUT -p tcp --dport 110 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:110
+ /sbin/iptables -v -A INPUT -p udp --dport 110 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:110
+ /sbin/iptables -v -A INPUT -p tcp --dport 6881:6889 -m state --state NEW -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpts:6881:6889 state NEW
+ /sbin/iptables -v -A INPUT -p tcp --dport 443 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:443
+ /sbin/iptables -v -A INPUT -p udp --dport 443 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:443
+ /sbin/iptables -v -A INPUT -p tcp --dport 53 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:53
+ /sbin/iptables -v -A INPUT -p udp --dport 53 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:53
+ /sbin/iptables -v -A INPUT -p tcp --dport 10000 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:10000
+ /sbin/iptables -v -A INPUT -p udp --dport 10000 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:10000
+ /sbin/iptables -v -A INPUT -p tcp --dport 80 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:80
+ /sbin/iptables -v -A INPUT -p udp --dport 80 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:80
+ /sbin/iptables -v -A INPUT -p tcp --dport 9987 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:9987
+ /sbin/iptables -v -A INPUT -p udp --dport 9987 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:9987
+ /sbin/iptables -v -A INPUT -p tcp --dport 30033 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:30033
+ /sbin/iptables -v -A INPUT -p udp --dport 30033 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:30033
+ /sbin/iptables -v -A INPUT -p tcp --dport 10011 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:10011
+ /sbin/iptables -v -A INPUT -p udp --dport 10011 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:10011
+ /sbin/iptables -v -A INPUT -p tcp --dport 57834 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:57834
+ /sbin/iptables -v -A INPUT -p udp --dport 57834 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:57834
+ /sbin/iptables -v -A INPUT -p tcp --dport 3306 -j ACCEPT
ACCEPT  tcp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  tcp dpt:3306
+ /sbin/iptables -v -A INPUT -p udp --dport 3306 -j ACCEPT
ACCEPT  udp opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  udp dpt:3306
+ /sbin/iptables -v -A INPUT -s 80.53.125.66 -j LOG --log-prefix 'IP 80.53.125.66 DROP:'
LOG  all opt -- in * out *  80.53.125.66  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 80.53.125.66 DROP:'
+ /sbin/iptables -v -A INPUT -s 80.53.125.66 -j DROP
DROP  all opt -- in * out *  80.53.125.66  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 93.188.8.67 -j LOG --log-prefix 'IP 93.188.8.67 DROP:'
LOG  all opt -- in * out *  93.188.8.67  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 93.188.8.67 DROP:'
+ /sbin/iptables -v -A INPUT -s 93.188.8.67 -j DROP
DROP  all opt -- in * out *  93.188.8.67  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 205.251.132.3 -j LOG --log-prefix 'IP 205.251.132.3 DROP:'
LOG  all opt -- in * out *  205.251.132.3  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 205.251.132.3 DROP:'
+ /sbin/iptables -v -A INPUT -s 205.251.132.3 -j DROP
DROP  all opt -- in * out *  205.251.132.3  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 94.249.190.116 -j LOG --log-prefix 'IP 94.249.190.116 DROP:'
LOG  all opt -- in * out *  94.249.190.116  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 94.249.190.116 DROP:'
+ /sbin/iptables -v -A INPUT -s 94.249.190.116 -j DROP
DROP  all opt -- in * out *  94.249.190.116  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 178.150.232.225 -j LOG --log-prefix 'IP 178.150.232.225 DROP:'
LOG  all opt -- in * out *  178.150.232.225  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 178.150.232.225 DROP:'
+ /sbin/iptables -v -A INPUT -s 178.150.232.225 -j DROP
DROP  all opt -- in * out *  178.150.232.225  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 225.232.150.178 -j LOG --log-prefix 'IP 225.232.150.178 DROP:'
LOG  all opt -- in * out *  225.232.150.178  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 225.232.150.178 DROP:'
+ /sbin/iptables -v -A INPUT -s 225.232.150.178 -j DROP
DROP  all opt -- in * out *  225.232.150.178  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 200.10.237.25 -j LOG --log-prefix 'IP 200.10.237.25 DROP:'
LOG  all opt -- in * out *  200.10.237.25  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 200.10.237.25 DROP:'
+ /sbin/iptables -v -A INPUT -s 200.10.237.25 -j DROP
DROP  all opt -- in * out *  200.10.237.25  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 157.25.198.213 -j LOG --log-prefix 'IP 157.25.198.213 DROP:'
LOG  all opt -- in * out *  157.25.198.213  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 157.25.198.213 DROP:'
+ /sbin/iptables -v -A INPUT -s 157.25.198.213 -j DROP
DROP  all opt -- in * out *  157.25.198.213  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 64.40.108.238 -j LOG --log-prefix 'IP 64.40.108.238 DROP:'
LOG  all opt -- in * out *  64.40.108.238  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 64.40.108.238 DROP:'
+ /sbin/iptables -v -A INPUT -s 64.40.108.238 -j DROP
DROP  all opt -- in * out *  64.40.108.238  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 109.86.107.39 -j LOG --log-prefix 'IP 109.86.107.39 DROP:'
LOG  all opt -- in * out *  109.86.107.39  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 109.86.107.39 DROP:'
+ /sbin/iptables -v -A INPUT -s 109.86.107.39 -j DROP
DROP  all opt -- in * out *  109.86.107.39  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 39.107.86.109 -j LOG --log-prefix 'IP 39.107.86.109 DROP:'
LOG  all opt -- in * out *  39.107.86.109  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 39.107.86.109 DROP:'
+ /sbin/iptables -v -A INPUT -s 39.107.86.109 -j DROP
DROP  all opt -- in * out *  39.107.86.109  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 174.142.39.135 -j LOG --log-prefix 'IP 174.142.39.135 DROP:'
LOG  all opt -- in * out *  174.142.39.135  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 174.142.39.135 DROP:'
+ /sbin/iptables -v -A INPUT -s 174.142.39.135 -j DROP
DROP  all opt -- in * out *  174.142.39.135  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 59.99.230.91 -j LOG --log-prefix 'IP 59.99.230.91 DROP:'
LOG  all opt -- in * out *  59.99.230.91  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 59.99.230.91 DROP:'
+ /sbin/iptables -v -A INPUT -s 59.99.230.91 -j DROP
DROP  all opt -- in * out *  59.99.230.91  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 218.108.247.153 -j LOG --log-prefix 'IP 218.108.247.153 DROP:'
LOG  all opt -- in * out *  218.108.247.153  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 218.108.247.153 DROP:'
+ /sbin/iptables -v -A INPUT -s 218.108.247.153 -j DROP
DROP  all opt -- in * out *  218.108.247.153  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 88.191.80.218 -j LOG --log-prefix 'IP 88.191.80.218 DROP:'
LOG  all opt -- in * out *  88.191.80.218  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 88.191.80.218 DROP:'
+ /sbin/iptables -v -A INPUT -s 88.191.80.218 -j DROP
DROP  all opt -- in * out *  88.191.80.218  -> 0.0.0.0/0
+ /sbin/iptables -v -A INPUT -s 178.137.165.100 -j LOG --log-prefix 'IP 178.137.165.100 DROP:'
LOG  all opt -- in * out *  178.137.165.100  -> 0.0.0.0/0  LOG flags 0 level 4 prefix `IP 178.137.165.100 DROP:'
+ /sbin/iptables -v -A INPUT -s 178.137.165.100 -j DROP
DROP  all opt -- in * out *  178.137.165.100  -> 0.0.0.0/0
+ /sbin/iptables -v -L -n -t nat
Chain PREROUTING (policy ACCEPT 2 packets, 104 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    2   104 MASQUERADE  all  --  *      eth0    192.168.0.0/24       0.0.0.0/0

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

214

ERT пишет:
+ /sbin/iptables -v -X shaper Deleting chain `shaper'
iptables: No chain/target/match by that name.

Уже удаленную цепочку пытается удалить.

$IPT -X shaper

лишнее.
Хотя ничего страшного.

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

215

zenon, как всегда, благодарю.

216

Пол дня не могу раздать инет в локалку. Причем схема точно такая же, как и на момент создания этой темы: провайдеры завели кабель, который подключен к интерфейсу eth1 (смотрит в инет), от интерфейса eth0 (смотрит в локальную сеть) кабель подключен к коммутатору (не управляемый) и далее, от свитча, к ПК в локальной сети.
Вся проблема в том, что веб-ресурсы не открываются, хотя сервер пингуется и по SSH я подключаюсь без вопросов. Что может быть не так? Возможно я где-то запутался (голова не соображает уже совсем), либо проблема с самим железом или схема подключения не правильная. Дистрибутив скачал сегодня 6.0.7.

217 (25.03.2013 23:02:35 отредактировано kisil)

Для того чтобы роздать интернетв локалку на серверек которому подходит интернетк интерфейсу eth0, а к eth1 подключена локалка нужно:
1. Правильно настроить эти 2 интерфейса. Для локалки можно взять статическую адресацыю 192.168.0....
2. Настрои подключеник интернету.Какоэто оно там есть DHCP, ADSL, VPN
3. Разрешыть форвардинг пакетов в ядре echo 1 > /proc/sys/net/ipv4/ip_forward
4. Настроить NAT и фаервол: в случае реального айпи, то самый простой конфиг фаервола

IPT="/usr/sbin/iptables"

$IPT -X
$IPT -F

$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

$IPT -A INPUT   -m state --state INVALID -j DROP

$IPT -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables  -t nat -A POSTROUTING -s ваша_локалка/16 --out-interface интерфейс_в_инет -j SNAT  --to-source $REAL_IP
##Если у вас динамической айпи на интерфейсе который смотрит в интернет то так
iptables -t nat -A POSTROUTING -o ppp0 -s ваша_локалка/24 -j MASQUERADE 
 

Далее на клиентах настраиваеш айпи, основным шлюзом указываеш ваш сервер, ДНС можеш прописать ДНС прова.
Это если в кратце.

Trouble  in WINDOWS reboot, trouble in UNIX be root.

218

kisil, ветку сначала прочитай, тут уже давно все разжевано.
ERT, ну как бы не первый раз уже, где конфиги?

ERT пишет:

Вся проблема в том, что веб-ресурсы не открываются, хотя сервер пингуется и по SSH я подключаюсь без вопросов. Что может быть не так?

Есть пинг, нет резолва, так DNS настрой, хотя бы ременно впиши на клиентах в /etc/resolv.conf гуглоднс 8.8.8.8

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

219 (26.03.2013 01:15:20 отредактировано ERT)

Конфиги те же. Вот только интерфейсы поменялись местами. Не знаю почему, но система определят встроенную сетевую карту как eth1, а не eth0 (значения не имеет, хотя в первом случае было наоборот). Предполагаю, что необходимо будет в firewall (который в этой же теме, пост 211) менять местами WAN на LAN и тут так же:

ERT⇓ пишет:

# Интерфейс который смотрит в интернет
export WAN=eth0
# Локальная сеть
export LAN=eth1 export LAN_IP_RANGE=192.168.0.0/24

Как правильно будет выглядеть?

zenon⇓ пишет:

Есть пинг, нет резолва, так DNS настрой, хотя бы ременно впиши на клиентах в /etc/resolv.conf гуглоднс 8.8.8.8

В прошлый раз я поднимал DNS-сервер (bind9), хотя инет в локалке был и без него. Но суть я уловил. Ранее мне два DNS-сервера предоставлял провайдер, а теперь в настройке сетевого интерфейса у меня DNS-сервер  8.8.8.8 (выдал провайдер).
Сервер на работе, проверить смогу только завтра.

220

С такими мелочами как WAN (провайдер) и LAN (локальная сеть) мог бы и сам разобраться.
DNS на шлюзе в прошлый раз у тебя dnsmasq в локалку раздавал, а не bind.
8.8.8.8 и 8.8.4.4- првайдер не может выдать, это адреса гугла.

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

221

zenon⇓ пишет:

С такими мелочами как WAN (провайдер) и LAN (локальная сеть) мог бы и сам разобраться.

Я это и понял, в принципе. Просто уточнил.

zenon⇓ пишет:

8.8.8.8 и 8.8.4.4- првайдер не может выдать, это адреса гугла.

Тут точнее сказать провайдер попросил меня заменить выданные ранее два DNS-сервера на гугловский.
Но проблема осталась и решить у меня ее никак не получается. Попытаюсь расписать все с самого начала.
1. Интерфейсы определяются оба. Дискретная карта eth0 - смотрит в инет (в отличии от предыдущего раза), а встроенная eth1 - локалка. Почему бортовая сетевуха не определилась как eth0 не понимаю.
Настройки /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address ххх.ххх.ххх.ххх
    netmask ххх.ххх.ххх.ххх
    network ххх.ххх.ххх.ххх
    broadcast ххх.ххх.ххх.ххх
    gateway ххх.ххх.ххх.ххх
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 8.8.8.8
    dns-search egcomputers.com.ua

# The secondary network interface
auto eth1
iface eth1 inet static
        address 192.168.0.1
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255

2. firewall вот:

#!/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 ipt_recent ip_list_tot=4000

# Объявление переменных
export IPT="/sbin/iptables -v"

# Интерфейс который смотрит в интернет
export WAN=eth0

# Локальная сеть
export LAN=eth1 export LAN_IP_RANGE=192.168.0.0/24

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено -
# запрещено):
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN -j ACCEPT

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

# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

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

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

# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -o $LAN -i $WAN -j REJECT

# Маскарадинг
$IPT -t nat -A POSTROUTING -s $LAN_IP_RANGE -o $WAN -j MASQUERADE

# Открываем порт для ssh
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -p udp --dport 22 -j ACCEPT

# Защищаем 22 порт SSH от брутфорса (перебора паролей)
# Задача следующих правил ограничить соединения на порт ssh 10-тью попытками 
# в течении 10 минут с 1 ip адреса. Создаем новую цепочку правил SSHDROP
$IPT -N SSHDROP

# Все новые соединения на порт 22 пропускаем через цепочку SSHDROP
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -j SSHDROP
$IPT -A SSHDROP -m recent --set --name SSH

# Если требуется будем писать лог соединений ssh
$IPT -A SSHDROP -m recent --update --seconds 300 --hitcount 10 --name SSH -j LOG --log-level info --log-prefix "SSH DROP: "

# Если начальные условия нарушены то запретим соединение
$IPT -A SSHDROP -m recent --update --seconds 300 --hitcount 10 --name SSH -j DROP

# Защита от DDOS
$IPT -I INPUT 1 -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 15 --connlimit-mask 32 -j DROP
$IPT -A INPUT -s 193.201.218.170 -j DROP
$IPT -A INPUT -p tcp -m tcp --dport 80 -m string --string "GET / HTTP" --algo kmp --to 1024 -m recent --set --name httpddos --rsource 
$IPT -A INPUT -p tcp -m tcp --dport 80 -m string --string "GET / HTTP" --algo kmp --to 1024 -m recent --update --seconds 10 --hitcount 2 --name httpddos --rsource -j DROP

# Открываем порт для ftp
$IPT -A INPUT -p tcp --dport 21 -j ACCEPT
$IPT -A INPUT -p udp --dport 21 -j ACCEPT

# Открываем порт для почты
$IPT -A INPUT -p tcp --dport 993 -j ACCEPT
$IPT -A INPUT -p udp --dport 993 -j ACCEPT
$IPT -A INPUT -p tcp --dport 25 -j ACCEPT
$IPT -A INPUT -p udp --dport 25 -j ACCEPT
$IPT -A INPUT -p tcp --dport 143 -j ACCEPT
$IPT -A INPUT -p udp --dport 143 -j ACCEPT
$IPT -A INPUT -p tcp --dport 110 -j ACCEPT
$IPT -A INPUT -p udp --dport 110 -j ACCEPT

# Открытие портов для торрентов
$IPT -A INPUT -p tcp --dport 6881:6889 -m state --state NEW -j ACCEPT

# Откытие 443 порта
$IPT -A INPUT -p tcp --dport 443 -j ACCEPT
$IPT -A INPUT -p udp --dport 443 -j ACCEPT

# Откытие 53 и 953 порта для bind
$IPT -A INPUT -p tcp --dport 53 -j ACCEPT
$IPT -A INPUT -p udp --dport 53 -j ACCEPT

# Откытие порта 10000 для webmin
$IPT -A INPUT -p tcp --dport 10000 -j ACCEPT
$IPT -A INPUT -p udp --dport 10000 -j ACCEPT

# Открываем 80 и 81 порт для веб сайтов
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -p udp --dport 80 -j ACCEPT

# Открытие порта для голосового сервера Team Speak
$IPT -A INPUT -p tcp --dport 9987 -j ACCEPT
$IPT -A INPUT -p udp --dport 9987 -j ACCEPT
$IPT -A INPUT -p tcp --dport 30033 -j ACCEPT
$IPT -A INPUT -p udp --dport 30033 -j ACCEPT
$IPT -A INPUT -p tcp --dport 10011 -j ACCEPT
$IPT -A INPUT -p udp --dport 10011 -j ACCEPT
$IPT -A INPUT -p tcp --dport 57834 -j ACCEPT
$IPT -A INPUT -p udp --dport 57834 -j ACCEPT

# Открытие порта 3306
$IPT -A INPUT -p tcp --dport 3306 -j ACCEPT
$IPT -A INPUT -p udp --dport 3306 -j ACCEPT

# Откытие порта 5150 для IP-камеры
$IPT -A INPUT -p tcp --dport 5150 -j ACCEPT
$IPT -A INPUT -p udp --dport 5150 -j ACCEPT

#Вывод информации
$IPT -L -n -t nat

WAN и LAN местами еще не менял, т.к. не создавал еще этот файл на сервере. Потом поправлю (а нужно ли?).
3. После того, как выполнил на сервере:

iptables -P INPUT   ACCEPT
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24  -j MASQUERADE

есть возможность подключения к серверу из локалки по 22 порту, но веб-трафика нет.

222 (26.03.2013 16:46:23 отредактировано Kettler)

уберите на время теста

$IPT -A FORWARD -o $LAN -i $WAN -j REJECT

Не вижу таблице SHAPER в которую вы отправили траффик коммандой

$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j shaper

Которую тоже можно убрать на время тест

И насчёт этого

$IPT -A FORWARD -o $LAN -i $WAN -j REJECT

вообще невижу в ней толку

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

223

Kettler⇓ пишет:

Не вижу таблице SHAPER в которую вы отправили траффик коммандой

А там её никогда и не было, по крайней мере шейпером в этой теме никто не занимался.
По сути получается весь NEW,ESTABLISHED,RELATED траффик уходит в shaper, а таблицы такой нет, значит в никуда...
Изначально там была строка:

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

224

Так firewall'а еще нет на сервере (вчера и с ним пробовал). Я только выполнил:

iptables -P INPUT   ACCEPT
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24  -j MASQUERADE

По идее инет должен быть в локалке, но его нет. Только по SSH и пинг шлюза есть.
Запустить firewall.sh?

225 (26.03.2013 16:58:16 отредактировано Kettler)

zenon пишет:
Kettler⇓ пишет:

Не вижу таблице SHAPER в которую вы отправили траффик коммандой

А там её никогда и не было, по крайней мере шейпером в этой теме никто не занимался.
По сути получается весь NEW,ESTABLISHED,RELATED траффик уходит в shaper, а таблицы такой нет, значит в никуда...
Изначально там была строка:

$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Да нет вот
кусок

$IPT -A shaper -p tcp --dport 80 -i $LAN -o $WAN -m hashlimit --hashlimit-upto 1000/s --hashlimit-burst 5000 --hashlimit-name shp-www-10out --hashlimit-mode srcip -j ACCEPT

И даже хеши до которых руки всё не дойдут (:

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

226

Не то. Вот содержимое firewall, который установлен на втором сервере:

#!/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 ipt_recent ip_list_tot=4000

# Объявление переменных
export IPT="/sbin/iptables -v"

# Интерфейс который смотрит в интернет
export WAN=eth0

# Локальная сеть
export LAN=eth1 export LAN_IP_RANGE=192.168.0.0/24

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

#
# шейпер:
$IPT -X shaper
$IPT -N shaper
#
# ~7,5Mbit/s - udp-трафик (торенты, Skype):
$IPT -A shaper -p udp -i $LAN -o $WAN -m hashlimit --hashlimit-upto  500/s --hashlimit-burst 5000 --hashlimit-name shp-udp-10out --hashlimit-mode srcip -j ACCEPT
$IPT -A shaper -p udp -i $WAN -o $LAN -m hashlimit --hashlimit-upto  500/s --hashlimit-burst 5000 --hashlimit-name shp-udp-10in  --hashlimit-mode srcip -j ACCEPT
$IPT -A shaper -p udp ! --dport 53 -j DROP
#
# ~10M на www:
$IPT -A shaper -p tcp --dport 80 -i $LAN -o $WAN -m hashlimit --hashlimit-upto 1000/s --hashlimit-burst 5000 --hashlimit-name shp-www-10out --hashlimit-mode srcip -j ACCEPT
$IPT -A shaper -p tcp --dport 80 -i $LAN -o $WAN -j REJECT
$IPT -A shaper -p tcp --sport 80 -i $WAN -o $LAN -m hashlimit --hashlimit-upto  800/s --hashlimit-burst 5000 --hashlimit-name shp-www-10in  --hashlimit-mode srcip -j ACCEPT
$IPT -A shaper -p tcp --sport 80 -i $WAN -o $LAN -j REJECT
#
# ~10M  остальные протоколы:
$IPT -A shaper -p tcp -i $LAN -o $WAN -m hashlimit --hashlimit-upto 1000/s --hashlimit-burst 5000 --hashlimit-name shp-tcp-10out --hashlimit-mode srcip -j ACCEPT
$IPT -A shaper -p tcp -i $WAN -o $LAN -m hashlimit --hashlimit-upto  800/s --hashlimit-burst 5000 --hashlimit-name shp-tcp-10in --hashlimit-mode srcip -j ACCEPT
$IPT -A shaper -p tcp -j REJECT
$IPT -A shaper -p icmp -j ACCEPT

# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено -
# запрещено):
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN -j ACCEPT

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

# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

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

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

# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -o $LAN -i $WAN -j REJECT

# Маскарадинг
$IPT -t nat -A POSTROUTING -s $LAN_IP_RANGE -o $WAN -j MASQUERADE
# Открываем порт для ssh
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -p udp --dport 22 -j ACCEPT

## Создание цепочки правил sshguard
# Максимум 2 новых запроса в минуту для одного ip
$IPT -N sshguard

# Вкл. лог по желанию
$IPT -A sshguard -m state --state NEW -m recent --name SSH --rcheck --seconds 60 --hitcount 2 -j LOG --log-prefix "SSH-shield:"
$IPT -A sshguard -m state --state NEW -m recent --name SSH --update --seconds 60 --hitcount 2 -j DROP
$IPT -A sshguard -m state --state NEW -m recent --name SSH --set -j ACCEPT
$IPT -A sshguard -j ACCEPT

## Применение для трафика ssh цепочку sshguard
$IPT -A INPUT -p tcp --dport 22 -j sshguard

# Защита от DDOS
$IPT -I INPUT 1 -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 15 --connlimit-mask 32 -j DROP
$IPT -A INPUT -s 193.201.218.170 -j DROP
$IPT -A INPUT -p tcp -m tcp --dport 80 -m string --string "GET / HTTP" --algo kmp --to 1024 -m recent --set --name httpddos --rsource 
$IPT -A INPUT -p tcp -m tcp --dport 80 -m string --string "GET / HTTP" --algo kmp --to 1024 -m recent --update --seconds 10 --hitcount 2 --name httpddos --rsource -j DROP

# Открываем порт для ftp
$IPT -A INPUT -p tcp --dport 21 -j ACCEPT
$IPT -A INPUT -p udp --dport 21 -j ACCEPT

# Открываем порт для почты
$IPT -A INPUT -p tcp --dport 993 -j ACCEPT
$IPT -A INPUT -p udp --dport 993 -j ACCEPT
$IPT -A INPUT -p tcp --dport 25 -j ACCEPT
$IPT -A INPUT -p udp --dport 25 -j ACCEPT
$IPT -A INPUT -p tcp --dport 143 -j ACCEPT
$IPT -A INPUT -p udp --dport 143 -j ACCEPT
$IPT -A INPUT -p tcp --dport 110 -j ACCEPT
$IPT -A INPUT -p udp --dport 110 -j ACCEPT

# Открытие портов для торрентов
$IPT -A INPUT -p tcp --dport 6881:6889 -m state --state NEW -j ACCEPT
# Откытие 443 порта
$IPT -A INPUT -p tcp --dport 443 -j ACCEPT
$IPT -A INPUT -p udp --dport 443 -j ACCEPT

# Откытие 53 и 953 порта для bind
$IPT -A INPUT -p tcp --dport 53 -j ACCEPT
$IPT -A INPUT -p udp --dport 53 -j ACCEPT

# Откытие порта 10000 для webmin
$IPT -A INPUT -p tcp --dport 10000 -j ACCEPT
$IPT -A INPUT -p udp --dport 10000 -j ACCEPT

# Открываем 80 и 81 порт для веб сайтов
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -p udp --dport 80 -j ACCEPT

# Открытие порта для голосового сервера Team Speak
$IPT -A INPUT -p tcp --dport 9987 -j ACCEPT
$IPT -A INPUT -p udp --dport 9987 -j ACCEPT
$IPT -A INPUT -p tcp --dport 30033 -j ACCEPT
$IPT -A INPUT -p udp --dport 30033 -j ACCEPT
$IPT -A INPUT -p tcp --dport 10011 -j ACCEPT
$IPT -A INPUT -p udp --dport 10011 -j ACCEPT
$IPT -A INPUT -p tcp --dport 57834 -j ACCEPT
$IPT -A INPUT -p udp --dport 57834 -j ACCEPT

# Открытие порта 3306
$IPT -A INPUT -p tcp --dport 3306 -j ACCEPT
$IPT -A INPUT -p udp --dport 3306 -j ACCEPT

#Вывод информации
$IPT -L -n -t nat

227

Для проверки убрать

# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -o $LAN -i $WAN -j REJECT

за место

$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j shaper

поставить

$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

по результатам можно думать дальше

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

228

ERT⇓ пишет:

Так firewall'а еще нет на сервере (вчера и с ним пробовал). Я только выполнил:

Вот таких фентов не надо, то есть, то нет, то за тебя додумай.., говори факты.

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

229 (26.03.2013 17:58:17 отредактировано ERT)

Kettler, все уже, работает локалка как и должна.
Не могу понять в чем была причина, но получилось после того как залил firewall.sh (тот, который последний в этой теме) с локальной машины на сервер, подключившись по SSH через SFTP-клиент и выполнил в терминале (Putty).
Вчера весь день долбался и сегодня пол дня: залью по SFTP, выполню непосредственно на сервере - ничего.
Привязал меня провайдер по MAC и бегал я - там перетыкнул кабель, там подставил MAC, т.к. инет только либо на шлюзе, либо на компе (чтобы написать на форум можно было). Возможно и ошибся я где-то.

А по шейперу есть какие-либо замечания? Хотелось бы распределить нагрузку на 11 машин, чтобы они друг-друга "не обижали".

zenon⇓ пишет:

Вот таких фентов не надо, то есть, то нет, то за тебя додумай.., говори факты.

Вчера с firewall пробовал, а сегодня переустановил ОС и не заливал. Решил сначала спросить как быть дальше.

230

ERT⇓ пишет:

Дискретная карта eth0 - смотрит в инет (в отличии от предыдущего раза), а встроенная eth1 - локалка. Почему бортовая сетевуха не определилась как eth0 не понимаю.

да что ты так переживаешь за названия интерфейсов?
Тут все просто, кто первый встал, того и тапка.
Можешь переименовать их:

# cat /etc/udev/rules.d/70-persistent-net.rules 
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x8086:0x1229 (e100)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:8b:11:1b:25", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:22:69:60:62", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

NAME как угодно.
Или вообще удалить /etc/udev/rules.d/70-persistent-net.rules и перезагрузиться, udev должен создать его заново.

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

231 (26.03.2013 23:16:53 отредактировано ERT)

zenon,  просто я подумал, что из-за смены интерфейсов и вылезли эти проблемы с настройкой локалки. Я ж стал там немного мудрить с файерволом  ab . Теперь то все понятно. Правда не очень хотелось привязывать MAC дискретной карты к инету.

232

zenon, Здравствуйте. Ваше готовое решение "Простой шлюз и firewall для Debian" (правила IPTABLE), подойдут для связки nat + firewall + squid ну и добавить вот эти правила.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 3128