Введение
Сейчас речь пойдёт о том, как можно настроить ядро Linux сервера, чтобы он смог переваривать большое количество запросов, а также защититься от DDoS-атак. Всё будет кратко с небольшими описаниями.
Грамотная настройка ядра позволяет также защититься от SYN flood атак.
Фильтр обратного пути (rp_filter)
Параметр включает фильтр обратного пути — активируется защита от подмены адресов (спуфинга).
cat /proc/sys/net/ipv4/conf/all/rp_filterПо умолчанию отключен (0). Рекомендуется включить строгий режим проверки (1):
sysctl -w net.ipv4.conf.all.rp_filter=1
sysctl -w net.ipv4.conf.eth0.rp_filter=1Запрет маршрутизации от источников
Отключает маршрутизацию от источников:
sysctl -w net.ipv4.conf.all.accept_source_route=0
sysctl -w net.ipv4.conf.lo.accept_source_route=0
sysctl -w net.ipv4.conf.eth0.accept_source_route=0
sysctl -w net.ipv4.conf.default.accept_source_route=0Отключение ICMP-перенаправлений
Запрещает серверу принимать и отправлять ICMP пакеты перенаправления:
sysctl -w net.ipv4.conf.all.accept_redirects=0
sysctl -w net.ipv4.conf.all.secure_redirects=0
sysctl -w net.ipv4.conf.all.send_redirects=0Отключение широковещательных ICMP-запросов
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1Защита от SYN-флуда
sysctl -w net.ipv4.tcp_syncookies=1Настройка максимального числа полуоткрытых соединений
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
sysctl -w net.ipv4.tcp_synack_retries=1Оптимизация параметров TCP
sysctl -w net.ipv4.tcp_max_orphans=65536
sysctl -w net.ipv4.tcp_fin_timeout=10
sysctl -w net.ipv4.tcp_keepalive_time=60
sysctl -w net.ipv4.tcp_keepalive_intvl=15
sysctl -w net.ipv4.tcp_keepalive_probes=5
sysctl -w net.core.netdev_max_backlog=1000
sysctl -w net.core.somaxconn=15000
sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"Увеличение диапазона локальных портов
sysctl -w net.ipv4.ip_local_port_range="1024 65535"Улучшение управления TCP-подключениями
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.ipv4.tcp_rfc1337=1
sysctl -w net.ipv4.tcp_congestion_control=htcp
sysctl -w net.ipv4.tcp_no_metrics_save=1Отключение переадресации пакетов
Если сервер не является маршрутизатором:
sysctl -w net.ipv4.ip_forward=0Применение изменений
Чтобы сохранить настройки после перезагрузки, добавьте их в файл /etc/sysctl.conf:
cat >> /etc/sysctl.conf << 'EOF'
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_max_syn_backlog=4096
net.ipv4.tcp_synack_retries=1
net.ipv4.tcp_max_orphans=65536
net.ipv4.tcp_fin_timeout=10
net.ipv4.tcp_keepalive_time=60
net.ipv4.tcp_keepalive_intvl=15
net.ipv4.tcp_keepalive_probes=5
net.ipv4.ip_local_port_range=1024 65535
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_rfc1337=1
net.ipv4.tcp_congestion_control=htcp
net.ipv4.tcp_no_metrics_save=1
net.ipv4.ip_forward=0
EOFПримените настройки:
sysctl -pЗаключение
Настроив параметры ядра Linux, можно значительно повысить производительность сервера и защитить его от DDoS-атак. Эти настройки помогут вашему серверу справляться с высокой нагрузкой и повысить безопасность.
🛡️ Совет: Для максимальной защиты от DDoS рекомендуем комбинировать настройки ядра с аппаратной DDoS-защитой на уровне дата-центра. Выбрать VPS с DDoS-защитой →