我们先前写过一篇关于如何查找 Linux 中开放的端口的文章,大家感兴趣可以查阅一下:
基于服务器安全性维护的目的,查看所有开放的端口是通常采取的第一步,从中检查出可疑或者不必要的端口并将其关掉。
关于查看开放的端口,方法不止一种,除了前文中提到的使用 lsof 命令以外,还可以使用 ss 命令。
查看开放的端口
今天我们就介绍一下如何使用 ss 命令来查看 Linux 系统中开放的端口。获取所有正在监听的接口,可以使用 -l 选项,不过我们可以再额外增加使用另外一个选项 t 来监听所有 TCP 端口,如下:
如果希望同时监听 TCP 和 UDP 端口,可以使用如下选项组合命令:
要获取每个服务监听的端口,可以使用 -n 选项,然后结合 grep 命令来过滤结果,如下所示:
找到开放的端口后,就可以选择性地关闭它们。
关闭端口
要关闭端口,首先你需要找到位于该端口的服务名称并停掉该服务,可以使用 ss 命令的 -p 选项,如下所示:
上图所示的例子中,端口号 80 被 nginx 服务所占据,如果我们想要关闭该端口,可以使用如下命令停止 nginx 服务:
如果 nginx 服务被设置了自启动(即每次服务器重启时,nginx 都会自动启动),那么我们可以使用如下命令来禁用该服务:
不过最好还是更改防火墙规则,比如在 Ubuntu 中,可以阻止 UFW 中的端口号 80(即 nginx 所使用的端口)。
首先,检查 UFW 的状态:
如果其状态为 inactive,可以使用如下命令启用:
然后使用 deny 选项 来阻止某个端口号:
最终结果是:
如上图所示,开放的端口中已经没有 nginx 了。