Привет!
Поставил задачу банить по 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 ?