WEB Firewall на .htaccess. Они не пройдут

Окт 27 2017 Published by under Безопасность, Сайтостроение

Firewall (огненная стена — англ) — для веба — это межсетевой фильтр/щлюз между внешним интернетом и внутренней сетью. Эти фильтры защищают локальную сеть и сервера от внешних атак.

Практически каждый хостер имеет грамотно настроенный firewall и практически все хакерские вторжения блокируются.

Немудрено, что злоумышленники перенесли вектор атак на веб приложения. И если в защите хостинга у хостеров свой шкурный интерес (репутация как-никак), то в защите сайтов вебмастера каждый сам за себя. Более того если в открытом доступе есть критическая уязвимость CMS или плагина — хостеры требуют обновления движка или плагинов, поскольку это может угрожать всему серверу. За неустранение — бан. Нет критических уязвимостей — они дружно молчат.

Короче, безопасность сайта в целом и защита от хакерских атак — дело добровольное для каждого вебмастера.

Спасение утопающих — дело рук самих утопающих

Для защиты сайтов был разработан Web Application Firewall (WAF) — защитный экран для приложений, выявляющий и блокирующий атаки на веб-приложения.

Главная задача WAF — защита сайта от несанкционированного доступа, даже при наличии критичных уязвимостей в приложении:

  • SQL Injection — sql инъекции;
  • PHP Injection — php инъекции;
  • Remote Code Execution (RCE) — удаленное выполнение кода;
  • Cross Site Scripting (XSS) — межсайтовый скриптинг;
  • Cross Site Request Forgery (CSRF) — межстайтовая подделка запросов;
  • Remote File Inclusion (RFI) — удалённый инклуд;
  • Local File Inclusion (LFI) — локальный инклуд;
  • Auth Bypass — обход авторизации;
  • Bruteforce — подбор паролей.

На данный момент существует немало готовых WAF, которые могут как встраиваться в сайт, так и работать на стороннем сервере. В большинстве случаев такое решение будет снижать скорость загрузки сайта, что не есть хорошо.

Хотели как лучше, а получилось как всегда
В. С. Черномырдин

Однако вы можете сделать WAF для вашего сайта за 5 минут  в файле .htaccess. Что может наш fairwall? Функция всего одна — блокировка зловредных GET и POST запросов, вернее определенных наборов символов, которые могут привести к SQL/PHP инъекции, XSS атаке, инклудам. Это такие символы как \.\ или ./ 

Код WAF для сайта выглядит так:

# LiveMonet BLACKLIST/FIREWALL
# @ https://livemonet.ru/web-firewall-na-htaccess-oni-ne-projdut.html

# LiveMonet:[QUERY STRINGS]
 
 RewriteEngine On
 RewriteBase /
 RewriteCond %{QUERY_STRING} (environ|localhost|mosconfig|scanner) [NC,OR]
 RewriteCond %{QUERY_STRING} (menu|mod|path|tag)\=\.?/? [NC,OR]
 RewriteCond %{QUERY_STRING} boot\.ini  [NC,OR]
 RewriteCond %{QUERY_STRING} echo.*kae  [NC,OR]
 RewriteCond %{QUERY_STRING} etc/passwd [NC,OR]
 RewriteCond %{QUERY_STRING} \=\\%27$   [NC,OR]
 RewriteCond %{QUERY_STRING} \=\\\'$    [NC,OR]
 RewriteCond %{QUERY_STRING} \.\./      [NC,OR]
 RewriteCond %{QUERY_STRING} \?         [NC,OR]
 RewriteCond %{QUERY_STRING} \:         [NC,OR]
 RewriteCond %{QUERY_STRING} \[         [NC,OR]
 RewriteCond %{QUERY_STRING} \]         [NC]
 RewriteRule .* - [F]


# LiveMonet:[USER AGENTS]

 SetEnvIfNoCase User-Agent ^$ keep_out
 SetEnvIfNoCase User-Agent (casper|cmsworldmap|diavol|dotbot)   keep_out
 SetEnvIfNoCase User-Agent (flicky|ia_archiver|jakarta|kmccrew) keep_out
 SetEnvIfNoCase User-Agent (libwww|planetwork|pycurl|skygrid)   keep_out
 SetEnvIfNoCase User-Agent (purebot|comodo|feedfinder|turnit)   keep_out
 SetEnvIfNoCase User-Agent (zmeu|nutch|vikspider|binlar|sucker) keep_out
 
  Order Allow,Deny
  Allow from all
  Deny from env=keep_out
 
 

# LiveMonet:[REQUEST STRINGS]
 
 RedirectMatch 403 (https?|ftp|php)\://
 RedirectMatch 403 /(cgi|https?|ima|ucp)/
 RedirectMatch 403 /(Permanent|Better)$
 RedirectMatch 403 (\=\\\'|\=\\%27|/\\\'/?|\)\.css\()$
 RedirectMatch 403 (\,|//|\)\+|/\,/|\{0\}|\(/\(|\.\.\.|\+\+\+|\||\\\"\\\")
 RedirectMatch 403 \.(cgi|asp|aspx|cfg|dll|exe|jsp|mdb|sql|ini|rar)$
 RedirectMatch 403 /(contac|fpw|install|pingserver|register)\.php$
 RedirectMatch 403 (base64|crossdomain|localhost|wwwroot|e107\_)
 RedirectMatch 403 (eval\(|\_vti\_|\(null\)|echo.*kae|config\.xml)
 RedirectMatch 403 \.well\-known/host\-meta
 RedirectMatch 403 /function\.array\-rand
 RedirectMatch 403 \)\;\$\(this\)\.html\(
 RedirectMatch 403 proc/self/environ
 RedirectMatch 403 msnbot\.htm\)\.\_
 RedirectMatch 403 /ref\.outcontrol
 RedirectMatch 403 com\_cropimage
 RedirectMatch 403 indonesia\.htm
 RedirectMatch 403 \{\$itemURL\}
 RedirectMatch 403 function\(\)
 RedirectMatch 403 labels\.rdf
 RedirectMatch 403 /playing.php
 RedirectMatch 403 muieblackcat

Скопируйте код и вставьте в файл .htaccess. Я постарался учесть все нежелательные символы, которые можно использовать для хакерских атак. Если что и не учел — поделитесь в комментах. Я дополню farewall и буду вам очень признателен.

Да прибудет с вами сила и пусть ваш сайт станет неприступной крепостью.

 

 

No responses yet

Добавить комментарий

30 - столько SQL запросов к базе.
0,146797 - за столько сгенерировалась страница.