Ubuntu下Apache2安全設置指南
定期更新系統和Apache2相關軟件包,修補已知安全漏洞。執行以下命令:
sudo apt update && sudo apt upgrade
這一步能確保服務器運行最新的安全補丁,降低被已知漏洞攻擊的風險。
使用UFW(Uncomplicated Firewall)限制對Apache2的訪問,僅允許必要的HTTP(80端口)和HTTPS(443端口)流量:
sudo apt install ufw # 安裝UFW(若未安裝)
sudo ufw allow 'Apache Full' # 允許Apache Full(包含HTTP和HTTPS)
sudo ufw enable # 啟用防火墻
通過防火墻規則,能有效阻擋未經授權的網絡訪問,減少攻擊面。
修改Apache配置文件,隱藏服務器版本號和操作系統信息,防止攻擊者利用這些信息針對性攻擊:
編輯/etc/apache2/apache2.conf,添加或修改以下指令:
ServerTokens Prod # 僅顯示“Apache”而不顯示版本號
ServerSignature Off # 關閉服務器響應中的簽名信息(如版本號、服務器名)
重啟Apache使配置生效:sudo systemctl restart apache2。
禁用不使用的模塊,減少潛在的攻擊入口。首先查看已啟用的模塊:
apache2ctl -M
然后禁用不需要的模塊(如autoindex、php7.x等,根據實際需求調整):
sudo a2dismod autoindex # 禁用目錄列表模塊
sudo a2dismod php7.4 # 示例:禁用PHP模塊(若未使用PHP)
禁用后重啟Apache:sudo systemctl restart apache2。
禁用目錄自動列表功能,避免用戶直接查看網站根目錄下的文件列表。編輯Apache站點配置文件(如/etc/apache2/sites-available/000-default.conf),找到<Directory /var/www/html>部分,修改為:
<Directory /var/www/html>
Options -Indexes +FollowSymLinks # 禁用Indexes(目錄列表)
AllowOverride None
Require all granted
</Directory>
重啟Apache使配置生效。
使用Let’s Encrypt獲取免費SSL證書,配置Apache2支持HTTPS,加密客戶端與服務器之間的通信:
sudo apt install certbot python3-certbot-apache # 安裝Certbot和Apache插件
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com # 替換為你的域名
Certbot會自動修改Apache配置文件,啟用HTTPS并重定向HTTP到HTTPS(可選)。驗證SSL配置:訪問https://yourdomain.com,確認瀏覽器地址欄顯示鎖圖標。
通過設置HTTP響應頭,增強瀏覽器端的安全防護,防止XSS、點擊劫持等攻擊。編輯/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,然后重啟Apache。
安裝并配置mod_security,實時檢測和阻止SQL注入、跨站腳本(XSS)等常見Web攻擊:
sudo apt install libapache2-mod-security2 # 安裝mod_security
sudo a2enmod security2 # 啟用模塊
編輯/etc/apache2/conf-available/security2.conf,啟用OWASP Core Rule Set(CRS):
SecRuleEngine On # 開啟規則引擎
Include /etc/apache2/conf-available/crs-setup.conf # 包含CRS配置
重啟Apache:sudo systemctl restart apache2。
安裝mod_evasive,限制同一IP的頻繁請求,防止DoS攻擊:
sudo apt install libapache2-mod-evasive # 安裝模塊
編輯/etc/apache2/mods-enabled/evasive.conf,配置規則:
<IfModule mod_evasive24.c> # 根據模塊版本調整(20或24)
DOSHashTableSize 3097
DOSPageCount 2 # 1秒內同一IP的頁面請求超過2次則觸發
DOSSiteCount 50 # 1秒內同一IP的站點請求超過50次則觸發
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10 # 觸發后封鎖IP 10秒
</IfModule>
重啟Apache使配置生效。
對網站敏感目錄(如/admin)設置基本認證,僅允許授權用戶訪問:
sudo htpasswd -c /etc/apache2/.htpasswd username # 創建密碼文件(首次使用-c參數)
編輯站點配置文件,添加以下內容:
<Directory /var/www/html/admin>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
重啟Apache。
使用Require ip指令限制特定IP訪問網站:
<Directory /var/www/html>
Require ip 192.168.1.1 # 僅允許192.168.1.1訪問
# Require not ip 192.168.1.100 # 示例:禁止192.168.1.100訪問
</Directory>
重啟Apache。
確保Apache日志配置正確,便于及時發現異常行為:
編輯/etc/apache2/apache2.conf,確認以下配置:
LogLevel warn # 日志級別(warn及以上級別記錄)
ErrorLog ${APACHE_LOG_DIR}/error.log # 錯誤日志路徑
CustomLog ${APACHE_LOG_DIR}/access.log combined # 訪問日志格式(combined包含IP、請求等信息)
使用logwatch工具定期分析日志:
sudo apt install logwatch # 安裝logwatch
sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf # 備份默認配置
sudo logwatch # 查看當日日志摘要
定期檢查/var/log/apache2/error.log和/var/log/apache2/access.log,關注異常請求(如大量404錯誤、頻繁POST請求)。
定期備份Apache配置文件和網站數據,防止數據丟失或配置損壞:
sudo tar -czvf /backup/apache2_backup_$(date +%Y%m%d).tar.gz /etc/apache2 # 備份配置文件
sudo tar -czvf /backup/www_backup_$(date +%Y%m%d).tar.gz /var/www/html # 備份網站數據
將備份文件存儲到安全位置(如外部存儲設備、云存儲)。
編輯/etc/apache2/apache2.conf,確保ServerSignature Off和ServerTokens Prod已設置,徹底隱藏服務器版本信息。
若系統支持SELinux或AppArmor,可進一步限制Apache的權限:
sudo aa-enforce /etc/apparmor.d/usr.sbin.apache2 # 強制生效
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
sudo restorecon -Rv /var/www/html
這些措施能有效隔離Apache進程,防止越權訪問。
通過以上步驟,可顯著提升Ubuntu下Apache2服務器的安全性。需定期檢查和更新安全配置,應對新的威脅和漏洞。