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

Docker Compose中Django应用遭Docker IP暴力URL请求排查求助

预发布环境大量绕开Traefik的404请求排查分析

问题背景

  • 基于cookiecutter-django搭建Docker Compose部署环境,部署在Vultr VPS作为预发布环境
  • 采用Traefik做反向代理,Mailjet+Anymail提供邮件告警服务
  • 异常表现:近3天每日收到数百条404错误邮件,请求路径均为通用框架默认路径(如/login、/Home/Login、/static/style.css);请求来源IP为172.19.0.8,而项目容器使用172.20.0.X网段;这些请求未经过Traefik,导致Traefik配置的RateLimit中间件完全无效;Django默认DEBUG级别日志未记录此类请求

可能的原因及排查方向

1. Docker网络跨网段访问

  • VPS上可能存在其他Docker项目/独立容器使用了172.19.0.0/16网段,这些容器可通过Docker默认网桥或自定义网桥直接访问你的Django容器端口(如8000),完全绕开Traefik。
  • 排查命令:
    • 列出所有Docker网桥:docker network ls
    • 查看指定网桥的网段和关联容器:docker inspect <网桥名称>
    • 定位172.19.0.8所属容器:docker ps --filter "ip=172.19.0.8"

2. Django容器端口错误暴露

  • 检查Docker Compose配置中,Django服务是否直接将端口映射到VPS公网IP(如ports: - "8000:8000"),而非仅在Traefik专属网桥内暴露。若直接映射公网端口,外部扫描器/爬虫可直接访问该端口,无需经过Traefik。
  • 正确配置应该是:Django服务仅加入Traefik的自定义网桥,不配置ports字段对外暴露端口,仅允许Traefik转发请求。

3. VPS防火墙规则漏洞

  • 检查VPS防火墙(如ufw、iptables)是否未限制外部对Django容器端口(如8000)的访问,仅开放了Traefik的80/443端口。若防火墙规则疏漏,外部请求可直接绕过Traefik访问Django端口。
  • 排查命令(以ufw为例):ufw status,确认是否有允许8000端口的规则,若有则删除。

4. 内部容器异常扫描行为

  • 172.19.0.8属于VPS本地的其他容器,可能是该容器被植入恶意扫描程序,或是你之前部署的测试/监控工具在自动扫描通用Web路径。
  • 定位到该容器后,检查其镜像来源、运行命令、日志,确认是否存在异常行为,必要时停止或删除该容器。

5. Django日志配置缺失

  • Django默认在DEBUG=False时不会记录完整的访问日志,导致你无法看到这些请求的详细信息。可修改settings.py中的LOGGING配置,开启访问日志记录:
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'access_file': {
                'level': 'INFO',
                'class': 'logging.FileHandler',
                'filename': '/var/log/django/access.log',
                'formatter': 'verbose',
            },
        },
        'formatters': {
            'verbose': {
                'format': '{levelname} {asctime} {module} {remote_addr} {path_info} {status_code}',
                'style': '{',
            },
        },
        'loggers': {
            'django.request': {
                'handlers': ['access_file'],
                'level': 'INFO',
                'propagate': False,
            },
        },
    }
    
    配置后可在日志中看到请求的来源IP、路径、状态码等关键信息,进一步定位问题。

内容的提问来源于stack exchange,提问作者Mikhail Skorikov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:23:36