- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
День добрый,
В процессе очередного исследования вчера, обнаружил весьма интересную особенность.
Попытался использовать mod_evasive в комплекте с cPanel, все собралось, все подключилось все настроилось, но появился интересный симптом, изначально моим желанием было забанить нарушителя на 2-3 часа... такие параметры и натравил на evasive, но решил банить не путем самого evasive, а вывел ему CMD в отдельный файлик который сочиняет правило в iptables.
Что же получается:
1. Приходит на сайт тот, кто сильно много смотрит и надо бы его забанить :D
2. Его банит, при этом создавая правило в iptables + /tmp/dos-$ip файлик.
3. Приходит CSF и рестартит файрвол (еще не проходит то время когла нарушителя надо разбанить) и естественно сносит правило которое блокирует.
Все бы ничего, но в этом положении дел mod_evasive перестает банить до тех пор пока в наличии есть файлик /tmp/dos-$ip.... т.е по факту зловред продолжает добить апач, а реакции от Evasive на CMD уже не передается...... только сношу /tmp/dos-$ip моментально срабатывает CMD и заносится все в файрвол :)
Такие вот дела смутные ;)
---------- Добавлено 26.07.2013 в 12:07 ----------
Так же , при том что:
DOSBlockingPeriod 30
Почему-то наблюдается следующее:
# date
Fri Jul 26 05:05:50 EDT 2013
# ls -all /tmp/|grep -i dos
-rw-r--r-- 1 nobody nobody 6 Jul 25 23:51 dos-107.20.173.101
-rw-r--r-- 1 nobody nobody 6 Jul 25 20:59 dos-107.22.86.46
-rw-r--r-- 1 nobody nobody 5 Jul 26 00:00 dos-113.0.83.196
-rw-r--r-- 1 nobody nobody 6 Jul 25 23:39 dos-192.111.153.142
-rw-r--r-- 1 nobody nobody 6 Jul 25 23:39 dos-192.198.86.230
-rw-r--r-- 1 nobody nobody 6 Jul 25 23:30 dos-50.19.127.123
-rw-r--r-- 1 nobody nobody 6 Jul 26 01:40 dos-54.227.54.190
-rw-r--r-- 1 nobody nobody 6 Jul 25 21:43 dos-66.249.73.157
С момента создания файлов до текущего времени прошло явно > 30 минут, почему Evasive до сих пор держит эти файлы, или он просто забыл про них ? это теперь те , кто залочены перманентно ? :) :) :)
Чудо из чудес :D
Исходя из выше сказанного, пришла идея проверки одной логики, которая дала свой результат, в ходе изучения стало ясно, что если файл /tmp/dos-x.x.x.x есть в наличии.... то дело до CMD в общем-то не доходит..... стало быть , достаточно подложить файл с IP откуда будет атака в папочку /tmp и дело в шляпе... как понимаем сложности в этом нет ни у одного из пользователей системы....
Теперь внимание, как проверялось и при каких настройках:
evasive.conf (включенный в апач)
В sudo разрешено....
/usr/bin/evasive_ban:
#!/bin/bash
if [ "x$1" = "x" ] ; then
echo "USAGE: $0 IPADDR"
exit
fi
/sbin/iptables -A DENYIN -s $1 -j DROP
Очищаем /tmp/dos-*
Перезапускаем апач....
Запускаем test.pl из поставки модуля, для генерации сотни запросов в сторону 127.0.0.1
В логах получаем:
Jul 26 11:14:55 xeon sudo: nobody : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/evasive_ban 127.0.0.1
Т.е все сработало /tmp/dos-127.0.0.1 появился.
Теперь повторяем то же самое, только с небольшим изменением:
Очищаем /tmp/dos-*
Перезапускаем апач....
Заходим в систему под пользователем 'romka' :) (условно) и проделываем следующее:
после чего запускаем test.pl из той же поставки и...... повторяем команду "perl test.pl" хоть 20 раз, в логе сообщение от sudo мы не получаем, стало быть процедура бана не работает, не смотря на то, что апач все таки в ответ скрипта начинает выдавать 403......
Пойду наверное на код взгляну.... :) А то собрал непонятно что в апач себе :D
Нормальная такая пятница :D
---------- Добавлено 26.07.2013 в 19:19 ----------
Пока из того что понял, оно держит хеш забаненных, но по какой-то причине не отрабатывает системную команду ввиду наличия файла, такой зависимости по коду пока определить не смог....
В общем беда в конструкции:
Дописал к ней
поехали сообщения с ошибками.... стало быть в случае когда файл уже создан.... stat() не происходит..... или не может происходить, я не особый программист, может кто подскажет как отдебажить еще плотнее? Что бы понять в чем загвоздка, я предположил что дело в правах на файлы /tmp/dos-*, но при 777 - результат тот же.. stat() вроде как указывает на существующий файл , судя по документации функции, но х3 как это трактовать....
man 2 stat
:)
В общем беда в конструкции:
Дописал к ней
поехали сообщения с ошибками.... стало быть в случае когда файл уже создан.... stat() не происходит..... или не может происходить, я не особый программист, может кто подскажет как отдебажить еще плотнее? Что бы понять в чем загвоздка, я предположил что дело в правах на файлы /tmp/dos-*, но при 777 - результат тот же.. stat() вроде как указывает на существующий файл , судя по документации функции, но х3 как это трактовать....
Возвращает -1?
Странный код. Если срабатывает else, то все как раз в порядке, потому что если происходит ошибка, например, файла нет, тогда if( stat(...) ) будет true и в тот LOG, что у вас в примере, вы не попадете.
Видимо, если в if-е идет какая-то обработка файла в случае, если он существует, должно быть:
man 2 stat
:)
Да читал, что толку то...
---------- Добавлено 27.07.2013 в 01:39 ----------
Возвращает -1?
Странный код. Если срабатывает else, то все как раз в порядке, потому что если происходит ошибка, например, файла нет, тогда if( stat(...) ) будет true и в тот LOG, что у вас в примере, вы не попадете.
Видимо, если в if-е идет какая-то обработка файла в случае, если он существует, должно быть:
Посмотрите код сами, там совсем не много, функция access_checker()
---------- Добавлено 27.07.2013 в 01:40 ----------
Возвращает -1?
Странный код. Если срабатывает else, то все как раз в порядке, потому что если происходит ошибка, например, файла нет, тогда if( stat(...) ) будет true и в тот LOG, что у вас в примере, вы не попадете.
Видимо, если в if-е идет какая-то обработка файла в случае, если он существует, должно быть:
Тут в том то и дело, что когда файл есть... :) А проверка там судя по всему boolean , когда false / true возвращается, либо возврат в виде 0 считается true.
Почитал код. Получается если filename НЕТ он создается.
Если файла нет - возвращается -1, который интепретируется как true и мы попадаем в ветку с логированием, отправкой почты. Если файл есть - ничего не происходит.
Какого эффекта хотим достигнуть? :)
Если вы руками создали файл - результат проверки все равно будет HTTP_FORBIDDEN, но в лог это не выведется ("Blacklisting address...") и почтовое сообщение не пошлется.
Glueon и не выполнится system_command .......
А теперь читаем пост номер 2 .... файл создать может КТО угодно в системе , а mod_evasive в этом случае .... зажует морковку :D
Стало быть в таком положении дел любой локальный юзер может по факту "отключить" блокировку по CMD путем создания файлика в /tmp :)
Glueon и не выполнится system_command .......
А теперь читаем пост номер 2 .... файл создать может КТО угодно в системе , а mod_evasive в этом случае .... зажует морковку :D
Стало быть в таком положении дел любой локальный юзер может по факту "отключить" блокировку по CMD путем создания файлика в /tmp :)
кто запрещает создавать файлики не в /tmp? :)
кто запрещает создавать файлики не в /tmp? :)
Да, но это уже звучит как решение, а проблема на лицо :D
Glueon и не выполнится system_command .......
А теперь читаем пост номер 2 .... файл создать может КТО угодно в системе , а mod_evasive в этом случае .... зажует морковку :D
Стало быть в таком положении дел любой локальный юзер может по факту "отключить" блокировку по CMD путем создания файлика в /tmp :)
Да, не обратил внимания ... Если это убрать или переместить этот кусок - непонятно будет заблокирован ли уже IP или нет. Я так понимаю это сделано именно из этих побуждений :)
Меняем log_dir на root-only доступную директорию и все будет нормально. Не пойдет разве?