Здравствуйте!
После загрузки правил 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
. Теперь то все понятно. Правда не очень хотелось привязывать MAC дискретной карты к инету.