保持系統和軟件更新
定期更新Debian系統及PHP相關軟件包(如PHP核心、擴展、Web服務器),及時修補已知安全漏洞??墒褂?code>sudo apt update && sudo apt upgrade -y命令更新系統,通過unattended-upgrades
包配置自動安全更新,確保服務器始終運行最新版本。
配置PHP核心安全參數
修改php.ini
文件,禁用錯誤顯示(display_errors = Off
)以防止敏感信息泄露,關閉PHP版本信息暴露(expose_php = Off
),限制文件系統訪問(open_basedir = /var/www:/tmp
,僅允許訪問Web目錄和臨時目錄),禁止遠程資源訪問(allow_url_fopen = Off
、allow_url_include = Off
,防止遠程文件包含攻擊)。同時,關閉register_globals
(避免表單數據自動注冊為全局變量),降低腳本注入風險。
強化Web服務器配置
若使用Apache,可通過php-fpm
配置PHP進程池(如修改/etc/php/8.2/fpm/pool.d/www.conf
中的listen
指令為0.0.0.0:9000
),并重啟服務;若使用Nginx,需正確配置PHP處理(如location ~ \.php$
塊中指定fastcgi_pass
為PHP-FPM socket)。確保Web服務器僅響應合法請求,避免路徑遍歷或非法文件訪問。
安裝安全擴展與工具
安裝Suhosin擴展(wget http://download.suhosin.org/suhosin-0.9.37.1.tar.gz
,編譯安裝后添加extension=suhosin.so
到php.ini
),增強PHP對緩沖區溢出、格式化串等漏洞的防護。還可部署PHPIDS(入侵檢測系統)檢測常見Web攻擊,或使用CrowdSec作為“門衛”阻止惡意請求。
實施Web應用安全最佳實踐
對所有用戶輸入進行嚴格驗證(如使用filter_var
函數過濾郵箱、URL)和凈化(如htmlspecialchars
轉義HTML特殊字符),防止XSS攻擊;使用預處理語句(如PDO的prepare
方法)和參數化查詢,杜絕SQL注入;設置內容安全策略(CSP,通過Content-Security-Policy
頭部限制腳本來源),降低XSS風險;為表單添加CSRF令牌(如Laravel的@csrf
指令),驗證請求合法性;避免使用eval()
、exec()
等危險函數,減少代碼執行風險。
配置系統與網絡防護
使用ufw
或iptables
配置防火墻,僅允許HTTP(80端口)、HTTPS(443端口)和SSH(22端口)流量,拒絕其他非法連接(如sudo ufw allow 80/tcp && sudo ufw allow 443/tcp && sudo ufw allow 22/tcp
)。強化SSH安全:禁用root遠程登錄(修改/etc/ssh/sshd_config
中的PermitRootLogin no
),使用SSH密鑰對認證(替代密碼登錄),限制空密碼登錄(PasswordAuthentication no
),并重啟SSH服務。
定期審計與監控
定期檢查系統日志(/var/log/syslog
)和PHP錯誤日志(/var/log/php_errors.log
),識別異常請求(如大量404錯誤、SQL注入嘗試);使用Logwatch
生成每日日志報告,或配置Fail2ban
自動封禁頻繁攻擊的IP地址(如針對SSH登錄失敗的IP),及時響應潛在威脅。