V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Orenoid
V2EX  ›  程序员

为什么服务器对外不开放的端口还是可以被直接请求到,一堆扫描记录

  •  
  •   Orenoid ·
    Orenoid · 2020-03-14 21:12:53 +08:00 · 3867 次点击
    这是一个创建于 1746 天前的主题,其中的信息可能已经有所发展或是发生改变。

    服务器除了几个常用端口之外都关掉了,接口都是走 nginx 域名转发。
    但是我翻服务日志(不是 nginx 日志)发现还是有不少请求发进来了,而且还有直接用我服务器公网 ip 请求的。
    我自己试了下确实没办法对端口直接发请求,不知道他们到底怎么请求的。
    是有什么安全漏洞吗?还是我哪里操作不对,没什么运维经验,还请轻喷。
    2020314211035dama.png

    第 1 条附言  ·  2020-03-14 22:56:12 +08:00
    我错了。。标题这说法显然是不对的,翻了下 nginx 日志,上面的记录都有对应的请求日志,所以还是从 nginx 转发过来的。
    显然是我 nginx 配置不对造成的,感谢各位的回复和解答。
    25 条回复    2020-03-15 15:55:35 +08:00
    villivateur
        1
    villivateur  
       2020-03-14 21:18:40 +08:00 via Android
    你是用什么方法把端口“关掉”的?防火墙吗?
    opengps
        2
    opengps  
       2020-03-14 21:19:33 +08:00
    本机防火墙软件还是系统外的防护措施(比如安全组)?
    Orenoid
        3
    Orenoid  
    OP
       2020-03-14 21:22:43 +08:00
    @villivateur #1 VPS 平台的端口开放设置
    Orenoid
        4
    Orenoid  
    OP
       2020-03-14 21:22:59 +08:00
    @opengps #2 安全组
    jim9606
        5
    jim9606  
       2020-03-14 21:26:33 +08:00   ❤️ 1
    通常 nginx 会指定其中一个域名为默认 server,当 nginx 不知道请求是哪个域名(例如请求头没有 Host)时会匹配到默认 server,参见 ( https://nginx.org/en/docs/http/ngx_http_core_module.html#listen )中的 default_server
    建议你单独指定一个 server 并对请求返回 http 错误,不过建议排除.well-known 目录供 ACME 使用
    monkey110
        6
    monkey110  
       2020-03-14 21:27:55 +08:00
    telnet 服务器 IP 端口
    看看是不是真的没有开放

    俺用的腾讯云部署了项目后 安全组完全没啥用了 端口权限全被项目接管了
    manami
        7
    manami  
       2020-03-14 21:29:14 +08:00
    如果是 ubuntu 的话可以用 ufw,开关端口很方便
    mikeguan
        8
    mikeguan  
       2020-03-14 21:31:32 +08:00 via Android
    你自己也试了端口没法直接访问,确定这些 ip 不是 Nginx 传过来的而是直接访问的端口?
    Orenoid
        9
    Orenoid  
    OP
       2020-03-14 21:31:47 +08:00
    @monkey110 #6 试了下,telnet 确实连不上(已经拿百度对比过效果)
    Orenoid
        10
    Orenoid  
    OP
       2020-03-14 21:34:31 +08:00
    @mikeguan #8
    不排除这种可能,nginx 我也不熟
    只是看到请求的 host 里直接是公网 ip 才这么猜测的,如果是走域名,日志里的 host 打印的是域名
    Athrob
        11
    Athrob  
       2020-03-14 21:37:35 +08:00
    安全组里 80 端口开放的话这些日志很正常, 没开放就不正常了.
    opengps
        12
    opengps  
       2020-03-14 21:40:08 +08:00
    @Orenoid 4#晒一下你的安全组配置吧(注意隐藏掉你的安全管控端口),看看是不是规则冲突,对某些范围开放了
    Athrob
        13
    Athrob  
       2020-03-14 21:44:48 +08:00
    这些日志都是请求的 80 端口( http 默认端口), http 请求头的 Host 字段可以随便写啊.
    只是 nginx 里对不同 Host 有不同的处理, 比如不是指定的值就返回 403 或者直接断开等.
    Orenoid
        14
    Orenoid  
    OP
       2020-03-14 21:48:41 +08:00
    @opengps #12 如图 ![image.png]( https://i.loli.net/2020/03/14/zO8M61or9bjiPl3.png)
    @Athrob #13 80 端口确实是开放的,但我没理解它不走我的域名的话,是怎么被发到内部端口来的
    Athrob
        15
    Athrob  
       2020-03-14 21:53:11 +08:00
    是通过 nginx 转发到 hooks.py 这个服务吗? 可能规则没调好匹配不到规则的默认请求都转发到 hooks.py 了.
    villivateur
        16
    villivateur  
       2020-03-14 22:03:16 +08:00
    @Orenoid 会不会是 Nginx 把源 IP forward 到你的 backend 服务上了
    Orenoid
        17
    Orenoid  
    OP
       2020-03-14 22:03:27 +08:00
    https://gist.github.com/Orenoid/98bc86e997ddb5c2c0a164b3afdf0b19
    我把项目的 nginx 配置文件临时放到 gist 上面了,你可以看下,至于 nginx 其他配置我记得没动过。
    opengps
        18
    opengps  
       2020-03-14 22:05:35 +08:00
    @Orenoid 全都是接受,你没设置拒绝条目啊
    opengps
        19
    opengps  
       2020-03-14 22:12:02 +08:00
    @opengps 刚才有点蒙圈,搞错了,这个安全组是哪家的,既不是阿里又不是腾讯,按理说默认都是禁用端口,配置开通哪个才可以用哪个。
    注意看下你的服务器是不是确实应用了这个防火墙规则,如果你只有一台机器,那看起来没问题
    Orenoid
        20
    Orenoid  
    OP
       2020-03-14 22:12:56 +08:00
    @opengps #18 其他默认应该是连不上的,我刚刚试了下把 443 端口删掉后就请求不了,恢复就正常了。
    @villivateur #16 我也不确定,17 楼我贴了 nginx 的 conf 文件,你可以看下
    chenxytw
        21
    chenxytw  
       2020-03-14 22:48:52 +08:00   ❤️ 1
    @Orenoid 看了你的 nginx 配置,你没有配置一个 default 拒绝的规则,因此你的第一个 server 也就是你正在用的这个被当成 default 的了
    你可以加一个 default 配置救行了
    Orenoid
        22
    Orenoid  
    OP
       2020-03-14 22:53:48 +08:00
    @chenxytw #21
    好的,非常感谢。
    我刚刚想起来去翻了下 nginx 日志,拿上面记录里的几个路径搜索了一下,发现 nginx 里都有相应记录,看来确实是从 nginx 转发过来的。
    Orenoid
        23
    Orenoid  
    OP
       2020-03-14 23:10:10 +08:00
    @chenxytw #21 好奇再请教下,我要怎么发送 http 请求才能复现这种情况呢。。
    msg7086
        24
    msg7086  
       2020-03-15 09:31:25 +08:00
    直接用 IP 访问 nginx 试试?
    chenxytw
        25
    chenxytw  
       2020-03-15 15:55:35 +08:00
    @Orenoid 最简单的方法就是配置个 host 指向你的 ip, 然后通过那个 host 访问了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1052 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 20:04 · PVG 04:04 · LAX 12:04 · JFK 15:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.