iptables ddos

Есть и такой ОС.

Модератор: weec

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
davsharyan
рядовой
Сообщения: 20
Зарегистрирован: 2009-05-19 15:48:00

iptables ddos

Непрочитанное сообщение davsharyan » 2011-10-02 17:15:49

Здрямс,

Есть веб сервак который находится за шлюзом
Шлюз - ubuntu
Веб Сервер - Windows Server - IIS

IIS (10.10.0.2) <--> eth1 Ubuntu eth0 <--> Public

На сервер валятся много HTTP запросов ака атака ддос. Интересуют максимальные методы защиты от ддос с использованием шлюза.
Вот что есть на данный момент
sysctl.conf

Код: Выделить всё

net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_syncookies=1
net.ipv4.ip_forward=1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
через iptables вроде каките запросы отбиваются. За сутки в логах посчитал больше 14К уникальных IP адресов

всё это делается тремя строками

Код: Выделить всё

$IPT -A FORWARD -p tcp -i eth0 -o eth1 -m tcp --dport 80 -m state --state NEW -m recent --set --name DEFAULT --rsource
$IPT -A FORWARD -p tcp -i eth0 -o eth1 -m tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 --name DEFAULT --rsource -j LOG --log-prefix "iptables: FORWARD " --log-level 5
$IPT -A FORWARD -p tcp -i eth0 -o eth1 -m tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 --name DEFAULT --rsource -j DROP
Нужно ли что-то тут менять/добавлять ?
Какие-то другие решения ?

все рулы iptables

Код: Выделить всё

#!/bin/bash
 
#
# eth0 - public interface - 99.99.99.99/28
# eth1 - local interface - 10.10.0.0/24
#
 
# Define variables
IPT=/sbin/iptables
 
#
# Forwarding is enabled in sysctl.conf
#
 
# Load modules
/sbin/rmmod xt_recent
/sbin/modprobe ip_conntrack
/sbin/modprobe ipt_recent ip_list_tot=5000 ip_pkt_list_tot=100
 
echo "Setting kernel tcp parameters to reduct DoS effects"
echo "Reduce DoSing ability by reducing timeouts"
 
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog
 
# Set default policies
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
 
# Flush all rules
$IPT -F
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F -t nat
$IPT -X -t nat
$IPT -X
 
# Allow incoming on loopback interface
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -d 127.0.0.0/8 -j REJECT
 
#
# Chains to DROP too many SYN-s
#
 
$IPT -N syn-flood
$IPT -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
$IPT -A syn-flood -j LOG --log-prefix "SYN flood: "
$IPT -A syn-flood -j DROP
 
# Allow incoming ICMP
$IPT -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT
$IPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
 
# Allow incoming SSH
$IPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 2022 -j ACCEPT
 
# Allow connections between FW and LAN
$IPT -A INPUT -p all -s 10.10.0.0/24 -i eth1 -j ACCEPT
$IPT -A OUTPUT -p all -d 10.10.0.0/24 -o eth1 -j ACCEPT
 
#
# Check for RFC subnets
#
 
$IPT -A INPUT -s 0.0.0.0/255.0.0.0 -i eth0 -j DROP
$IPT -A INPUT -s 127.0.0.0/255.0.0.0 ! -i lo -j DROP
$IPT -A INPUT -s 10.0.0.0/255.0.0.0 -i eth0 -j DROP
$IPT -A INPUT -s 172.16.0.0/255.240.0.0 -i eth0 -j DROP
$IPT -A INPUT -s 192.168.0.0/255.255.0.0 -i eth0 -j DROP
$IPT -A INPUT -s 224.0.0.0/224.0.0.0 -i eth0 -j DROP
 
