Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Защита от легкой Http атаки

umprex
сообщение 6.2.2016, 18:44
Сообщение #1


Иконка группы

Стаж: 16 лет
Город: Киев

Сообщений: 2909
Благодарностей: 4781
Полезность: 2197

Данный скрипт защищает от POST/GET запросов на Ваш сайт.
Это не очень сильная защита, но поможет защитить свой сайт от детей.

Что умеет:
  • Работает с cloudflare.com
  • Умеет вести логи по дням
  • Пропускает поисковых ботов
  • Есть список доверенных ip адресов

Подключение
Залейте все файлы на сайт и добавьте в начало index.php:
Код
require_once 'flood.php';

Настройка

Cкачать
Прикрепленный файл  flood.zip ( 2,74 килобайт ) Кол-во скачиваний: 63

Если есть баги, вопросы и т.д., пишите в эту тему. Постараюсь всем ответить и всё поправить.
P.S. Скрипт подходит для движков, которые формируются от одной страницы.
P.S.S. Скрипт был написан только что, так что баги возможны.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 7 раз
   Цитировать сообщение
a2sinfo
сообщение 6.2.2016, 18:57
Сообщение #2
Стаж: 10 лет

Сообщений: 39
Благодарностей: 8
Полезность: 167

подмена кук
подмена useragent
bayan.gif bayan.gif
у меня совсем другое)
зы ооп в таком скрипте хы

Отредактировал: a2sinfo, - 6.2.2016, 19:00
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
umprex
сообщение 6.2.2016, 19:00
Сообщение #3


Иконка группы

Стаж: 16 лет
Город: Киев

Сообщений: 2909
Благодарностей: 4781
Полезность: 2197

a2sinfo, скрипт написан менее чем за час и его функционал всегда можно дописать :)
И цена ему - бесплатно.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя onotole
сообщение 6.2.2016, 19:12
Сообщение #4


Иконка группы

Стаж: 13 лет

Сообщений: 1572
Благодарностей: 1119
Полезность: 1550

Меценат Меценат

Чет защиты я особо не увидел.
Лучшая защита от школодоса - nginx + req_limit + fail2ban
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
umprex
сообщение 6.2.2016, 19:19
Сообщение #5


Иконка группы

Стаж: 16 лет
Город: Киев

Сообщений: 2909
Благодарностей: 4781
Полезность: 2197

onotole, не имея представления о том как устроен скрипт, можно отсеять мелкие атаки.
Я не говорю что это защита от любых http атак)


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
magis1337
сообщение 6.2.2016, 19:32
Сообщение #6
Стаж: 11 лет
Город: Odessa

Сообщений: 2782
Благодарностей: 1535
Полезность: 918

host5.ru
Меценат Меценат

umprex, Замути уже от всех :D
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя RobCarlos
сообщение 6.2.2016, 22:16
Сообщение #7
Стаж: 12 лет

Сообщений: 103
Благодарностей: 73
Полезность: 167

Суть защиты сайтов на php - не давать ботам дойти до исполнения того самого php. Иначе сервер упадет либо от нехватки памяти на все процессы, либо от нагрузки на базу данных. Это касается и этого скрипта и того, что продают в соседней теме.
Туже идею, но без никаких последствий по памяти, можно сделать через nginx парой строк.

P.S. Пытаюсь конструктивно критиковать, просьба не обижаться.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
umprex
сообщение 6.2.2016, 22:21
Сообщение #8


Иконка группы

Стаж: 16 лет
Город: Киев

Сообщений: 2909
Благодарностей: 4781
Полезность: 2197

RobCarlos, я знаю и не говорю, что от этого будет слишком большой толк, но для тех ребят, что не знают как пользоваться nginx и т.д., может подойти.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Fire
сообщение 7.2.2016, 0:08
Сообщение #9


Иконка группы

Стаж: 17 лет

Сообщений: 2201
Благодарностей: 2227
Полезность: 963

Вообще, пхп невозможно защититься от атак и флуда, я даже с ф5 смогу обойти такие вот скрипты.
Вобщем, правильная настройка веб-сервера и все)


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Profan
сообщение 7.2.2016, 0:10
Сообщение #10


Стаж: 10 лет
Город: Сочи

Сообщений: 1317
Благодарностей: 403
Полезность: 698

Fire, а есть статья на такую тему, как правильно это делать?
я вот это делал, http://habrahabr.ru/post/83202/

Отредактировал: Profan, - 7.2.2016, 0:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
umprex
сообщение 7.2.2016, 0:13
Сообщение #11


Иконка группы

Стаж: 16 лет
Город: Киев

Сообщений: 2909
Благодарностей: 4781
Полезность: 2197

Profan, давайте дружно попросим Fire написать такую :)


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 7.2.2016, 0:57
Сообщение #12


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

А я вот давно пользуюсь вот таким скриптом:

antiddos.php
Код
<?php  
#(c) Boolean.  
################################################################################
#####  
################################################################################
#####  
################################################################################
#####  
################################################################################
#####  

$config['time']                 = 0.8;  
#Время обращения к скрипту, после которого будет(возможно) выдан бан.  
$config['countaban']            = 5;  
#количество возможных нарушений времени обращения, такая возможность введена для более детально точного отделения пользователей от атакующих ботов.  
$config['directory']            = '_temp';  
#временна директория, должна существовать, и иметь права на запись.  
$config['checkmask']            = 'check';  
#маска для проверки, не стоит трогать.  
$config['banmask']              = 'ban';  
#маска для бана, не стоит трогать.  

