Тема: Rules for Iptables
Показать сообщение отдельно

  #10  
Старый 22.02.2007, 15:17
BMaster
Познающий
Регистрация: 12.01.2006
Сообщений: 52
С нами: 10697574

Репутация: 140
По умолчанию

Кому интересно это то что у меня:
Код:
#!/bin/sh
IPTABLES=/sbin/iptables
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP
$IPTABLES -A FORWARD -i ! lo -j DROP

#traffic count begin #правила для моей системы учета трафика состоящей из 2х скриптов.
$IPTABLES -A INPUT -i ppp+ -j  LOG --log-prefix "count"
$IPTABLES -A OUTPUT -o ppp+ -j  LOG --log-prefix "count"
#traffic count end
#разрешаю все коннекты на мой фтп в локальной сети
$IPTABLES -A INPUT -i eth+ -p tcp -m multiport --dport 21 -j ACCEPT

#устанавливаем в заголовке пакетов величину ttl (Time To Live): исходящие 64, входящие 128. Приведу цитату из мануала "Увеличение поля TTL может использоваться для того, чтобы сделать наш брандмауэр менее "заметным" для трассировщиков (traceroutes). Программы трассировки любят за ценную информацию при поиске проблемных участков сети, и ненавидят за это же, поскольку эта информация может использоваться крякерами в неблаговидных целях."
$IPTABLES -t mangle -A OUTPUT -j TTL --ttl-set 64
$IPTABLES -t mangle -A PREROUTING -m ttl --ttl-gt 128 -j TTL --ttl-set 128
$IPTABLES -t mangle -A PREROUTING -m ttl --ttl-lt 128 -j TTL --ttl-set 128
$IPTABLES -t mangle -A PREROUTING -p TCP --dport 33434:33542 -j TTL --ttl-inc 1

#TV begin #Здесь специфические правила, разрешающие прием радио и теле передач в локальной сети.
$IPTABLES -A INPUT -i eth+ -s 192.168.172.0/24 -j ACCEPT
$IPTABLES -A INPUT -i eth+ -d 225.10.10.0/28 -j ACCEPT
$IPTABLES -A INPUT -i eth+ -s 192.168.204.0/24 -j ACCEPT
$IPTABLES -A INPUT -i eth+ -d 192.168.204.0/24 -j ACCEPT
#TV end

#Запретить все входящие на локальные интерфейсы источником назначения которых не является мой ip
$IPTABLES -A INPUT -i eth+ -d ! 10.x.x.x -j DROP

#Запретить все входящие на порт 80,21,4662 из интернета.
$IPTABLES -A INPUT -i ppp+ -p tcp -m multiport --dport 80,21,4662 -j DROP

#icmp security begin #Настройка безопасности протокола icmp
#Эта строка блокирует  icmp пакеты (тип 8) т.е запрос, которые превышают установленное количество в единицу времени. Т.о это позволяет избежать атаки вида пинг-флуд. на лишние пакеты отсылается ответ Destination host administratively prohibited
$IPTABLES -A INPUT -p icmp --icmp-type 8 -m limit --limit 30/minute --limit-burst 1 -j REJECT --reject-with icmp-host-prohibited
$IPTABLES -A INPUT -p icmp --icmp-type 8 -j DROP
#Эта строка блокирует icmp пакеты (тип 0) т.е ответ, эта нужно для того, чтобы когда я буду сам проводить атаку такого типа, ответы от атакуемого хоста не забивали мне канал :)
$IPTABLES -A INPUT -p icmp --icmp-type 0 -m limit --limit 1/second --limit-burst 1 -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type 0 -j DROP
#Все остально пропускается тоже по принципу "количество в единицу времени"
$IPTABLES -A INPUT -p icmp -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
$IPTABLES -A INPUT -p icmp -m limit --limit 1/second --limit-burst 1 -j REJECT --reject-with icmp-host-prohibited
$IPTABLES -A INPUT -p icmp -j DROP
#icmp security end