#
# Check connection state
#
$IPT -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
$IPT -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
$IPT -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -m limit --limit 20/sec -j LOG --log-prefix "iptables: IV1" --log-level 5
$IPT -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
$IPT -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -m limit --limit 20/sec -j LOG --log-prefix "iptables: IV2" --log-level 5
$IPT -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
$IPT -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 20/sec -j LOG --log-prefix "iptables: IV3" --log-level 5
$IPT -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A FORWARD -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -m limit --limit 20/sec -j LOG --log-prefix "iptables: IV4" --log-level 5
$IPT -A FORWARD -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
$IPT -A FORWARD -p tcp -m tcp --tcp-flags FIN,ACK FIN -m limit --limit 20/sec -j LOG --log-prefix "iptables: IV5" --log-level 5
$IPT -A FORWARD -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
$IPT -A FORWARD -p tcp -m tcp --tcp-flags ACK,URG URG -m limit --limit 20/sec -j LOG --log-prefix "iptables: IV6" --log-level 5
$IPT -A FORWARD -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP
$IPT -A FORWARD -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
$IPT -A FORWARD -f -j DROP
 
# NAT DMZ -> WAN
 
$IPT -A POSTROUTING -t nat -p tcp --sport 999 -s 10.10.0.2 -o eth0 -j SNAT --to 99.99.99.99:25
$IPT -A POSTROUTING -t nat -s 10.10.0.0/24 -o eth0 -j SNAT --to 99.99.99.99
$IPT -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -i eth1 -o eth0 -j ACCEPT
 
#
# Port forwarding rules
#
$IPT -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to 10.10.0.2:80
$IPT -A FORWARD -p tcp -i eth0 -o eth1 -m tcp --dport 80 -m state --state NEW -m recent --set --name DEFAULT --rsource
 
# limit and hitcount
$IPT -A FORWARD -p tcp -i eth0 -o eth1 -m tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 --name DEFAULT --rsource -j LOG --log-prefix "iptables: FORWARD " --log-level 5
$IPT -A FORWARD -p tcp -i eth0 -o eth1 -m tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 --name DEFAULT --rsource -j DROP
 
# Same as above, but using also limit and limit burst
#$IPT -A FORWARD -p tcp -i eth0 -o eth1 -m tcp --dport 80 -m state --state NEW -m limit --limit 10/sec --limit-burst 10 -m recent --update --seconds 100 --hitcount 6 --name DEFAULT --rsource -j LOG --log-prefix "iptables: " --log-level 5
#$IPT -A FORWARD -p tcp -i eth0 -o eth1 -m tcp --dport 80 -m state --state NEW -m limit --limit 10/sec --limit-burst 10 -m recent --update --seconds 100 --hitcount 6 --name DEFAULT --rsource -j DROP
 
# Only limit
#$IPT -A FORWARD -p tcp -i eth0 -o eth1 -m tcp --dport 80 -m state --state NEW -m limit --limit 5/sec --limit-burst 10 -j LOG --log-prefix "iptables: " --log-level 5
#$IPT -A FORWARD -p tcp -i eth0 -o eth1 -m tcp --dport 80 -m state --state NEW -m limit --limit 5/sec --limit-burst 10 -j DROP
 
$IPT -A PREROUTING -t nat -i eth0 -p tcp --dport 25 -j DNAT --to 10.10.0.2:999
$IPT -A FORWARD -p tcp -i eth0 -o eth1 -d 10.10.0.2 --dport 999 -m state --state NEW -j ACCEPT
 
$IPT -A PREROUTING -t nat -i eth0 -p tcp --dport 3389 -j DNAT --to 10.10.0.2:3389
$IPT -A FORWARD -p tcp -i eth0 -o eth1 -d 10.10.0.2 --dport 3389 -m state --state NEW -j ACCEPT
з.ы. софты типо apf не работают, так как они только для INPUT,OUTPUT запросов а тут форвардинг
<<PS
Еverything that has a beginning has an end as well
PS

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
weec
лейтенант
Сообщения: 948
Зарегистрирован: 2007-07-24 11:17:35
Откуда: Afghanistan
Контактная информация:

Re: iptables ddos

Непрочитанное сообщение weec » 2011-10-03 12:34:54

копай в сторону ipset