Автоматический банн IP
Amro |
|
---|---|
Есть предложение по внедрению в Cotonti Автобана, под Seditio для своих проектов я уже это реализовал и успешно применяю.
У меня таким способом банятся все спам роботы и челы желающие проверить меня на дыры XSpiderom и всякими другими сканерами В чём суть : Итак, у нас есть так называемый "Системный лог", куда сыпятся все ошибки. Нас интересуют только системные ошибки, т.е. в таблице sed_logger значение поля log_group. Есть смысл проводить временной анализ этой таблицы, к примеру брать 30 мин, и проверять начиная с текущего времени за минусом 30 мин, количество ошибок с группой "sec". И если к примеру за 30 мин у вас 5 ошибок уровня "sec", то банить этот IP к примеру на неделю. Все параметры можно сделать чтоб задавались в конфиги того же банлиста: Пример хака который я использую для Seditio на своих проектах, для Cotonti он тоже подойдёт : файл common.php вставляем прямо перед разделом /* ======== Check the banlist ======== */
/* ========== Auto Banlist System ============ */
$now_time = $sys['now']; // текущее время
$old_time = $sys['now'] - 1800; // время за минусом 30 мин
$usip = $usr['ip']; // собственно IP
$count_ban_ip = 0; // количество ошибок
// далее делаем запрос к таблице логов и выдираем логи за последние 30 мин.
$sql = sed_sql_query("SELECT log_date, log_ip, log_group FROM $db_logger WHERE log_date < '$now_time' AND log_date > '$old_time'");
while ($rowban = sed_sql_fetcharray($sql))
{
//если в логе системная ошибка, то накручиваем счётчик
if (($usr['ip'] == $rowban['log_ip']) && ($rowban['log_group'] == "sec") )
{
$count_ban_ip++;
}
}
// если за 30 мин более 5 ошибок, то баним IP на делелю
if ($count_ban_ip > 5)
{
//проверям не забанен ли уже IP
$sql_ban = sed_sql_query("SELECT COUNT(*) FROM $db_banlist WHERE banlist_ip = '$usip'");
$count_ban = sed_sql_result($sql_ban,0,"COUNT(*)");
if ($count_ban == 0)
{
// текущее время + неделька
$ban_expire = $now_time + 604800;
$sql_insert = sed_sql_query("INSERT INTO $db_banlist (banlist_id, banlist_ip, banlist_reason, banlist_expire)
VALUES ('', '$usip', 'Your IP address is banned for 1 week!', '$ban_expire')");
}
} Сам считаю это незоменимой вещью, если нет тогда наклена нам вообще этот лог ))) P.S. админа в этом хаке не учитывал ) |
Dayver |
|
---|---|
Прикольная идея! Вот только захотят ли координаторы дать согласие на внедрение в ядро?!
Pavlo Tkachenko aka Dayver
|
Ratibor |
|
---|---|
Нельзя добавлять это в стандартную поставку, покрайней мере в таком виде.
К примеру у моего прова из локалки в инет все выходят под одним внешним IP. Один накосячит и остальные тоже фиг попадут на сайт. Это же грозит пользователям спутникового инета. Не задавай глупых вопросов, не услышишь вранья.
|
Dayver |
|
---|---|
увеличить лимит ошибок с 5 до 15 к примеру.....а если действительно это злоумышленик сидит на айпишнике сети, как же тогда с ним боротся как не банить всю сетку ?
Pavlo Tkachenko aka Dayver
|
Amro |
|
---|---|
Ratibor т.е. ты будешь смотреть как тебя долбят с какого-нить IP и пить кофею, так ?
Я предложил идею, не код который нужно внедрять! Этот код это пример для теста. Естественно всё должно быть настраиваемо! И никто не говорит про идёю бана на неделю. В настройках банлиста просто будут следующие конфиги : Активировать автобанлист : Да/Нет Временной интервал : 10 мин, 15 мин, 30 мин, 1 час и т.д. Количество ошибок за данное время : 5, 10, 15, 20 Время бана : 10 мин, 30 мин, 1 час, 24 часа и т.д. При этом системный лог и автобан это зависимые вещи, автобан без включенного лога работать не будет |
Dayver |
|
---|---|
да и вообще лимит же можно в админке выставлять.....боитесь сетку банить выставляйте нуОооооочень большое число, вот и все
Pavlo Tkachenko aka Dayver
|
Ratibor |
|
---|---|
# Dayver : а если действительно это злоумышленик сидит на айпишнике сети, как же тогда с ним боротся как не банить всю сетку ?Из за этото сотни людей не смогут попасть на сайт. И поверь это будет намного хуже, народ этого не поймет. Не задавай глупых вопросов, не услышишь вранья.
|
Amro |
|
---|---|
Ratibor:По твоему мнению банлист, который есть сейчас, нужно вообще из двигла убрать, а это не есть гуд, его надо не убирать, а расширять возможности |
Dayver |
|
---|---|
Сайт вам положат на лопатки вот этого народ точно не поймет
Pavlo Tkachenko aka Dayver
|
Ratibor |
|
---|---|
# Amro : Ratibor т.е. ты будешь смотреть как тебя долбят с какого-нить IP и пить кофею, так ?Я не против этой идеи, но это все надо продумать досконально. Я привел пример того какие грабли могут вылезти. И о этих граблях я говорю не по наслышке, т.к. во первых я уже сказал про своего прова, а во вторых все пользователи моего сайта - это пользователи спутникового инета :) Я пробовал раньше банить по IP, но ничего из этого толкового не выходило. # Dayver : Сайт вам положат на лопатки вот этого народ точно не пойметАвтобан в этом не большой помошник. Чтоб не сломали сайт, нужно дыры вовремя закрывать, вернее их не делать :) А протов DDOS атаки тоже помощи мало, вперед пров лягет. Не задавай глупых вопросов, не услышишь вранья.
|
|
Dieser Beitrag wurde von Ratibor (am 4. Februar 2009, 22:06, vor 15 Jahre) bearbeitet |
Dayver |
|
---|---|
# Ratibor : Чтоб не сломали сайт, нужно дыры вовремя закрывать,Ну сообственно ради этого мы тут и собрались не так ли? Pavlo Tkachenko aka Dayver
|
Trustmaster |
|
---|---|
Отличная идея... для плагина. Кому надо - поставит. Кому не надо не будет. И ничего лишнего в ядре.
May the Source be with you!
|
Amro |
|
---|---|
Качаем кому надо, кому нинадо не качаем Autobanlist
Тестим, плагин работает в хуке global Впринципе хук global есть и в Seditio, так что должен работать и там! P.S. Советую временной интервал проверки системного лога ставить меньше чем период бана, а то не разбанитесь никогда ))) |
Trustmaster |
|
---|---|
А в downloads/plugins?
May the Source be with you!
|
Amro |
|
---|---|
Ну в начале оттестить нужно ведь )
|