1. 定期更新系統與Apache2
保持系統和Apache2為最新版本是防范已知漏洞的基礎。運行以下命令更新軟件包列表并升級已安裝的包:
sudo apt update && sudo apt upgrade
2. 配置防火墻(UFW)
使用UFW限制對Apache服務的訪問,僅允許必要的端口(HTTP 80、HTTPS 443)。若使用Certbot自動配置SSL,可直接允許“Apache Full”規則:
sudo ufw allow 'Apache Full' # 允許HTTP和HTTPS
sudo ufw enable # 啟用防火墻
3. 禁用不必要的Apache模塊
關閉未使用的模塊以減少攻擊面。例如,禁用mod_php
(若使用PHP-FPM替代)或其他不需要的模塊:
sudo a2dismod module_name # 如mod_php7.4
sudo systemctl restart apache2
4. 啟用SSL/TLS加密
使用Let’s Encrypt免費獲取SSL證書,強制HTTPS傳輸以加密數據。安裝Certbot并自動配置:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
5. 隱藏Apache版本與敏感信息
修改Apache配置文件,隱藏版本號和服務器簽名,防止攻擊者利用已知版本漏洞:
sudo nano /etc/apache2/conf-enabled/security.conf
# 添加或修改以下行
ServerTokens Prod # 不顯示版本信息
ServerSignature Off # 關閉錯誤頁面的服務器簽名
6. 配置訪問控制
/admin
)的訪問,僅允許授權用戶或IP。例如,為/var/www/html/admin
啟用基本認證:sudo htpasswd -c /etc/apache2/.htpasswd username # 創建用戶
sudo nano /etc/apache2/sites-available/yourdomain.conf
# 添加以下配置
<Directory /var/www/html/admin>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
<Directory /var/www/html>
Require ip 192.168.1.100 # 替換為你的IP
</Directory>
7. 啟用安全HTTP頭
通過mod_headers
模塊添加安全頭,防范XSS、點擊劫持等攻擊:
sudo a2enmod headers # 啟用headers模塊
sudo nano /etc/apache2/conf-available/security.conf
# 添加以下內容
<IfModule mod_headers.c>
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信息
</IfModule>
sudo a2enconf security # 啟用security配置
sudo systemctl restart apache2
8. 安裝Web應用防火墻(WAF)
使用mod_security
模塊過濾惡意請求(如SQL注入、XSS),增強應用層安全:
sudo apt install libapache2-mod-security2
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
# 修改配置文件(可選):SecRuleEngine On(嚴格模式)
sudo a2enmod security2
sudo systemctl restart apache2
9. 監控與日志分析
定期檢查Apache日志(error.log
和access.log
),及時發現異?;顒???墒褂?code>fail2ban自動封禁惡意IP:
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.local /etc/fail2ban/jail.local.bak # 備份默認配置
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
10. 強化SSH安全(間接保護Apache服務器)
若通過SSH管理服務器,需強化SSH配置以降低被入侵風險:
sudo nano /etc/ssh/sshd_config
# 修改以下參數
Port 2222 # 修改默認端口(避免掃描攻擊)
PermitRootLogin no # 禁止root遠程登錄
PasswordAuthentication no # 禁用密碼認證(僅允許密鑰)
sudo systemctl restart sshd
11. 限制文件上傳與執行
若網站允許文件上傳,需在php.ini
中限制文件大小和類型,防止上傳惡意腳本:
upload_max_filesize = 2M # 限制上傳文件大小
post_max_size = 8M # 限制POST數據大小
file_uploads = On # 開啟文件上傳(根據需求調整)
同時在Apache配置中禁止上傳目錄執行腳本:
<Directory /var/www/html/uploads>
php_flag engine off # 關閉PHP執行
RemoveHandler .php .phtml .php3 .php4 .php5 .php7
</Directory>
12. 定期備份數據
定期備份Apache配置文件和網站數據,確保在遭受攻擊后可快速恢復:
sudo tar -czvf /backup/apache_backup_$(date +%Y%m%d).tar.gz /etc/apache2 /var/www/html