QWE Posted June 3, 2022 · Report post Заметил что сайт стал медленно открываться, а иногда и вовсе не открывается. Сайт-визитка,чисто html файл, весит 42кб, умеет отправлять письма из php скрипта, есть несколько картинок на нем и ссылка на гугл карты. На сервере смотрю в логи http, есть запросы но их не так много 20-30 запросов (GET|POST) в сек. Просмотрел число ТCP сокетов/соединений на 80 порт #netstat -anp а там интересно - висит порядка 750 соединений/попыток соединений. TCP cоединения в состоянии SYN_RECV,TIME_WAIT,ESTABLISHED,FIN_WAIT1,FIN_WAIT2,CLOSE_WAIT,LAST_ACK и другие возможно Добавил ручками в iptables IP с которых шли попытки соединений SYN_RECV, но это не сильно помогло, список пополнился новыми Судя по tcpdump на 80 порт прилетает где то 1000-1200 пакетов в секунду. и руками задолбаешься добавлять IP На сервер с сайтом заходит канал 1гбит/с от провайдера, входящего трафика (с учетом ddos запросов) на сервер с сайтом 15 Мбит/с. Cайт в виртуалке OpenVZ под apache Что нужно настроить на сервере, чтобы помогло? Что покрутить в ядре? Существуют списки IP для нечисти и пушистых? хотябы пользователей в РФ допустить только Про конторы которые занимаются защитой сайтов от типа ddos знаю Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
h3ll1 Posted June 3, 2022 (edited) · Report post table inet dev { set blackhole { type ipv4_addr flags dynamic,timeout } set v6.blackhole { type ipv6_addr flags dynamic,timeout } chain input { type filter hook input priority filter; policy accept; ip saddr @blackhole counter drop ip6 saddr @v6.blackhole counter drop iif != "lo" ct state new tcp dport 80 meter acct80 size 65535 { ip saddr limit rate over 10/second } add @blackhole { ip saddr timeout 1m } iif != "lo" ct state new tcp dport 80 meter 6acct80 size 65535 { ip6 saddr limit rate over 10/second } add @v6.blackhole { ip saddr timeout 1m } } } и потом: nft list set inet dev blackhole Думаю подойдет. Edited June 3, 2022 by h3ll1 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted June 3, 2022 · Report post Может логи посмотреть куда они там у вас долбятся ? А то может они спам через вас шлют или сломали вас давно и дальще сканят... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted June 3, 2022 · Report post В 03.06.2022 в 17:46, QWE сказал: Судя по tcpdump на 80 порт прилетает где то 1000-1200 пакетов в секунду. и руками задолбаешься добавлять IP Это смешная нагрузка даже для пентиум 3, если вы сами не можете адекватно настроить хостенг - зовите спецов. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
QWE Posted June 4, 2022 · Report post В 04.06.2022 в 00:59, st_re сказал: Может логи посмотреть куда они там у вас долбятся ? А то может они спам через вас шлют или сломали вас давно и дальще сканят... долбятся на 80 порт и tcp коннекты только по этому порту. В 03.06.2022 в 23:05, h3ll1 сказал: table inet dev { set blackhole { type ipv4_addr flags dynamic,timeout } set v6.blackhole { type ipv6_addr flags dynamic,timeout } chain input { type filter hook input priority filter; policy accept; ip saddr @blackhole counter drop ip6 saddr @v6.blackhole counter drop iif != "lo" ct state new tcp dport 80 meter acct80 size 65535 { ip saddr limit rate over 10/second } add @blackhole { ip saddr timeout 1m } iif != "lo" ct state new tcp dport 80 meter 6acct80 size 65535 { ip6 saddr limit rate over 10/second } add @v6.blackhole { ip saddr timeout 1m } } } и потом: nft list set inet dev blackhole Думаю подойдет. это конфиг для какой железки/ОСи ? В 04.06.2022 в 01:03, Ivan_83 сказал: Это смешная нагрузка даже для пентиум 3, если вы сами не можете адекватно настроить хостенг - зовите спецов. Нагрузка может быть и смешная, но карусель из количества IP неясного размера. Напишите в личку если готовы решить задачу. За ночь зафильтровали 13250 IP которые долбятся на 80 порт, в фильтр попали IP операторов (билайн,yota LTE интернет) за которыми сидят и абоненты и ддосеры. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted June 4, 2022 · Report post В 04.06.2022 в 12:02, QWE сказал: долбятся на 80 порт и tcp коннекты только по этому порту. ммм... ну да.. на 80 порту, я так предполагаю живет какоето приложениее.. ну как вариант апач или там нгинкс.. может быть еще чтото. вам это лучше знать что, мне отсюда не видать.. оно наверное пишет логи ? в жтих лога, наверное, чтото есть, что они запрашивают от вашего сервера ? судя по Цитата YN_RECV,TIME_WAIT,ESTABLISHED,FIN_WAIT1,FIN_WAIT2,CLOSE_WAIT,LAST_ACK с приложением они соеденились и возможно чтото там запросили... нет ? а то изчуать нагрузку на веб по нетстату это, как бы, странно. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
QWE Posted June 4, 2022 · Report post В 04.06.2022 в 21:28, st_re сказал: ммм... ну да.. на 80 порту, я так предполагаю живет какоето приложениее.. ну как вариант апач или там нгинкс.. может быть еще чтото. вам это лучше знать что, мне отсюда не видать.. оно наверное пишет логи ? в жтих лога, наверное, чтото есть, что они запрашивают от вашего сервера ? судя по с приложением они соеденились и возможно чтото там запросили... нет ? а то изчуать нагрузку на веб по нетстату это, как бы, странно. почему странно, до процесса http или nginx http запросы могут не долететь, по причине не создания tcp соединения/сокета пакетами уровня tcp, которые создают tcp сокет. на порту 80 живет apache. вот часть его лога # tail -f access_log 212.119.32.4 - - [04/Jun/2022:22:07:43 +0300] "GET / HTTP/1.1" 200 42380 8.20.126.101 - - [04/Jun/2022:22:07:43 +0300] "GET / HTTP/1.1" 200 42380 123.57.7.119 - - [04/Jun/2022:22:07:43 +0300] "GET / HTTP/1.1" 200 42380 189.214.7.5 - - [04/Jun/2022:22:07:44 +0300] "GET / HTTP/1.1" 200 42380 37.120.152.196 - - [04/Jun/2022:22:07:44 +0300] "GET / HTTP/1.1" 200 42380 146.75.179.30 - - [04/Jun/2022:22:07:44 +0300] "GET / HTTP/1.1" 200 42380 45.137.106.102 - - [04/Jun/2022:22:07:45 +0300] "GET / HTTP/1.1" 200 42380 20.218.72.124 - - [04/Jun/2022:22:07:45 +0300] "POST / HTTP/1.1" 200 42380 104.244.73.93 - - [04/Jun/2022:22:07:46 +0300] "POST / HTTP/1.1" 200 42380 146.75.179.30 - - [04/Jun/2022:22:07:46 +0300] "GET / HTTP/1.1" 200 42380 179.1.73.102 - - [04/Jun/2022:22:07:48 +0300] "GET / HTTP/1.1" 200 42380 45.79.249.71 - - [04/Jun/2022:22:07:48 +0300] "GET / HTTP/1.1" 200 42380 37.120.152.196 - - [04/Jun/2022:22:07:50 +0300] "GET / HTTP/1.1" 200 42380 89.232.118.229 - - [04/Jun/2022:22:07:50 +0300] "GET / HTTP/1.1" 200 42380 207.154.222.200 - - [04/Jun/2022:22:07:50 +0300] "POST / HTTP/1.1" 200 42380 89.232.118.229 - - [04/Jun/2022:22:07:51 +0300] "GET / HTTP/1.1" 200 42380 45.137.106.15 - - [04/Jun/2022:22:07:51 +0300] "GET / HTTP/1.1" 200 42380 189.214.7.5 - - [04/Jun/2022:22:07:51 +0300] "GET / HTTP/1.1" 200 42380 189.214.7.5 - - [04/Jun/2022:22:07:52 +0300] "GET / HTTP/1.1" 200 42380 103.148.39.38 - - [04/Jun/2022:22:07:53 +0300] "POST / HTTP/1.1" 200 42380 45.116.157.236 - - [04/Jun/2022:22:07:50 +0300] "POST / HTTP/1.1" 200 42380 217.219.76.40 - - [04/Jun/2022:22:07:53 +0300] "GET / HTTP/1.1" 200 42380 45.137.106.102 - - [04/Jun/2022:22:07:53 +0300] "GET / HTTP/1.1" 200 42380 181.10.160.156 - - [04/Jun/2022:22:07:53 +0300] "POST / HTTP/1.1" 200 42380 190.104.1.20 - - [04/Jun/2022:22:07:53 +0300] "POST / HTTP/1.1" 200 42380 185.204.197.169 - - [04/Jun/2022:22:07:54 +0300] "GET / HTTP/1.1" 200 42380 13.71.117.139 - - [04/Jun/2022:22:07:54 +0300] "GET / HTTP/1.1" 200 42380 69.165.73.111 - - [04/Jun/2022:22:07:55 +0300] "GET / HTTP/1.1" 200 42380 178.20.55.16 - - [04/Jun/2022:22:07:55 +0300] "GET / HTTP/1.1" 200 42380 45.137.106.102 - - [04/Jun/2022:22:07:55 +0300] "GET / HTTP/1.1" 200 42380 52.59.26.88 - - [04/Jun/2022:22:07:55 +0300] "GET / HTTP/1.1" 200 42380 162.247.74.27 - - [04/Jun/2022:22:07:55 +0300] "GET / HTTP/1.1" 200 42380 94.75.76.3 - - [04/Jun/2022:22:07:56 +0300] "GET / HTTP/1.1" 200 42380 216.155.89.66 - - [04/Jun/2022:22:07:56 +0300] "POST / HTTP/1.1" 200 42380 173.212.237.200 - - [04/Jun/2022:22:07:56 +0300] "GET / HTTP/1.1" 200 42380 94.240.188.72 - - [04/Jun/2022:22:07:57 +0300] "GET / HTTP/1.1" 200 42380 103.107.199.109 - - [04/Jun/2022:22:07:57 +0300] "GET / HTTP/1.1" 200 42380 13.71.117.139 - - [04/Jun/2022:22:07:57 +0300] "GET / HTTP/1.1" 200 42380 2.188.164.194 - - [04/Jun/2022:22:07:57 +0300] "POST / HTTP/1.1" 200 42380 212.119.32.4 - - [04/Jun/2022:22:07:57 +0300] "GET / HTTP/1.1" 200 42380 3.87.6.19 - - [04/Jun/2022:22:07:58 +0300] "GET / HTTP/1.1" 200 42380 45.137.106.102 - - [04/Jun/2022:22:07:58 +0300] "GET / HTTP/1.1" 200 42380 217.138.192.77 - - [04/Jun/2022:22:07:58 +0300] "GET / HTTP/1.1" 200 42380 104.238.150.129 - - [04/Jun/2022:22:07:56 +0300] "POST / HTTP/1.1" 200 42380 218.1.142.163 - - [04/Jun/2022:22:07:58 +0300] "GET / HTTP/1.1" 200 42380 45.79.249.71 - - [04/Jun/2022:22:07:58 +0300] "GET / HTTP/1.1" 200 42380 128.90.147.10 - - [04/Jun/2022:22:07:58 +0300] "GET / HTTP/1.1" 200 42380 8.43.225.74 - - [04/Jun/2022:22:07:58 +0300] "GET / HTTP/1.1" 200 42380 146.75.179.30 - - [04/Jun/2022:22:07:58 +0300] "GET / HTTP/1.1" 200 42380 8.20.126.101 - - [04/Jun/2022:22:07:59 +0300] "GET / HTTP/1.1" 200 42380 94.240.188.72 - - [04/Jun/2022:22:07:59 +0300] "GET / HTTP/1.1" 200 42380 3.87.6.19 - - [04/Jun/2022:22:07:59 +0300] "GET / HTTP/1.1" 200 42380 178.175.141.251 - - [04/Jun/2022:22:07:59 +0300] "GET / HTTP/1.1" 200 42380 120.34.241.152 - - [04/Jun/2022:22:07:57 +0300] "POST / HTTP/1.1" 200 42380 219.100.37.234 - - [04/Jun/2022:22:08:00 +0300] "GET / HTTP/1.1" 200 42380 35.203.252.99 - - [04/Jun/2022:22:08:00 +0300] "GET / HTTP/1.1" 200 42380 123.25.15.209 - - [04/Jun/2022:22:08:00 +0300] "POST / HTTP/1.1" 200 42380 103.42.180.250 - - [04/Jun/2022:22:08:00 +0300] "POST / HTTP/1.1" 200 42380 62.80.165.207 - - [04/Jun/2022:22:08:01 +0300] "GET / HTTP/1.1" 200 42380 62.80.165.207 - - [04/Jun/2022:22:08:01 +0300] "GET / HTTP/1.1" 200 42380 62.80.165.207 - - [04/Jun/2022:22:08:01 +0300] "GET / HTTP/1.1" 200 42380 37.120.152.196 - - [04/Jun/2022:22:08:01 +0300] "GET / HTTP/1.1" 200 42380 109.238.225.94 - - [04/Jun/2022:22:08:01 +0300] "GET / HTTP/1.1" 200 42380 94.240.188.72 - - [04/Jun/2022:22:08:02 +0300] "GET / HTTP/1.1" 200 42380 178.20.55.16 - - [04/Jun/2022:22:08:02 +0300] "GET / HTTP/1.1" 200 42380 125.26.4.219 - - [04/Jun/2022:22:08:01 +0300] "POST / HTTP/1.1" 200 42380 45.137.106.102 - - [04/Jun/2022:22:08:02 +0300] "GET / HTTP/1.1" 200 42380 45.177.111.117 - - [04/Jun/2022:22:08:02 +0300] "POST / HTTP/1.1" 200 42380 181.169.91.199 - - [04/Jun/2022:22:08:02 +0300] "POST / HTTP/1.1" 200 42380 3.87.6.19 - - [04/Jun/2022:22:08:02 +0300] "GET / HTTP/1.1" 200 42380 146.75.179.30 - - [04/Jun/2022:22:08:03 +0300] "GET / HTTP/1.1" 200 42380 13.71.117.139 - - [04/Jun/2022:22:08:05 +0300] "GET / HTTP/1.1" 200 42380 77.236.238.33 - - [04/Jun/2022:22:08:06 +0300] "POST / HTTP/1.1" 200 42380 218.235.250.203 - - [04/Jun/2022:22:08:06 +0300] "GET / HTTP/1.1" 200 42380 45.137.106.102 - - [04/Jun/2022:22:08:06 +0300] "GET / HTTP/1.1" 200 42380 104.28.237.18 - - [04/Jun/2022:22:08:06 +0300] "GET / HTTP/1.1" 200 42380 3.87.6.19 - - [04/Jun/2022:22:08:06 +0300] "GET / HTTP/1.1" 200 42380 37.120.152.196 - - [04/Jun/2022:22:08:07 +0300] "GET / HTTP/1.1" 200 42380 117.70.41.245 - - [04/Jun/2022:22:08:04 +0300] "POST / HTTP/1.1" 200 42380 146.75.179.30 - - [04/Jun/2022:22:08:07 +0300] "GET / HTTP/1.1" 200 42380 #netstat -an | awk '/tcp/ {print $6}' | sort | uniq -c 21 ESTABLISHED 23 FIN_WAIT1 17 FIN_WAIT2 4 LAST_ACK 4 LISTEN 29 SYN_RECV 228 TIME_WAIT Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted June 4, 2022 · Report post а "GET /" там что ? php ? а по нетстату, ну да, люди чутка ходят.. ничего из разряда "много" тут и рядом не валялось. SYN_RECV 29, ну да апач не самый быстрый (совсем не быстрый) обработчик соеденений, не успевает немного всех обработать (причем среди не успевают будут и посетители и ддосеры). в куске вашего лога насчиталось 8 разпросов в сек максимум.. накрыть это сверху нгинксом (или лучше, конечно, пересадить пхп, еслу у вас оно, на php-fpm но придётся конвертировать .htaccess в реврайны от nginx, проще сам апач перевесить на 127.0.0.1, а нгикс на его место. если у вас там не чтото самописное, то поискать инстуркции у авторов движка, там обычно бывают примеры.) в нгинксе запретить POST (не ГЕТ) на / вобще нафиг, а гет закешировать. и забыть про мамкиных ддосеров. ну можно еще там же рейтлимитом на ИП пройтись. ну или боритесь фаерволом, но по Netstat вы явно не отличите посетителей от ддосеров. тогда уже по логу, найти ТОП посетителей, у которых нет других запросов (у вас же там врядли сайт без картинок/стилей/итд и состоит из одной / страницы), а также всех кто делает чтото кроме ГЕТ на / (если конечно там нет такого по логике сайта, но обычно не бывает), и всех скопом и зафильтровать. а, и еще, в лог добавить добавить заголовок Host.. там бывает всякое, всех кроме своих -> в сад. 17 CLOSING 2974 ESTABLISHED 42 FIN_WAIT_1 11 FIN_WAIT_2 20 LAST_ACK 25 LISTEN 7 SYN_RCVD 941 TIME_WAIT (тут правда FreeBSD, немного по другому называются статусы) сервер вообще курит-курит-курит со своими ~300 запросов в сек.. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
h3ll1 Posted June 4, 2022 · Report post On 6/4/2022 at 12:02 PM, QWE said: это конфиг для какой железки/ОСи ? Linux 5.x>nftables nft -v echo > nft.cfg "table inet dev { set blackhole { type ipv4_addr flags dynamic,timeout } set v6.blackhole { type ipv6_addr flags dynamic,timeout } chain input { type filter hook input priority filter; policy accept; ip saddr @blackhole counter drop ip6 saddr @v6.blackhole counter drop iif != "lo" ct state new tcp dport 80 meter acct80 size 65535 { ip saddr limit rate over 10/second } add @blackhole { ip saddr timeout 1m } iif != "lo" ct state new tcp dport 80 meter 6acct80 size 65535 { ip6 saddr limit rate over 10/second } add @v6.blackhole { ip saddr timeout 1m } } }" && nft -f nft.cfg && nft list ruleset Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted June 4, 2022 · Report post В 04.06.2022 в 09:02, QWE сказал: Нагрузка может быть и смешная, но карусель из количества IP неясного размера. Напишите в личку если готовы решить задачу. За ночь зафильтровали 13250 IP которые долбятся на 80 порт, в фильтр попали IP операторов (билайн,yota LTE интернет) за которыми сидят и абоненты и ддосеры. Вы хотя бы тюнинги Сысоева от 2007 года сделайте. Потом синкуки включить. И прекращайте смешить, у меня торрент клиент больше сетевых совокуплений делает и вообще никак систему не грузит. Хотя какой там торрент, даже браузер за сутки сильно больше совокупляется. https://forum.nag.ru/index.php?/forum/78-vakansii/page/7/ вот тут можете попросить платной помощи. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
QWE Posted June 5, 2022 · Report post В 04.06.2022 в 23:54, Ivan_83 сказал: И прекращайте смешить, у меня торрент клиент больше сетевых совокуплений делает и вообще никак систему не грузит. Хотя какой там торрент, даже браузер за сутки сильно больше совокупляется. Я говорил что сайт не открывается, а не apache грузит систему. Сейчас загрузка CPU у "контейнера" с apache не более 1%. Зафильтрованно 17200 IP. У "контейнера" настроены ограничения ресурсов для процессов. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
QWE Posted June 5, 2022 · Report post В 04.06.2022 в 23:01, st_re сказал: а "GET /" там что ? php ? index.html размером 42380 байт Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted June 6, 2022 · Report post В 05.06.2022 в 12:58, QWE сказал: index.html размером 42380 байт если сайт статика, то апач снести и забыть про него, поставить нгинкс. и somaxcon со стандартных, скорее всего, 128 поднять до, к примеру, 16к. и включить в nginx gzip.. (и я бы глянул, если после включения гзипа гг ддосеры всёравно получают 42к страничку, то написал бы ченить вида if ($http_accept_encoding !~ 'gzip' ) { return 200; ) чтобы канал за зря не грузили. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
yandrey Posted June 7, 2022 · Report post В 07.06.2022 в 03:28, st_re сказал: поставить нгинкс почему не lighttpd? он статику один раз сожмёт и будет отдавать готовое не грузя зря cpu и канал, а gzip модуль nginx не помню чтобы сохранял сжатое Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
QWE Posted June 7, 2022 · Report post В 07.06.2022 в 14:23, yandrey сказал: почему не lighttpd? он статику один раз сожмёт и будет отдавать готовое не грузя зря cpu и канал, а gzip модуль nginx не помню чтобы сохранял сжатое lighttpd умеет php скрипты выполнять? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted June 7, 2022 · Report post В 07.06.2022 в 14:23, yandrey сказал: почему не lighttpd? он статику один раз сожмёт и будет отдавать готовое не грузя зря cpu и канал, а gzip модуль nginx не помню чтобы сохранял сжатое ну это кому что больше нравится.. :) в нгинксе можно тоже пожатое заранее отдать. но жать самому. gzip_static модуль штатный Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
yandrey Posted June 7, 2022 · Report post В 07.06.2022 в 19:43, QWE сказал: lighttpd умеет php скрипты выполнять? умеет, есть несколько *cgi модулей, даже самостоятельно запускать что угодно Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted June 8, 2022 · Report post В 06.06.2022 в 20:28, st_re сказал: скорее всего, 128 поднять до, к примеру, 16к. 128 мало, а 16к - перебор. Учитывая что оно fifo то может получится что пока до последнего дойдёт очередь обработки он уже по таймауту уйдёт. Смысл очереди в том, чтобы переживать короткие всплески, а не вообще не терять ничего. В 07.06.2022 в 11:23, yandrey сказал: почему не lighttpd? он статику один раз сожмёт и будет отдавать готовое не грузя зря cpu и канал, а gzip модуль nginx не помню чтобы сохранял сжатое Там любого функционала хватает, нужно только документацию прочитать и иногда фантазию проявить. Слабо представляю зачем нужно что то кроме nginx, разве что совсем узкоспецифичные задачи. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...