在Ubuntu系統上進行PHP安全設置是非常重要的,以下是一些關鍵步驟和最佳實踐:
確保PHP運行目錄的權限設置正確。通常,這些目錄應該屬于 www-data 用戶和用戶組。
sudo chown -R www-data:www-data /path/to/your/php/project
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ugrwx storage bootstrap/cache
減少PHP內置模塊以提升性能和安全性??梢酝ㄟ^刪除或重命名相應的配置文件來禁用不需要的模塊。例如,要禁用 sqlite3 模塊,可以刪除或重命名 /etc/php.d/sqlite3.ini 文件。
在 /etc/php.ini 中進行以下配置:
display_errors Off,并將錯誤日志寫入日志文件中。expose_php Off,避免在錯誤頁面或響應頭中顯示PHP版本信息。register_globals Off,以防止表單提交的數據被自動注冊為全局變量。upload_max_filesize 和 post_max_size 來限制上傳文件的大小。open_basedir 指令來限制PHP可以訪問的系統目錄。allow_url_fopen Off 和 allow_url_include Off。使用 mod_security 和 mod_evasive 等模塊來防止攻擊。
在配置文件中禁用不必要的PHP腳本,例如:
location /(uploads|assets)/.*\.(php|php5|jsp) {
deny all;
}
安裝并配置 Uhinzi 擴展,它提供了多種保護措施,包括防止緩沖區溢出和格式化串的弱點。
定期更新Apache和PHP到最新版本,并訂閱安全公告,及時應用安全補丁。
sudo apt update
sudo apt upgrade
使用 UFW 防火墻限制訪問,禁用root用戶直接訪問,創建新用戶并賦予適當權限。
sudo ufw allow 22/tcp # 允許SSH
sudo ufw allow 80/tcp # 允許HTTP
sudo ufw allow 443/tcp # 允許HTTPS
sudo ufw enable
在PHP代碼中使用輸入驗證和輸出轉義來防止SQL注入和XSS攻擊。
啟用并監控訪問日志和錯誤日志,使用入侵檢測系統(IDS)監控可疑活動。
通過SSL/TLS加密所有傳輸數據,使用強密碼策略和認證機制保護敏感區域。
# 安裝Certbot
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
通過上述步驟,可以顯著提高Ubuntu系統上PHP運行環境的安全性。請根據您的具體環境和需求調整配置,并定期檢查和更新安全設置。