5154

Good Luck To You!

CentOS 6.8如何修改SSH端口并配置iptables防火墙?

在服务器管理领域,安全始终是重中之重,对于广泛使用的CentOS 6.8系统而言,SSH(Secure Shell)是远程管理的核心工具,其默认的22端口因其广为人知而成为自动化攻击和暴力破解的首要目标,将SSH端口更改为一个非标准端口,是提升服务器安全性的基础且有效的一步,本文将详细、系统地介绍在CentOS 6.8上安全更改SSH端口的完整流程,并涵盖相关的防火墙和SELinux配置,确保操作既成功又安全。

CentOS 6.8如何修改SSH端口并配置iptables防火墙?

为何需要更改SSH默认端口

更改SSH端口的主要动机是增强安全性,这并非一种能彻底杜绝攻击的“银弹”,而是一种被称为“通过模糊化实现安全”的策略,其核心优势在于:

  • 减少自动化攻击: 大量的网络扫描机器人会持续扫描互联网上的服务器,专门针对22、21、3389等常见端口进行攻击,将SSH端口更换为一个不常用的高位端口(如大于1024的端口),可以有效过滤掉绝大部分这类无差别攻击。
  • 降低系统资源消耗: 每一次失败的登录尝试都会消耗一定的CPU和内存资源,并产生日志记录,减少无意义的攻击流量,可以降低服务器的负载,保持日志的整洁,便于管理员发现真正的安全威胁。
  • 增加攻击者的成本: 攻击者必须先进行端口扫描才能发现你的SSH服务,这一额外的步骤增加了他们的时间和精力成本,使得许多低水平的攻击者望而却步。

更改SSH端口的详细步骤

整个过程可以分为准备工作、修改配置、配置防火墙、验证与清理四个关键阶段,每一步都至关重要,请务必谨慎操作。

第一阶段:准备工作

在进行任何配置更改之前,充分的准备是避免灾难性错误的关键。

  1. 备份配置文件: 这是最重要的习惯,SSH的主配置文件是/etc/ssh/sshd_config,在修改前,请务必备份它。

    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

    如果后续操作出现问题,可以随时通过此备份文件恢复。

  2. 选择一个新端口: 选择一个合适的端口至关重要,建议选择一个1024到65535之间的未被其他服务占用的端口,我们可以选择2222作为新的SSH端口,您可以使用以下命令检查端口是否被占用:

    netstat -tunlp | grep 2222

    如果该命令没有任何输出,说明端口2222当前是空闲的。

第二阶段:修改SSH配置文件

我们可以开始编辑SSH的配置文件了,这里我们使用vi编辑器,您也可以使用nano等您熟悉的工具。

  1. 打开配置文件:

    vi /etc/ssh/sshd_config
  2. 修改Port指令: 在文件中找到#Port 22这一行,号表示该行是注释状态,为了实现平滑过渡,我们不建议直接修改它,而是在其下方添加一行新的端口配置,这样,SSH服务将同时监听22和新端口,确保在新端口验证成功前,旧的连接方式依然可用。

    #Port 22
    Port 2222

    保存并退出文件(在vi中,按Esc键,输入wq并回车)。

    CentOS 6.8如何修改SSH端口并配置iptables防火墙?

第三阶段:配置防火墙与SELinux

这是最容易被忽略,也是最关键的一步,CentOS 6.8默认使用iptables作为防火墙,并且启用了SELinux,两者都必须正确配置,否则新端口将无法访问。

  1. 配置iptables防火墙: 需要添加一条规则,允许TCP流量通过新的SSH端口2222

    iptables -I INPUT -p tcp --dport 2222 -j ACCEPT

    这条命令将规则插入到INPUT链的顶部,之后,必须保存规则,否则服务器重启后规则会丢失。

    service iptables save

    重启iptables服务使新规则生效。

    service iptables restart
  2. 配置SELinux: SELinux(Security-Enhanced Linux)会限制进程的访问权限,默认情况下,它只允许SSH进程(sshd)监听ssh_port_t类型所定义的端口(即22),我们需要将新端口添加到这个类型中。 确保您已安装semanage命令工具,它通常包含在policycoreutils-python包中。

    yum install policycoreutils-python -y

    使用semanage为新端口添加SELinux上下文。

    semanage port -a -t ssh_port_t -p tcp 2222

    执行此命令后,SELinux就会允许sshd进程合法地监听2222端口。

第四阶段:重启服务、验证与清理

所有配置都已就绪,现在可以重启SSH服务了。

  1. 重启SSH服务:

    service sshd restart

    服务重启后,它将开始监听22和2222两个端口。

  2. 验证新端口连接: 请不要立即关闭当前的SSH连接! 打开一个新的终端窗口,使用新端口尝试连接服务器,这是确保操作万无一失的保险措施。

    CentOS 6.8如何修改SSH端口并配置iptables防火墙?

    ssh -p 2222 your_username@your_server_ip

    如果能够成功登录,恭喜您,端口更改的核心步骤已经完成。

  3. 清理旧端口配置: 在确认新端口工作正常后,为了彻底关闭旧端口,需要再次编辑/etc/ssh/sshd_config文件。

    vi /etc/ssh/sshd_config

    Port 22这一行注释掉(在行首加),或者直接删除,只保留Port 2222

    #Port 22
    Port 2222

    保存文件后,再次重启SSH服务。

    service sshd restart

    服务器仅监听2222端口,您还可以从iptables中移除22端口的规则(如果存在的话),进一步收紧安全策略。

相关问答FAQs

问题1:我已经按照步骤修改了端口和防火墙,但仍然无法通过新端口连接,最可能的原因是什么?

解答: 最常见的原因是SELinux的限制,许多管理员在配置iptables后忽略了SELinux,导致连接被内核级别的安全策略拒绝,您可以使用命令semanage port -l | grep ssh来查看当前SELinux允许的SSH端口列表,如果新端口(如2222)不在此列表中,就必须执行semanage port -a -t ssh_port_t -p tcp 2222命令将其添加进去,请再次确认iptables规则是否已正确保存(service iptables save)并且没有其他拒绝规则(如-j DROP-j REJECT)在更靠前的位置阻止了连接。

问题2:我可以同时配置多个SSH监听端口吗?这样做有什么用?

解答: 是的,您完全可以在/etc/ssh/sshd_config文件中通过添加多个Port指令来让SSH服务同时监听多个端口。

Port 22
Port 2222
Port 3333

这种配置最常见的用途是在进行端口迁移或维护时提供一个过渡期,如本文所述,您可以先保留旧端口(22)并添加新端口(2222),在充分测试和确认新端口稳定可用后,再移除旧端口的配置,这可以有效避免因配置失误导致被锁在服务器之外的风险,在正常的生产环境中,出于安全考虑,建议只开放一个经过精心选择的SSH端口。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.