前面兩篇博文講解了apache的部署和配置等方面知識,本篇將為大家詳細講解生產環境中對apache服務各個方面的最佳化調試。
生產環境中,大家肯定不會部署了apache之後就完事拿去上線了。光杆子上戰場等著完蛋的嘛!因此,不論從安全還是效能角度,我們必須在apache服務上線之前,對其做諸多的最佳化調試才行。因此,本篇筆者通過總結自己的學習和工作經驗,歸納總結出的apache調優的20個小點。
本文篇幅有點長,本來想分開寫了,後來想想還是放在一篇博文吧。因此,大家就擔待擔待吧。
環境:
CentOS6.4 x86_64位 採用迷你安裝,系統經過了基本最佳化篇
apache版本:httpd-2.4.6
apr版本:apr-1.4.8
apr-util版本:apr-util-1.5.2
pcre版本:pcre-7.8
源碼包存放位置:/server/tools
源碼包編譯安裝位置:/etc/local/軟體名稱
一、源碼官方下,補丁及時打
正如我們在apache部署篇講到的我們需要對下載的源碼包進行驗證一樣,我們在挑選apache源碼安裝包的時候,一定要去官網,不要去亂七八糟的網站進行下載,防止源碼包被別有用心的人動過手腳,導致後面對公司業務造成不必要損失。
另外為了apache的安全性和效能考慮,我們一定要多多關注apache的官網的補丁發布情況,一旦有新的補丁,我們一定要及早打上。特別是一些安全補丁,防止受到損失。
二、屏蔽apache版本等敏感資訊
1)我們在apache主設定檔httpd.conf中,找到包含httpd-default.conf的行,並解開注釋
[root@c64-web /]# grep "httpd-default.conf" /usr/local/apache/conf/httpd.conf
#Include conf/extra/httpd-default.conf
[root@c64-web /]# sed -i 's#\#Include conf/extra/httpd-default.conf#Include conf/extra/httpd-default.conf#g' /usr/local/apache/conf/httpd.conf
注意:編譯安裝的情況下,只有此行解開注釋了,後面的修改才會生效。
2)開啟httpd-default.conf檔案,修改如下兩個地方
[root@sunsky /]# grep Server conf/extra/httpd-default.conf|grep -v "#"
ServerTokens full
ServerSignature Off
修改為
ServerTokens Prod
ServerSignature Off
經過上面的修改,當你在curl-Iwww.sunsky.pw的時候,還是會出現下面的資訊
Server: Apache
徹底讓版本等敏感資訊消失
如果你需要徹底將版本之類的資訊進行改頭換面,你就需要在編譯之前做準備或者進行從新編譯了。在重新編譯時間,修改源碼包下include目錄下的ap_release.h檔案
#define AP_SERVER_BASEVENDOR "Apache Software Foundation" #服務的供應商名稱
#define AP_SERVER_BASEPROJECT "Apache HTTP Server" #服務的項目名稱
#define AP_SERVER_BASEPRODUCT "Apache" #服務的產品名
#define AP_SERVER_MAJORVERSION_NUMBER 2 #主要版本號碼
#define AP_SERVER_MINORVERSION_NUMBER 4 #小版本號碼
#define AP_SERVER_PATCHLEVEL_NUMBER 6 #補丁層級
#define AP_SERVER_DEVBUILD_BOOLEAN 0 #
上述列出的行,我已經給出了注釋,大家可以修改成自己想要的,然後編譯安裝之後,再對httpd-default.conf檔案進行修改,對方就徹底不知道你的版本號碼了。
三、更改apache的預設使用者
我們通過更改apache的預設使用者,可以提升apache的安全性。這樣,即使apache服務被攻破,駭客拿到apache普通使用者也不會對系統和其他應用造成破壞。這裡建立的apache使用者,將用於對子進程和線程的控制。
[root@c64-web /]# useradd -M -s /sbin/nologin apache 建立apache使用者
編輯apache設定檔,修改預設的使用者。
[root@c64-web /]# vim /usr/local/apache/conf/httpd.conf
User apache #更改預設的daemon使用者為apache使用者
Group apache #更改預設的daemon使用者為apache使用者