如何提升Ubuntu Apache2的安全性
1. 定期更新系统与Apache2
保持系统和Apache2及其依赖包为最新版本,及时修补已知安全漏洞。执行以下命令更新系统及软件包:
sudo apt update &
&
sudo apt upgrade -y
2. 配置防火墙限制访问
使用UFW(Uncomplicated Firewall)仅允许必要的HTTP(80端口)和HTTPS(443端口)流量,阻止非法IP访问:
sudo apt install ufw -y
sudo ufw allow 'Apache Full' # 允许HTTP和HTTPS
sudo ufw enable # 启用防火墙
3. 禁用不必要的Apache模块
通过a2dismod
命令禁用不需要的模块(如mod_php
、autoindex
),减少攻击面。查看已启用模块:
apache2ctl -M
禁用指定模块(以autoindex
为例):
sudo a2dismod autoindex
sudo systemctl restart apache2
4. 隐藏Apache敏感信息
修改Apache配置文件,隐藏版本号和服务器签名,防止攻击者利用已知漏洞针对性攻击:
sudo nano /etc/apache2/conf-enabled/security.conf
添加或修改以下内容:
ServerTokens Prod # 隐藏版本信息
ServerSignature Off # 关闭错误页面的服务器签名
重启Apache生效:
sudo systemctl restart apache2
5. 启用SSL/TLS加密通信
使用Certbot获取免费Let’s Encrypt证书,配置HTTPS加密,避免数据在传输中被窃听。安装Certbot及Apache插件:
sudo apt install certbot python3-certbot-apache -y
获取并自动配置证书:
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
按提示完成验证,证书会自动部署到/etc/letsencrypt/live/yourdomain.com/
。可选重定向HTTP到HTTPS(编辑000-default.conf
):
<
VirtualHost *:80>
ServerName yourdomain.com
Redirect permanent / https://yourdomain.com/
<
/VirtualHost>
sudo systemctl restart apache2
6. 配置目录权限与访问控制
禁用目录自动列表,限制对敏感目录(如/var/www/html
)的访问权限,防止敏感信息泄露:
sudo nano /etc/apache2/apache2.conf
修改目录配置:
<
Directory /var/www/html>
Options -Indexes +FollowSymLinks # 禁用目录列表
AllowOverride None # 禁止.htaccess覆盖
Require all granted # 允许所有用户访问(可根据需求限制)
<
/Directory>
7. 使用mod_evasive防范DoS攻击
安装mod_evasive
模块,检测并限制高频请求(如DDoS、Slowloris攻击):
sudo apt install libapache2-mod-evasive -y
sudo nano /etc/apache2/mods-available/evasive.conf
调整参数(根据服务器性能修改):
DOSHashTableSize 3097
DOSPageCount 2 # 1秒内同一IP访问同一页面超过2次触发
DOSSiteCount 50 # 1秒内同一IP访问整个站点超过50次触发
DOSBlockingPeriod 10 # 触发后封锁IP 10秒
启用模块并重启Apache:
sudo a2enmod evasive
sudo systemctl restart apache2
8. 启用Fail2Ban防止暴力破解
安装Fail2Ban,监控日志文件,自动封禁多次尝试失败的IP(如SSH、Apache登录):
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
复制默认配置并修改(以Apache为例):
sudo cp /etc/fail2ban/jail.local /etc/fail2ban/jail.local.bak
sudo nano /etc/fail2ban/jail.local
添加以下内容:
[apache]
enabled = true
port = 80,443
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
bantime = 600
9. 强化SSH安全(间接保护Apache服务器)
若通过SSH管理服务器,修改SSH配置以增强安全性:
sudo nano /etc/ssh/sshd_config
修改以下参数:
Port 2222 # 修改默认端口(避免扫描攻击)
PermitRootLogin no # 禁止root直接登录
PasswordAuthentication no # 禁用密码认证(仅允许密钥认证)
重启SSH服务:
sudo systemctl restart sshd
10. 定期监控与日志分析
使用logwatch
或fail2ban
监控Apache访问日志(/var/log/apache2/access.log
)和错误日志(/var/log/apache2/error.log
),及时发现异常请求(如大量404错误、高频POST请求):
sudo apt install logwatch -y
sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf
sudo logwatch --service apache2 --output mail # 每日发送日志报告到邮箱
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何提升Ubuntu Apache2的安全性
本文地址: https://pptw.com/jishu/726551.html