基线检查
最后更新于
最后更新于
项目 | 详情 |
说明 | 对于采用静态口令认证技术的设备,口令长度至少 8 位,并至少包括数字、 小写字母、大写字母和特殊符号中的三种。增强口令复杂度是为了增加攻击 者破解密码的难度和时间成本。 |
检测步骤 | 1、执行:more /etc/pam.d/system-auth 检查文件中是否对 pam_cracklib.so 的参数进行了正确设置; 2、执行:awk -F: '($2 == "") { print $1 }' /etc/shadow,检查是否存在空口令 帐号。 |
符合性依据 | 参考配置操作 # cat /etc/pam.d/system-auth,找到 password 模块接口的配置部分,找到类 似如下的配置行: password requisite /lib/security/$ISA/pam_cracklib.so minlen =8 参数说明如下: 1、retry=N,确定用户创建密码时允许重试的次数; 2、minlen=N,确定密码最小长度要求,事实上,在默认配置下,此参数代 表密码最小长度为 N-1; 3、dcredit=N,当 N 小于 0 时,代表新密码中数字字符数量不得少于(N)个。例如,dcredit=-2 代表密码中要至少包含两个数字字符; 4、ucredit=N,当 N 小于 0 时,代表则新密码中大写字符数量不得少于(N)个; 5、lcredit=N,当 N 小于 0 时,代表则新密码中小写字符数量不得少于(-N) 个; 6、ocredit=N,当 N 小于 0 时,代表则新密码中特殊字符数量不得少于( N)个;2.不存在空口令帐号。 shadow 文件第二个字段为空即存在空口令 |
影响性分析 | 加固操作对业务无影响,加固操作对业务无影响,但是操作失误会导致系统认 证错误,无法正常登陆。 建议在修改配置文件前,对原配置文件进行备份 cp xx xx20190503.bak |
项目 | 详情 |
说明 | 对于采用静态口令认证技术的设备,帐户口令的生存期不长于 90 天。最短期 限为 6 天。 由于所有密码理论上都是可以被破解的,只是时间长短问题,设置口令生存期 是为了让攻击者破解密码后密码已经更新 |
检测步骤 | 执行:more /etc/login.defs,检查 PASS_MAX_DAYS、 PASS_MIN_DAYS、 PASS_WARN_AGE 参数 |
符合性依据 | 参考配置操作 用 vi 编辑/etc/login.defs 文件中配置: PASS_MAX_DAYS 90#新建用户的口令最长使用天数 PASS_MIN_DAYS 6#新建用户的口令最短使用天数 PASS_WARN_AGE 7#新建用户的口令到期提前提醒天数 |
项目 | 详情 |
说明 | 攻击者一般都从系统默认帐户进行尝试破解。应锁定与设备运行、维护等工作无关的账户 |
检测步骤 | 查看锁定用户: # cat /etc/passwd,查看哪些账户的 shell 域中为 nologin |
符合性依据 | 系统默认帐户应被禁止登录或者锁定如下账号: lp, sync, shutdown, halt, news, uucp, operator, games, gopher 。 参考配置操作: 锁定用户: 修改/etc/passwd 文件,将需要锁定的用户的 shell 域设为 nologin; 通过#passwd –l username 锁定账户; 只有具备超级用户权限的使用者方可使用#passwd –l username 锁定用户,用 #passwd –d username 解锁后原有密码失效,登录需输入新密码 |
回退操作 | 账户解锁: # usermod -U username 或# passwd -u username |
项目 | 详情 |
说明 | 系统需按照实际用户分配账户; 避免不同用户间共享账户。 |
检测步骤 | 使用命令 cat /etc/passwd 查看当前所有用户的信息,与管理员确认是否有共 享账户情况存在 |
符合性依据 | 若存在账户共享的情况,则低于安全要求; 参考配置操作: cat /etc/passwd 查看当前所有用户的情况; 如需建立用户,参考如下: #useradd username #创建账户 #passwd username #设置密码 使用该命令为不同的用户分配不同的账户,设置不同的口令及权限信息等。 |
项目 | 详情 |
说明 | 如果系统开启 FTP 服务,检查系统是否禁止 ROOT 等系统帐户远程访问 FTP FTP 容易被攻击者攻击获得权限,FTP 与系统帐户不共享,防止攻击者进一步 获取系统帐户攻击操作系统 |
检测步骤 | (一) 查看 FTP 进程: 1、ps -ef |grep ftp,检查是否有 ftp 进程; 2、chkconfig --list |grep ftp,检查 ftp 服务是否开机启动; 若以上两项未开启 FTP,则忽略以下 FTP 帐户配置。 (二) 检查 FTP 帐户 1、默认 FTP 就是禁止 root 用户登录的(如果没有禁用在/etc/vsftpd/ftpusers 和/etc/vsftpd/user_list,把 root 去掉) 2、更改/etc/vsftpd/vsftpd.conf 文件,查看是否有: userlist_enable=YES 这条 配置,如果没有则加上; 再增加 userlist_deny=NO(只允许 userlist 文件的用 户登录 FTP,其它默认用户不允许) 3、更改/etc/vsftpd/user_list 文件 添加 ftp 允许登陆的帐户,并注释掉原所有帐户; 4、重新启动 vsftpd 服务 service vsftpd restart |
符合性依据 | 如不使用 FTP,关闭 FTP; 如需使用,专门为 FTP 设置账号,与系统帐户不共享。 |
项目 | 详情 |
说明 | 帐号与口令-检查是否存在除 root 之外 UID 为 0 的用户(超级用户) 一般默认情况无其他超级帐户(运维主动添加除外),排除攻击者暗藏添加的超级用户长期潜伏的可能 |
检测步骤 | 执行:awk -F: '($3 == 0) { print $1 }' /etc/passwd |
符合性依据 | 返回值包括“root”以外的条目,则低于安全要求; |
备注 | 补充操作说明: UID 为 0 的任何用户都拥有系统的最高特权,保证只有 root 用户的 UID 为 0 修改方法:编辑 /etc/passwd 文件(文件内容结构为 Root : x : 0 : 0 : root : /root : /bin/bash)把此用户的的第三项改为非 0 的数值,第三项表示用户 UID 值 |
项目 | 详情 |
说明 | 对于采用静态口令认证技术的设备,应配置当用户连续认证失败次数超过 5 次,锁定该用户使用的帐号。 用户认证失败锁定是为了防止暴力破解。 |
检测步骤 | 查看文件中是否对 pam_tally2.so 的参数进行了正确设置。 执行:more /etc/pam.d/system-auth |
符合性依据 | 连续输错 5 次口令,帐号锁定 5 分钟, 参考配置操作: 使用命令“vi /etc/pam.d/system-auth”修改配置文件 在进行此项安全加固工作前,请先检查 PAM 模块版本,搜索 pam_tally2 是 否存在,如果 pam_tally2 存在,请在 system-auth 文件中 配 置 参 数 auth required pam_tally2.so deny=5unlock_time=300 even_deny_root root_unlock_time=300 如果不存在,请在 auth 段最后一行添加上述行。 |
项目 | 详情 |
说明 | 系统应配置使用 SSH 等加密协议进行远程登录维护,并安全配置 SSHD 的设 置。不能使用 TELNET 这类可以被嗅探工具抓包获取敏感信息的明文传输协 议。 |
检测步骤 | 查看 SSH 服务状态: ps –elf|grep ssh 查看 telnet 服务状态: ps –elf|grep telnet |
符合性依据 | 没有使用 telnet 进行远程维护 使用 SSH 进行远程维护 参考配置操作: SSH 配置要符合如下要求 Protocol 2 #使用 ssh2 版本 X11Forwarding yes #允许窗口图形传输使用 ssh 加密 IgnoreRhosts yes#完全禁止 SSHD 使用.rhosts 文件 RhostsAuthentication no #不设置使用基于 rhosts 的安全验证 RhostsRSAAuthentication no #不设置使用 RSA 算法的基于 rhosts 的安全验证 HostbasedAuthentication no #不允许基于主机白名单方式认证 PermitRootLogin no #不允许 root 登录 PermitEmptyPasswords no #不允许空密码 Banner /etc/motd #设置 ssh 登录时显示的 banner |
项目 | 详情 |
说明 | 1、限制具备超级管理员权限的用户远程登录。 2、远程执行管理员权限操作,应先以普通权限用户远程登录后,再切换到超 级管理员权限账户后执行相应操作。 |
检测步骤 | 使用命令“cat /etc/ssh/sshd_config”查看配置文件 (1)检查是否允许 root 直接登录 检查“PermitRootLogin”的值是否为 no (2)检查 SSH 使用的协议版本 检查“Protocol”的值 |
影响性分析 | 以 root 进行远程登录的管理员或相关系统都将无法登录。 |
回退操作 | 修改/etc/ssh/sshd_config 文件,将 PermitRootLogin no 改为 PermitRootLogin yes,重启 sshd 服务 |
备注 | 远程执行管理员权限操作,应先以普通权限用户远程登录后,再切换到超级 管理员权限账户后执行相应操作 |
项目 | 详情 |
说明 | 对于具备字符交互界面的设备,配置定时帐户自动登出。当管理员未对系统操作 10 分钟后,则系统自动注销该账户 |
检测步骤 | 使用命令“cat /etc/profile |grepTMOUT”查看 TMOUT 是否被设置 |
符合性依据 | 返回值为空或是时间较长,则低于安全要求。 参考配置操作 通过修改账户中“TMOUT”参数,可以实现此功能。 TMOUT 按秒计算。 编辑 profile 文件(vi /etc/profile),在“HISTFILESIZE=”后面加入这行: TMOUT=600 |
备注 | 改变这项设置后,必须先注销用户,再用该用户登录才能激活这个功能 |
项目 | 详情 |
说明 | 根据安全需求对重要目录和文件的权限进行设置。 重点要求 password 配置文件、shadow 文件、group 文件权限。 当前主流版本的 linux 系统在默认情况下即对重要文件做了必要的权限设置, 在日常管理和操作过程中应避免修改此类文件权限,除此以外,应定期对权 限进行检查及复核,确保权限设置正确。 |
检测步骤 | 执行以下命令检查目录和文件的权限设置情况,并按照如下的权限设置: ls –l /etc 755 ls –l /etc/rc.d/init.d 755 ls –l /tmp 1777 (只要求/tmp 文件夹为 1777,对/tmp 的子文件不要求修 改权限) ls –l /etc/passwd644 ls –l /etc/shadow400 ls –l /etc/group 644 ls –l /etc/security755 ls –l /etc/services 644 ls -l /etc/rc*.d 755 |
符合性依据 | 若权限均为 777 或者过低,则低于安全要求 |
影响性分析 | 加固操作对业务的影响需在测试环境中进行测试 |
回退操作 | 通过 chmod 命令对目录的权限进行实际调整 |
备注 | 对于重要目录,建议执行如下类似操作: chmod -R 750 /etc/rc.d/init.d/* 这样只有 root 可以读、写和执行这个目录下的脚本。 |
项目 | 详情 |
说明 | 控制用户缺省访问权限,当在创建新文件或目录时应除去新文件或目录不应 有的访问允许权限,防止同属于该组的其它用户及别的组的用户修改该用户 的文件或更高限制 |
检测步骤 | 执行命令,查看文件下 umask 值设置情况。 more /etc/profile more /etc/csh.cshrc more /etc/bashrc |
符合性依据 | 若 umask 值小于 027,则低于安全要求 参考配置操作: 针对单独用户设置 可修改用户 home 目录下的.bash_profile 脚本文件,例如,可增加一条语句: umask 027; 对于权限要求较严格的场合,建议设置为 077。 全局默认设置: 默认通过全局脚本/etc/bashrc 设置所有用户的默认 umask 值,修改脚本即可 实现对用户默认 umask 值的全局性修改,建议将 umask 设置为 022,对于权 限要求较严格的场合,建议设置为 077 |
备注 | umask 系统默认设置一般为 022,新创建的文件默认权限 755(777-022=755);导致其他用户有执行权利。 在 UNIX 类系统中 777 是最高权限,4 是读,2 是写,1 是执行,加起来等于 7,三个 7 分别代表系统用户,本组用户和其他用户的权限。 |
项目 | 详情 |
说明 | 系统应配置完备日志记录,记录对与系统相关的安全事件,方便发生安全时 间后溯源。 |
检测步骤 | 执行命令 1、# cat /etc/syslog.conf 查看是否有对应配置 2、# cat /var/log/secure 查看是否记录有需要的设备相关的安全事件 如不存在/etc/syslog.conf,则查看/etc/rsyslog.conf 检查参数 authpriv 的值 |
符合性依据 | 若未对所有登录事件都记录,则低于安全要求; 参考配置操作 authpriv. /var/log/secure //其中是通配符,代表任何设备;none 表示不对任何级别的信息进行记录 |
影响性分析 | 加固操作增加系统资源开消,请检查系统资源是否充足。 |
回退操作 | 修改配置文件 vi /etc/syslog.conf。 配置如下类似语句,注释掉下面: #authpriv.*/var/log/secure |
项目 | 详情 |
说明 | 当前系统应配置远程日志功能,将需要重点关注的日志内容传输到日志服务 器进行备份。方便发生安全事件后对事件进行溯源 |
检测步骤 | 执行:more /etc/syslog.conf, 如不存在/etc/syslog.conf,查看/etc/rsyslog.conf 查看是否设置了下列项: *.* @10.110.102.23 |
符合性依据 | 若未设置远程日志服务器,则低于安全要求。 参考配置操作 修改配置文件 vi /etc/syslog.conf, 加上这一行: *.* @10.110.102.23 可以将"*.*"替换为你实际需要的日志信息。比如:kern.* / mail.* 等等;可以将此处 10.110.102.23 替换为实际的 IP 或域名。 重新启动 syslog 服务,执行下列命令: services syslogd restart 补充操作说明 注意:*.*和@之间为一个 Tab 键 |
备注 | 建议配置专门的日志服务器,加强日志信息的异地同步备份。 |
项目 | 详情 |
说明 | 根据每台机器的不同角色,关闭不需要的系统服务,根据服务器的角色和应用 情况对启动项进行修改。对外部关闭不必要的端口。如无特殊需要,应关闭 Sendmail、Telnet、Bind 等服务。 |
检测步骤 | 执行:netstat -nap,查看系统端口使用情况 iptables -L -n,查看对端口访问限制 |
符合性依据 | 参考配置操作 关闭业务不需要的端口,使用如下方式禁用不必要的服务。 # service <服务名> stop # chkconfig --level 35 off 业务需要使用或不确定的端口服务应在 iptables 中进行访问控制。 iptables -p INPUTACCEPT iptables -p OUTPUT ACCEPT iptables -p FORWARD ACCEPT 黑名单模式。 iptables -A INPUT -p tcp --dport31337 -j DROP iptables -A FORWARD -p udp --dport135 -j DROP 参考说明 Linux/Unix 系统服务中,部分服务存在较高安全风险,应当禁用,包括: “lpd”,此服务为行式打印机后台程序,用于假脱机打印工作的 UNIX 后台程 序,此服务通常情况下不用,建议禁用; “telnet”,此服务采用明文传输数据,登陆信息容易被窃取,建议用 ssh 代替; “routed”,此服务为路由守候进程,使用动态 RIP 路由选择协议,建议禁用; “sendmail”,此服务为邮件服务守护进程,非邮件服务器应将其关闭; “Bluetooth”,此服务为蓝牙服务,如果不需要蓝牙服务时应关闭; “identd”,此服务为 AUTH 服务,在提供用户信息方面与 finger 类似,一般情 况下该服务不是必须的,建议关闭; “xfs”,此服务为 Linux 中 X Window 的字体服务,关于该服务历史上出现过信 息泄露和拒绝服务等漏洞,应以减少系统风险; R 服务(“rlogin”、“rwho”、“rsh”、“rexec”),R 服务设计上存在严重的安全缺 陷,仅适用于封闭环境中信任主机之间便捷访问,其他场合下均必须禁用; 基于 inetd/xinetd 的服务(daytime、chargen、echo 等),此类服务建议禁用。 关闭高危端口: TCP:31337 到 31340(特洛伊木马)、 31335、27444、27665、20034(NetBus) 、 9704、111、79、137-139(smb)、2049(NFS)、2745、3127、6129 、1434、593、 445 端口等 UDP :135、137、138、139、445、4444、1434、593 端口等 /etc/rc.d/init.d/iptables save service iptables restart |
影响性分析 | 关闭服务前,务必和管理员确定此服务关闭不会对使用中的应用程序造成影响。 此项工作需要在明确系统端口实际用途的情况下,限制不必要的端口访问,建 议先在测试环境中进行测试 |
回退操作 | 查看所有开启的服务: #ps –eaf 在 inetd.conf 中 关 闭 不 用 的 服 务 首先复制/etc/inet/inetd.conf 。 #cp /etc/inet/inetd.conf /etc/inet/inetd.conf.backup 然后用vi编辑器编辑inetd.conf 文件,把在相应行开头标记"#"字符删除, 重启 inetd 进程 |
项目 | 详情 |
说明 | 系统文件-系统 core dump 状态 core dump 记录许多系统敏感信息(程序运行时的内存,寄存器状态,堆栈 指针,内存管理信息、系统错误信息),只在系统调试阶段对开发人员有用, 正式运行环境建议删除,容易泄露敏感信息被攻击者利用 |
检测步骤 | 执行:more /etc/security/limits.conf 检查是否包含下列项: / * soft core 0 / * hard core 0 |
符合性依据 | 若不存在 *soft core 0;* hard core 0,则低于安全要求 |
回退操作 | 修改配置文件 vi /etc/security/limits.conf 配置如下类似语句,注释掉下面: * soft core 0 * hard core 0 |
备注 | 补充操作说明 core dump 中可能包括系统信息,易被入侵者利用,建议关闭。 |
项目 | 详情 |
说明 | 应根据需要及时进行按照操作系统更新补丁,修复系统漏洞。对服务器系统 补丁更新,应先进行兼容性测试 |
检测步骤 | 1、查看当前系统内核版本、补丁版本 # uname -a # cat /proc/version //查看内核版本 # lsb_release -a # cat /etc/Linux-release//查看补丁版本 2、 检查官网当前系统版本是否发布安全更新。 |
符合性判定依据 | 版本应保持为最新 |
影响性分析 | 加固操作对业务的影响需要在测试环境中进行测试,测试稳定后才在系统上 做补丁安装。 |
回退操作 | 卸载相关补丁 |
备注 | cat /etc/Linux-release//查看补丁版本的命令要根据系统的不通进行变化如: cat /etc/redhat-release、cat /etc/centos-release。LINUX 相关系统补丁一般 均会涉及到系统内核调整,一般是通过内核版本判断,是否需要最新的内核版本,对于这种情况,一般不建议内核升级 |