{% else-1 %}
О скрипте

Думаю, любого вабмастера донимают искатели админок и системных папок вида:
http://сайт/admin.php
http://сайт/phpmyadmin/
http://сайт/administrator/
http://сайт/login.php
Как бороться с такими искателями? Думаю, баном. Скрипт работает следующим образом: идет запрос на http://сайт/admin.php ==> идет перенаправление на PHP-скрипт бана ==> скрипт добавляет в файл .htaccess запись \"Deny from 1.2.3.4\", где 1.2.3.4 - ip-адрес искателя ==> уведомляет по email админа сайта о бане. Всё просто =)
У меня по этим адресам ничего нет, но я всё равно использую этот скрипт, ибо нефиг лезть куда не надо =)

                        
Установка

Сам PHP-скрипт бана. Назовем его ban.php
<?
// PHP-скрипт автоматического бана по IP в .htaccess при посещении запрещенного URL
// от Дмитрия 'DiM' (www.dimlife.com)
// Инструкция по использованию скрипта http://dimlife.com/php:htaccess-ban

$tomail = '[email protected]'; // email владельца сайта
$frommail = '[email protected]'; // условный 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
);
}
?>
Этот же скрипт можно взять на dimlife.com/t5bdf.txt, gist.github.com/dimlife/5799050, pastebin.com/itc4a5Cw
Сохраняем ban.php в любом удобном месте.
Теперь определимся, за посещение каких ссылок будем банить. В файле .htaccess добавим
RewriteRule admin.php /путь/до/ban.php [NC]
RewriteRule login /путь/до/ban.php [NC]
RewriteRule administrator /путь/до/ban.php [NC] // админка joomla
RewriteRule wp-login.php /путь/до/ban.php [NC] // админка wordpress
Добавить можете кучу ссылок.

Дополнения

Чтобы добавить в исключения свой IP-адрес, делаем так
RewriteCond %{REMOTE_ADDR} !1.2.3.4
RewriteRule admin.php /путь/до/ban.php [NC]
где "1.2.3.4" - ваш IP-адрес. Если у вас динамический IP, можно обрезать, например, до "1.2.".
Если IP-адресов больше одного, то это будет выглядеть так
RewriteCond %{REMOTE_ADDR} !1.2.3.4 [OR]
RewriteCond %{REMOTE_ADDR} !3.2.3. [OR]
RewriteCond %{REMOTE_ADDR} !2.1.
RewriteRule admin.php /путь/до/ban.php [NC]


Всё просто. От профессионалов жду критики, а от новичков вопросов =)
0 27 0
0

Нет фото
• 12 янв 2014, 07:00


Напишите кто нибудь как в исключение себя добавить !
Я делаю так
RewriteCond %{REMOTE_ADDR} !82.145.222.25
RewriteRule adm_panel/category.php /http://liktop.ru/ban.php
но почему то не работает !??!

0

Нет фото
• 12 янв 2014, 05:41


Вообще норм, работает на ура !

0

Нет фото
Wapham * 0.3
• 27 дек 2013, 17:28


О,как здорово! Автор,а можешь мне его в штекер вписать?

0

Нет фото
• 27 дек 2013, 10:54


а не, не буду ставить, у меня ip динамический *

0

Нет фото
• 27 дек 2013, 10:47


сечяс праверим *