Как закрыть блог от HTTP-сканеров

Любой кул-хацкер первым делом считает прочесать ваш сайт на предмет нахождения уязвимостей. Такие попытки нужно строго пресекать еще на этапе попадания на сайт, то есть с помощью файла .htaccess. Для этого я в блоге Ars Longa, Vita Brevis подглядел код, который как раз и банит таких кул-хацкеров.

Код такой:


RewriteEngine On

RewriteCond %{QUERY_STRING} [^?]*? [OR]
RewriteCond %{QUERY_STRING} (../|..) [OR]
RewriteCond %{QUERY_STRING} (///) [OR]
RewriteCond %{THE_REQUEST} "^(GET|POST) /?https?:"
RewriteRule (.*) $1 [F]

Вот что пишетт Владимир, его создатель:

Первый RewriteCond рассчитан на ботов, которые используют слишком много знаков вопроса, второй — на тех, кто пытается сделать обход файловой системы, третий — на тех, кто перебарщивает со слэшами и четвёртый — на тех, кто пытается найти уязвимый прокси.
Данное решение не является панацеей, но, тем не менее, довольно действенное.

Он так же рекомендует вообще банить по User-Agent все сканеры, которые используют Perl, любимый язык хакеров.

SetEnvIf User-Agent "^libwww-perl" badua
Order Allow,Deny
Allow from all
Deny from env=badua

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

4 Комментарии

  1. Какие есть правила написания .htacess?
    Правильно ли будет обрабатываться такой код?

    # BEGIN WordPress
    
    #Ваш код
    RewriteEngine On
    
    RewriteCond %{QUERY_STRING} [^?]*\? [OR]
    RewriteCond %{QUERY_STRING} (\.\./|\.\.\) [OR]
    RewriteCond %{QUERY_STRING} (///) [OR]
    RewriteCond %{THE_REQUEST} "^(GET|POST) /?https?:"
    RewriteRule (.*) $1 [F]
    
    #А это старый код
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    
    
    # END WordPress

    Что означают эти строки?
    RewriteCond %{THE_REQUEST} “^(GET|POST) /?https?:” (тут я так понимаю надо менять https на протокол используемый на сайте (http)?)
    RewriteRule (.*) $1 [F]

    Спасибо

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*