Настраиваю примитивную защиту от 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_kee