HCRM博客

封锁 CentOS 系统指定端口的方法指南

在日常的服务器运维工作中,我们时常会遇到需要封闭特定端口的情况,这可能是出于安全加固,防止恶意扫描;也可能是为了停止某项服务,释放系统资源,对于使用CentOS系统的站长和管理员而言,掌握端口管理技能是保障服务器稳定与安全的基本功,本文将详细介绍在CentOS系统中,如何使用系统内置的强大工具来封禁端口。

封锁 CentOS 系统指定端口的方法指南-图1

理解端口与防火墙

在开始操作前,我们有必要简单理解端口的概念,服务器上的端口好比一栋大楼里的各个房门,每个门后对应着一种特定的网络服务(80端口通常对应Web服务,22端口对应SSH远程连接),防火墙则是这栋大楼的安保系统,它严格管控着哪些门可以进出,以及进出需要遵循的规则。

在CentOS 7及以后的版本中,firewalld是默认的动态防火墙管理器,它相比传统的iptables,配置更直观,支持动态更新,无需重启服务,直接使用iptables命令也是一种有效且经典的方法。

使用Firewalld封禁端口

firewalld通过“区域”和“服务”的概念来管理网络流量,对于封禁端口,操作非常直接。

  1. 检查防火墙状态 在开始任何操作前,请先确保firewalld服务正在运行。

    sudo systemctl status firewalld

    如果显示active (running),则表示服务已启动,若未启动,请使用sudo systemctl start firewalld命令启动它,并使用sudo systemctl enable firewalld设置开机自启。

  2. 封禁特定端口 假设我们需要封禁TCP协议的8080端口,可以执行以下命令:

    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="8080" reject'

    这条命令的含义是:添加一条永久的富规则,针对IPv4家族,拒绝所有访问TCP 8080端口的流量。 --permanent表示这条规则是永久的,没有这个参数,规则在重启后会失效。

  3. 封禁端口范围 如果需要封禁一个范围内的端口,例如从10000到10010的TCP端口,命令如下:

    封锁 CentOS 系统指定端口的方法指南-图2

    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="10000-10010" reject'
  4. 重新加载防火墙配置 在添加了永久规则后,必须重新加载防火墙才能使新规则立即生效,同时不会中断现有的连接。

    sudo firewall-cmd --reload
  5. 验证规则 你可以通过以下命令查看当前所有生效的富规则,确认封禁是否成功。

    sudo firewall-cmd --list-rich-rules

解除封禁: 如果需要重新开放被封禁的端口,只需将上述添加规则命令中的--add-rich-rule替换为--remove-rich-rule即可,解除对8080端口的封禁:

sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" port protocol="tcp" port="8080" reject'
sudo firewall-cmd --reload

使用iptables封禁端口

虽然firewalld是默认工具,但许多资深管理员依然习惯于直接使用iptables,它的规则同样高效。

  1. 封禁特定端口 封禁TCP协议的8080端口:

    sudo iptables -A INPUT -p tcp --dport 8080 -j DROP

    这条命令解释:

    • -A INPUT:将规则追加到INPUT链的末尾。
    • -p tcp:指定协议为TCP。
    • --dport 8080:指定目标端口为8080。
    • -j DROP:对匹配的数据包采取“丢弃”动作。

    如果需要封禁UDP端口,只需将-p tcp改为-p udp

  2. 封禁端口范围 封禁10000到10010的TCP端口:

    封锁 CentOS 系统指定端口的方法指南-图3

    sudo iptables -A INPUT -p tcp --dport 10000:10010 -j DROP
  3. 保存iptables规则 通过命令添加的iptables规则在系统重启后会丢失,为了永久生效,需要将当前规则保存。 在CentOS 7中,可以使用以下命令:

    sudo iptables-save > /etc/sysconfig/iptables

    或者安装iptables-services包并使用systemctl管理:

    sudo yum install iptables-services
    sudo systemctl enable iptables
    sudo service iptables save

解除封禁: 要解除使用iptables添加的规则,需要找到规则的精确位置或用删除命令,最简单的方法是使用带-D参数的相同规则:

sudo iptables -D INPUT -p tcp --dport 8080 -j DROP

然后同样需要执行保存操作,以确保重启后解除生效。

重要注意事项与最佳实践

  • 谨慎操作,避免自锁:在封禁端口时,尤其是通过远程SSH(默认端口22)连接服务器时,务必万分小心,错误地封禁了SSH端口会导致你无法再远程登录服务器,建议在服务器的本地控制台进行操作,或者设置一个“逃生舱”规则,确保你的IP地址不会受到新规则影响。
  • 明确协议类型:在封禁端口前,要清楚该端口使用的是TCP还是UDP协议,或者两者都需要封禁,某些服务(如DNS)可能同时使用两种协议。
  • 优先使用富规则firewalld的富规则表达能力更强,可以基于源IP、端口、协议等组合条件进行更精细的控制,只拒绝某个特定IP访问端口,而不是全部拒绝。
  • 定期审查规则:定期使用firewall-cmd --list-alliptables -L -n查看所有防火墙规则,清理不再需要的旧规则,保持配置的简洁和清晰,这有助于安全和故障排查。

端口管理是服务器安全防御体系中一道简单却至关重要的防线,无论是选择现代化的firewalld还是经典的iptables,核心在于理解其原理并谨慎操作,一个配置得当的防火墙,能有效将大量网络威胁隔绝在外,为你的业务提供一个稳定可靠的基础环境,对于服务器管理者来说,这项技能的价值不容忽视,它直接关系到线上服务的生死存亡。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/54938.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~