Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
ddos_apache_debian_ubuntu [2015/11/17 15:54] admin |
ddos_apache_debian_ubuntu [2015/11/17 16:13] (текущий) admin |
||
---|---|---|---|
Строка 83: | Строка 83: | ||
<note>Целочисленная переменная tcp_keepalive_probes задает число передач проб keepalive, после которого соединение считается разорванным. По умолчанию передается 9 проб.</note> | <note>Целочисленная переменная tcp_keepalive_probes задает число передач проб keepalive, после которого соединение считается разорванным. По умолчанию передается 9 проб.</note> | ||
+ | |||
+ | <file> | ||
+ | cat /proc/sys/net/ipv4/tcp_keepalive_probes | ||
+ | 9 | ||
+ | </file> | ||
+ | |||
+ | Ставим 5: | ||
+ | |||
+ | <file> | ||
+ | echo "5" > /proc/sys/net/ipv4/tcp_keepalive_probes | ||
+ | </file> | ||
+ | |||
+ | tcp_keepalive_intvl | ||
+ | |||
+ | <note>Целочисленная переменная tcp_keepalive_intvl определяет интервал передачи проб. Произведение tcp_keepalive_probes * tcp_keepalive_intvl определяет время, по истечении которого соединение будет разорвано при отсутствии откликов. По умолчанию установлен интервал 75 секунд, т.е., время разрыва соединения при отсутствии откликов составит приблизительно 11 минут.</note> | ||
+ | |||
+ | <file> | ||
+ | cat /proc/sys/net/ipv4/tcp_keepalive_intvl | ||
+ | 75 | ||
+ | </file> | ||
+ | |||
+ | Ставим 15: | ||
+ | |||
+ | <file> | ||
+ | echo "15" > /proc/sys/net/ipv4/tcp_keepalive_intvl | ||
+ | </file> | ||
+ | |||
+ | netdev_max_backlog | ||
+ | |||
+ | Здесь указывается максимальное количество пакетов в очередь на обработку если интерфейс получает пакеты быстрее, чем ядро может их обработать. | ||
+ | |||
+ | <file> | ||
+ | cat /proc/sys/net/core/netdev_max_backlog | ||
+ | 1000 | ||
+ | </file> | ||
+ | |||
+ | Увеличиваем: | ||
+ | |||
+ | <file> | ||
+ | echo "20000" > /proc/sys/net/core/netdev_max_backlog | ||
+ | </file> | ||
+ | |||
+ | somaxconn | ||
+ | |||
+ | Максимальное число открытых сокетов, ждущих соединения. | ||
+ | |||
+ | <file> | ||
+ | cat /proc/sys/net/core/somaxconn | ||
+ | 1024 | ||
+ | </file> | ||
+ | |||
+ | Увеличиваем: | ||
+ | |||
+ | <file> | ||
+ | echo "20000" > /proc/sys/net/core/somaxconn | ||
+ | </file> | ||
+ | |||
+ | Так как подобные изменения параметров ядра не сохранятся после перезагрузки — добавляем в ''/etc/rc.local'': | ||
+ | |||
+ | <file> | ||
+ | echo "20000" > /proc/sys/net/ipv4/tcp_max_syn_backlog | ||
+ | echo "1" > /proc/sys/net/ipv4/tcp_synack_retries | ||
+ | echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout | ||
+ | echo "5" > /proc/sys/net/ipv4/tcp_keepalive_probes | ||
+ | echo "15" > /proc/sys/net/ipv4/tcp_keepalive_intvl | ||
+ | echo "20000" > /proc/sys/net/core/netdev_max_backlog | ||
+ | echo "20000" > /proc/sys/net/core/somaxconn | ||
+ | </file> | ||
+ | |||
+ | Кроме того, можно добавить ограничение числа SYN пакетов в единицу времени в iptables: | ||
+ | |||
+ | <file> | ||
+ | iptables -N syn_flood | ||
+ | iptables -A INPUT -p tcp --syn -j syn_flood | ||
+ | iptables -A syn_flood -m limit --limit 500/s --limit-burst 1500 -j RETURN | ||
+ | iptables -A syn_flood -j DROP | ||
+ | </file> | ||
+ | |||
+ | Число новых SYN пакетов — максимум 500 в секунду, при превышении порога в 1500 — новые пакеты блокируются: | ||
+ | |||
+ | <note>Более наглядно этот критерий можно представить себе как некоторую емкость с выпускным отверстием, через которое проходит определенное число пакетов за единицу времени (т.е. скорость «вытекания»). Скорость «вытекания» как раз и определяет величина --limit. Величина --limit-burst задает общий «объем емкости». А теперь представим себе правило --limit 3/minute --limit-burst 5, тогда после поступления 5 пакетов (за очень короткий промежуток времени), емкость «наполнится» и каждый последующий пакет будет вызывать «переполнение» емкости, т.е. «срабатывание» критерия. Через 20 секунд «уровень» в емкости будет понижен (в соответствии с величиной --limit), таким образом она готова будет принять еще один пакет, не вызывая «переполнения» емкости, т.е. срабатывания критерия.</note> | ||
+ | |||
+ | [[http://mtaalamu.ru/blog/93.html|Источник]] | ||
+ | |||
+ | **Собственно это одна из мер по защите от DDos атак. Тестировалось на Debian. Помогло. А помогло ли это вам?** |