Назад | Перейти на главную страницу

Вопросы по HTTP-серверу, SYN-флуду и DoS-атакам

Я делаю http-сервер в c. Он находится на стадии пре-альфа, но кажется достаточно стабильным, чтобы развернуть его на моем сервере и запустить 4 минимальных веб-сайта. Он работает без сбоев два дня до сегодняшнего утра. Демон не работал и завершился некорректно. Я просмотрел журналы и нашел около 10 строк подряд:

[815259.230706] possible SYN flooding on port 80. Sending cookies.

Тогда больше не будет сообщений, регистрируемых с http-сервера, поэтому я предполагаю, что именно здесь он умер. Я не уверен, какой сигнал он получил, что убил его, поэтому я предполагаю, что это были SIGKILL, SIGSEGV или SIGABRT, потому что они не были пойманы, и SIGKILL все равно не может быть пойман. Я посмотрел SYN-флуд, и это тип DoS-атаки. Я не уверен, был ли сервер действительно атакован или нет, но большинство запросов, которые я получаю в общей сложности для моих 4 веб-сайтов, выполняются не более 1 раза в секунду ... не настолько близко, чтобы быть ложно обвиненным в DoS-атаке.

Мои вопросы:

Насколько вероятно, что это была DoS-атака?

Было бы ядро ​​(linux) убило бы http-сервер из-за этого или оно умерло бы само по себе?

Если ядро ​​убило его, как мне предотвратить это, я не могу заставить его умереть неожиданно?

Если ядро ​​не уничтожило его, была ли смерть, вероятно, вызвана лавинным потоком SYN, и как я могу его отладить, или это, скорее, не связанная с этим ошибка программирования?

Какие меры безопасности следует предпринять для предотвращения возможного SYN-флуда?

РЕДАКТИРОВАТЬ: http-сервер теперь аварийно завершал работу 3 раза с одним и тем же сценарием.

Ядро Linux отправляет файл cookie SYN на удаленный компьютер, который выполняет предполагаемую атаку, но не на ваш веб-сервер.

Ты можешь читать Укрепление стека TCP / IP от атак SYN чтобы узнать больше об атаках SYN-флуда.

Также может быть ты хочешь прочитать это руководство об отладке apache и о применении некоторых идей для отладки вашего собственного сервера.

Запустите netstat и посмотрите, в каком состоянии находятся соединения. Если вы видите много сокетов SYN_RECV, которые просто сидят на месте, скорее всего, вы находитесь под DOS. Если все подключения происходят с одного и того же IP-адреса, исправить это просто.

Также возможно, что ваш сайт стал популярным или его сканирует плохо закодированный поисковый бот, что приводит к большому количеству подключений, и ваш сервер не может с этим справиться. Поиск по запросу «Linux tcp tuning» в вашей любимой поисковой системе найдет множество подсказок / советов / практических рекомендаций по настройке стека tcp вашего сервера.