1. 系統與軟件更新
定期更新系統和Apache2及相關軟件包,及時修補已知安全漏洞。對于Ubuntu/Debian系統,使用sudo apt update && sudo apt upgrade
;對于CentOS/RHEL系統,使用sudo yum update
。建議開啟自動安全更新(如Ubuntu的unattended-upgrades
包),確保系統始終處于最新狀態。
2. 防火墻配置
使用防火墻限制對Apache的訪問,僅開放必要端口(HTTP 80、HTTPS 443)。對于Ubuntu/Debian,使用UFW(Uncomplicated Firewall):sudo ufw allow 'Apache Full'
(允許HTTP和HTTPS)、sudo ufw enable
(啟用防火墻);對于CentOS/RHEL,使用Firewalld:sudo firewall-cmd --permanent --add-service=http --add-service=https
、sudo firewall-cmd --reload
。避免開放不必要的端口(如FTP、Telnet),減少攻擊面。
3. 禁用不必要的模塊與服務
禁用未使用的Apache模塊,降低服務器暴露的風險。使用sudo a2dismod <module_name>
命令(如sudo a2dismod autoindex
禁用目錄列表、sudo a2dismod rewrite
禁用URL重寫,若無需這些功能),然后重啟Apache:sudo systemctl restart apache2
。同時,關閉不必要的Apache服務(如status
模塊),避免泄露服務器信息。
4. 隱藏Apache版本與敏感信息
修改Apache配置文件,隱藏版本號和服務器簽名,防止攻擊者利用已知版本漏洞發起攻擊。編輯/etc/apache2/apache2.conf
(Ubuntu/Debian)或/etc/httpd/conf/httpd.conf
(CentOS/RHEL),添加/修改以下指令:
ServerTokens Prod
(僅顯示“Apache”而非版本號)、ServerSignature Off
(禁用錯誤頁面中的服務器信息)。重啟Apache使配置生效。
5. 配置SSL/TLS加密(啟用HTTPS)
為網站配置SSL證書,強制使用HTTPS加密數據傳輸,防止中間人攻擊。推薦使用Let’s Encrypt免費證書:
sudo apt install certbot python3-certbot-apache
(Ubuntu/Debian);sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
(按提示完成配置);sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
),啟用SSL模塊(sudo a2enmod ssl
),編輯虛擬主機配置文件(/etc/apache2/sites-available/default-ssl.conf
),指定證書路徑并重啟Apache。6. 強化訪問控制
/var/www/html
目錄權限為755
,所有者為www-data
(Apache用戶):sudo chown -R www-data:www-data /var/www/html
、sudo chmod -R 755 /var/www/html
。<Directory>
指令中添加Options -Indexes
,防止用戶查看目錄內容(如/var/www/html
目錄)。.htpasswd
文件存儲用戶名和密碼:sudo htpasswd -c /etc/apache2/.htpasswd username
(創建用戶),然后在配置文件中添加AuthType Basic
、AuthName "Restricted Area"
、AuthUserFile /etc/apache2/.htpasswd
、Require valid-user
指令。7. 配置安全HTTP頭
通過安全HTTP頭增強瀏覽器端的安全防護,抵御XSS、點擊劫持等攻擊。在Apache配置文件(如/etc/apache2/conf-enabled/security.conf
)中添加以下指令:
Header always set X-Content-Type-Options "nosniff"
(防止MIME類型嗅探)、Header always set X-Frame-Options "SAMEORIGIN"
(禁止點擊劫持)、Header always set X-XSS-Protection "1; mode=block"
(啟用XSS防護)、Header always set Referrer-Policy "no-referrer-when-downgrade"
(限制Referer泄露)、Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"
(控制資源加載來源)。重啟Apache使配置生效。
8. 安裝與配置Web應用防火墻(WAF)
使用ModSecurity等WAF模塊,檢測并阻止SQL注入、跨站腳本(XSS)、惡意爬蟲等常見Web攻擊。安裝ModSecurity:sudo apt install libapache2-mod-security2
(Ubuntu/Debian)、sudo yum install mod_security
(CentOS/RHEL);啟用模塊:sudo a2enmod security2
;配置規則:編輯/etc/apache2/modsecurity.d/owasp-modsecurity-crs/crs-setup.conf
(OWASP核心規則集),根據需求調整規則(如啟用/禁用特定規則),然后重啟Apache。
9. 日志監控與審計
啟用詳細的日志記錄,定期檢查日志文件以發現異常行為。確保Apache的錯誤日志(/var/log/apache2/error.log
)和訪問日志(/var/log/apache2/access.log
)已啟用(默認開啟),使用tail -f /var/log/apache2/error.log
實時監控錯誤日志,或通過工具(如Logwatch、Splunk)進行日志分析。設置日志輪轉(logrotate
),避免日志文件過大占用磁盤空間。
10. 限制資源使用與用戶權限
LimitRequestBody
指令,限制上傳文件的最大大?。ㄈ?0MB):LimitRequestBody 52428800
(單位:字節),防止惡意用戶上傳大文件耗盡服務器資源。/etc/apache2/envvars
(Ubuntu/Debian)或/etc/sysconfig/httpd
(CentOS/RHEL),設置APACHE_RUN_USER=www-data
、APACHE_RUN_GROUP=www-data
(Ubuntu/Debian)或APACHE_RUN_USER=apache
、APACHE_RUN_GROUP=apache
(CentOS/RHEL),然后重啟Apache。sudo apt install fail2ban
(Ubuntu/Debian)、sudo yum install fail2ban
(CentOS/RHEL);配置/etc/fail2ban/jail.local
,添加Apache防護規則(如[apache-auth]
),然后啟動Fail2Ban:sudo systemctl enable fail2ban && sudo systemctl start fail2ban
。