1. 更新系统与软件包
定期更新系统和Apache相关软件包,修补已知安全漏洞。执行以下命令:
sudo apt update && sudo apt upgrade -y
2. 安装必要安全模块
安装mod_security(Web应用防火墙)和mod_evasive(防DDoS/暴力破解)模块:
sudo apt install libapache2-mod-security2 libapache2-mod-evasive -y
sudo a2enmod security2 evasive # 启用模块
3. 配置防火墙(UFW)
使用UFW限制访问,仅允许HTTP(80)、HTTPS(443)和SSH(默认22,建议修改为非标准端口)流量:
sudo apt install ufw -y
sudo ufw allow ssh # 若修改了SSH端口,需替换为对应端口
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable # 启用防火墙
4. 隐藏Apache敏感信息
修改Apache主配置文件,隐藏版本号和服务器签名,减少攻击者获取的信息:
sudo nano /etc/apache2/apache2.conf
# 找到并修改以下行
ServerTokens Prod # 仅显示"Apache",不暴露版本
ServerSignature Off # 关闭错误页面中的服务器信息
sudo systemctl restart apache2
5. 禁用不必要的模块
列出已启用模块,禁用不需要的模块(如status、autoindex,若无需目录列表):
apache2ctl -M # 查看已启用模块
sudo a2dismod status autoindex # 禁用模块
sudo systemctl restart apache2
6. 强化访问控制
/admin)。编辑虚拟主机配置文件(如/etc/apache2/sites-available/000-default.conf):<Directory /var/www/html>
Options -Indexes FollowSymLinks # 禁止目录列表
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/html/admin>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
创建密码文件并添加用户:sudo htpasswd -c /etc/apache2/.htpasswd admin # 创建用户admin
<Location "/admin">
Require ip 192.168.1.100 192.168.1.101 # 替换为允许的IP
</Location>
7. 启用SSL/TLS加密
使用Let’s Encrypt免费获取SSL证书,强制HTTPS访问:
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com # 替换为你的域名
# 证书自动配置,Apache会自动重定向HTTP到HTTPS
8. 配置ModSecurity规则
启用OWASP Core Rule Set(CRS),防范SQL注入、XSS等常见攻击:
sudo apt install modsecurity-crs -y
sudo a2enconf crs-setup # 启用CRS配置
sudo nano /etc/apache2/mods-available/security2.conf
# 修改以下行,开启规则引擎
SecRuleEngine On
Include /etc/apache2/conf-available/crs-setup.conf
sudo systemctl restart apache2
9. 权限与用户管理
www-data用户/组运行(默认配置),避免使用root。检查/etc/apache2/envvars:export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
/var/www/html)属主为www-data,权限为755;上传目录(如/var/www/html/uploads)需写入权限,但限制为www-data组:sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type f -exec chmod 644 {} \; # 文件权限644
sudo find /var/www/html -type d -exec chmod 755 {} \; # 目录权限755
sudo chmod -R 775 /var/www/html/uploads # 上传目录权限775
sudo chown -R www-data:www-data /var/www/html/uploads
10. 安全审计与监控
sudo tail -f /var/log/apache2/access.log
sudo tail -f /var/log/apache2/error.log
sudo apt install logwatch -y
sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf
sudo logwatch --output mail # 可配置邮件发送报告
11. 定期备份配置与数据
定期备份Apache配置文件和网站数据,防止数据丢失或配置损坏:
sudo tar -czvf /backup/apache_config_$(date +%Y%m%d).tar.gz /etc/apache2
sudo tar -czvf /backup/website_data_$(date +%Y%m%d).tar.gz /var/www/html
注意事项:
uploads目录禁止执行PHP),并使用Web应用防火墙(WAF)进一步防护。