Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 7 Ответов
  • 2480 Просмотров
*

mister_boy

  • Захожу иногда
  • 178
  • 2 / 0
Скрипт автобана по IP
« : 18.03.2015, 13:17:55 »
Привет!

Поставил задачу банить по IP всех кто пробует искать папки Wordpressа, плагинов итд.
Логи пухнут уже ;)

Нашел скрипт:
ban.php
Код
<?
// PHP-скрипт автоматического бана по IP в .htaccess при посещении запрещенного URL
// от Дмитрия 'DiM' (www.dimlife.com)
// Инструкция по использованию скрипта http://dimlife.com/php:htaccess-ban
 
$tomail = 'admin@dimlife.com'; // email владельца сайта
$frommail = 'robot@dimlife.com'; // условный email отправителя
$date = date('d.m.Y H:i:s');
$ip = $_SERVER['REMOTE_ADDR'];
$url = $_SERVER['REQUEST_URI'];
$useragent = $_SERVER['HTTP_USER_AGENT'];
$refer = $_SERVER['HTTP_REFERER'];
$ban = "# ".$date." ".$url." \r\nDeny from ".$ip." \r\n"; // эта строка запишется в .htaccess
$htaccess = $_SERVER['DOCUMENT_ROOT'].'/.htaccess'; // путь до .htaccess
$str = file_get_contents($htaccess);
$fn = 'Deny from '.$ip;
$pos = strpos($str,$fn);
 
// если IP-адрес не забанен в .htaccess
if ($pos === false)
{
  $o = @fopen($htaccess, "a+"); // открывает .htaccess
  $write = @fputs($o, $ban); // пишет строку о бане
  // уведомление на email админа сайта
  mail (
         $tomail,
         'Новый бан! ('.$url.')',
         'дата: '.$date.' | IP: '.$ip."\r\n".'юзерагент: '.$useragent."\r\n".'Запрос: '.$url.' | реферал: '.$refer,
         'From:'.$frommail
       );
  fclose($o);
  // показывает нарушителю страницу с уведомлением о бане
  echo '
        <html><head></head><body style="background:#363636;font-family:Century Gothic;color:#CFCFCF">
        <div style="position:fixed;top:25%;left:25%;width:400px;height:400px;top:expression((document.documentElement.scrollTop + screen.height/2 - 200) + \'px\');margin-left:-200px;"><span style="font-size:300px">БАН!</span></div>
        </body></html>
      ';
 
}
 
// если IP-адрес уже забанен в .htaccess
else
{
  // только уведомление на email админа сайта
  mail (
         $tomail,
         'Уже забанен ('.$ip.')',
         'дата: '.$date.' | IP: '.$ip."\r\n".'юзерагент: '.$useragent."\r\n".'Запрос: '.$url.' | реферал: '.$refer,
         'From:'.$frommail
       );
}
?>

Прописал в htaccess редирект на бан
Код
RewriteRule wp-login.php /ban.php [NC] // админка wordpress

htaccess редиректит, скрипт отрабатывает, но в htaccess не добавляет с первого раза. Если еще раз запустить ban.php, то IP добавляется и запрет на сайт работает.

Вопросы:
1) Подскажите почему не сразу после редиректа не заносится IP-ник в htaccess?
2) Что нужно добавить в код, чтобы IP-ник добавлялся не в конец файла, а после строки order allow,deny ?
*

voland

  • Легенда
  • 11030
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Скрипт автобана по IP
« Ответ #1 : 18.03.2015, 13:20:18 »
Недальновидное решение.
Во первых - так полинтернета забаниться, во вторых, после разрастания файла htaccess начнутся из-за этого тормоза.
*

mister_boy

  • Захожу иногда
  • 178
  • 2 / 0
Re: Скрипт автобана по IP
« Ответ #2 : 18.03.2015, 13:31:31 »
Недальновидное решение.
Во первых - так полинтернета забаниться, во вторых, после разрастания файла htaccess начнутся из-за этого тормоза.

На счет разрастания и тормозов я знаю. На счет полинтернета не совсем согласен - у меня ходят с прокси на одни и теже урлы. хочется какое то время не давать возможность бруттить с одного IP, тем самым усложнив задачу. пусть лучше ответ получают 403, чем 404

Какие более дальновидные решения?
*

voland

  • Легенда
  • 11030
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Скрипт автобана по IP
« Ответ #3 : 18.03.2015, 13:33:58 »
Если ВДСка - то поискать решения для нгинкс, типа таких.
*

mister_boy

  • Захожу иногда
  • 178
  • 2 / 0
Re: Скрипт автобана по IP
« Ответ #4 : 18.03.2015, 23:50:58 »
Если ВДСка - то поискать решения для нгинкс, типа таких.

не ВДСка. обычный хостинг. но суть понял. можно конечно создать таблицу куда добавлять IP и скрипт который в шаблон
*

mister_boy

  • Захожу иногда
  • 178
  • 2 / 0
Re: Скрипт автобана по IP
« Ответ #5 : 19.03.2015, 00:51:05 »
все таки не понятно мне почему с первого раза не отрабатывает скрипт.
ладно бы вообще не работал, но тут отрабатывает, но не добавляет IP с первого раза.

помогите кто сталкивался с таким. буду признателен.
*

flyingspook

  • Moderator
  • 3590
  • 247 / 9
Re: Скрипт автобана по IP
« Ответ #6 : 19.03.2015, 09:13:03 »
Код
  $o = @fopen($htaccess, "a+"); // открывает .htaccess
  $write = @fputs($o, $ban); // пишет строку о бане
замените на
Код
  $o = fopen($htaccess, "a+"); // открывает .htaccess
fputs($o, $ban); // пишет строку о бане

как возможный вариант еще отправка почты может мешать закрытию файла
*

mister_boy

  • Захожу иногда
  • 178
  • 2 / 0
Re: Скрипт автобана по IP
« Ответ #7 : 19.03.2015, 21:54:00 »
Решение нашлось. Оказалось что страница кешировалась.

Добавить в начало кода
Код
  header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  header("Last-Modified: " . gmdate("D, d M Y H:i:s")." GMT");
  header("Cache-Control: no-cache, must-revalidate");
  header("Cache-Control: post-check=0,pre-check=0", false);
  header("Cache-Control: max-age=0", false);
  header("Pragma: no-cache");

Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Скрипт для поиска вирусов и вредоносных скриптов на сайте "AI-Bolit"

Автор revisium

Ответов: 110
Просмотров: 63240
Последний ответ 30.08.2023, 12:53:33
от SeBun
Взломана Joomla, непонятный скрипт

Автор ap11

Ответов: 7
Просмотров: 1705
Последний ответ 22.06.2015, 07:26:40
от winstrool
Левый скрипт

Автор lsk

Ответов: 3
Просмотров: 1110
Последний ответ 16.03.2015, 00:19:30
от Fedor Vlasenko
Скрипт в шаблоне вставляет ссылку в момент прихода робота поисковика

Автор ap11

Ответов: 5
Просмотров: 2114
Последний ответ 20.05.2014, 09:04:49
от flyingspook
Scripto Guard - скрипт проверки и лечения вирусов на сайте

Автор deepslam

Ответов: 17
Просмотров: 4522
Последний ответ 28.08.2013, 15:36:00
от deepslam