我有一台 Gitlab 服务器,它是 VMWare Esxi 上的 Ubuntu 18.04 虚拟机。我想在这台机器上启用防火墙,为此我安装了gufw
。问题是,当我运行sudo netstat -ntpl | grep LISTEN
命令时,我可以看到许多端口正在监听。由于 Gitlab,许多端口正在监听。例如,组件 Gitlab 导出器正在监听端口 9168,还有其他端口也在监听。
如果我使用 开启防火墙gufw
,是否需要为80 (HTTP)
和22 (SSH)
仅添加传入规则?还是需要为上述链接中提到的不同组件打开不同的端口?
这是一个非常简单的 Gitlab 服务器安装,其目的只是版本控制。我不需要 CI/CD 等高级功能。
答案1
默认情况下,如果您在生产中托管服务器并面向公共互联网,那么您实际上应该只允许从外部访问以下端口:
- 80/443:通过 HTTP 进行 Web 访问 (
https://gitlab.example.com/
) - 22:通过 SSH 访问 Git(
[email protected]/…
)
GitLab 内部需要大多数其他端口*,以便服务之间进行通信。例如,查询数据库,或将指标发送到用于内部性能监控的 Prometheus。但这些端口不应该从外部访问,而且——如果我没记错的话——无论如何都应该只绑定到本地主机,所以即使没有设置防火墙,你也不应该能够从外部访问它们。
* 例如,容器注册表可以绑定到另一个端口,以便您可以使用相同的主机名访问它,例如gitlab.example.com:5050
,而不需要另一条路径。