You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20+Apache环境下阻止请求.env文件的IP方法

Ubuntu 20 + Apache 下拦截请求.env的IP分步方案

一、通过Apache拦截.env请求并单独记录日志

先让Apache识别所有包含.env的请求,直接返回403,同时把这类请求单独记录到日志文件,方便后续自动封禁。

  1. 编辑你的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"
  1. 验证Apache配置合法性,没问题就重启服务:
sudo apache2ctl configtest
sudo systemctl restart apache2

二、用Fail2Ban自动封禁恶意IP

Fail2Ban会监控日志文件,匹配到请求.env的IP后,自动通过iptables封禁,无需手动操作。

  1. 安装Fail2Ban(未安装的话):
sudo apt update && sudo apt install fail2ban -y
  1. 创建自定义过滤规则:
    在/etc/fail2ban/filter.d/目录下新建apache-env.conf:
[Definition]
failregex = ^<HOST> .* "(GET|POST|HEAD).*(\.env|\.\./\.env)"
ignoreregex =
  1. 创建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]
  1. 重启Fail2Ban生效:
sudo systemctl restart fail2ban
  1. 验证规则状态:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 23:12:20