#udp security begin# Настройка безопасности протокола udp
$IPTABLES -A INPUT -i lo -j ACCEPT
#Разрешаю все с адреса 10.y.y.y для игры в quake3 :) разрешаю все коннекты с адресов источником которых является 53й порт.
$IPTABLES -A INPUT -i eth+ -s 10.y.y.y -j ACCEPT
$IPTABLES -A INPUT -p udp --sport 53 -j ACCEPT
#Лимит в единицу времени, чтобы не зафлудили.
$IPTABLES -A INPUT -p udp -m limit --limit 1/second --limit-burst 1 -j REJECT --reject-with icmp-host-prohibited
$IPTABLES -A INPUT -p udp -j DROP
#udp security end

#tcp security begin #настройка tcp
#первые 2 строки логирование и сброс пакетов с флагами SYN,ACK SYN,ACK имеющими статус NEW
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j  LOG --log-prefix "new_syn/ack " --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,ACK -j ACCEPT
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ACK -j ACCEPT
$IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,ACK -j ACCEPT

#(sync secure bgin) #TARPIT сейчас не использую.
#$IPTABLES -A INPUT -p tcp -m tcp --dport 22 -j TARPIT
#$IPTABLES -A INPUT -p tcp -m tcp --dport 79 -j TARPIT
#$IPTABLES -A INPUT -p tcp -m tcp --dport 81 -j TARPIT
#$IPTABLES -A INPUT -p tcp -m tcp --dport 1 -j TARPIT
#$IPTABLES -A INPUT -p tcp -m tcp --dport 8008 -j TARPIT
#$IPTABLES -A INPUT -p tcp -m tcp --dport 8080 -j TARPIT
#Защита от syn атак.
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN -m limit --limit 15/minute --limit-burst 1 -j ACCEPT
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN -m limit --limit 1/second --limit-burst 1 -j REJECT --reject-with icmp-host-prohibited
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN -j  LOG --log-prefix "left_syn " --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN -j DROP
#(sync secure end)

#Далее те состояния о которых я знаю, разрешены, те состояния которых быть не может запрещены.
#(scan inherit secure begin)
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST  RST -m limit --limit 15/minute --limit-burst 1 -j ACCEPT
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST  RST -m limit --limit 1/second --limit-burst 1 -j REJECT --reject-with icmp-host-prohibited
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST  RST -j  LOG --log-prefix "left_rst " --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST  RST -j DROP
#(scan inherit secure end)

$IPTABLES -A INPUT -p tcp --tcp-flags ALL       FIN,URG,PSH           -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL       ALL                   -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL       SYN,RST,ACK,FIN,URG   -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL       NONE                  -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST   SYN,RST               -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN   SYN,FIN               -j DROP

$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j  LOG --log-prefix "new_nesyn " --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A INPUT -m state --state INVALID -j DROP
#$IPTABLES -A INPUT -p tcp -m tcp --dport 137:139 -j TARPIT
$IPTABLES -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p tcp -m limit --limit 1/second --limit-burst 1 -j REJECT --reject-with icmp-host-prohibited
$IPTABLES -A INPUT -p tcp -j DROP
#tcp security end
#все что я упустил, записывается в лог, и блокируется.
#$ipt -A FORWARD -p tcp --syn  -i eth1  -m connlimit --connlimit-above 15 -j  REJECT 
$IPTABLES -A INPUT -p ALL -j  LOG --log-prefix "proto_left " --log-ip-options --log-tcp-options
$IPTABLES -A INPUT -p ALL -j DROP
$IPTABLES -A FORWARD -j DROP
$IPTABLES -A INPUT -j DROP
p.s про TARPIT почитать можно здесь: Скрытые возможности iptables
Скачать патч можно здесь: patch-o-matic-ng

Последний раз редактировалось BMaster; 22.02.2007 в 15:30..