Как защитить свой сервер CRMP или SAMP от DDoS атак
Данный мануал поможет вам избежать атаку конкурентов, и школьников, которые с радостью испортили все ваши старания, но не спешите закрывать свой сервер, мы приготовили для вас уникальную защиту.
И так, приступим, и первым нашем шагом будет отключение лога. Зачем? Спросите вы, ответ очень прост, при большом онлайне, в лог записывается огромное число букв и цифр, различной информации о работе сервера, при DDoS атаке, этот лог забивается на столько, что сервер просто не может так часто открывать огромный файл лога, а это приводит к крашу (выключению) сервера. Как помочь?
В конфиге вашего сервера, добавьте строку "logqueries 0" без скобок. Данная защита спасет вас от различных видов атак программами, типа "Baba Shura, Deda Vanya", и других программ с одной структурой.
Либо вы можете с помощью дополнительных плагинов удалять server_log.txt каждые 20 секунд, это не даст заполниться логу настолько, что бы сервер упал при чтении.
1. Этап выполнен, переходим ко 2 виду защиты, это "iptables". Если у вас сервер стоит на ВДС, то он никак не защищен от флудом пакетами, мы собрали оптимальное правило, код можете посмотреть ниже. Если вы находитесь на хостинге, сообщите хостеру ссылку на данную тему, и скажите, что данные правила значительно улучшат защиту вашего сервера.
iptables -A INPUT -p udp -m udp --dport 7777 -j DROP
iptables -I INPUT -p udp --dport 7777 -m state --state NEW -m recent --set
iptables -I INPUT -p udp --dport 7777 -m state --state NEW -m recent --update --seconds 9 --hitcount 7 -j DROP
3. Собственный антифлуд на Callback и (Автоматически выполняемые функции), К примеру "OnDialogResponse, OnPlayerPickupPickup, OnPlayerEnterCheckPoint и др.
И так, поговорим о автоматически выполняемых функциях. Представьте, в вашем моде к примеру в OnPlayerText находится огромный код из проверок, функций и возможностей, и какой нибудь читер будет писать 10, 100 а то и 1000 сообщений в секунду, из за этого есть огромная вероятность, что сервер станет работать не корректно, т.к в среднем, игрок не может написать 100 сообщений в чат за 1 секунду. Решение очень простое:
Код защиты (вставить в начало OnPlayerText)
new SAMPFilesru = GetTickCount();
if(GetPVarInt(playerid, "AntiFloodText") > SAMPFilesru )
{
Kick(playerid);
}
else SetPVarInt(playerid, "AntiFloodText", SAMPFilesru+50);
Это пример защиты, который определит читерский флуд в чат. Аналогично можно не только с этой функцией.
Защита от PizDoS_Bot
Разработчик данной программы был настолько помешан на славе, что допустил большую ошибку, при начале атаки, программа выводит рекламное сообщение в чат, которое легко определить, а пользователя программы забанить.
Код защиты (вставить в начало OnPlayerText)
if(strfind(text,"PizDoS Bot",true) == 0) return BanEx(playerid, "AntiDoS: PizDoS_Bot");
мобильный телефон