Ubuntu 20+Apache环境下阻止请求.env文件的IP方法
Ubuntu 20 + Apache 下拦截请求.env的IP分步方案
一、通过Apache拦截.env请求并单独记录日志
先让Apache识别所有包含.env的请求,直接返回403,同时把这类请求单独记录到日志文件,方便后续自动封禁。
- 编辑你的Apache站点配置文件(比如
/etc/apache2/sites-available/your-site.conf),在<VirtualHost>块内添加以下规则:
# 标记所有请求URL含.env的请求 SetEnvIf Request_URI "(\.env|\.\./\.env)" env_request=1 # 将标记的请求单独写入日志 CustomLog /var/log/apache2/env_requests.log combined env=env_request # 直接返回403禁止访问 RedirectMatch 403 "\.env"
- 验证Apache配置合法性,没问题就重启服务:
sudo apache2ctl configtest sudo systemctl restart apache2
二、用Fail2Ban自动封禁恶意IP
Fail2Ban会监控日志文件,匹配到请求.env的IP后,自动通过iptables封禁,无需手动操作。
- 安装Fail2Ban(未安装的话):
sudo apt update && sudo apt install fail2ban -y
- 创建自定义过滤规则:
在/etc/fail2ban/filter.d/目录下新建apache-env.conf:
[Definition] failregex = ^<HOST> .* "(GET|POST|HEAD).*(\.env|\.\./\.env)" ignoreregex =
- 创建Fail2Ban jail配置:
在/etc/fail2ban/jail.d/目录下新建apache-env.conf:
[apache-env] enabled = true filter = apache-env logpath = /var/log/apache2/env_requests.log maxretry = 1 # 请求1次就封禁 bantime = 86400 # 封禁24小时(单位:秒) findtime = 600 # 10分钟内触发规则即封禁 action = iptables-multiport[name=apache-env, port="http,https", protocol=tcp]
- 重启Fail2Ban生效:
sudo systemctl restart fail2ban
- 验证规则状态:
sudo fail2ban-client status apache-env
显示Enabled: true即为配置成功。
三、手动封禁IP(应急场景)
遇到需要立即处理的恶意IP,可直接用iptables封禁:
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
替换192.168.1.100为实际恶意IP。若要永久保存规则,安装iptables-persistent:
sudo apt install iptables-persistent -y sudo netfilter-persistent save
补充说明
- 定期查看
/var/log/apache2/env_requests.log和/var/log/fail2ban.log,确认封禁逻辑正常 - 可根据需求调整
bantime(封禁时长)、maxretry(触发次数)等参数 - Apache的
RedirectMatch已直接拦截请求,Fail2Ban是额外封禁IP,防止后续恶意操作
内容的提问来源于stack exchange,提问作者Vicente Echo
相关产品推荐
相关产品推荐

