LINUX.ORG.RU
решено ФорумAdmin

Dos флуд GET запросов по домену, ip адресу

 ,


0

1

Проблема решается посредством Iptables

СТавится Iptables, если Debian8, команда apt-get install nftables

Cтавится fail2ban там по умолчанию защита от взлома сервера к админке aptitude install fail2ban

Пишутся правила для Iptables

iptables -I INPUT -p tcp –syn –dport 80 -m connlimit –connlimit-above 10 –connlimit-mask 24 -j DROP iptables -I INPUT -p tcp –syn –dport 80 -m hashlimit –hashlimit-above 1/second –hashlimit-burst 20 –hashlimit-mode srcip –hashlimit-srcmask 24 –hashlimit-name blip -j DROP

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

От syn_flooda iptables -N syn_flood iptables -A INPUT -p tcp –syn -j syn_flood iptables -A syn_flood -m limit –limit 500/s –limit-burst 2000 -j RETURN iptables -A syn_flood -j DROP

Еще полезные фичи: iptables -A INPUT -p tcp –tcp-flags ALL NONE -j DROP iptables -A INPUT -p tcp –tcp-flags SYN,FIN SYN,FIN -j DROP iptables -A INPUT -p tcp –tcp-flags SYN,RST SYN,RST -j DROP iptables -A INPUT -p tcp –tcp-flags FIN,RST FIN,RST -j DROP iptables -A INPUT -p tcp –tcp-flags ACK,FIN FIN -j DROP iptables -A INPUT -p tcp –tcp-flags ACK,PSH PSH -j DROP iptables -A INPUT -p tcp –tcp-flags ACK,URG URG -j DROP

После сохраняете iptables-save

Настройка от нагрузки файлов nginx.conf, sysctl.conf /etc/nginx/nginx.conf /etc/sysctl.conf

В файл sysctl.conf, в конец файла, пишите это строки, сервер после перезагружаете

net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.eth0.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.lo.accept_source_route = 0 net.ipv4.conf.eth0.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.ip_local_port_range = 1024 65535 net.ipv4.ip_forward = 0 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.core.rmem_max = 996777216 net.core.wmem_max = 996777216 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_mem= 786432 1048576 996777216 net.ipv4.tcp_wmem = 4096 87380 4194304 net.ipv4.tcp_max_orphans = 2255360 net.core.netdev_max_backlog = 10000 net.ipv4.tcp_fin_timeout = 10 net.ipv4.tcp_keepalive_intvl = 15 net.ipv4.tcp_max_syn_backlog = 4046 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_intvl=10 net.ipv4.tcp_keepalive_probes=5 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 494967295 kernel.shmall = 268435456 net.core.somaxconn= 16096

Находите в файле nginx.conf строчки, и меняете на:

worker_rlimit_nofile 100000; worker_connections 65000; gzip_comp_level 7; gzip_buffers 8 64k;

File cache settings

open_file_cache          max=10000 inactive=30s;
open_file_cache_valid    60s;
open_file_cache_min_uses 2;
open_file_cache_errors   off;

http { # Main settings sendfile on; tcp_nopush on; tcp_nodelay on; client_header_timeout 10; client_body_timeout 10; client_header_buffer_size 1k; client_body_buffer_size 1k; client_max_body_size 10k; large_client_header_buffers 2 1k; send_timeout 10; keepalive_timeout 5 5; reset_timedout_connection on; server_tokens off; server_name_in_redirect off; server_names_hash_max_size 512; server_names_hash_bucket_size 512; limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:5m; limit_req_zone $binary_remote_addr zone=req_limit_per_ip:5m rate=5r/s;

server {
limit_conn conn_limit_per_ip 5;
limit_req zone=req_limit_per_ip burst=5 nodelay;
}

Так DOS флуд GET запросов c разных ip, прокси останавливается, трафик в 3-5мб/cек падает, проц не грузится на 100%, сервер, сайт не упадет.

PS. Вдруг кто столкнется с похожей проблемой и не сможете решить сами, пишите в лс в телегу @KrolikQ

Ответ на: комментарий от anc

fail2ban не знаю как через него, cloudflare не помогает Dos вот такой как на скрине https://hostingkartinok.com/show-image.php?id=46943cf4427195ba7a24bac789df7278

Сказали, что через нгинс можно как то настроить, я ток пока это чутька узнал, но даже через него не могу без помощи того, кто шарит в этом)))

