更新记录
日期 | 版本号 | 内容 |
---|---|---|
9/2/2024 | Ver 1.0 | 建档,增加序号便于查找 |
1. 账号管理与授权
1.1 检查是否存在空密码账户
配置描述 | 检查是否存在空密码账户,非法用户可通过该账户直接登陆系统 |
---|---|
检查方法 | awk -F: ‘($2==){print $1}’ /etc/shadow |
操作步骤 | cp -p /etc/passwd /etc/passwd_bak cp -p /etc/shadow /etcshadow_bak passwd username(为用户设置密码) |
回退操作 | cp /etc/passwd_bak /etc/passwd cp /etc/shadow_bak /etc/shadow |
操作风险 | 低风险 |
是否可选 | 必选 |
1.2 删除和锁定无关账户
配置描述 | 删除和锁定无关帐户,定期清理无用账户,避免为攻击者提供访问通路,确保系统访问权限的最小化 |
---|---|
检查方法 | more /etc/passwd /etc/shadow 查看是否存在一下可能无用的账户: listen、gdm、webservd、nobody、nobody4、noaccess、lp、uucp 确认以上账户可以锁定 |
操作步骤 | cp -p /etc/passwd{,.bak}} cp -p /etc/shadow{,.bak} vim /etc/shadow 在需要锁定的用户后加入LK, 如: UserLK: 1 1 1shdwsdsasfdsfawer:14172:0:99999:7::: 将/etc/passwd文件中的shell设置为/sbin/nologin |
回退操作 | cp /etc/passwd_bak /etc/passwd cp /etc/shadow_bak /etc/shadow |
操作风险 | 被锁定账户无法登陆系统 |
是否可选 | 必选 |
1.3 不重复使用近期口令
配置描述 | 配置设备,使用户不能重复使用最近5次(含5次)内已使用的密码 |
---|---|
检查方法 | cat /etc/pam.d/system-auth 检查password required pam_unix.so所在行是否存在 remember=5 ls /etc/security/opasswd 检查是否存在/etc/security/opasswd文件 |
操作步骤 | cp -p /etc/pam.d/system-auth{,.bak} touch /etc/security/opasswd chown root:root /etc/security/opasswd chmod 600 /etc/security/opasswd vim /etc/pam.d/system-auth 在password required pam_unix.so所在行增加remember=5 |
回退操作 | cp /etc/pam.d/system-auth_bak /etc/pam.d/system-auth |
操作风险 | /etc/pam.d/system-auth文件设置不当将导致系统登陆认证不成功。配置生效需重启服务器 |
是否可选 | 必须选 |
1.4 按用户角色分配不同权限的账号
配置描述 | 按照用户角色分配不同权限,确保用户权限最小化,避免越权操作 |
---|---|
检查方法 | more /etc/passwd /etc/shadow 查看系统中存在的用户, 确认每个账户的home路径及启动shell 与管理员确认需要锁定的账户 |
操作步骤 | cp -p /etc/passwd{,.bak} cp -p /etc/shadow {,.bak} 修改home路径和shell |
回退操作 | cp /etc/passwd_bak /etc/passwd cp /etc/shadow_bak /etc/shadow |
操作风险 | 更改用户权限可能导致某些应用无法正常运行 |
是否可选 | 必选 |
1.5 设置口令策略满足复杂度要求和口令有效期
配置描述 | 设置口令策略满足复杂度要求和口令生存周期,确保口令具有足够的复杂性,可抵抗穷举攻击 |
---|---|
检查方法 | more /etc/login.defs 检查PASS_MAX_DAYS、PASS_MIN_LEN、PASS_MIN_DAYS PASS_WARN_AGE参数 |
操作步骤 | cp -p /etc/login.defs{,.bak} vim /etc/login.defs PASS_MIN_LEN = 8 PASS_MAX_DAYS = 90 |
回退操作 | cp /etc/login.defs_bak /etc/login.defs |
操作风险 | 可能导致非root用户修改密码时多次不成功 |
是否可选 | 必选 |
1.6 禁用UID为0的用户
配置描述 | 检查是否存在除root之外UID为0的用户 |
---|---|
检查方法 | awk -F: ‘($3==){print $1}’ /etc/passwd 返回值应只有root |
操作步骤 | cp -p /etc/passwd {,.bak} cp -p /etc/shadow{,.bak} cp -p /etc/group{,.bak} userdel username(除root以外uid为0的用户) |
回退操作 | cp /etc/passwd_bak /etc/passwd cp /etc/shadow_bak /etc/shadow cp /etc/group_bak /etc/group |
操作风险 | 可能造成某些应用运行异常,需要确认找到UID为0的非root用户用途 |
是否可选 | 必选 |
1.7 禁止超级管理员远程登录
配置描述 | 禁止超级管理员账户远程登录,远程登录会增加信息泄露风险, 攻击者可利用远程登录客户端的漏洞获取超级管理员权限, 威胁系统安全,如采用telnet协议登录,则安全威胁更为严重 |
---|---|
检查方法 | telnet: more /etc/pam.d/login 检查是否有下列行: 默认情况root是不能telnet连接主机的,检查下列行未被注释: auth required pam_securetty.so 或者 more /etc/securetty 检查是否有下列行且且未被注释: console SSH: more /etc/ssh/sshd_config 检查下列行设置是否为no且未被注释 PermitRootLogin no 检查图形界面登录 more /etc/X11/gdm/gdm.conf 检查下列行是否设置为 false AllowRoot=false AllowRemoteRoot=false |
操作步骤 | cp -p /etc/pam.d/login{,.bak} cp -p /etc/securetty{,.bak} cp -p /etc/ssh/sshd_config{,.bak} cp -p /etc/X11/gdm/gdm.conf {,.bak} 新建一个普通用户并设置高强度密码 useradd username passwd username 禁止root远程telnet登录 vim /etc/pam.d/login 去掉auth required pam_securetty so前面的注释 或 vim /etc/securetty 添加一行console 禁止root用户远程ssh登录系统 vim /etc/ssh/sshd_confi 修改PermitRootLogin设置为no 同时保证该行不被注释并重启ssh服务 禁止root图形界面登录 vim /etc/X11/gdm/gdm.conf AllowRoot=false AllowRemoteRoot=false |
回退操作 | cp /etc/pam.d/login_bak /etc/pam.d/login cp /etc/securetty_bak /etc/securetty cp /etc/ssh/sshd_config_bak /etc/ssh/sshd_config cp /etc/X11/gdm/gdm.conf_bak /etc/X11/gdm/gdm.conf |
操作风险 | 改变运维人员操作习惯,必须新建一个能够执行交互式登录的普通用户并能够通过su提生权限,需要重启服务, 可能带来新威胁 另外禁止root远程登录通常不会提示root被禁止远程登录,而是口令错误。 因此这种设置会出发达到最大登录次数后锁定root账户的风险,建议如果有阻止root远程登录, 同时将root的loginretries设为0或较大值,防止root账户被锁 |
是否可选 | 必选 |
1.8 将用户账户分配到相应的账户组
配置描述 | 建立多账户组,将用户账号分配到相应的账户组,不同的账户组拥有不同的系统访问权限和管理权限 |
---|---|
检查方法 | more /etc/group 查看每个组中的用户或者每个用户属于哪个组 确认需要修改用户组的用户 |
操作步骤 | cp -p /etc/group /etc/group_bak usermod -g group username |
回退操作 | cp /etc/group_bak /etc/group |
操作风险 | 可能导致某些应用运行异常 |
是否可选 | 必选 |
1.9 设定连续认证失败次数
配置描述 | 配置用户连续认证失败次数超过6次(不含6次),锁定该账号 |
---|---|
检查方法 | cat /etc/pam.d/system-auth 检查是否存在 auth required /lib/security/ I S A / p a m t a l l y . s o o n e r r = f a i l n o m a g i c r o o t a c c o u n t r e q u i r e d / l i b / s e c u r i t y / ISA/pam_tally.so onerr=fail no_magic_root account required /lib/security/ ISA/pamtally.soonerr=failnomagicrootaccountrequired/lib/security/ISA/pam_tally.so deny=6 no_magic_root reset |
操作步骤 | cp -p /etc/pam.d/system-auth {,.bak} 修改策略设置 vim /etc/pam.d/system-auth 增加 auth required /lib/security/ I S A / p a m t a l l y . s o o n e r r = f a i l n o m a g i c r o o t a u t h r e q u i r e d / l i b / s e c u r i t y / ISA/pam_tally.so onerr=fail no_magic_root auth required /lib/security/ ISA/pamtally.soonerr=failnomagicrootauthrequired/lib/security/ISA/pam_tally.so deny=6 no_magic_root reset |
回退操作 | cp /etc/pam.d/system-auth_bak /etc/pam.d/system-auth |
操作风险 | 使配置生效需要重启服务器。root账户不在锁定范围内。 账户被锁定后,可使用faillog -u -r 或pam_tally –user --rest解锁 |
是否可选 | 必选 |
1.10 系统账户登陆限制
配置描述 | 对系统账号进行登录限制,确保系统账号仅被守护进程和服务使用,不应直接由该账号登录系统。如果系统没有应用这些守护进程或服务,应删除这些账号 |
---|---|
检查方法 | 查看/etc/shadow文件中一下账号是否列为NP: 禁止交互登录的账号: daemon、bin、sys、adm、lp、uucp、nuucp、smmsp等 |
操作步骤 | cp -p /etc/shadow /etc/shadow_bak 修改/etc/shadow文件 在要禁止交互登录的系统账号后面添加NP,如: nobody:NP:6655:::::: |
回退操作 | cp /etc/shadow_bak /etc/shadow |
操作风险 | |
是否可选 | 必选 |
1.11 文件权限设置
配置描述 | 为passwd、shadow、group文件设置权限,上述文件涉及系统权限管理的关键,防止其非法用户的恶意修改 |
---|---|
检查方法 | ls -l /etc/passwd /etc/shadow /etc/group /etc/passwd: -rw-r–r-- 所有用户可读, root用户可写 /etc/shadow:-r-------- root用户可读 /etc/group:-rw-r–r-- 所有用户可读,root用户可写 |
操作步骤 | cp -p /etc/shadow{,.bak} cp -p /etc/passwd {,.bak} cp -p /etc/group /etc/group_bak chmod 644 /etc/passwd chmod 400 /etc/shadow chmod 644 /etc/group |
回退操作 | cp /etc/shadow_bak /etc/shadow cp /etc/passwd_bak /etc/passwd cp /etc/group_bak /etc/group |
操作风险 | |
是否可选 | 必选 |
1.12 系统UMASK设置
配置描述 | 系统umask设置,规范用户对目录和文件的操作 |
---|---|
检查方法 | more /etc/profile more /etc/csh.login more /etc/csh.cshrc more /etc/bashrc more /root/.bashrc more /root/.cshrc 检查系统umask值 |
操作步骤 | cp -p /etc/profile{,.bak} cp -p /etc/csh.login{,.bak} cp -p /etc/csh.cshrc{,.bak} cp -p /etc/bashrc{,.bak} cp -p /root/.bashrc /root/.bashrc_bak cp -p /root/.cshrc /root/.cshrc_bak 修改umask值 将上述文件的umask值改为027 |
回退操作 | cp /etc/profile_bak /etc/profile cp /etc/csh.login_bak /etc/csh.login cp /etc/csh.cshrc_bak /etc/csh.cshrc cp /etc/bashrc_bak /etc/bashrc cp /root/.bashrc_bak /root/.bashrc cp /root/.cshrc_bak /root/.cshrc |
操作风险 | umask设置不当可能导致某些应用无法自动创建目录huo文件,从而导致运行异常 |
是否可选 | 必选 |
1.13 是否存在.NETRC/.RHOSTS文件
配置描述 | 检查账户目录中是否存在.netrc/.rhosts文件,该文件通常会被系统或进程自动加载并执行,对系统带来安全隐患 |
---|---|
检查方法 | cut -d: -f6 /etc/passwd |
操作步骤 | 备份.netrc/.rhosts文件 删除.netrc/.rhosts文件 rm -f .netrc .rhosts |
回退操作 | 还原删除的文件 |
操作风险 | 确定被删除文件的用途,可能导致某些需要.netrc/.rhosts文件的应用运行异常 |
是否可选 | 必选 |
1.14 检查ROOT目录权限是否为700
配置描述 | 检查root目录权限是否为700,保证仅有系统管理员对其拥有访问控制权 |
---|---|
检查方法 | ls -lad /root |
操作步骤 | chown root:root /root chmod 700 /root |
回退操作 | |
操作风险 | 低风险 |
是否可选 | 必选 |
2. 日志配置要求
2.1 配置系统日志文件权限
配置描述 | 按账户分配日志文件读取、修改和删除权限 |
---|---|
检查方法 | 1. 查看/etc/syslog.conf中设置的日志存放文件,如/dev/sysmsg、/var/log/messages 2. 查看日志文件的权限 ls -la /var/log/messages ls -la /var/log |
操作步骤 | 备份需要修改的文件 设置文件权限 chmod 644 filename |
回退操作 | 还原备份文件 |
操作风险 | 低风险 |
是否可选 | 必选 |
2.2 记录用户登录情况
配置描述 | 检查Linux用户的登录情况,记录用户登录情况 |
---|---|
检查方法 | /var/log下用户登录情况 |
操作步骤 | less /var/log/secure |
回退操作 | cp /etc/group_bak /etc/group |
操作风险 | 低风险 |
是否可选 | 必选 |
2.3 设置日志服务器
配置描述 | 配置远程日志功能,将重要日志传输到日志服务器 |
---|---|
检查方法 | more /retc/syslog.conf 查看是否有*.* @192.168.1.1(日志服务器IP) |
操作步骤 | cp -p /etc/rsyslog.conf {,.bak} vim /etc/rsyslog.conf 加入*.* @192.168.1.1 可以将*.替换为实际需要的日志信息。 如:kern.、mali.*等 重启日志服务: /etc/init.d/rsyslog restart(Centos6) 或 systemctl restart rsyslog(Centos7) |
回退操作 | cp /etc/rsyslog.conf_bak /etc/rsyslog.conf 重启rsyslog服务 |
操作风险 | 敏感日志有泄露风险 |
是否可选 | 必选 |
2.4 配置syslog
配置描述 | 日志功能设置,记录系统日志以及应用日志 |
---|---|
检查方法 | more /etc/rsyslog.conf 检查是否存在类似如下语句: .err;kern.debug;daemon.notice; /var/log/message cron. /var/log/cron |
操作步骤 | cp -p /etc/rsyslog.conf{,.bak} vim /etc/rsyslog.conf 加入需要同步的日志,如: cron.* /var/log/cron 重启rsyslog |
回退操作 | cp /etc/rsyslog.conf_bak /etc/rsyslog.conf |
操作风险 | 日志占用磁盘空间较大,需定期清理 |
是否可选 | 必选 |
3. IP协议安全
3.1 远程登录取消telnet改用ssh
配置描述 | telnet登录为明文传输,ssh登录为加密传输。取消telnetd登录,全部改用ssh登录 |
---|---|
检查方法 | netstat -nptl |
操作步骤 | 停止telnet服务,启动sshd Centos6: /etc/init.d/telnet stop && chkconfig telnet --del /etc/init.d/sshd start && chkconfig sshd --add Centos7: systemctl stop telnet && systemctl disable telnet systemctl start sshd && systemctl enable sshd |
回退操作 | |
操作风险 | 无 |
是否可选 | 必选 |
3.2 设定远程登录的IP范围
配置描述 | 对登录系统的IP进行限制,只允许符合IP范围的用户登录 |
---|---|
检查方法 | 查看/etc/hosts.allow、/etc/hosts.deny |
操作步骤 | 配置tcpwrap,对登录IP做限制 cp -p /etc/hosts.allow{,.bak} cp -p /etc/hosts.deny{,.bak} vim /etc/hosts.allow sshd:192.168.1.:allow #允许192.168.1的整个网段访问sshd vim /etc/hosts.deny sshd:all:deny 也可以用iptables进行限制 iptables -I INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT |
回退操作 | cp /etc/hosts.allow_bak /etc/hosts.allow cp /etc/hosts.deny_bak /etc/hosts.deny |
操作风险 | 只有指定范围的Ip可以登录系统 |
是否可选 | 必选 |
3.3 禁止ICMP重定向
配置描述 | 禁止ICMP重定向,防止ARP欺骗等网络攻击 |
---|---|
检查方法 | sysctl -n net.ipv4.conf.all.accept_redirects 返回结果应为0 |
操作步骤 | cp -p /etc/sysctl.conf {,.bak} vim /etc/sysctl.conf net.ipv4.conf.all.accept_redirects=0 sysctl -p #使之生效 |
回退操作 | cp /etc/sysctl.conf_bak /etc/sysctl.conf |
操作风险 | 可能导致路由错误无法通信,如有服务需要请谨慎操作 |
是否可选 | 必选 |
3.4 禁止路由转发
配置描述 | 禁止路由转发,关闭Linux系统的路由功能 |
---|---|
检查方法 | systcl -n net.ipv4.conf.all.accept_source_route 返回结果应为0 |
操作步骤 | cp -p /etc/sysctl.conf {,.bak} vim /etc/sysctl.conf net.ipv4.conf.all.accept_source_route=0 sysctl -p #使之生效 |
回退操作 | cp /etc/sysctl.conf_bak /etc/sysctl.conf |
操作风险 | 可能导致路由错误无法通信,如有服务需要请谨慎操作 |
是否可选 | 必选 |
4. 服务配置要求
4.1 关闭不必要的服务
配置描述 | 列出所需服务的列表(包括所需的系统服务),对不在此列表的服务进行关闭,保证系统业务最小化 |
---|---|
检查方法 | Centos6: chkconfig --list Centos7: systemctl list-unit-files |
操作步骤 | Centos6: chkconfig service_name off Centos7: systemctl disable service_name |
回退操作 | Centos6: chkconfig service_name on Centos7: systemctl enable service_name |
操作风险 | |
是否可选 | 必选 |
4.2 字符交互界面账户超时自动退出
配置描述 | 对于具备字符交互界面的设备,应配置定时账号自动登出 |
---|---|
检查方法 | cat /etc/profile |
操作步骤 | vim /etc/profile export TMOUT=600 #单位为秒 vim /etc/ssh/sshd_config ClientAliveInterval=60 #单位为秒 /etc/init.d/sshd restart 或 systemctl restart sshd |
回退操作 | |
操作风险 | 低风险 |
是否可选 | 必选 |
4.3 重要目录和文件的权限设置
配置描述 | 重要目录和文件的权限 |
---|---|
检查方法 | 执行以下命令检查目录和文件的权限设置情况: Centos6: ls -la /etc/ ls -la /etc/init.d/ ls -la /tmp ls -la /etc/default/ ls -la /etc/rc.d/rc3.d ls -la /etc/rc.d/rc5.d ls -la /etc/cron* /var/spool/cron* 是否在所有可写文件 Centos7: ls -la /etc/ ls -la /usr/lib/systemd/system ls -la /tmp ls -la /etc/default/ ls -la /etc/rc.d/rc3.d ls -la /etc/rc.d/rc5.d ls -la /etc/cron* /var/spool/cron* |
操作步骤 | 执行备份: 使用 cp 命令备份需要修改权限的文件或目录 权限修改: 使用 chmod o-w filename 命令修改文件或目录权限 |
回退操作 | 使用 cp 命令恢复被修改权限的文件或目录 或使用 chmod 命令恢复权限 |
操作风险 | 修改某些重要的配置文件的权限可能导致系统功能或应用异常 |
是否可选 | 必选 |
4.4 检查系统已安装的不必要软件包以及更新软件包
配置描述 | 在系统安装时建议只安装基本的 OS 部份,其余的软件包则以必要为原则,非必需的包就不装。及时更新软件包。 |
---|---|
检查方法 | rpm -qa 查看所有的安装包 查看版本及大补丁号: uname -a 查看各包的补丁号: rpm -qa |
操作步骤 | 备份软件包 卸载不必要的软件包 及时更新软件包 |
回退操作 | 还原备份 |
操作风险 | 需确认软件包是否必要;未经测试安装软件包,可能导致应用异常 |
是否可选 | 必选 |
4.5 设置LILO/GRUB密码
配置描述 | 设置 LILO/GRUB 密码,在使用 LILO 和 GRUB 时需要进行身份认证 |
---|---|
检查方法 | cat /etc/lilo.conf |
操作步骤 | 备份文件 cp -p /etc/lilo.conf {,.bak} cp -p /etc/grub.conf {,.bak} 对于 LILO 引导,编辑/etc/lilo.conf 文件, vim /etc/lilo.conf,在开头添加以下两行内容 restricted password= 并设置文件权限如下: chown root:root /etc/lilo.conf chmod 600 /etc/lilo.conf 对于 GRUB 引导, 首先执行: /sbin/grub-md5-crypt,获取 md5 加密密码;然后编辑 /etc/grub.conf vim /etc/grub.conf 在首行添加:password 使用上一步获取的 md5 密码替换 设置文件权限如下: chown root:root /etc/grub.conf chmod 600 /etc/grub.conf |
回退操作 | cp /etc/lilo.conf_bak /etc/lilo.conf cp /etc/grub.conf_bak /etc/grub.conf |
操作风险 | 低风险 |
是否可选 | 必选 |
5. 其他配置要求
5.1 查找可以的SUID/SGID文件
配置描述 | 查找可疑的 SUID/SGID 文件,SUID 或 SGID 文件在执行时, 用户可获得该程序文件的属主权限,通过 SUID 和 SGID,非法用户可获得额外的系统控制权 |
---|---|
检查方法 | find / -xdev -type f ( -perm -4000 -o -perm -2000 ) -exec ls -l {} \; 咨询管理员找到的文件是否应用所需 |
操作步骤 | 执行备份: 使用 cp 命令备份需要取消 SUID/SGID 的文件 取消文件的 SUID/SGID: chmod ug-s filename |
回退操作 | 使用 cp 命令恢复被取消 SUID/SGID 的文件 |
操作风险 | 执行检查会大量消耗系统资源,加固可能导致某些系统功能无法正常执行 |
是否可选 | 必选 |
5.2 禁止X Server
配置描述 | 禁止 X Server,关闭系统的图形远程控制功能 |
---|---|
检查方法 | 检查下列文件中是否有-nolisten tcp cat /etc/X11/xdm/Xservers |
操作步骤 | 备份文件 cp -p /etc/X11/xdm/Xservers{,.bak} cp -p /etc/X11/xinit/xserverrc {,.bak} 编辑/etc/X11/xdm/Xservers,在/usr/bin/X 后添加-nolisten tcp 或编辑 /etc/X11/xinit/xserverrc,在:0 后添加-nolisten tcp |
回退操作 | cp /etc/X11/xdm/Xservers_bak /etc/X11/xdm/Xservers cp /etc/X11/xinit/xserverrc_bak /etc/X11/xinit/xserverrc |
操作风险 | 将无法使用 X Server 远程连接 |
是否可选 | 可选 |