Настраиваю примитивную защиту от 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.
>>131313 >Такими, что через php можно контролировать кол-во запросов Это всё фантазии. Мне прилетал дудос и всё обращения были на страницу контакта. Я правлю конфиги nginx, все запросы на страницу контакта блочу. Всё через Cloudflare проксируется. Стоит галка "under attack" естественно. Так вот, они даже через cloudflare, даже с галкой "under attack", даже будучи заблоченными самим nginx'ом, они всё равно сервак валят.
Вот как это было: https://www.youtube.com/watch?v=oPh7xZlQpAc Давнишнее видео, обрати внимание, там везде стоит "access forbidden by rule". И всё равно интернет-канал забит на 100%, при попытке открыть сайт - сервер не найден. Он ушел в даун на несколько дней. А ты говоришь про какие-то php скрипты...
>>131318 >Давнишнее видео, обрати внимание, там везде стоит "access forbidden by rule". Так подожди, нужно же ещё с помощью fail2ban IP банить. Я пробовал тупо limit_req устанавливать, так nginx то всё равно отвечает отдавая страницу с ошибкой. Мне не нравится, что этот fail2ban проверяет логи с некоторой периодичностью и нельзя сразу при limit_req в бан отправить, тогда было бы производительнее.
поцоны, аноны помогите как быть в этой ситуации. я хочу быть программистом и в компании где я работаю QA предложили стать фронтом. тимлид дал два курса со словами: - "Проходи эти два курса одновременно" ну и согласился. первый курс это на 5 недель обучение верстки в html и css(с препроцессором SASS) и немножко JS для прикола. второй курс это за 6 недель чисто JS. мне он больше нравится но на него времени совсем нет. проблема вот в чем: я две недели пыхтел над задачей и никак не мог ее решить и сейчас сижу в первом курсе где я отстаю на 3 недели по программе(второй курс вообще ничего не сделал кроме первой недели). короче у меня 4 дня чтобы сдать проект и я снова в ступоре и не могу продвинуться дальше в этом первом курсе. сам курс оказался каким-то дебильным и я не получаю той информации которая бы мне помогла проектировать сайт и потому приходится рыскать по интернетам в поисках ответов или решений на типа: "как сделать бургер меню", "как слайдер делать" и тд. анон помоги