ddos-атака

Статус
В этой теме нельзя размещать новые ответы.

david89079

СуперГерой:D
Пользователь
30 Мар 2012
57
19
18
32
И так надеюсь многие слышали про UDP Флуд вот меня им и кроют тем что 80 порт забивается как зделать анти ддос от UDP флуда сервер Colinux 1.4.5
 

Juzilkree

Злостный отаку
Команда форума
Администратор
29 Ноя 2012
1.943
731
158
37
www.dyndev.ru
Для начала определи на сколько сильно флудят. Отлови айпи и сколько пакетов с них идёт. Тогда уже и можно будет думать дальше
 

Unix

VIP
VIP
30 Мар 2012
683
341
63
49
Ukraine
action.pvpund.com
можно по пробовать вот так

PHP:
iptables -A INPUT -p udp -m udp --dport Порт -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -p udp --dport Порт -m state --state NEW -m hashlimit --hashlimit 100/s --hashlimit-burst 100 --hashlimit-mode srcip --hashlimit-name TF -j ACCEPT

iptables -A INPUT -p udp --dport Порт -j DROP
--- добавлено: 2 дек 2012 в 19:56 ---
1) Установим такие переменные sysctl:

fs.file-max=209708
net.core.rmem_default=201250
net.core.wmem_default=201250
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 5000
net.core.somaxconn=32768
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_fin_timeout=15
net.ipv4.tcp_keepalive_intvl=5
net.ipv4.tcp_keepalive_probes=3
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_mtu_probing=1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_sack=0
net.ipv4.tcp_max_syn_backlog=1280
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.ip_local_port_range=1024 65000
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.tcp_max_tw_buckets = 720000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
kernel.msgmnb = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

2) ipset

IP Sets – расширение пакетного фильтра ядра iptables, которое позволяет комфортно работать с большими наборами адресов/сетей. При написании правил iptables при этом мы оперируем именованными списками.

Дело в том, что при использовании хостов больше 1000 через iptables – load avarage будет большим, так как сам iptables плохо работает с большим количеством хостов. Намного лучше с ним работает сам ipset. Поэтому используйте именно его.

3) Защита от аттак.

- SYN

iptables -A INPUT -p tcp ! –syn -m state –state NEW -j DROP
iptables -A OUTPUT -p tcp ! –syn -m state –state NEW -j DROP

- SYN Flood

Ставим ограничение в 24 подключения за секунду (максимально разрешено 48 подключений)

iptables -t mangle -N syn-flood
iptables -t mangle -A syn-flood -m limit --limit 24/s --limit-burst 48 -j RETURN
iptables -t mangle -A syn-flood -m limit --limit 10/s --limit-burst 10 -j LOG --log-prefix "IPT: DOS (dropped): "
iptables -t mangle -A syn-flood -j DROP
iptables -t mangle -A PREROUTING -p tcp --syn -j syn-flood

Либо так:

Ставим ограничение в 100 подключения за секунду (максимально разрешено 150 подключений)

iptables -N syn-flood
iptables -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
iptables -A syn-flood -j LOG --log-prefix "SYN flood: "
iptables -A syn-flood -j DROP

- FIN/X/N

iptables -A INPUT –p tcp –m tcp –-tcp-flags FIN,ACK FIN -j DROP
iptables -A INPUT –p tcp –m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG –j DROP
iptables -A INPUT –p tcp –m tcp –-tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE –j DROP
iptables -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A FORWARD -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A FORWARD -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
iptables -A FORWARD -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP
iptables -A FORWARD -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP

- NMAP сканирование

## nmap -sS (Scan: SYN+ACK = no defense... )
## nmap -sX (Scan: SYN+ACK+FIN+RST [+PSH+URG] = not implemented in TCP)
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST ALL -j LOG --log-prefix "IPT: Scan: XMAS0: "
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST ALL -j REJECT --reject-with tcp-reset
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags ALL FIN,URG,PSH -j LOG --log-prefix "IPT: Scan: XMAS1: "
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags ALL FIN,URG,PSH -j REJECT --reject-with tcp-reset
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG --log-prefix "IPT: Scan: XMAS2: "
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags ALL SYN,RST,ACK,FIN,URG -j REJECT --reject-with tcp-reset
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags ALL ALL -j LOG --log-prefix "IPT: Scan: XMAS2: "
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags ALL ALL -j REJECT --reject-with tcp-reset
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,RST SYN,RST -j LOG --log-prefix "IPT: Scan: SYN-RST: "
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,RST SYN,RST -j REJECT --reject-with tcp-reset

#FINGERPRINTING
iptables -A INPUT -p tcp --dport 0 -j DROP
iptables -A INPUT -p udp --dport 0 -j DROP
iptables -A INPUT -p tcp --sport 0 -j DROP
iptables -A INPUT -p udp --sport 0 -j DROP

## nmap -sN (Scan: none of any flags = not implemented in TCP)
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST NONE -m limit --limit 10/minute --limit-burst 10 -j LOG --log-prefix "IPT: Scan: empty flags: "
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST NONE -j REJECT --reject-with tcp-reset

## nmap -sF (Scan: only FIN)
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST FIN -m limit --limit 10/minute --limit-burst 10 -j LOG --log-prefix "IPT: Scan: only FIN: "
iptables -A INPUT -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST FIN -j REJECT --reject-with tcp-reset

###[ hach_scan shain ]---------------------------------------------------------------
iptables -t filter -N hack_scan
## nmap -sS (Scan: SYN+ACK = no defense... )
## nmap -sX (Scan: SYN+ACK+FIN+RST [+PSH+URG] = not implemented in TCP)
iptables -t filter -A hack_scan -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST ALL -j LOG --log-prefix "IPT: Scan: SYN+ACK+FIN+RST: "
iptables -t filter -A hack_scan -p tcp -m state --state ! ESTABLISHED --tcp-flags SYN,ACK,FIN,RST ALL -j REJECT --reject-with tcp-reset

## NEW, not SYN
iptables -t filter -A hack_scan -p tcp ! --syn -m state --state NEW -m limit --limit 10/minute --limit-burst 10 -j LOG --log-prefix "IPT: NEW not SYN (rejected): "
iptables -t filter -A hack_scan -p tcp ! --syn -m state --state NEW -j REJECT --reject-with tcp-reset
###[ end of hach_scan chain ]==========================================================

iptables -t filter -A INPUT -p ALL -j hack_scan

4) Прочие ограничения.

Максимум 10 одновременных соединений к 80 порту с одного IP

iptables -A INPUT -p tcp --dport 80 -m iplimit --iplimit-above 10 -j REJECT

либо так

iptables -I INPUT -p tcp -m tcp --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j DROP

5) Системы обнаружения вторжения.

Такие системы позволяют быстро анализировать log-файлы на предмет совпадения строк и выполнять нужные действия. К примеру, рекомендую использовать fail2ban в связке с ipset. При выявлении нужной строки – просто выполняйте команду заноса нужного IP в набор от ipset.
 
  • Like
Реакции: Frak_UA
Статус
В этой теме нельзя размещать новые ответы.

Пользователи онлайн

Сейчас на форуме нет ни одного пользователя.

Последние ресурсы

Статистика форума

Темы
3.838
Сообщения
21.202
Пользователи
7.645
Новый пользователь
igorbl