Apache加固參考及操作規範

注:最近部門領導要求梳理一份常用工具的安全加固參考手冊,基於此需求,針對工作中經常遇到的被漏掃發現的問題,進行了梳理,參考了官網內容,不足之處,還望指正,版本環境爲Apache2.4.34 若有參數不能正常使用,請參考Apache官網。

Apache操作規範

部署規範

統一的編譯參數:

參考配置:
	 1)、提前安裝依賴環境apr、apr-util、pcre、zlib
	 2)、編譯參數
	./configure --prefix=/asop/apache2.4.34  --enable-so --enable-mods-shared=all --with-apr=/usr/local/apr1.5/ 
	--with-apr-util=/usr/local/apr-util1.5.3/  --with-pcre=/usr/local/pcre8.43/   --with-z=/usr/local/zlib1.2.11/ --with-mpm=prefork

配置規範

1)、站點統一配置

參考配置:
	取消虛擬主機註釋
	#Include conf/extra/httpd-vhosts.conf
	註釋掉默認虛擬主機
	<VirtualHost *:80>
		ServerAdmin ****@mail.com
		DocumentRoot "/asop/apache2.4.34/docs"
		ServerName www.***.com
		ErrorLog ErrorLog "| /asop/apache2.4.34/bin/rotatelogs /asop/apache2.4.34/log/www.***.com-%Y-%m-%d-error-log 86400 480"
		CustomLog "| /asop/apache2.4.34/bin/rotatelogs /asop/apache2.4.34/logs/www.***.com-%Y-%m-%d-access_log 86400 480" combined
	</VirtualHost>

2)、配置統一的日誌格式

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined

3)、日誌切割

CustomLog "| /usr/local/apache/bin/rotatelogs /usr/local/apache/logs/www.***.com-%Y-%m-%d-access_log 86400 480"
ErrorLog "| /usr/local/apache/bin/rotatelogs /usr/local/apache/www.***.com-%Y-%m-%d-error-log 86400 480"

Apache安全加固

服務信息泄露加固

隱藏版本信息

  #參考配置完成後,http的請求頭中將不在顯示Apache版本信息,但是會依然顯示web服務器名稱
    參考配置:
	  ServerSignature Off 
	  ServerTokens Prod

隱藏請求頭中的server信息

  #隱藏web服務器的名稱或者設置混淆server信息,需要在編譯安裝之前調整源碼,或者安裝完成後使用源碼修改重新編譯  
	參考配置:
	  vi httpd-2.4.34/include/ap_release.h
	    #define AP_SERVER_BASEVENDOR "Assoft"
		#define AP_SERVER_BASEPROJECT "Assoft"
		#define AP_SERVER_BASEPRODUCT "GW"

防Dos攻擊加固

1)、超時類限制

 RequestReadTimeout  
 	 #主要用來設置TLS握手的超時時間和從客戶端接收請求頭和body的超時,若未配置https證書,可以不用配置
	 #需要版本大於2.3.14和2.2.15以上版本,handshake需要版本高於2.4.39
	 #需要依賴mod_reqtimeout
     配置參考:
	   LoadModule reqtimeout_module modules/mod_reqtimeout.so 確認是否打開註釋
	   RequestReadTimeout handshake=3 header=5 body=10
 TimeOut 
 	 #設置超時等待I/O的時間, 默認爲60秒,建議調低
	 #開啓長連接
	 配置參考:
		TimeOut 10
 KeepAlive 長連接相關設置
     #開啓長連接(KeepAlive on),允許通過一個Tcp連接發送多個請求
	 #應配置長連接超時時間(KeepAliveTimeout),降低服務器負載
	 #設置每個長連接能處理的最大請求數(MaxKeepAliveRequests),默認爲100,設置爲0則不限制
	 配置參考:
		 KeepAlive on 	 
		 KeepAliveTimeout 5 (默認值)
		 MaxKeepAliveRequests 1000

