1. 定期更新系統與Apache軟件包
保持系統和Apache的最新狀態是修復已知安全漏洞的關鍵。使用sudo yum update -y
命令更新所有系統組件和Apache,確保運行的是最新穩定版本,減少被已知攻擊利用的風險。
2. 配置防火墻限制訪問
使用firewalld
(CentOS默認防火墻工具)僅允許必要的HTTP(80端口)和HTTPS(443端口)流量,阻止非法IP訪問。執行以下命令:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
如需進一步限制,可添加IP白名單(如僅允許公司IP訪問):
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
sudo firewall-cmd --reload
3. 禁用不必要的Apache模塊
Apache默認加載的模塊可能包含未使用的功能,增加攻擊面。通過編輯/etc/httpd/conf.modules.d/00-base.conf
(或其他模塊配置文件),注釋或刪除不需要的模塊(如mod_cgi
、mod_php
,若未使用PHP),僅保留必需模塊(如mod_ssl
用于HTTPS)。修改后重啟Apache:sudo systemctl restart httpd
。
4. 隱藏Apache版本與敏感信息
修改Apache配置文件(/etc/httpd/conf/httpd.conf
),設置以下參數:
ServerTokens Prod # 隱藏Apache版本號,僅顯示“Apache”
ServerSignature Off # 關閉錯誤頁面中的服務器版本信息
這可防止攻擊者通過版本信息查找針對性漏洞。
5. 強化SSL/TLS加密通信
啟用HTTPS加密客戶端與服務器之間的數據傳輸,避免明文泄露。首先安裝mod_ssl
模塊:sudo yum install mod_ssl -y
,然后生成自簽名證書(生產環境建議使用CA簽發證書):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/apache-selfsigned.key -out /etc/pki/tls/certs/apache-selfsigned.crt
編輯/etc/httpd/conf.d/ssl.conf
,配置SSL參數:
<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName yourdomain.com
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/pki/tls/private/apache-selfsigned.key
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 # 禁用舊版不安全協議
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 # 使用強加密套件
</VirtualHost>
重啟Apache使配置生效:sudo systemctl restart httpd
。
6. 限制訪問權限
通過配置文件或.htaccess
文件限制對敏感目錄(如網站根目錄/var/www/html
)的訪問:
<Directory "/var/www/html">
Options FollowSymLinks # 禁用目錄瀏覽
AllowOverride None # 禁用.htaccess覆蓋(提升性能)
Require ip 192.168.1.0/24 # 僅允許指定IP段訪問
</Directory>
若需允許普通用戶訪問,可將Require ip
改為Require all granted
,但仍建議結合防火墻限制。
7. 啟用SELinux保護
SELinux(Security-Enhanced Linux)可限制Apache進程的權限,防止越權訪問。確保SELinux處于Enforcing
模式(getenforce
命令查看),并配置相關布爾值:
sudo setsebool -P httpd_can_network_connect 1 # 允許Apache訪問網絡(如數據庫)
sudo setsebool -P httpd_can_sendmail 1 # 允許Apache發送郵件
若網站目錄權限不足,可使用chcon
命令修改SELinux上下文:
sudo chcon -Rt httpd_sys_content_t /var/www/html # 設置目錄為HTTP內容類型
8. 監控與日志審計
啟用詳細的日志記錄,定期檢查日志以發現異常行為。Apache默認日志路徑為/var/log/httpd/error_log
(錯誤日志)和/var/log/httpd/access_log
(訪問日志)??赏ㄟ^tail -f /var/log/httpd/error_log
實時監控錯誤日志,或使用工具(如fail2ban
)自動封禁頻繁攻擊的IP。
9. 防止目錄瀏覽與信息泄露
禁用目錄瀏覽功能,避免攻擊者查看網站目錄結構。在Apache配置文件中設置:
<Directory "/var/www/html">
Options -Indexes # 禁用目錄索引
</Directory>
若需允許特定目錄瀏覽,可單獨配置(如AllowOverride None
確保安全)。
10. 使用安全模塊增強防護
安裝并配置mod_security
模塊(Web應用防火墻),防止SQL注入、跨站腳本(XSS)等常見攻擊。執行以下命令安裝:
sudo yum install mod_security -y
編輯/etc/httpd/conf.d/mod_security.conf
,啟用模塊并配置規則(可根據需求調整規則集):
<IfModule mod_security2.c>
SecRuleEngine On # 開啟規則引擎
Include conf/modsecurity.d/*.conf # 加載默認規則
</IfModule>
重啟Apache使配置生效:sudo systemctl restart httpd
。