AntiDOs1111 ()
Ответ на: комментарий от AntiDOs1111

cloudflare не помогает

Эм, вы хотите сказать что cloudflare послал вас когда вы к ним в ТП обратились?

Dos вот такой как на скрине

Вы разницу между dos и ddos вообще знаете? Если нет то бегом в гугл читать.

anc ★★★★★ ()
Ответ на: комментарий от anc

Я не обращался в cloudflare, я привязал их днс к домену и все, разницу вроде как я понял дос флуд запросов гет, это тип доса просто, а ддос атака это уже обьем трафика по 50мб может быть. Вы не поможете как устранить этот дос флуд? Если вы разбераетесь я вам заплачу за помощь

AntiDOs1111 ()

В коммандной строке:

apt install sudo ipset libnginx-mod-http-lua 
ipset create ddos iphash
iptables -A INPUT -m set --match-set ddos src -j DROP

В /etc/sudoers:
www-data ALL=(ALL:ALL) NOPASSWD: /sbin/iptables, /sbin/ipset

В конфиг nginx:
http {
  …
  limit_conn_zone $binary_remote_addr zone=remote_addr:32m;
  …
  server {
  …
        location /bye {
                content_by_lua_block {
	                os.execute('sudo /sbin/ipset add ddos '..ngx.var.remote_addr..' &')
                }
        }

	limit_conn remote_addr 10;
	limit_conn_status 418; 
	error_page 418 /bye;		
  …
  }
}

Количество разрешённых одновременных подключений с одного IP (у меня в примере 10) можно настраивать на своё усмотрение.

заплачу за помощь в настройке!))

3223sSx6Q2qe3PYt7pq1aDa6XRBUXDHhLT

annerleen ★★★ ()
Последнее исправление: annerleen (всего исправлений: 5)
Ответ на: комментарий от annerleen

Я ввел первый код apt install sudo ipset libnginx-mod-http-lua в консоль

Пишит ошибку:

Пакеты, имеющие неудовлетворённые зависимости: libnginx-mod-http-lua : Зависит: libnginx-mod-http-ndk (= 1.10.3-1+deb9u1~bpo8+ 2) но он не будет установлен Зависит: nginx-common (= 1.10.3-1+deb9u1~bpo8+2) но он не будет установлен E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты. root@212:~#

Помоги пж настроить, бро) я скину скок надо, 500, 1000р в dash

AntiDOs1111 ()
Ответ на: комментарий от annerleen

Не хочет(

Пишит:

libnginx-mod-http-lua : Зависит: libnginx-mod-http-ndk (= 1.10.3-1+deb9u1~bpo8+2) но он не будет установлен Зависит: nginx-common (= 1.10.3-1+deb9u1~bpo8+2) но он не будет установлен E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

AntiDOs1111 ()
Ответ на: комментарий от gnu_linux

Че лень то, я не совсем даун, куда мне скажут я могу написать, прост боюсь, что не так сделать, тем более 1к за такое норм заплатить, если настроить можно за 1,2 часа все, с тем кто шарит

AntiDOs1111 ()
Ответ на: комментарий от annerleen

Вы не поняли. Уже прописали
www-data ALL=(ALL:ALL) NOPASSWD: /sbin/iptables, /sbin/ipset
То есть от www-data можно выполнить эти команды. А вот какая уязвимость появиться в ваших сайтах никто не знает. Самое главное что Вы уже заложили потенциальную бомбочку замедленного действия.
Реально интересно, чем не устроил вариант с fail2ban который в целом выполнит все тоже самое, но без раздачи привилегий www-data ?

anc ★★★★★ ()
Ответ на: комментарий от AntiDOs1111

тем более 1к за такое норм заплатить, если настроить можно за 1,2 часа все, с тем кто шарит

Я смотрю вы просто гуру. Знаете за сколько и за какое время можно разобраться с ddos.
Ну так если вы в курсе, тем более идите куда послали www.linux.org.ru/forum/job/
ЗЫ Хотя «гуру» до сих пор не осилил разницу между dos и ddos, но не важно, главное он «гуру» по оценке стоимости и времени исполнения :)

anc ★★★★★ ()
Ответ на: комментарий от annerleen

Каким образом это возможно, если локальный логин как www-data запрещён?

