ddos_apache_debian_ubuntu

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
ddos_apache_debian_ubuntu [2015/11/17 15:54] – adminddos_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. Помогло. А помогло ли это вам?**
ddos_apache_debian_ubuntu.1447764872.txt.gz · Последнее изменение: 2015/11/17 15:54 — admin · В данный момент заблокировано пользователем 216.73.216.52