Пару методов от ддоса

Bayer

Специалист
⚖️
🏆
📜
💎
  • Надмозг
Поделюсь парочкой методов от атак на ваш сервер.

Начну с того, что нам нужно для начала настроить стек под высокие нагрузки.(не кайф расписывать чекайте в гугле)

Метод 1. Это отдача 444 ответа от nginx.
Реализуется через user_agent.

Метод 2. Ddos deflate. Грузануть можно отсюда jgmdev/ddos-deflate

Метод 3. Я же гений поэтому держите от меня такой метод в 1 строчку кода:
Код:
if( empty( $_SESSION['id'] ) or is_null( $_SESSION['id'] ) ) {echo 'Авторизуйся тщорт!';exit;}
Тут просто проверка на куки которые записываются только при авторизации.
По желанию можно ещё при входе на сайт капчу повесить
Это все не панацея, но снизит кол-во атакуемых страниц в разы.

Метод 4. Этот метод подойдёт если вас атакуют боты неспособные выполнить javascript
Суть:
Если посетитель попадает под условия фильтра, то выдаем посетителю специальную страницу-заглушку. На странице,
- Сообщаем о причинах выдачи специальной страницы вместо запрошенной
- Устанавливаем специальную куку в браузере пользователя посредством JavaScript.
- Выполняем JavaScript код перенаправления на исходную страницу.
Материал чувака CleanTalk качнуть можно отсюда CleanTalk/anti-ddos-lite

Метод 5. Это снова метод на пэхнапэ, поэтому ожидать многое от него не стоит, но все же поможет снизить немного нагрузочки от спам запросов к файлу.

Код:
<?
$name_page = str_replace('/', '', str_replace('.php', '', $_SERVER["PHP_SELF"]));

# Если пусто
  if (empty($_SESSION["limit_requests"][$name_page]["upd"])) { $_SESSION["limit_requests"][$name_page]["upd"] = 0; }

$stop              = false;
$max_upd           = 0; # обновений странички
$max_time_interval = 0; # секунд блокировано страничку

switch ($name_page) {
   case "название файла(пример: index (P.S. указываем только название без расширения))":
    $max_upd           = 60; # обновений странички
    $max_time_interval = 60; # секунд блокировано страничку
   break;
}

if ($max_upd && $max_time_interval) {

    $_SESSION["limit_requests"][$name_page]["upd"] += 1;

      if (empty($_SESSION["limit_requests"][$name_page]["start_time"])) { $_SESSION["limit_requests"][$name_page]["start_time"] = time(); }

      if ($_SESSION["limit_requests"][$name_page]["start_time"] < time()) {
        $_SESSION["limit_requests"][$name_page]["start_time"] = time() + $max_time_interval;
        $_SESSION["limit_requests"][$name_page]["upd"] = 1;
      }

      $cur_start_time = $_SESSION["limit_requests"][$name_page]["start_time"];
      $cur_upd = $_SESSION["limit_requests"][$name_page]["upd"];

      if ($cur_upd >= $max_upd && $cur_start_time > time()) { $stop = true; }



# Блок странички
   if ($stop) {
     die('Превышен лимит запросов. IP временно заблокирован. Пошёл на хуй!');
   }
}

?>
Такс, значит что делает этот фильтр? Крч если посетитель решил создать нагрузку через F5 - то шлём его нахуй.
Ставим лимит обновлений странички и если он достигнут, закрываем соед. и выдаем сообщение о блоке.


Ну крч как-то так. И это... динозавры которые ещё пользуются апачом выкиньте его нахуй, nginx+php-fpm и все будет чики пуки!
 
Последнее редактирование:
  • Like
Реакции: oxy

Bayer

Специалист
⚖️
🏆
📜
💎
  • Надмозг
Я по возможности ещё накидаю методов.

Сразу вспомнился ещё один, это крч доступ только через клаудфлаер.
Реализуется изи через iptables.
Запрещаем в iptables весь HTTP/HTTPS трафик:
iptables -I INPUT 1 -p tcp -m multiport --dports http,https -j DROP
И ставим на крон вот такой скриптик:

Код:
#!/bin/bash
while read ip ; do iptables -D INPUT -p tcp -m multiport --dports http,https -s "$ip" -j ACCEPT ; done <<< "$(curl https://www.cloudflare.com/ips-v4)"
while read ip ; do iptables -I INPUT -p tcp -m multiport --dports http,https -s "$ip" -j ACCEPT ; done <<< "$(curl https://www.cloudflare.com/ips-v4)"
iptables-save > /etc/iptables/rules.v4
Крч, теперь попасть по 80 и 443 портам на ваш сервер можно только через прокси, т.к. в любой момент времени только адреса, принадлежащие прокси, разрешены на сервере.
 

oxy

Продвинутый
🏆
📜
💎
  • Надмозг
Сразу вспомнился ещё один, это крч доступ только через клаудфлаер.
Кто не в теме - cloudflare сервис защиты от ддоса. Более того он бесплатный. Тебя ддосят? Пф! Подключайся через клауд и покажи писюн злоумышленику)) Но если он запомнил твой IP (да да, вычислил)) ), тогда нужно запретить любой доступ к серверу кроме как с cloudflare
 

Bayer

Специалист
⚖️
🏆
📜
💎
  • Надмозг
Кто не в теме - cloudflare сервис защиты от ддоса. Более того он бесплатный. Тебя ддосят? Пф! Подключайся через клауд и покажи писюн злоумышленику)) Но если он запомнил твой IP (да да, вычислил)) ), тогда нужно запретить любой доступ к серверу кроме как с cloudflare
Можно все равно обойти, но как ещё один способ создать хлопот атакующему вполне себе. А вообще надо a записи чистить так то
 
Сверху