我首先尝试添加防火墙规则
sudo ufw deny 22
$ sudo ufw status
To Action From
-- ------ ----
22 DENY Anywhere
22 (v6) DENY Anywhere (v6)
但它没有起作用所以我试图停止与之对应的服务
sudo systemctl stop ssh
它暂时有效,当我们重新启动系统时,相同的端口将再次打开。如何永久关闭端口?
答案1
通常,您可以添加防火墙规则来拒绝ufw
防火墙中特定端口号(例如 22)上的所有流量,方法如下:
sudo ufw deny 22
当然,请注意,ufw
必须启用该规则才能生效:
sudo ufw enable
使用以下命令检查状态、默认值和所有规则的列表:
sudo ufw status verbose
gufw
如果您更喜欢使用命令行,您还可以安装防火墙 GUI来管理这些规则和默认值。
这样就只能通过网络使端口无法访问,在你的计算机之外localhost
。您仍然可以访问或上的端口127.0.0.1
,因为本地流量不会被防火墙过滤。侦听此端口的服务仍可运行,并且不受任何防火墙规则的影响。
如果要阻止 systemd 服务在启动时自动启动,可以禁用它。例如,要禁用 ssh 服务器,请使用:
sudo systemctl disable ssh
此命令仅禁用服务的自动启动。如果其他服务或目标需要,它仍然可以自动启动,或者您也可以手动启动它。它不会影响服务使用的端口,只是停止服务在该端口上运行和监听,但一旦启动,它就会再次监听。
如果您通常不想在您的机器上运行 ssh 服务器,您可以完全卸载该软件包:
sudo apt remove openssh-server
这会卸载(当然也停止) ssh 服务器应用程序,但不会影响任何端口和防火墙规则。