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. 基本设置
本节介绍了安装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
SELINUX=enforcing
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
#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#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
PasswordAuthentication yes
PasswordAuthentication no
检查语法并重新启动sshd。
[root@hostname ~]# /usr/sbin/sshd -t
[root@hostname ~]# systemctl restart sshd
这样就完成了密钥认证的设置。
2. 摘要
原清单涵盖操作系统确认、工具、管理账号、SSH 访问和时间同步。
请勿将其作为当前生产环境基线。应从受支持发行版的安全指南出发,保持 SELinux 和防火墙启用,并为访问配置变更准备回滚方案。