Linux 中如何查找并關掉開放的端口
我們先前寫過一篇關于如何查找 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 了。