CentOS 7 作为一款广泛使用的 Linux 发行版,其安全性配置对于系统稳定和数据保护至关重要,本文将从系统初始化、账户管理、服务加固、网络防护、日志审计和定期维护六个方面,详细介绍 CentOS 7 的安全配置实践,帮助构建一个安全可靠的运行环境。

系统初始化安全配置
系统安装阶段是安全防护的第一道防线,安装时应选择“最小化”安装,仅安装必要的软件包,减少攻击面,禁用不必要的服务,如 avahi-daemon(网络发现服务)、cups(打印服务)等,可通过 systemctl mask 命令永久禁用。
创建非 root 管理员账户是关键步骤,避免直接使用 root 账户日常操作,通过 useradd 创建普通用户,并使用 sudo 授权管理权限,限制命令执行范围,在 /etc/sudoers 中配置 username ALL=(ALL) /usr/bin/yum, /bin/systemctl,仅允许用户执行特定管理命令。
关闭 SELinux 可能带来风险,建议保持启用状态,通过 sestatus 检查 SELinux 状态,如需调整,确保配置文件 /etc/selinux/config 中的 SELINUX=enforcing 设置正确,并使用 setsebool 调整布尔值以满足服务需求。
账户与密码安全
账户安全是系统防护的核心,root 账户应禁止远程登录,编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no,并通过 SSH 密钥认证替代密码认证,提升安全性。
密码策略需强制执行复杂度要求,修改 /etc/login.defs 文件,设置密码最小长度(如 PASS_MIN_LEN 10)和有效期(如 PASS_MAX_DAYS 90),使用 pam_pwquality 模块增强密码复杂度,在 /etc/security/pwquality.conf 中配置 minlen=8、ucredit=-1(至少一个大写字母)等规则。
定期审查账户权限,删除闲置或过期账户,通过 lastlog 查看用户登录记录,对长期未使用的账户执行 usermod -L 锁定或 userdel -r 删除,限制 su 命令使用,仅允许 wheel 组成员通过 su - root 切换至 root,在 /etc/pam.d/su 中取消注释 auth required pam_wheel.so use_uid 行。
服务与端口管理
最小化运行服务是减少漏洞风险的有效手段,使用 systemctl list-unit-files --state=enabled 查看已启用服务,禁用非必要服务,如 telnet、rsh 等不安全的远程服务,替换为更安全的 SSH(默认端口 22)。

端口管理需遵循“最小开放”原则,通过 ss -tulnp 检查监听端口,关闭不必要的端口,若需开放特定服务(如 Web 服务),配置防火墙规则(如 firewall-cmd --permanent --add-service=http),避免直接暴露服务到公网。
定期更新软件包,修复已知漏洞,使用 yum update 升级系统补丁,配置自动更新任务(如通过 cron 定期执行 yum -y update),对于关键服务(如 Apache、Nginx),关注官方安全公告,及时更新版本并调整配置参数(如禁用目录列表、隐藏版本信息)。
网络与防火墙配置
防火墙是网络层的第一道屏障,CentOS 7 默认使用 firewalld,建议启用并配置默认区域策略,将默认区域设置为 public,仅允许必要的服务(如 SSH、HTTP)通过,执行 firewall-cmd --permanent --add-service=ssh 并重载防火墙。
启用内核级网络防护,通过修改 /etc/sysctl.conf 增强系统安全性,配置参数包括:
net.ipv4.ip_forward = 0(禁用 IP 转发,避免充当路由器);net.ipv4.conf.all.send_redirects = 0(禁止发送 ICMP 重定向);net.ipv4.conf.default.syncookies = 1(启用 SYN Cookies 防范 SYN Flood 攻击)。
配置完成后执行sysctl -p生效。
入侵检测系统(如 Fail2ban)可进一步提升安全防护,安装 Fail2ban 并配置 /etc/fail2ban/jail.local,对 SSH 服务实施封禁策略(如 3 次失败尝试后封禁 IP 10 分钟),有效防止暴力破解。
日志与审计管理
日志审计是安全事件追溯的重要依据,确保系统日志服务(rsyslog)正常运行,配置日志文件存储位置(如 /var/log/secure 记录登录信息)和保留周期(如 /etc/logrotate.conf 中设置每月轮转)。
启用 Linux 审计框架(auditd),监控关键文件和命令操作,审计 root 用户操作和敏感文件访问:

auditctl -w /etc/shadow -p wa -k shadow_changes(监控/etc/shadow文件写入和属性变更);auditctl -a exit,always -S all -F euid=0(记录所有 root 用户执行的命令)。
审计日志存储在/var/log/audit/audit.log,可通过ausearch或 aureport 工具查询分析。
定期维护与应急响应
定期安全维护是保障系统长期稳定的关键,建立安全检查清单,包括:
- 检查系统补丁更新情况;
- 审查用户权限和服务状态;
- 分析日志文件,发现异常登录或操作行为;
- 备份关键数据(如
/etc目录、用户数据),建议使用rsync或tar实现异地备份。
制定应急响应预案,明确安全事件(如入侵、数据泄露)的处理流程,一旦发现系统被入侵,立即隔离受影响主机,通过日志分析攻击路径,修复漏洞并恢复系统,同时保留证据用于追溯。
FAQs
如何检查 CentOS 7 系统是否开启了 SSH 密钥认证?
答:编辑 /etc/ssh/sshd_config 文件,确保以下配置未注释且正确设置:PubkeyAuthentication yesPasswordAuthentication no(可选,禁用密码认证仅允许密钥)
修改后重启 SSH 服务:systemctl restart sshd,可通过 ssh -v username@ip 连接时查看认证方式,或查看 /var/log/secure 日志确认密钥登录记录。
CentOS 7 如何限制用户只能使用 sftp 而不能登录 SSH?
答:通过配置 chroot 实现目录隔离,首先安装 vsftpd(或使用 OpenSSH 的内部功能),编辑 /etc/ssh/sshd_config,添加以下配置:Subsystem sftp internal-sftpMatch Group sftpusersChrootDirectory /home/%uForceCommand internal-sftpAllowTcpForwarding noX11Forwarding no
创建 sftp 用户组并将用户加入,重启 SSH 服务即可实现用户仅能通过 SFTP 访问指定目录,无法登录 Shell。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复