如何保护CentOS服务器免受网络攻击

来源:站长论坛作者:勇士头衔:草根站长
导读:本期聚焦于勇士创作的《如何保护CentOS服务器免受网络攻击》,敬请观看详情。一台直接暴露公网的CentOS主机,往往在启机后几分钟内就会收到批量端口扫描与SSH暴破尝试。要从网络层削减这类风险,第一步应是收敛暴露面:用firewalld限制仅开放业务必需端口,并默认拒绝其余入站流量。SSH作为最高频攻击入口,需禁用密码登录、改用密钥认证,同时将默认22端口变更或借助端口敲门隐藏。系统层面应开启SELinux强制模式,限制进程越权;用fail2ban自动封禁反复试探的IP。定期更新内核与软件包,修复已知漏洞,也能显著降低被勒索或植入挖矿木马的概率。

CentOS作为企业环境中广泛应用的Linux发行版,一旦暴露在公共网络中,便会持续面临端口扫描、暴力破解以及漏洞利用等多种安全威胁。保护CentOS服务器免受网络攻击,绝非依靠单一的安全工具即可一劳永逸,而是需要从防火墙策略配置、远程登录安全加固、系统内核防护以及入侵检测等多个层面协同入手,构建起纵深防御体系。

一、使用firewalld构建网络层白名单防御

当下多数CentOS系统默认集成了firewalld动态防火墙管理工具。该工具的核心设计理念在于区域与服务的绑定,通过严格限制入站规则来大幅减少系统的攻击面。最基础且有效的防护策略是采用白名单模式,即仅放行业务真正需要使用的端口。例如,对于Web服务器,仅开放80和443端口;对于数据库服务,若无需公网直接访问,则彻底不开放相应端口。

这种白名单模式由守护进程统一管理,相较于直接编写底层的iptables规则,不易出现配置错误,且重启后规则不会丢失。但在操作过程中需格外谨慎,若误删SSH服务可能导致远程连接锁死。因此,在调整防火墙规则前,务必通过服务器控制台保留备用访问通道。

# 查看当前默认区域与已放行的服务列表
firewall-cmd --get-default-zone
firewall-cmd --list-all

# 移除默认放行的不必要服务,仅保留核心业务需求
firewall-cmd --permanent --remove-service=dhcpv6-client
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

# 设置默认区域为public并拒绝所有未明确允许的入站流量
firewall-cmd --set-default-zone=public
firewall-cmd --reload

二、全面加固SSH远程登录入口

SSH服务是CentOS服务器最常被攻击者盯上的入口。攻击者常利用自动化脚本对默认的22端口进行密码暴力破解,一旦存在弱密码被猜中,攻击者即可直接获取系统最高权限。针对此类威胁,最有效的防护手段是彻底禁用密码认证,全面采用公钥登录机制。通过修改/etc/ssh/sshd_config配置文件,关闭密码认证并限定仅允许密钥登录,同时建议更改默认监听端口,以大幅降低被自动化扫描命中的概率。

在客户端生成密钥对后,需将公钥准确写入服务器的~/.ssh/authorized_keys文件中。此举使得暴力破解工具完全无从下手,因为服务端不再接受任何形式的密码校验。在此过程中,需特别注意私钥文件的权限必须设置为600,否则SSH服务会出于安全考虑拒绝使用该密钥。除密钥登录外,还可结合端口敲门技术进一步隐藏SSH端口,只有当客户端按特定顺序访问预设的关闭端口后,防火墙才会临时开放真实的SSH端口,这对阻断自动化扫描极为有效。

# 备份原配置文件以防误操作
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

# 使用sed修改关键参数:更改端口、禁用密码认证、启用密钥认证
sed -i 's/^#Port 22/Port 5022/' /etc/ssh/sshd_config
sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/^#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config

# 重启sshd服务使新配置生效
systemctl restart sshd

三、启用SELinux强制访问控制与系统资源限制

SELinux是CentOS系统自带的安全子系统,提供强大的强制访问控制功能。即使某个服务进程不幸被攻破,SELinux也能严格限制其越权访问系统其他资源,从而将损害控制在最小范围内。然而,许多管理员为了省事或规避配置报错,常将其设为disabled状态,这反而极大地放大了系统的安全风险。

在实际运维中,SELinux策略有时确实会导致正常服务报错。面对此类情况,正确的做法是通过semanagesetsebool工具调整相应的布尔值或上下文标签。例如,当Web服务需要写入自定义目录时,应为其打上正确的httpd上下文标签,而非简单粗暴地禁用防护。此外,利用ulimit或systemd的ResourceControl功能限制特定服务的资源占用,也能有效缓解拒绝服务类攻击对系统整体稳定性的冲击。

# 查看当前SELinux的工作模式
getenforce

# 临时设置为强制模式
setenforce 1

# 修改配置文件以确保重启后依然保持强制模式
sed -i 's/^SELINUX=.*/SELINUX=enforcing/' /etc/selinux/config

四、部署fail2ban实现自动化入侵阻断

fail2ban是一款通过监控日志文件来识别异常行为的安全工具。它能够检测出频繁失败的登录尝试或恶意请求,并调用防火墙规则动态封禁来源IP。作为对抗暴力破解型网络攻击的轻量级利器,fail2ban可实现零人工干预的自动化防护。

在部署fail2ban时,需为其创建本地配置文件以定义监控规则。需注意的是,不同版本的CentOS系统日志路径可能有所变化,且封禁时间设置过短容易被攻击者利用轮换IP绕过。因此,建议配合较长的封禁时间,并接入告警通知系统,以便及时掌握安全态势。它不仅适用于SSH服务,还可扩展用于保护Nginx、Postfix等多种网络服务。

# 安装epel源及fail2ban
yum install epel-release -y
yum install fail2ban -y

# 创建本地独立配置文件
cat > /etc/fail2ban/jail.local << 'EOF'
[sshd]
enabled = true
port = 5022
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600
EOF

# 启动服务并设置为开机自启
systemctl enable fail2ban
systemctl start fail2ban

五、建立持续的系统与软件更新机制

未及时修补的已知漏洞是网络攻击的主要载体。CentOS系统自带的yum包管理器可统一推送安全更新,用于关闭已知的远程执行缺陷。定期执行安全更新并检查系统中残留的旧版本软件包,是维持系统安全基线的必要操作。

对于无法立即重启以加载新内核的关键业务服务器,至少应优先更新openssl、glibc等底层基础库。同时,建议启用如yum-cron等自动安全更新工具,避免因人为疏忽导致安全补丁严重滞后。通过建立常态化的更新机制,能够有效收敛系统漏洞面。

# 仅安装与安全相关的更新补丁
yum update --security -y

# 查看当前系统中可更新的软件列表
yum list updates

# 清理不再需要的无用依赖包
yum autoremove -y

综合来看,保护CentOS服务器免受网络攻击并无一劳永逸的银弹。唯有将防火墙端口收敛、SSH密钥登录加固、SELinux强制访问控制、fail2ban自动封禁以及持续的软件更新机制组合落地,才能构建起兼顾业务可用性与系统安全性的纵深防御体系,确保服务器在复杂的网络环境中稳定运行。

CentOS防火墙配置入侵防护修改时间:2026-08-04 01:39:39

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。