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