文章总结: 文档详述了CentOS9系统加固方案,涵盖系统更新、用户权限、SSH防火墙配置、SELinux及日志审计等基础措施。深入讲解了内核优化、Web与数据库加固、容器安全及自动化扫描脚本编写。方案提供了具体命令示例与配置修改建议,强调定期复查与持续改进,旨在构建高安全性服务器环境,具备极高的实战参考价值。 综合评分: 88 文章分类: 安全建设,解决方案,实战经验,安全运营,终端安全
详细的Centos9系统加固方案
原创
刘军军 刘军军
运维星火燎原
2026年2月15日 00:36 山西
一、系统更新与基础准备
- 系统软件包更新
通过dnf命令更新系统所有软件包至最新版本,获取最新安全补丁:
sudo dnf update -y && sudo dnf upgrade -y
二、用户权限管理
- 创建受限用户并授权
- 步骤1:创建普通用户
sudo useradd secure_user # 创建名为secure_user的普通用户
sudo passwd secure_user # 为用户设置密码
- 步骤2:赋予sudo权限
将用户加入wheel组以获取sudo权限:
sudo usermod -aG wheel secure_user
三、SSH服务加固
- 禁止root远程登录并禁用密码认证
- 步骤1:编辑SSH配置文件
用vim打开SSH配置文件:
sudo vim /etc/ssh/sshd_config
PermitRootLoginno # 禁止root用户远程登录
PasswordAuthentication no # 禁用密码认证,改用密钥认证
- 步骤2:重启SSH服务
sudo systemctl restart sshd
sudo systemctl enable sshd # 确保开机自启
四、防火墙配置(firewalld)
- 配置防火墙规则
- 步骤1:启动并设置防火墙开机自启
sudo systemctl enable --now firewalld
- 步骤2:开放必要端口
以开放HTTP(80)、HTTPS(443)、SSH(22)为例:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload # 重载防火墙规则使配置生效
五、SELinux配置
- 启用SELinux强制模式
- 步骤1:编辑SELinux配置文件
sudo vim /etc/selinux/config
SELINUX=enforcing # 将SELinux模式设为强制模式
- 步骤2:重启系统使配置生效
sudo reboot
六、日志审计与监控(auditd)
- 配置审计服务
- 步骤1:编辑审计配置文件
编辑auditd.conf:
sudo vim /etc/audit/auditd.conf
max_log_file = 50 # 日志文件最大50MB
max_log_file_action = rotate # 日志满时轮转
- 步骤2:配置审计规则
编辑审计规则文件:
sudo vim /etc/audit/rules.d/audit.rules
# 审计/etc/shadow文件修改
-a always,exit -F arch=b64 -S open -S creat -S fchmod -S fchown -F path=/etc/shadow -F perm=0600 -k shadow_changes
# 审计sudo操作
-a always,exit -F arch=b64 -S sudo -F auid>=1000 -F auid!=4294967295 -k sudo_actions
- 步骤3:重启审计服务
sudo systemctl restart auditd
sudo systemctl enable auditd
七、关闭不必要的服务
- 禁用无关系统服务
- 以禁用邮件服务(postfix)和telnet服务为例:
sudo systemctl disable --now postfix
sudo systemctl disable --now telnet
八、文件权限配置
- 调整关键文件权限
- 步骤1:限制关键系统文件权限
sudo chmod 0600 /etc/shadow # 限制/etc/shadow文件仅root可读可写
sudo chmod 0600 /etc/gshadow # 限制/etc/gshadow文件权限
sudo chmod 0750 /etc/sudoers # 限制/etc/sudoers文件权限
sudo chown root:root /etc/sudoers # 确保文件属主为root
九、内核参数优化
- 调整sysctl.conf配置
通过编辑/etc/sysctl.conf文件优化内核参数,增强系统安全性与性能,示例配置:
sudo vim /etc/sysctl.conf
添加或修改以下内容:
# 关闭IP源路由检查,防止伪造源地址攻击
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# 开启SYN Cookies,抵御SYN洪水攻击
net.ipv4.tcp_syncookies = 1
# 限制系统核心进程可打开的最大文件描述符数
fs.file-max = 65535
# 调整TCP连接超时相关参数
net.ipv4.tcp_fin_timeout = 15 # TCP连接关闭超时时间
net.ipv4.tcp_keepalive_time = 1200 # TCP保持连接时间
# 禁止发送ICMP重定向,防止路由欺骗
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# 限制IPv4碎片处理,防止碎片攻击
net.ipv4.ipfrag_low_thresh = 4096
net.ipv4.ipfrag_high_thresh = 8192
net.ipv4.ipfrag_max_dist = 1024
使配置生效:
sudo sysctl -p
十、Web服务(如Apache)加固
- Apache服务安全配置
- 步骤1:安装并配置Apache
sudo dnf install -y httpd
sudo systemctl start httpd
sudo systemctl enable httpd
- 步骤2:编辑Apache配置文件
例如限制目录列表、禁用不必要模块等,编辑/etc/httpd/conf/httpd.conf:
Options -Indexes # 禁止目录列表显示
ServerTokens Prod # 隐藏Apache版本信息
LoadModule userdir_module modules/mod_userdir.so # 按需启用或禁用模块
- 步骤3:配置防火墙允许HTTP流量
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
十一、数据库服务(如MySQL)加固
- MySQL服务加固(示例)
若服务器部署MySQL,进行如下加固:
- 步骤1:创建专用用户与目录
sudo useradd mysql-secure
sudo mkdir /var/lib/mysql-secure
sudo chown -R mysql-secure:mysql-secure /var/lib/mysql-secure
- 步骤2:配置MySQL配置文件
编辑/etc/my.cnf,添加安全相关配置:
[mysqld]
user = mysql-secure # 使用专用用户运行
bind-address = 127.0.0.1 # 仅允许本地连接(若需远程访问,配置具体IP)
skip-networking=1 # 禁止远程网络访问,如需远程需谨慎开启
secure_file_priv = /tmp/ # 限制导入导出文件路径
innodb_file_per_table = 1 # 每个表独立表空间
- 步骤3:初始化MySQL并设置密码
sudo mysqld --initialize --user=mysql-secure --basedir=/usr --datadir=/var/lib/mysql-secure
sudo systemctl start mysqld
sudo mysql_secure_installation # 运行安全初始化向导,设置root密码、移除匿名用户等
十二、定期安全扫描与自动化脚本
- 定制化安全扫描脚本
编写自动化脚本定期执行系统更新与漏洞扫描,示例脚本:
#!/bin/bash
# 文件:security_auto_check.sh
# 功能:自动更新系统、执行漏洞扫描并记录日志
# 系统更新
sudo dnf update -y
# 运行rkhunter深度扫描
sudo dnf install -y rkhunter
sudo rkhunter --update
sudo rkhunter --check --sk # --sk跳过交互式提示
# 运行chkrootkit检查
sudo dnf install -y chkrootkit
sudo chkrootkit
# 检查SELinux状态
selinux_status=$(sudo getenforce)
echo"SELinux当前状态:$selinux_status"
# 检查防火墙规则
echo"防火墙规则列表:"
sudo firewall-cmd --list-all
# 记录日志
log_file="/var/log/security_auto_check_$(date +%Y%m%d).log"
{
echo"==== $(date +%Y-%m-%d%H:%M:%S) ===="
echo"系统更新结果:$?"
echo"rkhunter扫描结果:"
sudo rkhunter --report-file stdout
echo"chkrootkit扫描结果:"
sudo chkrootkit
echo"SELinux状态:$selinux_status"
echo"防火墙规则:"
sudo firewall-cmd --list-all
} >> $log_file
赋予执行权限:
sudo chmod +x security_auto_check.sh
通过cron定时执行,例如每天2点执行:
sudo crontab -e
添加行:
02 * * * /path/to/security_auto_check.sh
十三、SSH密钥认证强化
- 配置SSH密钥登录并禁用旧密钥
- 步骤1:生成SSH密钥对(在管理端执行)
ssh-keygen-trsa-b 4096 -C "[email protected]"
- 步骤2:将公钥复制到目标服务器
ssh-copy-id restricted_user@server_ip
- 步骤3:禁用密码认证并重启SSH服务
编辑/etc/ssh/sshd_config,确保:
PasswordAuthenticationno
sudo systemctl restart sshd
十四、系统资源限制与进程监控
- 使用ulimit限制用户进程资源
通过/etc/security/limits.conf文件限制用户可使用的系统资源,例如限制普通用户secure_user的最大进程数和文件打开数:
sudo vim /etc/security/limits.conf
添加以下内容:
secure_user hard nproc 1024 # 最大进程数限制为1024
secure_user hard nofile 65535 # 最大文件打开数限制为65535
secure_user soft nproc 512 # 软限制进程数
secure_user soft nofile 32768 # 软限制文件打开数
十五、容器化环境安全加固(若有容器部署)
- Docker安全加固(示例)
- 步骤1:配置Docker守护进程
编辑/etc/docker/daemon.json,添加安全相关配置:
{
"selinux-enabled": true, # 启用SELinux集成
"userns-remap": "default", # 启用用户命名空间,限制容器对主机的访问
"live-restore": true, # 容器故障时保留服务运行
"tls": true, # 启用TLS加密通信
"tlscert": "/etc/docker/tls/server.pem", # TLS证书路径
"tlskey": "/etc/docker/tls/server.key", # TLS私钥路径
"tlscacert": "/etc/docker/tls/ca.pem"# CA证书路径
}
- 步骤2:重启Docker服务
sudo systemctl restart docker
sudo systemctl enable docker
十六、文件系统完整性与配额管理
- 文件系统配额配置(可选)
若需要限制用户对文件系统的存储空间使用,可启用文件系统配额:
- 步骤1:检查文件系统是否支持配额
例如根分区为/dev/sda2且为xfs文件系统,检查支持情况:
sudo xfs_info /dev/sda2 | grep quota
- 步骤2:启用配额功能
编辑/etc/fstab,为需要配额的分区添加usrquota,grpquota选项:
/dev/sda2 / xfs defaults,usrquota,grpquota 00
- 步骤3:挂载并初始化配额
sudo mount -o remount /
sudo quotacheck -cvug / # 初始化用户和组的配额数据库
- 步骤4:设置用户配额
例如限制用户secure_user的磁盘空间为10GB:
sudo edquota secure_user
/dev/sda2: blocks=10240000
十七、系统服务依赖检查与清理
- 清理多余无用服务依赖
- 步骤1:使用rpm-ostree(若为CoreOS等变体)
对于基于rpm-ostree的系统,清理多余包:
sudo rpm-ostree prune --keep=0
- 步骤2:通用系统使用yum/dnf清理
清理无用依赖包:
sudo dnf autoremove -y
十八、安全启动配置(UEFI环境)
- 检查UEFI安全启动状态
- 步骤1:查看安全启动状态
mokutil --sb-state
十九、网络安全之IP伪装与NAT限制
- 配置IP伪装(NAT)限制
若服务器作为网关使用,配置IP伪装:
- 步骤1:启用内核IP转发
编辑/etc/sysctl.conf,添加:
net.ipv4.ip_forward = 1
sudo sysctl -p
- 步骤2:配置防火墙NAT规则(以MASQUERADE为例)
sudo iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE # 替换enp0s3为实际外网网卡
二十、系统安全基线核查工具集成
- 使用cis-anaconda-config符合CIS基准
- 步骤1:安装CIS合规工具
sudo dnf install -y cis-anaconda-config
- 步骤2:执行CIS合规检查
sudo cis-anaconda-check
二十一、远程管理工具的安全扩展
- 配置Mosh替代SSH(可选)
- 步骤1:安装Mosh
sudo dnf install -y mosh
- 步骤2:配置防火墙允许Mosh端口
Mosh默认使用UDP端口60000-61000,开放范围端口:
sudo firewall-cmd --permanent --add-port=60000-61000/udp
sudo firewall-cmd --reload
二十二、系统加固后的定期复查
- 制定定期复查清单
-
每周复查:
-
检查防火墙规则是否有异常修改
-
验证SSH密钥登录是否正常
-
查看日志清理归档是否正常
-
每月复查:
-
运行漏洞扫描工具(ClamAV、rkhunter等)
-
检查文件系统配额是否生效
-
验证系统服务依赖清理效果
二十三、最终总结与持续改进
- 持续优化加固策略
- 根据系统实际运行情况,定期更新sysctl.conf、防火墙规则、日志策略等
- 关注CentOS官方安全公告,及时更新系统补丁
- 对业务影响较小的窗口期内,逐步实施新的安全策略并验证效果
方案总结
本加固方案第四部分聚焦于文件系统配额、服务依赖清理、安全启动、网络NAT、CIS合规、远程工具扩展及定期复查等方面,进一步强化CentOS 9系统的安全性与合规性。实际实施时需结合具体业务环境灵活调整配置,确保系统在稳定运行的基础上满足严格的安全要求。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:运维星火燎原 刘军军 刘军军《详细的Centos9系统加固方案》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。




![[舒适区/非舒适区]十字路口的徘徊01](/images/random/titlepic/4.jpg)



![[安康・静水]静师傅给您拜年啦!!!送马年皮肤](/images/random/titlepic/10.jpg)


评论