温馨提示×

CentOS从零开始如何进行安全加固

小樊
38
2025-11-01 20:50:53
栏目: 智能运维

CentOS从零开始安全加固指南

一、系统初始化准备

  1. 最小化安装
    安装CentOS时选择“Minimal Install”模式,仅安装系统核心组件(如内核、Shell、网络工具),避免预装不必要的软件包(如图形界面、办公软件),减少潜在攻击面。
  2. 更新系统与软件
    安装完成后,立即执行sudo yum update -y更新系统内核及所有已安装软件包,修复已知安全漏洞。建议开启自动安全更新(如使用yum-cron),但生产环境需测试后再启用。

二、用户与权限管理

  1. 禁用root远程登录
    编辑SSH配置文件/etc/ssh/sshd_config,将PermitRootLogin yes修改为PermitRootLogin no,禁止root用户通过SSH直接登录。修改后重启SSH服务:sudo systemctl restart sshd
  2. 创建专用用户并配置sudo权限
    添加普通用户(如admin):sudo useradd -m -G wheel admin-G wheel将用户加入特权组),设置强密码:sudo passwd admin。编辑/etc/sudoers文件(使用visudo命令),添加admin ALL=(ALL) ALL,允许该用户通过sudo执行root权限命令。
  3. 强化口令策略
    编辑/etc/login.defs文件,设置密码有效期(PASS_MAX_DAYS 90PASS_MIN_DAYS 2)、最小长度(PASS_MIN_LEN 10)、过期提醒(PASS_WARN_AGE 7)。同时修改PAM配置(/etc/pam.d/system-auth),添加password requisite pam_pwquality.so try_first_pass minlen=10 difok=5 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 enforce_for_root,要求密码包含大小写字母、数字、特殊字符中的至少三种。
  4. 限制su命令权限
    编辑/etc/pam.d/su文件,添加auth required pam_wheel.so group=wheel,仅允许wheel组用户使用su切换到root,防止普通用户随意获取root权限。

三、网络安全防护

  1. 配置防火墙(firewalld)
    启用并配置firewalld(CentOS 7及以上默认防火墙):
    • 启动服务并设置开机自启:sudo systemctl start firewalld && sudo systemctl enable firewalld
    • 开放必要端口(如SSH的22端口、HTTP的80端口、HTTPS的443端口):sudo firewall-cmd --permanent --zone=public --add-port=22/tcpsudo firewall-cmd --permanent --zone=public --add-service=httpsudo firewall-cmd --permanent --zone=public --add-service=https
    • 限制SSH访问IP(仅允许特定IP登录):sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
    • 重新加载配置使更改生效:sudo firewall-cmd --reload
  2. 禁用不必要的服务
    使用systemctl list-unit-files --type=service列出所有服务,禁用不需要的服务(如telnetftpcups(打印服务)):sudo systemctl stop <service_name> && sudo systemctl disable <service_name>,减少服务暴露的攻击面。
  3. 启用SELinux
    SELinux(Security-Enhanced Linux)提供强制访问控制(MAC),增强系统安全性。
    • 检查状态:getenforce(若返回Disabled,需修改/etc/selinux/config文件,将SELINUX=disabled改为SELINUX=enforcing);
    • 临时启用:sudo setenforce 1
    • 重启系统使配置生效。生产环境建议使用permissive模式(仅记录不拦截)过渡,再逐步调整为enforcing

四、文件系统安全

  1. 设置umask值
    修改/etc/profile文件,添加umask 027,使新创建的文件权限为644(属主可读写,组用户可读,其他用户无权限),目录权限为755(属主可读写执行,组用户可读执行,其他用户可读执行),防止未授权用户访问敏感文件。
  2. 锁定关键文件
    使用chattr命令给/etc/passwd(账号信息)、/etc/shadow(加密密码)、/etc/group(组信息)、/etc/gshadow(组加密密码)添加不可更改属性(+i),防止未授权修改:sudo chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow。查看属性:lsattr /etc/passwd(若返回----i---------则表示锁定)。

五、日志与监控

  1. 启用审计服务(auditd)
    安装并启动auditd服务,记录系统活动(如用户登录、文件修改、命令执行):
    • 安装:sudo yum install audit -y
    • 启动服务:sudo systemctl start auditd && sudo systemctl enable auditd
    • 查看日志:ausearch -m avc -ts recent(查看SELinux相关日志)、ausearch -ua <username>(查看指定用户的操作日志)。
  2. 配置日志轮转
    编辑/etc/logrotate.conf文件,设置日志文件的最大大小(如maxsize 100M)、保留份数(如rotate 5),避免日志文件过大占用磁盘空间。也可针对特定服务(如/var/log/secure)创建自定义轮转规则。

六、其他安全措施

  1. 隐藏系统信息
    删除/etc/issue(本地登录显示的系统版本信息)和/etc/issue.net(远程登录显示的系统版本信息),防止攻击者通过版本信息针对性利用漏洞:sudo rm -f /etc/issue /etc/issue.net
  2. 禁用Ctrl+Alt+Delete组合键
    编辑/etc/inittab文件(CentOS 7及以上需编辑/etc/systemd/logind.conf),将ca::ctrlaltdel:/sbin/shutdown -t3 -r now行前加#注释,防止误按或恶意按该组合键导致服务器重启。
  3. 使用SSH密钥认证
    禁用SSH密码登录,使用密钥对进行身份验证,提高SSH安全性:
    • 生成密钥对(在客户端执行):ssh-keygen -t rsa -b 4096
    • 将公钥复制到服务器:ssh-copy-id admin@server_ip
    • 编辑/etc/ssh/sshd_config文件,设置PasswordAuthentication no,重启SSH服务:sudo systemctl restart sshd

0