最近搬移 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 了。