#Комманды после нарушения времени и кол-ва обращений. Используйте константу [IP] - IP Бота.  
$config['commands'][]           = 'iptables -A ISPMGR -s [IP] -j DROP';  
$config['commands'][]           = 'iptables -I INPUT -s [IP] -j DROP';  

#Доверенные IP.  
$config['white']['ip']          = @file('whiteips.txt');  
#Доверенные ЮзерАгенты.  
$config['white']['useragent'][] = 'Google bot';  
$config['white']['useragent'][] = 'Yasha bot';  

#Сообщение для пользователя. HTML Работает.  
$config['message']              = file_get_contents("ddosmessage.php");  

################################################################################
#####  
################################################################################
#####  
################################################################################
#####  
################################################################################
#####  

$ip                             = $_SERVER['REMOTE_ADDR'];  
$useragent                      = $_SERVER['HTTP_USER_AGENT'];  
if ( ! is_dir($config['directory']) )  
    exit("Temp directory not found.");  

if ( ! is_writable($config['directory']) )  
    exit("Temp directory is not writable.");  

if ( @in_array($ip,$config['white']['ip']) || @in_array($useragent,$config['white']['useragent']) )  
    $white = true;  

if ( ! $white ){  
      
    if ( file_exists( $config['directory'] . "/" . $config['checkmask'] . $ip ) ){          
          
        $time = filemtime($config['directory'] . "/" . $config['checkmask'] . $ip);  

        $f=fopen( $config['directory'] . "/" . $config['checkmask'] . $ip , 'w' );  
        fclose($f);  
                  
        if ($time >= time() - $config['time']){  
              
            if (file_exists($config['directory'] . "/" . $config['banmask'] . $ip)){  
                  
                $count = file_get_contents($config['directory'] . "/" . $config['banmask'] . $ip);  
                if ($count >= $config['countaban']){              
#                    for($i = 0; $i <= count($config['commands']) - 1; $i++)  
#                        @system(str_replace("[IP]",$ip,$config['commands'][$i]));                      
                }else{  
                    $time = filemtime($config['directory'] . "/" . $config['banmask'] . $ip);  
                    if ($time >= time() - $config['time']){  
                        $count++;  
                        $f=fopen( $config['directory'] . "/" . $config['banmask'] . $ip , 'w' );  
                        fwrite($f,$count);  
                        fclose($f);  
                    }else{  
                        $f=fopen( $config['directory'] . "/" . $config['banmask'] . $ip , 'w' );  
                        fwrite($f,"1");  
                        fclose($f);                          
                    }  
                }        
                      
            }else{  
                $f=fopen( $config['directory'] . "/" . $config['banmask'] . $ip , 'w' );  
                fwrite($f,"0");    
                fclose($f);  
            }  

            exit($config['message']);  
        }  
          
    }else{      
        $f=fopen( $config['directory'] . "/" . $config['checkmask'] . $ip , 'w');      
        fclose($f);      
    }    
        
}    
?>


ddosmessage.php
Код
<meta http-equiv="Refresh" content="5"><meta http-equiv="Content-Type" content="text/html; charset=UTF8" /><center><br><br><br><br><br><br><br><h3>Слишком часто обновляете страницу<br>Повторите попытку через 5 секунд.</h1>


Подключил в дле движок (и в психостату и т д ) в файл index.php
Код
include('antiddos.php');


Минусы: не очищается сама папка _temp
Но у меня батник каждые сутки удаляет.

Так же при большом флуде с разных ипов может налететь очень много файлов , но мне не очень страшно ибо на РАМдиске лежит папка _temp

Отредактировал: ssx, - 7.2.2016, 0:58


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Metal Messiah
сообщение 7.2.2016, 1:07
Сообщение #13


Иконка группы

Стаж: 13 лет

Сообщений: 2457
Благодарностей: 1482
Полезность: 770

HostGame.cf
Цитата
Вообще, пхп невозможно защититься от атак и флуда

Можно. Например, задача которую я не так давно решал - перебором пароля к админке джумлы клали сервер. Точнее, было превышение CPU% и один общеизвестный нубо-хостер блокировал аккаунт.
Проблема была в том, что джумла настолько через задницу сделана что ест много памяти и CPU. Пришлось отрубать "лишние" запросы примерно по алгоритму fail2ban независимо от того правильный ли пароль, т.е. не лазя в БД. Итого накопилось пара десятков IP адресов, с которых наиболее активно шел флуд

Цитата
я даже с ф5 смогу обойти такие вот скрипты

Ну это уже из другой басни. Были одни умные люди, проводившие интернет-голосование за стартапы, в котором мой проект забанили за накрутку (а на самом деле - шли в топе вровень и накручивали с одинаковой скоростью одними и теми же методами, но "своим" можно а мне, почему-то, нельзя).
Закончилось тем что их сайт лег обычным под HTTP флудом на index.php. Через пару дней им надоело и товарищи наняли эксперта, который поставил и настроил им nginx+apache кошерно. На следующие сутки они опять легли под HTTP флудом ибо php скрипт проверки на уникальность логина при регистрации, вызываемый по ajax, спокойно клал сервер если туда пустить потоков так 50. Шел он, естественно, мимо кеша, сразу на бекенд.

Защиты от всего не существует, так же как универсального способа взлома. Под каждую задачу должно быть свое решение.


Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: