CentOS 7 初始配置:旧环境维护指南


出版日期:

更新:


技术文章 > CentOS 7 初始配置:旧环境维护指南

2026 状态和安全使用

结论:不要在 CentOS Linux 7 上开始新的生产版本:它已于 2024 年 6 月 30 日结束生命。在受支持的 RHEL 系列系统上,通过 DNF 更新、创建指定管理用户、有意配置时间和主机名、保持防火墙启用并保持 SELinux 强制执行。

你将学到什么

  • 原始 CentOS 7 清单试图建立哪些基线设置。
  • 生命周期、软件包管理、systemd、firewalld 和 SELinux 如何改变 2026 年的决策。
  • 如何将旧命令序列视为迁移证据而不是安全构建标准。

适用人群:继承 CentOS 7 主机或将旧 Runbook 转换为受支持平台的管理员。

截至 2026 年的适用情况:以下命令保留为历史 CentOS 7 材料。不要永久禁用 SELinux 来使应用程序正常运行;红帽建议仅在必要时强制执行模式和临时许可诊断。构建并测试迁移,而不是依赖存档的包。

安全注意事项:原始文章中的命令和配置示例尚未在当前生产环境中重新运行。应用之前,请在单独的测试环境中验证支持的版本、备份、访问控制和回滚步骤。

官方主要来源

概述。

本历史教程记录了 CentOS 7.6(1810)的初始配置。部署新系统时,应根据受支持发行版的当前工具和安全指南完成相同目标。

目录

  1. 基本设置
  2. 摘要

1. 基本设置

本节介绍了安装CentOS后需要立即进行的基本设置。

1-1. 检查操作系统

首先,检查你是否安装了正确的操作系统。

[root@hostname ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

CentOS Linux release 7.6.1810 (Core)" 是已安装的操作系统。 检查它是否正确。

1-2. 安装工具

安装后,诸如ifconfig等基本命令不能立即执行。 因此,进行安装时,基本的网络和其他命令可以由yum命令来执行。

如果有必要,请进行这项工作,因为可以用 "yum -y update "对已经安装的东西进行更新。

[root@hostname ~]# yum install -y net-tools
[root@hostname ~]# yum install -y wget
[root@hostname ~]# yum install -y tcpdump
[root@hostname ~]# yum install -y traceroute

net-tools:安装后可以使用ifconfig命令和其他命令。

wget:通过 HTTP、HTTPS 等协议获取资源。

tcpdump:捕获并分析网络数据包。抓包内容可能包含敏感数据,应严格控制访问权限。

traceroute:探测到目标地址的网络路径,但过滤策略可能导致结果不完整。

1-3. 历史 SELinux 设置

原教程禁用了 SELinux。此做法会削弱主机防护,不适用于当前部署;应保持 enforcing 模式,并修正文件标签或策略规则。

如果受控诊断需要 permissive 模式,应仅临时切换,记录拒绝日志后恢复 enforcing。SELinux 既是预防性的强制访问控制机制,也能限制系统被入侵后的影响。以下命令仅保留原 CentOS 7 操作记录。

原停用步骤如下:

[username@hostname ~]$ getenforce
Disabled

如果不是 "禁用",可以通过以下程序进行更改。

[username@hostname ~]$ vi /etc/selinux/config


config【改变之前】


SELINUX=enforcing


config【变化后】


SELINUX=disabled

原示例修改的是 SELINUX,而不是 SELINUXTYPE。禁用 SELinux 会降低系统的纵深防御能力;新部署应优先保留 enforcing,并为应用修正标签或策略。只有在隔离的旧版兼容性测试中,才应把此设置作为临时诊断手段。

该配置需要重启后生效。修改前应保留可回滚的控制台访问方式。

1-4. 额外的业务用户

日常管理应使用具名的普通账号,并仅在需要时通过 sudo 或 su 提升权限。这样可以减少误操作范围,同时保留更清晰的审计记录。

即使是个人学习服务器,也不应把长期 root 登录视为安全做法。应按最小权限原则分配账号和目录权限,并在确认替代账号能够管理系统后禁止远程 root 登录。

以下是添加用户的步骤。

[root@hostname ~]# useradd xxxxxx
[root@hostname ~]# passwd xxxxxx

注意:xxxxxx 表示新增账号。请设置唯一且足够长的密码,并优先按组织策略使用密码管理器或 SSH 公钥认证。

1-5. 更改根用户密码

如果你不是根用户,用su-切换到根用户,并执行以下命令

[username@hostname ~]$ su -
[root@hostname ~]# passwd

不要保留初始密码,也不要使用 “root”“password”“1234” 等常见值。固定的“八位复杂密码”已经不足以作为现代建议;应使用更长、唯一、不可预测的密码,并结合密钥认证、登录速率限制和多因素认证等措施。

公开网络上的服务器会持续收到自动化登录尝试,与服务器规模无关。密码策略和远程登录限制都应在上线前验证。

1-6. 禁止非操作性用户登录的配置(禁止根用户和其他用户的登录)。

限制允许远程登录的账号,并禁用直接 root 登录。root 会绕过许多权限边界,但这不等于“所有安全措施都被禁用”;网络控制、审计和强制访问控制仍然重要。

下面的旧版示例使用 AllowUsers 限制 SSH 账号。修改前应打开第二个会话,验证新增账号及其提权方式,避免把自己锁在服务器之外。

[username@hostname ~]$ su -
[root@hostname ~]# vi /etc/ssh/sshd_config


sshd_config【改变之前】


#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10


sshd_config【变化后】


#LoginGraceTime 2m
PermitRootLogin no
AllowUsers xxxxxx
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

注意:xxxxxxxx是你刚刚添加的操作用户名。


这里要注意的一点是,如果AllowUsers的名字不对,就没有人能够登录,所以要仔细检查用户名。

检查语法并重新启动sshd。

[root@hostname ~]# /usr/sbin/sshd -t
[root@hostname ~]# systemctl restart sshd

保持当前会话不退出,在第二个会话中确认普通账号可登录并能按预期提权。验证成功后,再确认远程 root 登录已被拒绝。


1-7. 时间同步

检查时间是否同步。 有时,服务器的时间不同步,所以日志输出的日期和时间与预期的不同,需要很长的时间来分析这个问题。

检查时间同步进程的启动情况(chronyd)。 检查时间同步状态。 注意,CentOS7是'chronyd',但更早的是'ntpd',所以如果你是在6或更早的版本,要小心。

[root@hostname ~]# ps aux | grep chronyd
chrony     567  0.0  1.3 117804 13664 ?        SL    5月04   0:04 /usr/sbin/chronyd
root     32489  0.0  0.0 112732   972 pts/1    S+   16:30   0:00 grep --color=auto chronyd
[root@hostname ~]# timedatectl
      Local time: 日 2020-11-29 16:30:43 JST
  Universal time: 日 2020-11-29 07:30:43 UTC
        RTC time: 日 2020-11-29 07:30:43
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

如果 "本地时间 "与当前时间相符,"NTP启用 "是,"NTP同步 "是,就可以了。


1-8. 历史 SSH 密钥设置

妥善管理密钥和服务器权限时,SSH 公钥认证可以降低密码猜测风险。

原示例在服务器上生成无密码短语的 RSA-2048 私钥,再复制到客户端。当前配置应在可信客户端生成 Ed25519 密钥,适当设置密码短语,只把公钥安装到服务器,并在关闭密码认证前用第二个会话完成验证。

以下命令仅保留原历史流程。

[username@hostname ~]$ su - xxxxxx
[xxxxxx@hostname ~]$ ssh-keygen -t rsa -b 2048

其中,xxxxxx 表示新增账号。在这套已经过时的服务器端流程中,接受所有默认值会生成未加密的私钥。密钥密码短语用于加密保存的私钥,并不会把公钥认证变成服务器密码认证。新部署应在可信客户端生成密钥,并让私钥始终留在客户端。


然后检查钥匙是否已经被创建。

[xxxxxx@hostname ~]$ ll /home/xxxxxx/.ssh

原流程会检查私钥 id_rsa 和公钥 id_rsa.pub,然后重命名公钥并移动私钥以便下载:

[xxxxxx@hostname ~]$ mv /home/xxxxxx/.ssh/id_rsa.pub /home/xxxxxx/.ssh/authorized_keys
[xxxxxx@hostname ~]$ mv /home/xxxxxx/.ssh/id_rsa /home/xxxxxx/id_rsa

服务器生成并传输私钥的做法仅作为历史记录保留,不应在新部署中照搬。原流程在传输后删除服务器上的私钥:

[xxxxxx@hostname ~]$ rm /home/xxxxxx/id_rsa

关闭密码认证前,应在第二个会话中验证公钥登录,并确认存在独立的恢复通道。

[username@hostname ~]$ su -
[root@hostname ~]# vi /etc/ssh/sshd_config


sshd_config【改变之前】


PasswordAuthentication yes


sshd_config【变化后】


PasswordAuthentication no

检查语法并重新启动sshd。

[root@hostname ~]# /usr/sbin/sshd -t
[root@hostname ~]# systemctl restart sshd

这样就完成了密钥认证的设置。


2. 摘要

原清单涵盖操作系统确认、工具、管理账号、SSH 访问和时间同步。

请勿将其作为当前生产环境基线。应从受支持发行版的安全指南出发,保持 SELinux 和防火墙启用,并为访问配置变更准备回滚方案。

■技术文章

查看全部技术文章。


■作者简介

查看作者简介。


■联系我们

就本文内容联系我们。