Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 12603|Отговор: 2

[linux] Вижте как моят Linux защитава от SYN атаки

[Копирай линк]
Публикувано в 12.12.2015 г. 0:04:58 ч. | | | |

Когато пристигнах в компанията тази сутрин, се чувствах доста бавен, когато влязох в официалния ѝ уебсайт, влязох в сървъра, за да проверя статуса на достъпа на официалния уебсайт:

[root@web ~]# netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn

     УЧРЕДЕНА ГОДИНА 172

     59 CONNECTED

    589 SYN_RECV

     15 ПОТОК

SYN всъщност е толкова висок, че продължавайте да проследявате SYN, изпратен от тези IP адреси:

[root@tweb ~]# netstat -an | grep SYN | awk '{печатай $5}' | awk -F: '{print $1}' | сортиране | uniq -c | sort -nr | Още

570 x.x.x.x   

(IP адресът не е записан, той е IP на Shandong Zaozhuang Unicom), но този IP е изпратил толкова много SYN заявки за връзки, а конкурентността на нашия уеб сървър не е много голяма, така че нормалните потребителски заявки не могат да се съответстват и страницата не може да бъде отворена. Тъй като хардуерната защитна стена се управлява от IT отдела на групата, нямам правомощия, така че мога да предприема само някои мерки на локалния сървър, за да смекча частично SYN атаката.

Първо, нека поговорим за принципа на атака на SYN:

В TCP/IP протокола TCP протоколът предоставя надеждни услуги за връзка чрез използване на тристранно ръкостискане за установяване на връзка.

Първо ръкостискане: При установяване на връзка, клиентът изпраща syn пакет (syn=j) към сървъра и влиза в състояние SYN_SEND, като чака сървърът да потвърди.

Второто ръкостискане: Когато сървърът получи SYN пакета, трябва да потвърди SYN на клиента (ack=j+1) и също да изпрати SYN пакет (syn=k), тоест SYN+ACK пакет, при което сървърът преминава в SYN_RECV състояние.

Трето ръкостискане: Клиентът получава пакета SYN+ACK от сървъра и изпраща потвърждаващия пакет ACK (ack=k+1) към сървъра. След три ръкостискания клиентът и сървърът започват да предават данни.


Ако потребителят инициира заявка за връзка със сървъра, само за да се ръкува за втори път и не отговори на сървъра, сървърът ще продължи да чака потвърждение от потребителя. Затова правим следните промени директно от SYN връзката:

Проверете стандартната конфигурация на SYN в Linux:

[root@web ~]# sysctl -a | Греп _syn

net.ipv4.tcp_max_syn_backlog = 1024

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_synack_retries = 5

net.ipv4.tcp_syn_retries = 5

tcp_max_syn_backlog е дължината на SYN опашката и увеличаването ѝ може да поеме повече мрежови връзки, които чакат да бъдат свържени. tcp_syncookies е превключвател за включване на функцията SYN бисквитки, която може да предотврати частични SYN атаки. tcp_synack_retries и tcp_syn_retries определят броя на повторните връзки за SYN и намаляват стандартните параметри, за да контролират максимално броя на SYN връзките.

Следват параметрите, които съм модифицирал и които могат да се променят според реалната ситуация на моя сървър:

[root@web ~]# още /etc/rc.d/rc.local

#!/bin/sh

# Този scrip{filter}t ще бъде изпълнен *след* всички останали init scrip{filter}ts.

# Можеш да сложиш собствените си материали за инициализация тук, ако не го направиш

# искам да направя пълния Sys V стил init неща.

Докосни /var/lock/subsys/local

ulimit -HSn 65535

/usr/local/apache2/bin/apachectl start

#####

sysctl -w net.ipv4.tcp_max_syn_backlog=2048

sysctl -w net.ipv4.tcp_syncookies=1

sysctl -w net.ipv4.tcp_synack_retries=3

sysctl -w net.ipv4.tcp_syn_retries=3

За да влезе конфигурацията в сила незабавно без рестартиране на сървъра, тя може да се изпълни

#sysctl -w net.ipv4.tcp_max_syn_backlog=2048

#sysctl -w net.ipv4.tcp_syncookies=1

#sysctl -w net.ipv4.tcp_synack_retries=3

#sysctl -w net.ipv4.tcp_syn_retries=3

Някои хора обичат да използват списъци с контрол на достъпа, за да предотвратят SYN атаки, което забавя SYN атаките до известна степен:

Syn flood атака

#iptables -A ВХОД -p tcp --syn -m лимит --лимит 1/s -j ПРИЕМИ

--limit 1/s ограничава броя на syn concurrency до 1 път в секунда

Антипорт сканиране

# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Пинг на смъртта

# iptables -A FORWARD -p icmp --icmp-тип echo-request -m limit --limit 1/s -j ACCEPT

#>iptables-save >/etc/sysconfig/iptables

За да видиш, #iptables -L

ACCEPT tcp -- навсякъде, навсякъде, tcp флагове: FIN,SYN,RST,ACK/SYN лимит: средно 1/сек burst 5

ACCEPT tcp -- навсякъде, навсякъде tcp флагове: FIN,SYN,RST,ACK/RST лимит: средно 1/сек burst 5

ПРИЕМЕТЕ ICMP – навсякъде, навсякъде, лимит за заявка за ехо на icmp: средно 1/сек burst 5

Провери отново синтетичната връзка:

[root@web ~]# netstat -an | grep SYN | awk '{печатай $5}' | awk -F: '{print $1}' | сортиране | uniq -c | sort -nr | Още

     20 10.92.10.220

      1 125.43.36.199

Очевидно броят на SYN връзките е намалял.






Предишен:"Съжалявам, не инсталирате оригинално приложение, инсталаторът не може да продължи да извършва обяснение" заобиколно решение
Следващ:SC Create създава системна услуга за Windows
Публикувано в 13.12.2015 г. 10:53:04 ч. |
Какъв мощен поглед
Публикувано в 14.12.2015 г. 15:55:43 ч. |
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com