2)、資源限制

 Serverlimit 
     #可配置使用的最大進程數
 MaxConnectionsPerChild 
	 #設置單個子進程能處理的最大連接數,到達最大處理量後,該子進程結束,默認爲0,不限制,建議設置爲非0的值,以避免內存泄露	 
	 配置參考:
		MaxConnectionsPerChild 5000
 MaxRequestWorkers	
     #設置服務器子進程(線程)的最大併發請求數,超過此值的請求將進行排隊
	 #對於 prefork 模塊,此值表示的爲子進程的處理數量,默認爲256,增加的同時,需要同時增加ServerLimit 配置參考:
	 #對於event 或 worker ,此值表示可以用來處理的線程的總數,默認爲16(Serverlimit)*25(ThreadsPerChild),所以,增加此值的時候,需要同時設置Serverlimit和ThreadsPerChild的值
	 #prefork模式的處理請求的方式爲:通過不同的子進程來處理用戶請求,每個子進程處理一個請求,優點是每個子進程異常,不會影響其他子進程的請求處理,缺點是每個進程的創建需要佔用系統資源
	 #work模式的處理請求的方式爲:通過子進程創建線程來響應用戶請求
	 配置參考:
		prefork模式下:
			<IfModule mpm_prefork_module>
				StartServers          50 
				MinSpareServers       50
				MaxSpareServers      80
				MaxRequestWorkers      1000
				MaxRequestsPerChild   10000
			</IfModule>
			Serverlimit 1500
		work模式下:
			<IfModule mpm_worker_module>
				StartServers          5 
				MaxRequestWorkers         1000
				MinSpareThreads      20 
				MaxSpareThreads      50
				ThreadsPerChild      100 
				MaxRequestsPerChild   15000
			</IfModule>
			Serverlimit 1500	
        windows下的win_mpm:
			<IfModule mpm_winnt_module>
				ThreadsPerChild      1500 
				MaxRequestsPerChild   15000
			</IfModule>			

目錄權限加固

 修改 bin conf logs 權限爲755
	chmod 755 bin conf logs
 修改 httpd 文件權限爲 511 
	chmod 511 bin/httpd

服務端接口(CGI)加固

禁用CGI程序

	 註釋掉mod_cgid.so
	 #ScriptAlias /cgi-bin/ "/asop/apache2.4.34/cgi-bin/"
 刪除Apache目錄下的CGI目錄
     rm -rf cgi-bin

默認訪問功能加固

1)、禁止遍歷整個目錄

 <Directory "/">
	 Require all denied
 </Directory>
2)、禁止映射至系統根目錄
打開註釋 LoadModule userdir_module modules/mod_userdir.so
文檔末尾加入:UserDir disabled root

禁用不安全的請求方法

HTTP1.0定義了三種請求方法: GET、POST、HEAD,HTTP1.1新增了五種請求方法:OPTIONS、PUT、DELETE、TRACE 、CONNECT,其中常用的爲http1.0定義的GET和POST方法,建議禁用除此兩種方法以外的所有方法。

  參考配置:
  打開註釋:LoadModule allowmethods_module modules/mod_allowmethods.so
  文檔末尾加入:
	  <Location "/">
	   AllowMethods GET POST HEAD
	  </Location>

禁止目錄列出

目錄列出會在請求的資源不存在的情況下,將此目錄下的文件以列表形式列出

  參考配置:
  	  options -Indexes FollowSymLinks

防止點擊劫持

web上點擊劫持主要是通過iframe嵌套方式實現的,所以,預防的主要辦法也就是通過請求頭限制iframe的嵌套

  #X-Frame-Options 這個請求頭可以有三個可選值:DENY 拒絕所有當前頁面加載任何iframe嵌套
  #SAMEORIGIN:iframe頁面的地址只能爲同源域名下的頁面
  #ALLOW-FROM origin:允許iframe加載的頁面地址
  參考配置:
	Header always append X-Frame-Options SAMEORIGIN

自定義錯誤頁面

配置參考:
#http段中加入如下信息
ErrorDocument 400 /custom400.html
ErrorDocument 401 /custom401.html
ErrorDocument 403 /custom403.html
ErrorDocument 404 /custom404.html
ErrorDocument 405 /custom405.html
ErrorDocument 500 /custom500.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章