Linux端口可通过防火墙规则或停止相关服务,使用iptables -A INPUT -p tcp --dport 端口号 -j DROP
命令可阻止指定端口的TCP访问。
Linux系统中,关闭端口的操作通常涉及防火墙配置或停止相关服务,以下是几种常见的关闭端口的方法:

使用iptables命令关闭端口
步骤 |
命令示例(以关闭80端口为例) |
说明 |
查看当前规则 |
sudo iptables -L |
列出当前的防火墙规则,确认端口状态 |
添加规则关闭端口 |
sudo iptables -A INPUT -p tcp --dport 80 -j DROP |
添加规则,丢弃所有TCP协议的80端口数据包 |
保存规则 |
sudo service iptables save |
保存规则,确保重启后规则依然有效(适用于CentOS等系统) |
使用firewalld命令关闭端口
步骤 |
命令示例(以关闭80端口为例) |
说明 |
查看已开放端口 |
sudo firewall-cmd --list-ports |
查看当前防火墙开放的端口列表 |
移除端口规则 |
sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent |
从公共区域移除80端口的TCP协议开放规则,--permanent 表示永久生效 |
重新加载规则 |
sudo firewall-cmd --reload |
应用新的防火墙规则 |
使用ufw命令关闭端口
步骤 |
命令示例(以关闭80端口为例) |
说明 |
查看当前状态 |
sudo ufw status |
查看防火墙的当前状态和规则 |
拒绝端口访问 |
sudo ufw deny 80/tcp |
添加规则,拒绝所有TCP协议的80端口访问 |
通过停止服务关闭端口
步骤 |
命令示例(以关闭Nginx服务为例) |
说明 |
查找服务名称 |
sudo lsof -i :80 |
查看占用80端口的进程,通常是Nginx或Apache等Web服务 |
停止服务 |
sudo systemctl stop nginx |
停止Nginx服务,释放80端口 |
禁用服务自启 |
sudo systemctl disable nginx |
禁止Nginx服务在系统启动时自动运行 |
使用netstat或ss命令结合kill关闭端口
工具 |
命令示例(以关闭80端口为例) |
说明 |
netstat |
netstat -tuln | grep 80 |
查看监听80端口的进程PID |
kill |
sudo kill <PID> |
根据PID终止进程,关闭端口 |
ss |
sudo ss -tulnp | grep ":80" |
查看监听80端口的进程信息 |
修改配置文件关闭端口
文件路径 |
操作说明 |
示例 |
/etc/ssh/sshd_config |
修改SSH服务默认端口 |
将#Port 22 改为Port 0 并重启SSH服务 |
/etc/services |
注释或删除端口映射 |
找到目标端口行,添加注释符号 |
方法对比与选择建议
方法 |
优点 |
缺点 |
适用场景 |
防火墙规则(iptables/firewalld/ufw) |
灵活控制入站/出站流量,支持永久生效 |
需要理解防火墙规则语法 |
需要长期封锁端口时 |
停止服务 |
直接关闭服务,彻底释放资源 |
可能影响依赖该端口的服务 |
已知端口对应具体服务时 |
kill命令 |
快速终止进程,立即生效 |
仅临时关闭,重启后恢复 |
临时调试或紧急处理 |
注意事项
- 权限要求:所有操作需使用
root
权限或sudo
命令
- 持久化设置:部分命令(如iptables)需手动保存规则才能永久生效
- 服务影响:关闭端口前需确认不会影响系统关键服务
- 防火墙兼容性:不同Linux发行版默认防火墙工具不同(如CentOS常用firewalld,Ubuntu用ufw)
常见问题解答(FAQs)
问:如何验证端口是否成功关闭?
答:可使用以下命令检查:
netstat -tuln | grep <端口号> # 检查端口监听状态
sudo firewall-cmd --list-all # 查看firewalld规则
sudo iptables -L # 查看iptables规则
若没有相关端口的监听记录且防火墙规则已生效,则表示关闭成功。

问:关闭端口后如何恢复访问?
答:根据关闭方式选择对应恢复操作:
- 防火墙规则:移除阻断规则(如
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
)
- 停止服务:重新启动对应服务(如
sudo systemctl start nginx
)
- 修改配置文件:恢复配置文件并重启网络服务(如`sudo systemctl restart
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/72316.html