Настраиваю примитивную защиту от DDoS на nginx используя limit_req и fail2ban. Fail2ban постоянно проверяет логи (значит есть нагрузка в этом плане), есть ли возможность использовать какой-нибудь скрипт, который сразу будет отправлять IP в бан? Решил в какой-то момент использовать ipset (утверждают, что производительнее при большом кол-ве IP адресов), установил firewalld и ipset, сделал в конфиге fail2ban: banaction = firewallcmd-ipset IP с которого выполняю DDoS на свой сервер был в списке забаненных ipset, но никакой реакции за этим не следовало, пришлось вернуть: banaction = iptables-multiport Почему с firewallcmd-ipset могло не получиться? Оно выдаёт ещё какую-то ошибку при выполнении команды systemctl status filrewalld: 2021-02-03 10:28:09 ERROR: '/usr/sbin/iptables-restore -w -n' failed: iptables-restore v1.8.2 (nf_tables): line 4: RULE_REPLACE failed (No such file or directory): rule in chain INPUT line 4: RULE_REPLACE failed (No such file or directory): rule in chain OUTPUT 2021-02-03 10:28:09 ERROR: COMMAND_FAILED: '/usr/sbin/iptables-restore -w -n' failed: iptables-restore v1.8.2 (nf_tables): line 4: RULE_REPLACE failed (No such file or directory): rule in chain INPUT line 4: RULE_REPLACE failed (No such file or directory): rule in chain OUTPUT Однажды у меня сервер совсем перестал отвечать, пришлось выполнить iptables -F, оно начало работать, решил удалить firewalld и ipset на всякий случай (чёрная полоса началась в жизни), но теперь при перезагрузке сервер не отвечает на запросы до выполнения iptables -F. С чем это может быть связано? По ssh отвечает, а вот по http до выполнения iptables -F выдаёт ERR_TUNNEL_CONNECTION_FAILED. Какие знаете методики защиты от DDoS, статьи, есть годные книги? Ещё для защиты от DDoS скопировал данные настройки (которые не особо понимаю): ### ADDITIONAL ANTIDDOS net.ipv4.icmp_echo_ignore_all=1 net.ipv4.tcp_max_syn_backlog=2048 net.ipv4.tcp_synack_retries=1 net.ipv4.tcp_syncookies=1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.tcp_keepalive_time = 60 net.ipv4.tcp_keepalive_intvl = 10 net.ipv4.tcp_keepalive_probes = 5 #disable ipv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 ### SYSCTL -W 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_max_syn_backlog=4096 net.ipv4.tcp_max_orphans=65536 net.ipv4.tcp_fin_timeout=10 net.ipv4.tcp_keepalive_intvl=15 net.ipv4.tcp_keepalive_probes=5 net.core.netdev_max_backlog=1000 net.core.somaxconn=15000 net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_no_metrics_save=1 Итог: баню с помощью связки limit_req от nginx + fail2ban без ipset, после каждой перезагрузки сервера почему-то надо делать iptables -F.
Во, с этой проблемой: > теперь при перезагрузке сервер не отвечает на запросы до выполнения iptables -F справился с помощью удаления iptables-persistent.
- wahaba + wakaba 3.0.9 + futaba + futallaby -