Apache2.4 用 .htaccess 阻擋 User-Agent 及隱藏版本訊息

2017-03-14 Apache

最近搬移 blog 又從 nginx 換回 apache 了,apache 2.4 真的是大有改進,但有些東西要重新 review 一次,就當做學習 XDD

 

這一篇記錄的主要是一些基本的防止資安訊息流出,還有一些不必要的 bot 瀏覽。

 

Apache 2.4 阻擋 User-Agent

用 apache 有很大的原因是因為 .htaccess,因為這有助於 DevOps,可以讓開發者用 code commit 去管理網站要進行的動作,而非改動 WEB Server 然後 reload 設定

 

mod_rewrite

首先開啟 mod_rewrite

$ a2enmod rewrite
$ sudo service apache2 reload

 

然後在 .htaccess 你可以這樣寫

$ cat .htaccess
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_USER_AGENT} ^WordPress [NC]
  RewriteRule .* - [F,L]
</IfModule>

或是指定多個 User-Agent

$ cat .htaccess
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_USER_AGENT} ^(WordPress|ApacheBench) [NC]
  RewriteRule .* - [F,L]
</IfModule>

 

mod_setenvif

如果你因為環境的因素而無法使用 mod_rewrite 也可以改用 SetEnvIfNoCase

$ cat .htaccess
<IfModule mod_setenvif.c>
  SetEnvIfNoCase User-Agent (sqlmap|wordpress|apachebench) bad_user_agents

  Order Allow,Deny
  Allow from all
  Deny from env=bad_user_agents
</IfModule>

 

 

Apache 2.4 關閉 header 版本顯示

跟 2.2 的差不多,但是設定檔在 security.conf

確認 security conf 有開起來

$ a2query -c security
security (enabled by maintainer script)

If not, exec of ‘a2enconf security’

 

$ sudo vi /etc/apache2/conf-available/security.conf

ServerTokens Prod
ServerSignature Off

 

讓設定檔生效

$ sudo service apache2 restart

# Test
$ curl -I http://site.com
HTTP/1.1 200 OK
Date: Tue, 14 Mar 2017 04:20:47 GMT
Server: Apache
Content-Type: text/html; charset=UTF-8

 

然後 PHP 7 的部份在預設 expose_php 就是 off 了。

 

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