Выше уже отписал. Но попробую пояснить по другому, у вас из под какого пользователя все крутиться? www-data
Можно под пользователем www-data запустить вредоносный код? Можно.
Все стараются сделать максимальную изоляцию. Вы же наоборот раздаете права на такие утилиты как управление fw.

anc ★★★★★ ()
Ответ на: комментарий от anc

я не писал, что я гуру, я предположил, что если поставить правильно через ngix настройку ограничения, чтоб не долбили запросами флудом, то это много времени не займет, но да я плохо в этом разбераюсь поэтому сюда и пришел. Я понял что такое dos, типа мусорные запросы, флуд по http с целью загрузить сервер, у меня как раз такое вроде) А ddos это типа ботнет там масово уже атака идет с целью до полного отказа сервера. Так как я не понимаю все тонкости насйтроки, я поэтому предложит оплату, это в порядке вещей, поэтому троллить меня нинадо, мне нужен быстрый результат любой ценой исправления ошибки, чтоб мой сайт дальше мне приносил мани, а не лагал

AntiDOs1111 ()
Ответ на: комментарий от AntiDOs1111

С английским у вас явно все плохо. А ещё и с навыками гуглунья.

мне нужен быстрый результат любой ценой

Предварительно не зная что у вас там КП $100000 - устраивает? Но может быть и дороже.

anc ★★★★★ ()
Ответ на: комментарий от anc

Такое чсв высокое, нет просто норм объяснить как, что сделать, ведь сюда люди за помощью приходят, нет надо показать свое чсв, ведь больше его не кому показывать как только тем, кто не знает то, что знаешь ты. Что там понимать, тем кто шарит и так видно, что идут каждую секунду запросы флуд типа таких, мусорные запросы, флуд на мой ип, домен

скрин https://hostingkartinok.com/show-image.php?id=46943cf4427195ba7a24bac789df7278

Че еще тебе там понимать надо, мне говорили, что через nginx можно настроить, но я не профи в этом, поэтому, чтоб не накосячить я спрашиваю тут у людей, многое я не знаю как правильно куда че писать, поэтому мне проще когда мне пошагово объяснят как че куда написать правильно, а заплачу за потраченное время и помощь, потому, что у самого у меня не получается, я гуглил и сам не смог сделать, некоторые моменты не понятны как правильно сделать

AntiDOs1111 ()
Ответ на: комментарий от SevikL

Ну там в событиях бранмауэра я смотрел статистику и по фильтру вижу запросы такие флуд /?15что-то-там и их ип, но как их забанить, можно такие ип забанить через iptables, я вбил код sudo iptables -A INPUT -s ххх.ххх.хххх -j DROP на бан ипа, но чет он вроде не забанился, так же по логам идет с этого ип флуд

А как через клаудфлер резать обращения к /?15что-то-там???

AntiDOs1111 ()
Ответ на: комментарий от AntiDOs1111

Ты уверен что к тебе запросы приходят через cloudflare, если ты просто поменял ip у dns записи, то тебя можно доставать по твоему старому ip в обход cloudflare(это первое что надо сделать при подключение ddos услуги которая проксирует через себя). По ошибки с установкой пакета у тебя nginx откуда поставлен, покажи apt-cache policy nginx

avb ()
Ответ на: комментарий от avb

К cloudflare я ток доме нпривязал, и днс их взял на домен, и там как бы стата идет, я поставил проверку на ботов, и там капчу на Китай, АМерику, Францию, Германию, с чьх ип идут мусорные запросы Get9к52309/? типа таких, и добавил в нгинс.конфиг

код

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; if ($http_referer ~* «(plugin_googlemap2|plugin_googlemap3|plugin_googlemap2_proxy|plugin_googlemap3|validator.w3.org|www.watchmouse.com|jigsaw.w3.org|)») { return 444;

На форуме сказали мол, добавить туда реферы в запросах Ну хз как бы запросы идут все ровно такие

AntiDOs1111 ()
Ответ на: комментарий от i-rinat

Как правильно вставить код?

limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;

server {
limit_conn conn_limit_per_ip 10;
limit_req zone=req_limit_per_ip burst=10 nodelay;
}

У меня сейчас стоит так в nginx.conf cкрин: https://hostingkartinok.com/show-image.php?id=7eb2180a3266d09f59c72e6d4b986fd7

AntiDOs1111 ()