| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
| ddos_apache_debian_ubuntu [2015/11/17 15:54] – admin | ddos_apache_debian_ubuntu [2015/11/17 16:13] (текущий) – admin |
|---|
| |
| <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. Помогло. А помогло ли это вам?** |