系统更新与补丁管理
定期更新系统和Apache2软件包是安全加固的基础,可及时修补已知漏洞。执行以下命令更新包列表并升级所有可更新的软件包:
sudo apt update && sudo apt upgrade -y
配置防火墙(UFW)
使用UFW(Uncomplicated Firewall)限制对Apache服务的访问,仅允许必要的HTTP(80/tcp)和HTTPS(443/tcp)流量。操作步骤如下:
sudo apt install ufw -y # 安装UFW(若未安装)
sudo ufw allow 'Apache Full' # 允许Apache全流量(包含HTTP/HTTPS)
sudo ufw enable # 启用防火墙
sudo ufw status # 验证规则(应显示“Apache Full”允许)
禁用不必要的Apache模块
禁用不使用的模块可减少攻击面。首先查看已启用的模块:
apache2ctl -M
然后禁用不需要模块(如autoindex用于防止目录列表、php7.x若未使用PHP),以autoindex为例:
sudo a2dismod autoindex # 禁用autoindex模块
sudo systemctl restart apache2 # 重启Apache使更改生效
隐藏Apache敏感信息
修改配置文件隐藏Apache版本号和操作系统信息,防止攻击者利用已知版本漏洞攻击:
sudo sed -i 's/ServerTokens OS/ServerTokens Prod/g' /etc/apache2/apache2.conf # 隐藏版本号
sudo sed -i 's/ServerSignature On/ServerSignature Off/g' /etc/apache2/apache2.conf # 关闭服务器签名
sudo systemctl restart apache2 # 重启Apache
启用SSL/TLS加密
为Apache配置SSL证书,强制使用HTTPS加密数据传输。步骤如下:
mod_ssl模块:sudo a2enmod ssl # 启用SSL模块
sudo systemctl restart apache2
sudo mkdir -p /etc/apache2/ssl # 创建SSL证书目录
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt # 生成自签名证书
/etc/apache2/sites-available/default-ssl.conf):<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
SSLEngine on # 启用SSL
SSLCertificateFile /etc/apache2/ssl/apache.crt # 证书路径
SSLCertificateKeyFile /etc/apache2/ssl/apache.key # 密钥路径
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
sudo a2ensite default-ssl.conf # 启用SSL虚拟主机
sudo systemctl reload apache2 # 重新加载配置
限制目录访问权限
防止未经授权的目录列表和文件访问,修改Apache配置文件:
sudo nano /etc/apache2/apache2.conf
添加或修改以下内容(针对网站根目录/var/www/html):
<Directory /var/www/html>
Options -Indexes FollowSymLinks # 禁止目录列表
AllowOverride None # 禁止.htaccess覆盖配置
Require all granted # 允许所有用户访问(可根据需求限制为特定IP)
</Directory>
sudo systemctl restart apache2 # 重启Apache
安装Web应用防火墙(WAF)
使用mod_security模块防范SQL注入、跨站脚本(XSS)等常见Web攻击:
sudo apt install libapache2-mod-security2 -y # 安装mod_security
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf # 复制配置文件
sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/g' /etc/modsecurity/modsecurity.conf # 开启主动防护模式
sudo a2enmod security2 # 启用mod_security模块
sudo systemctl restart apache2 # 重启Apache
监控与日志分析
定期检查Apache日志,及时发现异常行为。常用命令:
tail -f /var/log/apache2/access.log # 实时查看访问日志
tail -f /var/log/apache2/error.log # 实时查看错误日志
可选:安装logwatch工具自动化日志分析:
sudo apt install logwatch -y
sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf # 备份默认配置
sudo logwatch --output mail # 发送日志摘要到邮箱(需配置邮件服务)
额外安全建议
sudo aa-genprof /usr/sbin/apache2 # 生成Apache的AppArmor配置文件
sudo aa-enforce /etc/apparmor.d/usr.sbin.apache2 # 强制应用配置
tar命令备份网站数据和配置文件:sudo tar -czvf /backup/apache_backup_$(date +%Y%m%d).tar.gz /var/www/html /etc/apache2