Linux端口的关闭和启用

在Linux中,关闭端口实际上意味着停止与之关联的进程。使用netstat-anp命令找出监听特定端口的进程ID,然后使用kill命令终止该进程以关闭端口。例如,关闭22号端口SSH服务,需找到并杀死对应PID的sshd进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux下 面貌似没有什么直接开启或者关闭端口的命令,因为若仅仅只是开启了端口而不把它与进程相联系的话,端口的开启与关闭就显得毫无意义了(开了端口却没有程序 处理进来的数据)。也就是说,Linux里面端口的活动与进程是紧密相连的,如果想要关闭某个端口,那么只要杀掉它对应的进程就可以了。

例如要关闭22号端口:

$ netstat -anp | grep :22

tcp   0    0 0.0.0.0:22      0.0.0.0:*     LISTEN     1666/sshd

# -a 显示所有活动的TCP连接,以及正在监听的TCP和UDP端口

# -n 以数字形式表示地址和端口号,不试图去解析其名称(number)

# -p 列出与端口监听或连接相关的进程(有个地方需要注意,下面会提到)(pid)

知道了22号端口对应的进程ID 1666,只要:

$ kill 1666

即可。

其中“-p”选项需要注意一个权限的问题,如果在普通用户登录的shell里面执行netstat命令,那么只能列出拥有该普通用户权限的相关进程,如果想要看到所有的端口情况,最好还是切到root。

附带几个netstat常用选项用法:

$ netstat -tn    # 列出所有TCP协议的连接状态

# -t 只显示与TCP协议相关的连接和端口监听状态,注意和-a有区别(tcp)

$ netstat -tuln    # 列出所有inet地址类的端口监听状态

### 如何在 Linux 中通过防火墙关闭特定端口 #### 使用 `firewalld` 关闭指定端口 如果当前系统正在使用 `firewalld` 作为主要的防火墙管理工具,则可以通过以下命令移除已开放的端口: ```bash firewall-cmd --zone=public --remove-port=<端口号>/<协议> --permanent ``` 例如,要关闭 TCP 协议下的 80 端口,可以执行如下命令[^2]: ```bash firewall-cmd --zone=public --remove-port=80/tcp --permanent ``` 完成上述操作后,需重新加载 `firewalld` 的配置以使更改生效: ```bash firewall-cmd --reload ``` 为了确认该端口已被成功关闭,可运行查询命令: ```bash firewall-cmd --query-port=80/tcp ``` 若返回值为 `no`,则表示端口已经成功关闭[^3]。 --- #### 使用 `iptables` 关闭指定端口 对于使用 `iptables` 进行防火墙管理的情况,可通过添加拒绝规则实现关闭特定端口的功能。以下是具体方法: 创建一条规则阻止对目标端口的所有流量(假设端口为 80): ```bash iptables -A INPUT -p tcp --dport 80 -j DROP ``` 保存这些规则以便重启后仍然有效(不同发行版可能有不同的保存方式)。例如,在 CentOS 上可以执行以下命令保存并启用服务: ```bash service iptables save systemctl enable iptables.service ``` 注意:当从 `firewalld` 切换至 `iptables` 时,应先停止并禁用 `firewalld` 服务,然后再启动设置 `iptables`[^1]。 --- #### 总结 无论是采用 `firewalld` 还是 `iptables` 来管理防火墙,都可以灵活控制哪些端口处于打开状态以及哪些应该被屏蔽掉。选择合适的工具取决于具体的环境需求个人偏好。务必记得测试修改后的策略是否按预期工作,并定期审查安全日志文件来发现潜在威胁[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值