Я исключительно за свой биллинг, простите, но хочется понимать как считается денежка.... Уже не однократно указывали WHMCS (его используем на другом проекте) на бока в подсчетах.... так что имейте ввиду... :) Кстати ТС, не думал что придется, но стоит вам напомнить о поиске по форуму, такая тема только за этот год мелькала дважды... там уже многие высказались ))) мало вероятно, что какие-то мнения поменялись, да и если даже какие-то поменялись, не думаю, что это существенно. :)
Glueon: Да, не обратил внимания ... Если это убрать или переместить этот кусок - непонятно будет заблокирован ли уже IP или нет. Я так понимаю это сделано именно из этих побуждений :) Меняем log_dir на root-only доступную директорию и все будет нормально. Не пойдет разве?
Если у вас апач от рута, то пойдет :D Везде конечно по разному, меня пока успокаивает suPHP, стало быть можно "вычленить" виртуалхосты от "nobody", но есть же и установки когда все виртуальные хосты это nobody.... тогда предоставив возможность читать\писать в эту директорию апачу (для модуля) автоматически выдаем эту же возможность всем владельцам vhosts....
---------- Добавлено 27.07.2013 в 18:15 ----------
iHead: при наличии nginx этот модуль интересен разве что от брутофорсов и то, как описали в комментариях на сайте разработчика, он вызовет ложные срабатывания на пользователей за нат.
Да я в общем-то не стараюсь взять его за эталон, ровно как вы и сказали от мелкой атаки решил поотбиваться, тупо долбят по 2-3 ИП в сутки разные, решил немного автоматизировать, и вот.... ;)))
Видать придется старый добрый fail2ban с цепи спускать ;)
---------- Добавлено 27.07.2013 в 01:39 ----------
Glueon: Возвращает -1? Странный код. Если срабатывает else, то все как раз в порядке, потому что если происходит ошибка, например, файла нет, тогда if( stat(...) ) будет true и в тот LOG, что у вас в примере, вы не попадете. Видимо, если в if-е идет какая-то обработка файла в случае, если он существует, должно быть:
if (stat(filename, &s) > 0) { ...... }
Посмотрите код сами, там совсем не много, функция access_checker()
---------- Добавлено 27.07.2013 в 01:40 ----------
Glueon: Возвращает -1? Странный код. Если срабатывает else, то все как раз в порядке, потому что если происходит ошибка, например, файла нет, тогда if( stat(...) ) будет true и в тот LOG, что у вас в примере, вы не попадете. Видимо, если в if-е идет какая-то обработка файла в случае, если он существует, должно быть:
if (stat(filename, &s) > 0) { ...... }
Тут в том то и дело, что когда файл есть... :) А проверка там судя по всему boolean , когда false / true возвращается, либо возврат в виде 0 считается true.
поехали сообщения с ошибками.... стало быть в случае когда файл уже создан.... stat() не происходит..... или не может происходить, я не особый программист, может кто подскажет как отдебажить еще плотнее? Что бы понять в чем загвоздка, я предположил что дело в правах на файлы /tmp/dos-*, но при 777 - результат тот же.. stat() вроде как указывает на существующий файл , судя по документации функции, но х3 как это трактовать....
Исходя из выше сказанного, пришла идея проверки одной логики, которая дала свой результат, в ходе изучения стало ясно, что если файл /tmp/dos-x.x.x.x есть в наличии.... то дело до CMD в общем-то не доходит..... стало быть , достаточно подложить файл с IP откуда будет атака в папочку /tmp и дело в шляпе... как понимаем сложности в этом нет ни у одного из пользователей системы....
Теперь внимание, как проверялось и при каких настройках:
Теперь повторяем то же самое, только с небольшим изменением:
Очищаем /tmp/dos-*
Перезапускаем апач....
Заходим в систему под пользователем 'romka' :) (условно) и проделываем следующее:
touch /tmp/dos-127.0.0.1
после чего запускаем test.pl из той же поставки и...... повторяем команду "perl test.pl" хоть 20 раз, в логе сообщение от sudo мы не получаем, стало быть процедура бана не работает, не смотря на то, что апач все таки в ответ скрипта начинает выдавать 403......
Пойду наверное на код взгляну.... :) А то собрал непонятно что в апач себе :D
Нормальная такая пятница :D
---------- Добавлено 26.07.2013 в 19:19 ----------
Пока из того что понял, оно держит хеш забаненных, но по какой-то причине не отрабатывает системную команду ввиду наличия файла, такой зависимости по коду пока определить не смог....
Я исключительно за свой биллинг, простите, но хочется понимать как считается денежка.... Уже не однократно указывали WHMCS (его используем на другом проекте) на бока в подсчетах.... так что имейте ввиду... :) Кстати ТС, не думал что придется, но стоит вам напомнить о поиске по форуму, такая тема только за этот год мелькала дважды... там уже многие высказались ))) мало вероятно, что какие-то мнения поменялись, да и если даже какие-то поменялись, не думаю, что это существенно. :)
Да, не обратил внимания ... Если это убрать или переместить этот кусок - непонятно будет заблокирован ли уже IP или нет. Я так понимаю это сделано именно из этих побуждений :)
Меняем log_dir на root-only доступную директорию и все будет нормально. Не пойдет разве?
Если у вас апач от рута, то пойдет :D Везде конечно по разному, меня пока успокаивает suPHP, стало быть можно "вычленить" виртуалхосты от "nobody", но есть же и установки когда все виртуальные хосты это nobody.... тогда предоставив возможность читать\писать в эту директорию апачу (для модуля) автоматически выдаем эту же возможность всем владельцам vhosts....
---------- Добавлено 27.07.2013 в 18:15 ----------
при наличии nginx этот модуль интересен разве что от брутофорсов и то, как описали в комментариях на сайте разработчика, он вызовет ложные срабатывания на пользователей за нат.
Да я в общем-то не стараюсь взять его за эталон, ровно как вы и сказали от мелкой атаки решил поотбиваться, тупо долбят по 2-3 ИП в сутки разные, решил немного автоматизировать, и вот.... ;)))
Видать придется старый добрый fail2ban с цепи спускать ;)
кто запрещает создавать файлики не в /tmp? :)
Да, но это уже звучит как решение, а проблема на лицо :D
[ Новый сервер ]
Сегодня запущен новый сервер для виртуального хостинга на базе Intel Core i7. Милости просим на пока что пустой сервер.
Glueon и не выполнится system_command .......
А теперь читаем пост номер 2 .... файл создать может КТО угодно в системе , а mod_evasive в этом случае .... зажует морковку :D
Стало быть в таком положении дел любой локальный юзер может по факту "отключить" блокировку по CMD путем создания файлика в /tmp :)
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.
В общем беда в конструкции:
Дописал к ней
поехали сообщения с ошибками.... стало быть в случае когда файл уже создан.... stat() не происходит..... или не может происходить, я не особый программист, может кто подскажет как отдебажить еще плотнее? Что бы понять в чем загвоздка, я предположил что дело в правах на файлы /tmp/dos-*, но при 777 - результат тот же.. stat() вроде как указывает на существующий файл , судя по документации функции, но х3 как это трактовать....
Вряд ли, аванс бывшему клиенту, который он незаконно присвоил себе, он так и не вернул.
Чисто интересно: вы там свечи держали??? :)
Чудо из чудес :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 ----------
Пока из того что понял, оно держит хеш забаненных, но по какой-то причине не отрабатывает системную команду ввиду наличия файла, такой зависимости по коду пока определить не смог....
Предлагаю вариант размещения на Unmanaged Xen VPS в Канаде.
Перенос данных: 20$/разово.
Какие-то панели управления используются или ....?