盡管現在購買的雲服務器很多都有一鍵web環境安裝包,但是如果是自己配置web環境則需要對各種安全配置十分了解,今天我們就來嘗試這做好web服務器安全配置。這里的配置不盡完善,若有紕漏之處還望指出。
修改Apache配置文件http.conf
以專用的apache用戶運行
一般情況下,Apache是由Root 來安裝和運行的。如果Apache Server進程具有Root用戶特權,那么它將給系統的安全構成很大的威脅,應確保Apache Server進程以最可能低的權限用戶來運行。
User apache
Group apachegroup
window系統中創建apache用戶,給予apache用戶讀取和執行(RX)所有文檔和腳本目錄(例如:htdocs 和cgi-bin)的權限。 對Apache的logs目錄具有讀/寫/刪除(RWD)的權限。對httpd.exe二進制文件具有讀取和執行(RX)的權限。
在service.msc服務中選擇Aapche屬性,登錄賬號改為apache即可
apache目錄禁止訪問
Indexes 的作用就是當該目錄下沒有 index.html文件時,就顯示目錄結構。
默認apache在當前目錄下沒有index.html入口就會顯示目錄。讓目錄暴露在外面是非常危險的事,如下操作禁止apache顯示目錄:
Options FollowSymLinks
將Options Indexes FollowSymLinks中的Indexes 去掉,就可以禁止 Apache 顯示該目錄結構。
阻止用戶修改系統設置
在Apache 服務器的配置文件中進行以下的設置,阻止用戶建立、修改 .htaccess文件,防止用戶超越能定義的系統安全特性。
AllowOveride None
Options None
Allow from all
然后再分別對特定的目錄進行適當的配置。
apache 隱藏版本信息
ServerSignature Off
ServerTokens Prod
自定義錯誤頁面
ErrorDocument 400 /custom400.html
ErrorDocument 401 /custom401.html
ErrorDocument 403 /custom403.html
ErrorDocument 404 /custom404.html
ErrorDocument 405 /custom405.html
ErrorDocument 500 /custom500.html
刪除如下apache的默認文件
刪除默認的HTML文件: # apache網頁根目錄htdocs下的html文件
刪除默認的icons文件: # apache安裝目錄下的icons文件夾及里面的文件
刪除默認的的CGI腳本: # apache安裝目錄下的cgi-bin文件夾及里面的文件
刪除Apache說明文件: # apache安裝目錄下的manual文件夾及里面的文件以及安裝目錄下的其他介紹性文件
使用rotatelogs 每隔一天記錄一個日志
CustomLog "|bin/rotatelogs.exe logs/access.log 86400 480" combined
rotatelogs logfile [ rotationtime [ offset ]] | [ filesizeM ]
logfile:它加上基准名就是日志文件名。如果logfile中包含’%’,則它會被視為用於的strftime(3)的格式字串;否則,它會被自動加上以秒為單位的.nnnnnnnnnn后綴。這兩種格式都表示新的日志開始使用的時間。
rotationtime:日志文件回卷的以秒為單位的間隔時間,86400 表示一天,即每天生成一個新的日志文件。
offset:相對於UTC的時差的分鍾數。如果省略,則默認為0,並使用UTC時間。比如,要指定UTC時差為-5小時的地區的當地時間,則此參數應為-300,北京時間為+8時間,應設置為480。這樣日志里的時間才會和服務器上的時間一致,方便查看日志。
filesizeM:指定回卷時以兆字節為單位的后綴字母M的文件大小,而不是指定回卷時間或時差。
修改PHP配置文件php.ini
將時區修改為東八區北京時間
date.timezone = "PRC"
響應頭中y隱藏PHP版本信息
expose_php = Off
禁止相關函數
disable_functions = phpinfo, get_cfg_var
safe_mode = On //開啟安全模式,這個開了,可能會有些php功能沒辦法使用了