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

|  |      1villivateur      2020-03-14 21:18:40 +08:00 via Android 你是用什么方法把端口“关掉”的?防火墙吗? | 
|  |      2opengps      2020-03-14 21:19:33 +08:00 本机防火墙软件还是系统外的防护措施(比如安全组)? | 
|  |      3Orenoid OP @villivateur #1 VPS 平台的端口开放设置 | 
|  |      5jim9606      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 使用 | 
|      6monkey110      2020-03-14 21:27:55 +08:00 telnet  服务器 IP  端口 看看是不是真的没有开放 俺用的腾讯云部署了项目后 安全组完全没啥用了 端口权限全被项目接管了 | 
|  |      7manami      2020-03-14 21:29:14 +08:00 如果是 ubuntu 的话可以用 ufw,开关端口很方便 | 
|      8mikeguan      2020-03-14 21:31:32 +08:00 via Android 你自己也试了端口没法直接访问,确定这些 ip 不是 Nginx 传过来的而是直接访问的端口? | 
|  |      10Orenoid OP | 
|  |      11Athrob      2020-03-14 21:37:35 +08:00 安全组里 80 端口开放的话这些日志很正常, 没开放就不正常了. | 
|  |      13Athrob      2020-03-14 21:44:48 +08:00 这些日志都是请求的 80 端口( http 默认端口), http 请求头的 Host 字段可以随便写啊. 只是 nginx 里对不同 Host 有不同的处理, 比如不是指定的值就返回 403 或者直接断开等. | 
|  |      14Orenoid OP @opengps #12 如图  @Athrob #13 80 端口确实是开放的,但我没理解它不走我的域名的话,是怎么被发到内部端口来的 | 
|  |      15Athrob      2020-03-14 21:53:11 +08:00 | 
|  |      16villivateur      2020-03-14 22:03:16 +08:00 @Orenoid 会不会是 Nginx 把源 IP forward 到你的 backend 服务上了 | 
|  |      17Orenoid OP https://gist.github.com/Orenoid/98bc86e997ddb5c2c0a164b3afdf0b19 我把项目的 nginx 配置文件临时放到 gist 上面了,你可以看下,至于 nginx 其他配置我记得没动过。 | 
|  |      19opengps      2020-03-14 22:12:02 +08:00 @opengps 刚才有点蒙圈,搞错了,这个安全组是哪家的,既不是阿里又不是腾讯,按理说默认都是禁用端口,配置开通哪个才可以用哪个。   注意看下你的服务器是不是确实应用了这个防火墙规则,如果你只有一台机器,那看起来没问题 | 
|  |      20Orenoid OP @opengps #18 其他默认应该是连不上的,我刚刚试了下把 443 端口删掉后就请求不了,恢复就正常了。 @villivateur #16 我也不确定,17 楼我贴了 nginx 的 conf 文件,你可以看下 | 
|  |      21chenxytw      2020-03-14 22:48:52 +08:00  1 @Orenoid 看了你的 nginx 配置,你没有配置一个 default 拒绝的规则,因此你的第一个 server 也就是你正在用的这个被当成 default 的了 你可以加一个 default 配置救行了 | 
|  |      22Orenoid OP | 
|  |      24msg7086      2020-03-15 09:31:25 +08:00 直接用 IP 访问 nginx 试试? |