Ubuntu Apache2 安全设置指南
Apache2 是广泛使用的开源 Web 服务器,但在配置和使用过程中存在一些安全隐患。通过适当的安全设置,可以显著提高服务器的安全性。以下是一个详细的指南,帮助你在 Ubuntu 上配置 Apache2 以提高安全性。
1. 安装 Apache2
首先,确保你已经安装了 Apache2。如果没有安装,可以使用以下命令进行安装:
sudo apt update sudo apt install apache2
2. 启用必要的模块
2.1 启用 SSL 模块
为了启用 HTTPS,需要安装并启用 mod_ssl
模块:
sudo a2enmod ssl
2.2 禁用不必要的模块
禁用不需要的模块可以减少潜在的安全风险。例如,禁用 mod_autoindex
模块可以防止目录列表:
sudo a2dismod autoindex
3. 配置防火墙
使用 ufw
(Uncomplicated Firewall)来配置防火墙规则,允许 HTTP 和 HTTPS 流量通过:
sudo ufw allow 'Apache Full'
4. 修改默认配置
4.1 隐藏 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
4.2 禁止目录列表
在默认的配置文件中,禁用目录列表功能:
Options Indexes FollowSymLinks AllowOverride None Require all denied
4.3 设置默认站点根目录
确保网站内容只放在指定的目录中,例如 /var/www/html
:
DocumentRoot /var/www/htmlOptions Indexes FollowSymLinks AllowOverride None Require all granted
5. 配置虚拟主机
编辑默认的虚拟主机配置文件,例如 /etc/apache2/sites-available/000-default.conf
:
ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
6. 启用 SSL
为 Apache 配置 SSL 证书以启用 HTTPS:
6.1 创建 SSL 证书
使用 OpenSSL 生成自签名证书:
sudo openssl req -x509 -newkey rsa:4096 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt -days 365
6.2 配置 SSL 模块
在 Apache 配置文件中启用 SSL 模块并指定证书路径:
ServerAdmin webmaster@localhost DocumentRoot /var/www/html SSLEngine on 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
7. 重启 Apache 服务
完成上述配置后,重启 Apache 服务以使更改生效:
sudo systemctl restart apache2
8. 额外的安全建议
8.1 禁用 AppArmor
在开发环境中可以禁用 AppArmor,但在生产环境中建议配置自定义的 AppArmor 规则:
sudo systemctl stop apparmor sudo update-rc.d -f apparmor remove sudo apt-get remove apparmor apparmor-utils
8.2 阻止 DDoS 攻击
安装并配置 mod_evasive
模块以阻止分布式拒绝服务(DDoS)攻击:
sudo apt-get install libapache2-mod-evasive sudo cp /usr/share/doc/libapache2-mod-evasive/mod-evasive.load /etc/apache2/mods-available/ sudo a2enmod evasive
8.3 监控和日志记录
确保启用详细的日志记录,以便监控服务器的安全状态:
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
通过以上步骤,你可以显著提高 Ubuntu 上 Apache2 服务器的安全性。定期检查和更新配置文件也是保持服务器安全的重要措施。