Apache2 Ubuntu版如何防止攻击
1. 定期更新系统与Apache2
保持系统和Apache2为最新版本是防范已知漏洞的基础。运行以下命令更新软件包列表并升级已安装的包:
sudo apt update &
&
sudo apt upgrade
2. 配置防火墙(UFW)
使用UFW限制对Apache服务的访问,仅允许必要的端口(HTTP 80、HTTPS 443)。若使用Certbot自动配置SSL,可直接允许“Apache Full”规则:
sudo ufw allow 'Apache Full' # 允许HTTP和HTTPS
sudo ufw enable # 启用防火墙
3. 禁用不必要的Apache模块
关闭未使用的模块以减少攻击面。例如,禁用mod_php
(若使用PHP-FPM替代)或其他不需要的模块:
sudo a2dismod module_name # 如mod_php7.4
sudo systemctl restart apache2
4. 启用SSL/TLS加密
使用Let’s Encrypt免费获取SSL证书,强制HTTPS传输以加密数据。安装Certbot并自动配置:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
5. 隐藏Apache版本与敏感信息
修改Apache配置文件,隐藏版本号和服务器签名,防止攻击者利用已知版本漏洞:
sudo nano /etc/apache2/conf-enabled/security.conf
# 添加或修改以下行
ServerTokens Prod # 不显示版本信息
ServerSignature Off # 关闭错误页面的服务器签名
6. 配置访问控制
- 目录权限控制:限制对敏感目录(如
/admin
)的访问,仅允许授权用户或IP。例如,为/var/www/html/admin
启用基本认证:sudo htpasswd -c /etc/apache2/.htpasswd username # 创建用户 sudo nano /etc/apache2/sites-available/yourdomain.conf # 添加以下配置 < Directory /var/www/html/admin> AuthType Basic AuthName "Restricted Area" AuthUserFile /etc/apache2/.htpasswd Require valid-user < /Directory>
- IP白名单:仅允许特定IP访问敏感区域:
< Directory /var/www/html> Require ip 192.168.1.100 # 替换为你的IP < /Directory>
7. 启用安全HTTP头
通过mod_headers
模块添加安全头,防范XSS、点击劫持等攻击:
sudo a2enmod headers # 启用headers模块
sudo nano /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 # 启用security配置
sudo systemctl restart apache2
8. 安装Web应用防火墙(WAF)
使用mod_security
模块过滤恶意请求(如SQL注入、XSS),增强应用层安全:
sudo apt install libapache2-mod-security2
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
# 修改配置文件(可选):SecRuleEngine On(严格模式)
sudo a2enmod security2
sudo systemctl restart apache2
9. 监控与日志分析
定期检查Apache日志(error.log
和access.log
),及时发现异常活动。可使用fail2ban
自动封禁恶意IP:
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.local /etc/fail2ban/jail.local.bak # 备份默认配置
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
10. 强化SSH安全(间接保护Apache服务器)
若通过SSH管理服务器,需强化SSH配置以降低被入侵风险:
sudo nano /etc/ssh/sshd_config
# 修改以下参数
Port 2222 # 修改默认端口(避免扫描攻击)
PermitRootLogin no # 禁止root远程登录
PasswordAuthentication no # 禁用密码认证(仅允许密钥)
sudo systemctl restart sshd
11. 限制文件上传与执行
若网站允许文件上传,需在php.ini
中限制文件大小和类型,防止上传恶意脚本:
upload_max_filesize = 2M # 限制上传文件大小
post_max_size = 8M # 限制POST数据大小
file_uploads = On # 开启文件上传(根据需求调整)
同时在Apache配置中禁止上传目录执行脚本:
<
Directory /var/www/html/uploads>
php_flag engine off # 关闭PHP执行
RemoveHandler .php .phtml .php3 .php4 .php5 .php7
<
/Directory>
12. 定期备份数据
定期备份Apache配置文件和网站数据,确保在遭受攻击后可快速恢复:
sudo tar -czvf /backup/apache_backup_$(date +%Y%m%d).tar.gz /etc/apache2 /var/www/html
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Apache2 Ubuntu版如何防止攻击
本文地址: https://pptw.com/jishu/720209.html