温馨提示×

centos怎样进行安全加固

小樊
55
2025-09-30 23:43:29
栏目: 智能运维

CentOS系统安全加固指南

1. 系统基础配置加固

  • 修改默认密码:新安装的CentOS系统默认root密码通常为“centos”,需立即通过passwd root命令修改为强密码(包含大小写字母、数字、特殊字符,长度≥10位)。
  • 禁用root直接登录:编辑/etc/ssh/sshd_config文件,将PermitRootLogin yes修改为PermitRootLogin no,禁止root用户通过SSH直接登录,降低远程攻击风险。修改后需执行systemctl restart sshd重启SSH服务生效。
  • 锁定/删除无用账号:通过cat /etc/passwd | awk -F ':' '{print$1,$3}' | grep ' 0$'命令检测UID=0的超级用户账户(除root外均需处理),使用passwd -l <用户名>锁定无用账号(如adm、lp、sync等),或用userdel <用户名>彻底删除。
  • 设置账户自动注销:编辑/etc/profile文件,添加TMOUT=300(单位:秒),设置用户无操作300秒后自动注销,减少未授权访问窗口。

2. 用户权限与认证强化

  • 配置sudo精细化管理:使用visudo命令编辑/etc/sudoers文件,避免直接给用户ALL=(ALL)权限。例如,允许用户user1执行useraddpasswd等命令但不允许修改root密码,可添加:user1 ALL=(ALL) /usr/sbin/useradd, /usr/bin/passwd, !/usr/bin/passwd root,遵循“最小权限原则”。
  • 限制su命令使用:编辑/etc/pam.d/su文件,添加auth required pam_wheel.so group=wheel,仅允许wheel组成员使用su切换到root。将需要提权的用户加入wheel组:usermod -aG wheel <用户名>
  • 设置强密码策略:编辑/etc/login.defs文件,调整密码参数:PASS_MIN_LEN 14(密码最小长度)、PASS_WARN_AGE 7(到期前7天提醒)、PASS_MAX_DAYS 90(最长使用90天)。同时修改/etc/pam.d/system-auth文件,添加pam_pwquality.so模块强化密码复杂度:password requisite pam_pwquality.so try_first_pass local_users_only retry=3 minlen=14 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root(要求至少1个大写字母、1个小写字母、1个数字、1个特殊字符)。
  • 保护敏感文件:使用chattr +i命令给/etc/passwd/etc/shadow/etc/group/etc/gshadow等敏感文件添加不可更改属性,防止未授权修改。例如:chattr +i /etc/shadow

3. 防火墙与网络访问控制

  • 启用并配置firewalld:CentOS 7及以上默认使用firewalld,执行systemctl start firewalld && systemctl enable firewalld启动并设置开机自启。通过firewall-cmd --permanent --zone=public --add-service=ssh开放必要服务(如SSH),或--add-port=80/tcp开放指定端口(如HTTP)。修改后执行firewall-cmd --reload重新加载规则。
  • 设置默认区域:将默认区域设为public(最严格),执行firewall-cmd --set-default-zone=public,确保未明确指定的接口使用该区域。
  • 启用防火墙日志:通过firewall-cmd --permanent --zone=public --add-log-prefix="Firewall: "开启日志记录,便于追踪异常访问,执行firewall-cmd --reload生效。

4. 服务与端口管理

  • 关闭非必要服务:使用systemctl list-unit-files --type=service列出所有服务,禁用不需要的服务(如telnet、ftp、rpcbind等),例如:systemctl disable telnet && systemctl stop telnet,减少系统攻击面。
  • 限制端口访问:仅开放业务必需的端口(如SSH的22端口、Web的80/443端口),通过firewalld或iptables限制端口访问范围。例如,使用firewalld的富规则限制仅内网IP访问SSH:firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept',然后firewall-cmd --reload

5. SELinux安全配置

  • 启用SELinux:SELinux是CentOS的强制访问控制(MAC)模块,需确保其处于Enforcing模式。执行setenforce 1临时启用,编辑/etc/selinux/config文件将SELINUX=disabled改为SELINUX=enforcing永久生效。
  • 调整SELinux策略:若遇到业务应用无法正常运行的情况,可通过audit2allow工具生成自定义策略。例如,根据/var/log/audit/audit.log中的拒绝日志,执行grep "avc: denied" /var/log/audit/audit.log | audit2allow -M mypolicy生成策略模块,然后semodule -i mypolicy.pp安装。

6. 日志与监控管理

  • 集中日志收集:配置rsyslog或syslog-ng将日志发送到远程日志服务器(如ELK Stack),避免本地日志被篡改。编辑/etc/rsyslog.conf文件,添加*.* @192.168.1.100:514(UDP)或*.* @@192.168.1.100:514(TCP),重启rsyslog服务:systemctl restart rsyslog
  • 监控系统日志:定期检查/var/log/secure(认证日志)、/var/log/messages(系统日志)、/var/log/cron(计划任务日志)等,使用grepawk等工具分析异常行为(如多次登录失败、未授权访问)。例如,通过grep "Failed password" /var/log/secure查找SSH暴力破解尝试。

7. 软件与补丁管理

  • 定期更新系统:使用yum update -y命令定期更新系统和软件包,修复已知安全漏洞。建议开启自动更新:yum install yum-cron -y && systemctl enable yum-cron && systemctl start yum-cron
  • 安装安全工具:安装Fail2ban(防御暴力破解)、Rkhunter(扫描rootkit)、Lynis(系统审计)等工具。例如,安装Fail2ban:yum install fail2ban -y,编辑/etc/fail2ban/jail.local配置文件启用SSH防护,启动服务:systemctl start fail2ban && systemctl enable fail2ban

0