CentOS7 基线检查

口令锁定策略

威胁等级:Low

规则描述

设置口令认证失败后的锁定策略

审计描述

检查配置文件的/etc/pam.d/system-auth和/etc/pam.d/password-auth是否有
auth required pam_faillock.so preauth audit silent deny=5 unlock_time=180 
auth [success=1 default=bad] pam_unix.so 
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=180 
auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=180

检测用例信息

#### 检测描述
检查配置文件/etc/pam.d/system-auth和/etc/pam.d/password-auth是否有以下配置auth required pam_faillock.so preauth audit silent deny=5 unlock_time=180: grep '^\s*auth' /etc/pam.d/password-auth /etc/pam.d/system-auth | grep pam_faillock.so | grep "preauth" | grep "audit" | grep "silent" | egrep "deny=[0-5]" | egrep "unlock_time=([1-9][0-9]{3,}|[2-9][0-9][0-9]|1[8-9][0-9])"
#### 期望结果
两个文件都配置auth required pam_faillock.so preauth audit silent deny=5 unlock_time=180
#### 检测结果

#### 检测描述
检查配置文件/etc/pam.d/system-auth和/etc/pam.d/password-auth是否有以下配置auth [success=1 default=bad] pam_unix.so: grep '^\s*auth' /etc/pam.d/password-auth /etc/pam.d/system-auth | grep pam_unix.so | egrep "success=1\s+default=bad"
#### 期望结果
两个文件都配置auth [success=1 default=bad] pam_unix.so
#### 检测结果

#### 检测描述
检查配置文件/etc/pam.d/system-auth和/etc/pam.d/password-auth是否有以下配置auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=180: grep '^\s*auth' /etc/pam.d/password-auth /etc/pam.d/system-auth | grep pam_faillock.so | egrep "default=die" | grep "authfail" | grep "audit" | egrep "deny=[0-5]" | egrep "unlock_time=([1-9][0-9]{3,}|[2-9][0-9][0-9]|1[8-9][0-9])"
#### 期望结果
两个文件都配置auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=180
#### 检测结果

#### 检测描述
检查配置文件/etc/pam.d/system-auth和/etc/pam.d/password-auth是否有以下配置auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=180: grep '^\s*auth' /etc/pam.d/password-auth /etc/pam.d/system-auth | grep pam_faillock.so | grep "sufficient" | grep "authsucc" | grep "audit" | egrep "deny=[0-5]" | egrep "unlock_time=([1-9][0-9]{3,}|[2-9][0-9][0-9]|1[8-9][0-9])"
#### 期望结果
两个文件都配置auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=180
#### 检测结果

修改建议

在配置文件/etc/pam.d/system-auth和/etc/pam.d/password-auth中添加
auth required pam_faillock.so preauth audit silent deny=5 unlock_time=180 
auth [success=1 default=bad] pam_unix.so 
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=180 
auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=180

口令生存期

威胁等级:High

规则描述

该设置确定在系统要求用户更改某个密码之前可以使用改口令的期限及口令过期提前告警时间(以天为单位),此策略使得攻击者用来破解用户密码以及访问网络资源的时间受到限制

审计描述

检查配置文件/etc/login.defs的选项:应设置PASS_MAX_DAYS的值大于等于10且小于等于90,PASS_MIN_DAYS的值为10, PASS_WARN_AGE(口令过期提前时间)的值为7,同时还要检查文件/etc/shadow中有口令且可登录用户(root用户除外)的口令保持有效的最大天数为大于等于10且小于等于90,两次修改口令之间所需的最小天数为10,口令失效告警时间为7。

检测用例信息

#### 检测描述
检查配置文件/etc/login.defs的PASS_MAX_DAYS参数:egrep -v "[[:space:]]*#" /etc/login.defs 2>/dev/null | grep PASS_MAX_DAYS
#### 期望结果
PASS_MAX_DAYS 90(10-90)
#### 检测结果
PASS_MAX_DAYS	99999
#### 检测描述
检查配置文件/etc/login.defs的PASS_MIN_DAYS参数:egrep -v "[[:space:]]*#" /etc/login.defs 2>/dev/null | grep PASS_MIN_DAYS
#### 期望结果
PASS_MIN_DAYS 10
#### 检测结果
PASS_MIN_DAYS	0

修改建议

设置配置文件/etc/login.defs的选项:PASS_MAX_DAYS 90(10~90), PASS_MIN_DAYS 10, PASS_WARN_AGE 7,同时对已有用户还需要修改/etc/shadow文件中有密码且可登录用户(root用户除外)的口令保持有效的最大天数为大于等于10且小于等于90,两次修改口令之间所需的最小天数为10,口令失效告警时间为7。

口令复杂度

威胁等级:High

规则描述

该设置确定用户账户口令包含的最少字符数

审计描述

执行命令:cat /etc/pam.d/password-auth /etc/pam.d/system-auth | grep -v '^\s*#' | grep password | grep pam_pwquality.so,检查是否存在以下内容:password requisite pam_pwquality.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 
执行命令:cat /etc/security/pwquality.conf,检查是否存在以下内容:
minlen = 8 
dcredit = -1 
ucredit = -1 
ocredit = -1 
lcredit = -1

检测用例信息

#### 检测描述
检查/etc/pam.d/password-auth文件配置是否符合要求
#### 期望结果
文件/etc/pam.d/password-auth存在配置:
password requisite pam_pwquality.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1
#### 检测结果

#### 检测描述
检查/etc/pam.d/system-auth文件配置是否符合要求
#### 期望结果
文件/etc/pam.d/system-auth存在配置:
password requisite pam_pwquality.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1
#### 检测结果

#### 检测描述
检查/etc/security/pwquality.conf文件配置是否符合要求
#### 期望结果
文件/etc/security/pwquality.conf存在配置:
minlen = 8 
dcredit = -1 
ucredit = -1 
ocredit = -1 
lcredit=-1
#### 检测结果

修改建议

编辑/etc/pam.d/password-auth 和 /etc/pam.d/system-auth文件,分别修改包含minlen的pam_pwquality.so模块如下:
password requisite pam_pwquality.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 
或编辑/etc/security/pwquality.conf文件,修改以下内容:
minlen = 8 
dcredit = -1 
ucredit = -1 
ocredit = -1 
lcredit = -1 
备注:当配置文件/etc/pam.d/password-auth和/etc/pam.d/system-auth未配置minlen、dcredit、ucredit、ocredit、lcredit时,/etc/security/pwquality.conf文件设置生效

删除无关账号

威胁等级:Low

规则描述

删除无关账号

审计描述

检查/etc/shadow文件,确认是否有以下用户(adm|lp|sync|halt|news|nfsnobody|mail|uucp|operator|games|gopher|ftp|nobody|nobody4|noaccess|listen|webservd|rpm|dbus|avahi|mailnull|smmsp|nscd|vcsa|rpc|rpcuser|nfs|sshd|pcap|ntp|haldaemon|distcache|apache|webalizer|squid|xfs|gdm|sabayon|named),若有则检查文件中是否存在系统中未锁定的无关用户(用户密码字段列不是以*或者!开头)和需要锁定和删除的shell域设置的用户(用户shell域不是/bin/false或/sbin/nologin),均不存在则pass。

检测用例信息

#### 检测描述
检查/etc/passwd文件中是否存在需要锁定和删除的shell域设置的用户:egrep "^(adm|lp|sync|halt|news|nfsnobody|mail|uucp|operator|games|gopher|ftp|nobody|nobody4|noaccess|listen|webservd|rpm|dbus|avahi|mailnull|smmsp|nscd|vcsa|rpc|rpcuser|nfs|sshd|pcap|ntp|haldaemon|distcache|apache|webalizer|squid|xfs|gdm|sabayon|named):" /etc/passwd 2>/dev/null|awk -F':' '($7 != "/bin/false" && $7 != "/sbin/nologin") {print $1":"$7}'
#### 期望结果
不存在需要锁定和删除的shell域设置的用户
#### 检测结果
sync:/bin/sync
halt:/sbin/halt

修改建议

删掉不符规范的用户,执行:userdel username。或者编辑/etc/passwd文件,修改用户的密码字段和shell域。

设置账户组

威胁等级:Low

规则描述

系统中存在用户自定义的组账号

审计描述

查看文件/etc/login.defs文件,确认文件中变量GID_MIN和GID_MAX的值,并在/etc/passwd中确认是否存在用户组gid>=GID_MIN且<=GID_MAX的用户,若存在则pass

检测用例信息

#### 检测描述
查看文件/etc/login.defs文件,确认文件中变量GID_MIN和GID_MAX的值,并在/etc/passwd中确认是否存在用户gid>=GID_MIN且<=GID_MAX的用户: UP_GIDMIN=`(grep -v '^\s*#' /etc/login.defs 2>/dev/null |grep "^GID_MIN"|awk '($1="GID_MIN") {print $2}')`;UP_GIDMAX=`(grep -v '^\s*#' /etc/login.defs 2>/dev/null |grep "^GID_MAX"|awk '($1="GID_MAX") {print $2}')`;grep -v '^\s*#' /etc/passwd 2>/dev/null | egrep -v "oracle|sybase|postgres" |awk -F':' '($4>='$UP_GIDMIN' && $4<='$UP_GIDMAX') {print $1":"$3":"$4}'
#### 期望结果
存在用户自定义的组账号
#### 检测结果

修改建议

在/etc/passwd中添加gid符合要求(id>=GID_MIN且<=GID_MAX)的用户,并将用户分配到该用户组中

口令重复次数限制

威胁等级:Medium

规则描述

重新启用某个旧密码,要确保此密码在继上次使用后已被修改过几次。 此策略是管理员能够通过确保旧密码不被连续重新使用来增强安全性

审计描述

检查文件/etc/pam.d/system-auth和文件/etc/pam.d/password-auth是否存在如下配置:
password sufficient pam_unix.so remember=5 
或password required pam_pwhistory.so remember=5 
其中remember选项大于等于5

检测用例信息

#### 检测描述
检查文件/etc/pam.d/system-auth和文件/etc/pam.d/password-auth的“password sufficient pam_unix.so remember=5”参数
#### 期望结果
两个文件都配置password sufficient pam_unix.so remember=5(或更大)
#### 检测结果

#### 检测描述
检查文件/etc/pam.d/system-auth和文件/etc/pam.d/password-auth的“password required pam_pwhistory.so remember=5”参数
#### 期望结果
两个文件都配置password required pam_pwhistory.so remember=5(或更大)
#### 检测结果

修改建议

编辑配置文件/etc/pam.d/system-auth和文件/etc/pam.d/password-auth修改或添加配置:
password sufficient pam_unix.so remember=5 
或password required pam_pwhistory.so remember=5 
备注:使用remember=5配置覆盖原有模块配置

文件与目录缺省权限控制

威胁等级:High

规则描述

该设置确定新创建的目录和文件的默认权限

审计描述

检查/etc/profile,  /etc/profile.d/*.sh,  /etc/bashrc的umask配置为027(或者0027)。

检测用例信息

#### 检测描述
检查/etc/profile /etc/profile.d/*.sh配置文件中是否存在umask配置,执行命令: cat /etc/profile /etc/profile.d/*.sh 2>/dev/null | grep -v "^\s*#" | grep umask | awk '{print $1" "$2}' | tail -n1
#### 期望结果
文件/etc/profile或者/etc/profile.d/*.sh存在umask 027或umask 0027
#### 检测结果
umask 022
#### 检测描述
检查/etc/bashrc配置文件中是否存在umask配置,执行命令: cat /etc/bashrc 2>/dev/null | grep -v "^\s*#" | grep umask | awk '{print $1" "$2}' | tail -n1
#### 期望结果
文件/etc/bashrc中存在umask 027或umask 0027
#### 检测结果
umask 022

修改建议

设置/etc/profile /etc/profile.d/*.sh、/etc/bashrc文件中的umask配置为027(或者0027)。

配置用户最小授权

威胁等级:Medium

规则描述

检查文件/etc/passwd、/etc/shadow、/etc/group、/etc/services、/etc/xinetd.conf和目录/etc/security的权限

审计描述

检查文件/etc/passwd、/etc/group、/etc/services的权限是否小于或等于644,检查文件/etc/shadow的权限是否小于或等于400,检查/etc/xinetd.conf文件、/etc/security目录权限是否小于等于600,检查以上文件及目录的属主和属组是否均为root:root

检测用例信息

#### 检测描述
在目录/etc/security存在时,检查文件的权限,不存在则pass:stat --format="%U:%G %a" /etc/security 2>/dev/null
#### 期望结果
文件不存在或者/etc/security root:root 600(或者更严格)
#### 检测结果
/etc/security	root:root	0755

修改建议

设置文件/etc/passwd、/etc/group、/etc/services的权限为0644,设置文件/etc/shadow的权限为0400,设置文件/etc/xinetd.conf、目录/etc/security的权限为0600,例如执行:chmod 600 /etc/passwd。设置以上文件及目录的属主和属组为root:root,例如执行:chown root:root /etc/passwd

修改SSH的Banner警告信息

威胁等级:Medium

规则描述

检查ssh服务状态,若不开启则pass,若开启则检查是否设置ssh登录告警信息,设置则pass。

审计描述

检查ssh服务状态,若不开启则pass,若开启则检查/etc/ssh/sshd_config文件,是否配置Banner,获取其路径文件,检查该文件是否不为空,不为空则pass

检测用例信息

#### 检测描述
检查ssh服务状态:systemctl is-enabled sshd
#### 期望结果
ssh服务未安装或未开启
#### 检测结果
enabled
#### 检测描述
检查/etc/ssh/sshd_config文件,是否配置Banner,获取其路径文件,检查该文件是否不为空:path=$(grep "^\s*Banner\s*" /etc/ssh/sshd_config 2>/dev/null | awk '{print $2}');if [ -n "$path" ]; then cat $path 2>/dev/null | grep -v '^\s*#'; fi
#### 期望结果
文件不为空且不存在(\v|\r|\m|\s)
#### 检测结果

修改建议

如果ssh服务不需要,需要关闭该服务。如果需要ssh服务,则需要配置/etc/ssh/sshd_config文件中Banner <file>,并在对应的路径文件中配置警告标示:Authorized users only. All activity may be monitored and reported.

设置关键文件的属性

威胁等级:Medium

规则描述

检查/var/log/messages文件是否存在a属性

审计描述

检查/var/log/messages文件是否存在a属性:lsattr /var/log/messages | cut -b 6

检测用例信息

#### 检测描述
检查/var/log/messages文件是否存在:ls /var/log/messages 2>/dev/null
#### 期望结果
文件不存在
#### 检测结果
/var/log/messages
#### 检测描述
检查/var/log/messages文件是否存在a属性:lsattr /var/log/messages | cut -b 6
#### 期望结果
/var/log/messages文件存在a属性
#### 检测结果
-

修改建议

使用命令更改该日志文件属性:chattr +a /var/log/messages

检查是否仅使用已批准的MAC算法

威胁等级:Medium

规则描述

此变量限制SSH在通信期间可以使用的MAC算法的类型。

审计描述

检查/etc/ssh/sshd_config文件中MAC算法的值是否在下列算法列表中:hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com,curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256,检查方法如下:cat /etc/ssh/sshd_config 2>/dev/null | grep -v '^\s*#' | grep -i '^\s*MACs\s*' | awk -F' ' '{print $2}'

检测用例信息

#### 检测描述
检查是否仅使用已批准的MAC算法: cat /etc/ssh/sshd_config 2>/dev/null | grep -v '^\s*#' | grep -i '^\s*MACs\s*' | awk -F' ' '{print $2}'
#### 期望结果
输出必须在下列算法中:hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com,curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
#### 检测结果

修改建议

编辑 /etc/ssh/sshd_config 文件设置以下参数:MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com,curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256 并重启服务。
备注:MAC算法的值在上列算法列表中,可以是部分或者全部

检查是否只使用了已批准的密码

威胁等级:Medium

规则描述

此变量限制SSH在通信期间可以使用的密码类型。

审计描述

检查/etc/ssh/sshd_config文件中Ciphers的值是否在下列密码类型列表中: aes256-ctr,aes192-ctr,aes128-ctr, 检查方法如下:cat /etc/ssh/sshd_config 2>/dev/null | grep -v '^\s*#' | grep -i '^\s*Ciphers\s*'

检测用例信息

#### 检测描述
检查是否只使用了已批准的密码: cat /etc/ssh/sshd_config 2>/dev/null | grep -v '^\s*#' | grep -i '^\s*Ciphers\s*'
#### 期望结果
输出必须在下列密码类型中:aes256-ctr,aes192-ctr,aes128-ctr
#### 检测结果

修改建议

编辑 /etc/ssh/sshd_config 文件设置以下参数:Ciphers aes256-ctr,aes192-ctr,aes128-ctr 并重启服务; 
备注:Ciphers的值在上述密码类型中,可以是部分或者全部。

检查不活跃的密码锁定是否小于等于30天

威胁等级:Medium

规则描述

在给定时间段内已停用的用户帐户可以自动禁用。建议在密码到期后30天内处于非活动状态的帐户被禁用。

审计描述

执行以下命令检查INACTIVE是否为30或更少:
# useradd -D | grep INACTIVE 
INACTIVE=30(或更少) 
检查所有使用密码的用户是否将密码设置为在密码过期后的30天内停用:
# egrep ^[^:]+:[^\!*] /etc/shadow| egrep -v "^\s*#|root" | awk -F: '{print $1":"$7}' | egrep -v ".*:(30|[1-2][0-9]|[1-9])$" 
输出为空

检测用例信息

#### 检测描述
检查不活跃的密码锁定是否小于等于30天: useradd -D | grep INACTIVE
#### 期望结果
INACTIVE=30(1-30)
#### 检测结果
INACTIVE=-1

修改建议

执行以下命令将默认密码不活动期限设置为30天:
# useradd -D -f 30 
修改不合规用户的用户参数:
# chage --inactive 30 <user>

禁止wheel组以外的用户使用su - root命令

威胁等级:High

规则描述

使用PAM认证模块进行su权限控制,禁止wheel组之外的用户使用su - root命令

审计描述

执行命令cat /etc/pam.d/su,查看文件中是否存在如下配置:
        auth  sufficient pam_rootok.so 
使用pam_rootok.so认证模块认证
        auth  required pam_wheel.so group=wheel或auth required pam_wheel.so use_uid
且配置了只允许wheel组的用户才能使用su - root命令

检测用例信息

#### 检测描述
检查文件中是否存在pam_wheel.so配置:grep '^\s*auth' /etc/pam.d/su | egrep "(required|requisite|sufficient)" | grep  pam_wheel.so | egrep "\s*(use_uid|group\s*=\s*wheel)\s*"
#### 期望结果
auth  required(requisite|sufficient) pam_wheel.so group=wheel或auth  required(requisite|sufficient) pam_wheel.so use_uid
#### 检测结果

修改建议

修改或添加配置文件/etc/pam.d/su的条目:
auth  sufficient pam_rootok.so 
auth  required pam_wheel.so group=wheel或auth required pam_wheel.so use_uid

限制root用户SSH远程登录

威胁等级:High

规则描述

拒绝root用户通过ssh协议远程登录
ssh协议版本为2

审计描述

查看配置文件/etc/ssh/sshd_config是否有以下配置:
(1)拒绝root用户通过ssh协议远程登录
PermitRootLogin no
(2)ssh协议版本是否为2
Protocol 2

检测用例信息

#### 检测描述
检查PermitRootLogin是否关闭:egrep -v "^[[:space:]]*#|^[[:space:]]*$" /etc/ssh/sshd_config | grep PermitRootLogin
#### 期望结果
PermitRootLogin no
#### 检测结果
PermitRootLogin yes

修改建议

在文件/etc/ssh/sshd_config添加如下配置:
PermitRootLogin no
Protocol 2 
备注:PermitRootLogin的默认值为yes,Protocol的默认值为2

检查SSH的MaxAuthTries是否设置为小于等于4

威胁等级:Medium

规则描述

MaxAuthTries参数指定每个连接允许的最大验证尝试次数。当登录失败次数达到设置的一半时,错误消息将被写入syslog文件详细记录登录失败。

审计描述

检查/etc/ssh/sshd_config文件中是否存在 MaxAuthTries 参数,且值小于等于4

检测用例信息

#### 检测描述
检查SSH的MaxAuthTries是否设置: cat /etc/ssh/sshd_config | grep -v '^\s*#' | grep MaxAuthTries
#### 期望结果
MaxAuthTries 4(1-4)
#### 检测结果

修改建议

编辑/etc/ssh/sshd_config文件将 MaxAuthTries 设置为:小于等于4,并重启服务。
备注:MaxAuthTries的默认值为6

检查SSH空闲超时间隔是否设置

威胁等级:Medium

规则描述

ClientAliveInterval和ClientAliveCountMax这两个选项控制ssh会话超时。ClientAliveInterval设置了ssh服务器端向其客户端发送请求消息(alive消息)的间隔时间,以检测客户端是否还存在;ClientAliveCountMax设置了ssh服务允许客户端在接收到服务端的alive消息未响应的最大超时次数,如果客户端在最大超时次数内均未响应,ssh服务会自动终止与客户端的会话。例如,如果ClientAliveInterval设置为15,ClientAliveCountMax设置为3,那么无应答的客户端会在45秒后被强制断开。

审计描述

检查/etc/ssh/sshd_config文件中是否存在 ClientAliveInterval 300 
ClientAliveCountMax 3

检测用例信息

#### 检测描述
检查SSH的ClientAliveInterval是否设置: cat /etc/ssh/sshd_config | grep -v '^\s*#' | grep ClientAliveInterval
#### 期望结果
ClientAliveInterval 300(1-300)
#### 检测结果

修改建议

编辑/etc/ssh/sshd_config文件将ClientAliveInterval设置为:小于等于300,ClientAliveCountMax设置为:小于等于3,并重启服务。
备注:ClientAliveInterval的默认值为0,ClientAliveCountMax的默认值为3。

登陆超时时间设置

威胁等级:High

规则描述

设置定时帐户自动登出时间。

审计描述

检查/etc/profile文件中是否配置超时设置:TMOUT小于等于300.

检测用例信息

#### 检测描述
检查/etc/profile文件中是否存在TMOUT: cat /etc/profile | egrep -v ^\s*# | grep -i TMOUT
#### 期望结果
TMOUT小于等于300
#### 检测结果

修改建议

在/etc/profile文件中添加以下内容:export TMOUT=300

系统core dump状态

威胁等级:Medium

规则描述

系统core dump状态

审计描述

查看/etc/security/limits.conf文件中是否配置如下内容:* soft core 0、* hard core 0,查看/etc/profile文件中是否存在如下配置:ulimit -S -c 0 > /dev/null 2>&1

检测用例信息

#### 检测描述
检查/etc/security/limits.conf文件中是否存在配置* soft core 0:grep -v "^\s*#"  /etc/security/limits.conf | egrep "\*\s+soft\s+core\s+0"
#### 期望结果
存在* soft core 0
#### 检测结果

#### 检测描述
检查/etc/security/limits.conf文件中是否存在配置* hard core 0: grep -v "^\s*#"  /etc/security/limits.conf | egrep "\*\s+hard\s+core\s+0"
#### 期望结果
存在* hard core 0
#### 检测结果

修改建议

在/etc/security/limits.conf文件中设置* soft core、* hard core为0,且在/etc/profile文件中注释掉ulimit -S -c 0 > /dev/null 2>&1

历史命令设置

威胁等级:Medium

规则描述

历史命令设置

审计描述

编辑文件/etc/profile查看是否存在如下内容:
        HISTFILESIZE=5
        HISTSIZE=5

检测用例信息

#### 检测描述
检查文件中是否存在HISTFILESIZE配置:cat /etc/profile|grep -v "^\s*#"|grep "HISTFILESIZE\s*=" | tail -1
#### 期望结果
HISTFILESIZE的值小于等于5
#### 检测结果

#### 检测描述
检查文件中是否存在HISTSIZE配置:cat /etc/profile|grep -v "^\s*#"|grep "HISTSIZE\s*=" | tail -1
#### 期望结果
HISTSIZE的值小于等于5
#### 检测结果
HISTSIZE=1000

修改建议

在文件/etc/profile中修改添加如下配置:
        HISTFILESIZE=5
        HISTSIZE=5

禁止ICMP重定向

威胁等级:Medium

规则描述

禁止ICMP重定向

审计描述

禁止ICMP重定向,查看文件/etc/sysctl.conf或/etc/sysctl.d/*中net.ipv4.conf.all.accept_redirects参数,值为0合规,
执行命令:1.sysctl net.ipv4.conf.all.accept_redirects ;2.cat /etc/sysctl.conf /etc/sysctl.d/* | grep -v '^\s*#' | grep "net\.ipv4.conf\.all\.accept_redirects" | uniq

检测用例信息

#### 检测描述
检查系统设置的参数net.ipv4.conf.all.accept_redirects: sysctl net.ipv4.conf.all.accept_redirects
#### 期望结果
net.ipv4.conf.all.accept_redirects = 0
#### 检测结果
net.ipv4.conf.all.accept_redirects = 1
#### 检测描述
检查文件/etc/sysctl.conf或/etc/sysctl.d/*是否配置参数net.ipv4.conf.all.accept_redirects :cat /etc/sysctl.conf /etc/sysctl.d/* | grep -v '^\s*#' | grep "net\.ipv4.conf\.all\.accept_redirects" | uniq
#### 期望结果
文件/etc/sysctl.conf或者/etc/sysctl.d/*配置:net.ipv4.conf.all.accept_redirects = 0
#### 检测结果

修改建议

设置配置文件/etc/sysctl.conf或/etc/sysctl.d/*的参数:net.ipv4.conf.all.accept_redirects=0, 执行命令sysctl -p重新加载配置文件使其生效

禁止IP路由转发

威胁等级:Low

规则描述

禁止IP路由转发

审计描述

检查系统是否禁用IP路由转发功能,查看文件/etc/sysctl.conf或/etc/sysctl.d/*中net.ipv4.ip_forward参数,值为0表示合规,执行命令:1.sysctl net.ipv4.ip_forward 2.cat /etc/sysctl.conf /etc/sysctl.d/* | grep -v '^\s*#' | grep "net\.ipv4\.ip_forward" | uniq

检测用例信息

#### 检测描述
检查文件/etc/sysctl.conf或/etc/sysctl.d/*是否配置参数net.ipv4.ip_forward:cat /etc/sysctl.conf /etc/sysctl.d/* | grep -v '^\s*#' | grep "net\.ipv4\.ip_forward" | uniq
#### 期望结果
文件/etc/sysctl.conf或者/etc/sysctl.d/*配置:net.ipv4.ip_forward = 0
#### 检测结果

修改建议

设置文件/etc/sysctl.conf或/etc/sysctl.d/*的参数:net.ipv4.ip_forward = 0,执行命令sysctl -p 重新加载配置文件使其生效

禁止IP源路由

威胁等级:Medium

规则描述

禁止IP源路由

审计描述

检查文件/etc/sysctl.conf或/etc/sysctl.d/*参数accept_source_route值均为0合规,执行命令:
1.sysctl net.ipv4.conf.all.accept_source_route 
2.cat /etc/sysctl.conf /etc/sysctl.d/* | grep -v'^\s*#' | grep 'net\.ipv4\.conf\.all\.accept_source_route' | uniq 
3. sysctl net.ipv4.conf.default.accept_source_route 
4.cat /etc/sysctl.conf /etc/sysctl.d/* | grep -v '^\s*#' | grep 'net\.ipv4\.conf\.default\.accept_source_route' | uniq

检测用例信息

#### 检测描述
检查文件/etc/sysctl.conf或/etc/sysctl.d/*是否配置参数net.ipv4.conf.all.accept_source_route :cat /etc/sysctl.conf /etc/sysctl.d/* | grep -v '^\s*#' | grep 'net\.ipv4\.conf\.all\.accept_source_route' | uniq
#### 期望结果
文件/etc/sysctl.conf或者/etc/sysctl.d/*配置:net.ipv4.conf.all.accept_source_route = 0
#### 检测结果

#### 检测描述
检查文件/etc/sysctl.conf或/etc/sysctl.d/*是否配置参数net.ipv4.conf.default.accept_source_route :cat /etc/sysctl.conf /etc/sysctl.d/* | grep -v '^\s*#' | grep 'net\.ipv4\.conf\.default\.accept_source_route' | uniq
#### 期望结果
文件/etc/sysctl.conf或者/etc/sysctl.d/*配置:net.ipv4.conf.default.accept_source_route = 0
#### 检测结果

修改建议

设置文件/etc/sysctl.conf或/etc/sysctl.d/*的以下参数: net.ipv4.conf.all.accept_source_route = 0 
net.ipv4.conf.default.accept_source_route = 0,执行命令:sysctl -p 重新加载配置文件,使其生效

确保忽略广播的ICMP请求

威胁等级:Medium

规则描述

系统忽略所有广播和多播地址的ICMP回显和时间戳记请求,把配置文件/etc/sysctl.conf或/etc/sysctl.d/*中net.ipv4.icmp_echo_ignore_broadcasts的参数设置为1

审计描述

检查系统是否开启忽略广播ICMP请求功能,检查文件/etc/sysctl.conf或/etc/sysctl.d/*中net.ipv4.icmp_echo_ignore_broadcasts参数,值为1表示合规,
执行命令:1.sysctl net.ipv4.icmp_echo_ignore_broadcasts 2.cat /etc/sysctl.conf /etc/sysctl.d/* | grep -v '^\s*#' | grep "net\.ipv4\.icmp_echo_ignore_broadcasts" | uniq

检测用例信息

#### 检测描述
查看文件/etc/sysctl.conf或/etc/sysctl.d/*是否配置参数net.ipv4.icmp_echo_ignore_broadcasts:cat /etc/sysctl.conf /etc/sysctl.d/* | grep -v '^\s*#' | grep "net\.ipv4\.icmp_echo_ignore_broadcasts" | uniq
#### 期望结果
文件/etc/sysctl.conf或者/etc/sysctl.d/*配置:net.ipv4.icmp_echo_ignore_broadcasts = 1
#### 检测结果

修改建议

设置文件/etc/sysctl.conf或/etc/sysctl.d/*的参数为:net.ipv4.icmp_echo_ignore_broadcasts = 1,执行命令:sysctl -p 加载配置文件,使该策略项生效

打开syncookie缓解syn flood攻击

威胁等级:Low

规则描述

打开syncookie缓解syn flood攻击

审计描述

检查文件/etc/sysctl.conf或/etc/sysctl.d/*的参数net.ipv4.tcp_syncookies,值为1表示合规,执行命令:
1.sysctl net.ipv4.tcp_syncookies 2.cat /etc/sysctl.conf /etc/sysctl.d/* | grep-v '^\s*#' | grep "net\.ipv4\.tcp_syncookies" | uniq

检测用例信息

#### 检测描述
检查文件/etc/sysctl.conf或/etc/sysctl.d/*是否配置参数net.ipv4.tcp_syncookies :cat /etc/sysctl.conf /etc/sysctl.d/* | grep-v '^\s*#' | grep "net\.ipv4\.tcp_syncookies" | uniq
#### 期望结果
文件/etc/sysctl.conf或者/etc/sysctl.d/*配置:net.ipv4.tcp_syncookies  = 1
#### 检测结果

修改建议

修改文件/etc/sysctl.conf或/etc/sysctl.d/*的参数net.ipv4.tcp_syncookies = 1,执行命令sysctl -p 重新加载配置文件,使其生效

检查AIDE是否安装

威胁等级:Medium

规则描述

AIDE生产一个文件系统状态的快照,其中包括修改时间,权限和文件哈希值,然后可以其与文件系统的当前状态进行比较,以检测对系统的修改。

审计描述

检查AIDE是否安装,执行:rpm -q aide 2>/dev/null

检测用例信息

#### 检测描述
检查AIDE是否安装:rpm -q aide 2>/dev/null
#### 期望结果
aide-<version>
#### 检测结果
package aide is not installed

修改建议

执行以下命令安装AIDE:
# yum install aide

关闭不必要的服务和端口

威胁等级:Low

规则描述

获取系统中所有的系统服务和开放端口后由用户判断是否有非必要的服务和端口开启

审计描述

检测方法: 1、执行以下命令查看服务列表:chkconfig --list, systemctl list-unit-files | grep enabled, 查看所有服务的开启关闭列表检查基本的网络服务的开启或禁止情况,根据实际情况关闭不必要的服务。 2、查看开放的端口列表:netstat -tunlp

检测用例信息

#### 检测描述
显示所有的服务:chkconfig --list 2>/dev/null
#### 期望结果
由用户判断,关闭不必要的服务和端口
#### 检测结果
audit_agent    	0:off	1:off	2:on	3:on	4:on	5:on	6:off
hostguard      	0:off	1:off	2:on	3:on	4:on	5:on	6:off
jexec          	0:off	1:on	2:on	3:on	4:on	5:on	6:off
multi-queue-hw 	0:off	1:off	2:on	3:on	4:on	5:on	6:off
netconsole     	0:off	1:off	2:off	3:off	4:off	5:off	6:off
network        	0:off	1:off	2:off	3:off	4:off	5:off	6:off
#### 检测描述
显示所有启动的网络服务:systemctl list-unit-files | grep enabled
#### 期望结果
由用户判断,关闭不必要的服务和端口
#### 检测结果
atd.service                                   enabled 
auditd.service                                enabled 
autovt@.service                               enabled 
chronyd.service                               enabled 
cloud-config.service                          enabled 
cloud-final.service                           enabled 
cloud-init-local.service                      enabled 
cloud-init.service                            enabled 
cloudResetPwdAgent.service                    enabled 
cloudResetPwdUpdateAgent.service              enabled 
crond.service                                 enabled 
dbus-org.freedesktop.nm-dispatcher.service    enabled 
getty@.service                                enabled 
irqbalance.service                            enabled 
kdump.service                                 enabled 
microcode.service                             enabled 
NetworkManager-dispatcher.service             enabled 
NetworkManager-wait-online.service            enabled 
NetworkManager.service                        enabled 
postfix.service                               enabled 
rhel-autorelabel-mark.service                 enabled 
rhel-autorelabel.service                      enabled 
rhel-configure.service                        enabled 
rhel-dmesg.service                            enabled 
rhel-domainname.service                       enabled 
rhel-import-state.service                     enabled 
rhel-loadmodules.service                      enabled 
rhel-readonly.service                         enabled 
rsyslog.service                               enabled 
sshd.service                                  enabled 
supervisord.service                           enabled 
systemd-readahead-collect.service             enabled 
systemd-readahead-drop.service                enabled 
systemd-readahead-replay.service              enabled 
tuned.service                                 enabled 
uniagent.service                              enabled 
default.target                                enabled 
multi-user.target                             enabled 
remote-fs.target                              enabled 
runlevel2.target                              enabled 
runlevel3.target                              enabled 
runlevel4.target                              enabled 
#### 检测描述
显示所有的端口列表:netstat -tunlp
#### 期望结果
由用户判断,关闭不必要的服务和端口
#### 检测结果
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1145/master         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2091/sshd           
tcp6       0      0 :::48761                :::*                    LISTEN      28064/java          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1145/master         
tcp6       0      0 :::28001                :::*                    LISTEN      28059/java          
tcp6       0      0 :::28002                :::*                    LISTEN      28058/java          
tcp6       0      0 :::28003                :::*                    LISTEN      29934/java          
tcp6       0      0 :::28004                :::*                    LISTEN      28057/java          
tcp6       0      0 :::28100                :::*                    LISTEN      28056/java          
tcp6       0      0 :::28006                :::*                    LISTEN      28067/java          
tcp6       0      0 127.0.0.1:8009          :::*                    LISTEN      31631/java          
tcp6       0      0 :::5001                 :::*                    LISTEN      28061/java          
tcp6       0      0 :::14033                :::*                    LISTEN      31631/java          
tcp6       0      0 :::5010                 :::*                    LISTEN      28069/java          
tcp6       0      0 :::8083                 :::*                    LISTEN      31631/java          
tcp6       0      0 :::22                   :::*                    LISTEN      2091/sshd           
udp        0      0 0.0.0.0:60751           0.0.0.0:*                           5854/audit_agent    
udp        0      0 0.0.0.0:68              0.0.0.0:*                           721/dhclient        
udp        0      0 127.0.0.1:323           0.0.0.0:*                           618/chronyd         
udp6       0      0 ::1:323                 :::*                                618/chronyd         

修改建议

由用户判断,关闭不必要的服务和端口

禁止存在空密码的帐户

威胁等级:Medium

规则描述

空口令账号个数为0

审计描述

查看/etc/passwd中是否存在空口令账号,若不存在则pass

检测用例信息

修改建议

删除空口令账户或者添加口令

禁止UID为0的用户存在多个

威胁等级:Medium

规则描述

UID为0的非root账号数量为0

审计描述

检查/etc/passwd文件中UID为0的账号有且只有root

检测用例信息

修改建议

删除/etc/passwd文件中UID为0的非root账号

检查root用户默认组的GID是否为0

威胁等级:Medium

规则描述

usermod命令可用于指定root用户所属的组。这会影响root用户创建的文件的权限。

审计描述

root用户默认组的GID为0

检测用例信息

修改建议

将root用户默认组的GID设置为:0

检查密码散列算法是否为SHA-512

威胁等级:Medium

规则描述

将密码加密从md5更改为sha512(一个更强大的散列算法)。所有现有帐户都需要执行密码更改才能将存储的哈希值升级到新的算法。

审计描述

检查 /etc/pam.d/password-auth 和 /etc/pam.d/system-auth 文件是否存在如下内容: password sufficient pam_unix.so sha512

检测用例信息

修改建议

编辑 /etc/pam.d/password-auth 和 /etc/pam.d/system-auth 文件添加如下内容: password sufficient pam_unix.so sha512

日志文件安全

威胁等级:Low

规则描述

日志文件安全

审计描述

系统中不存在权限>640的日志文件

检测用例信息

#### 检测描述
在/etc/syslog-ng/syslog-ng.conf文件存在的情况下,检查syslog-ng日志文件权限是否满足要求:unset path LOGDIR;path=`ls /etc/syslog-ng/syslog-ng.conf 2>/dev/null`;if [ -n "$path" ];then LOGDIR=`cat /etc/syslog-ng/syslog-ng.conf 2>/dev/null|grep -v "^[[:space:]]*#"|grep "^destination"|grep file|(cut -d\\" -f2|cut -d\\' -f2)`;for file in $LOGDIR;do if [ -d "$file" -o -f "$file" ];then ls -l "$file"|grep -v "[r-][w-]-[r-]-----"  |awk '{print $1" "$8" "$9}';else echo "$file does not exist";fi;done;else echo "/etc/syslog-ng/syslog-ng.conf does not exist";fi;unset LOGDIR
#### 期望结果
不存在日志文件权限大于640(/etc/syslog-ng/syslog-ng.conf文件存在)
#### 检测结果
/etc/syslog-ng/syslog-ng.conf does not exist

修改建议

对权限>640的日志文件赋予640权限
#chmod 640 file       #file检测步骤中输出的权限>640的日志文件

配置su命令使用情况记录

威胁等级:Low

规则描述

文件/var/log/secure必须存在

审计描述

查看文件/etc/rsyslog.conf存在类似如下语句:
    authpriv.*          /var/log/secure#其中文件/var/log/secure必须存在
或查看文件/etc/syslog-ng/syslog-ng.conf,存在类似如下内容:
    filter f_secure { facility(authpriv); };
    destination f_authprive { file("/var/log/secure"); };
    log { source(src); filter(f_secure); destination(f_authprive); };

检测用例信息

#### 检测描述
检查syslog-ng是否配置su命令使用记录:unset ret ret2 ret3;if [ -s /etc/syslog-ng/syslog-ng.conf ];then ret=`cat /etc/syslog-ng/syslog-ng.conf | grep -v "^[[:space:]]*#" | egrep "facility\(authpriv\)" | grep "filter" | awk '{print $2}'`;if [ -n "$ret" ];then ret2=`cat /etc/syslog-ng/syslog-ng.conf | grep -v "^[[:space:]]*#" | grep "destination\s*f_authprive" | grep "/var/log/secure"`;if [ -n "$ret2" ];then ret3=`cat /etc/syslog-ng/syslog-ng.conf | grep -v "^[[:space:]]*#" | grep "log" | grep "$ret"`;fi;fi;fi;if [ -n "$ret3" ];then echo "The configuration of the security event log is valid.";fi;unset ret ret2 ret3;
#### 期望结果
The configuration of the security event log is valid.
#### 检测结果

修改建议

在/etc/rsyslog.conf文件中增加/var/log/secure的配置
如果安装了syslog-ng,则进行如下设置:
编辑文件/etc/syslog-ng/syslog-ng.conf,增加如下内容:
    filter f_secure { facility(authpriv); };
    destination f_authprive { file("/var/log/secure"); };
    log { source(src); filter(f_secure); destination(f_authprive); };
创建日志文件,并赋予其权限
    #touch /var/log/secure
    #chmod 640 /var/log/secure

记录cron行为日志

威胁等级:Low

规则描述

rsyslog、syslog-ng是否启用记录cron行为日志功能

审计描述

查看文件/etc/rsyslog.conf,看文件中是否存在如下配置:
 cron.*     /var/log/cron
或查看文件/etc/syslog-ng/syslog-ng.conf,看文件中是否存在如下内容:
    filter f_cron { facility(cron); };
    destination cron { file("/var/log/cron"); };
    log { source(src); filter(f_cron); destination(cron); };

检测用例信息

#### 检测描述
检查syslog-ng是否记录cron行为日志:if [ -s /etc/syslog-ng/syslog-ng.conf ];then cron_1=`cat /etc/syslog-ng/syslog-ng.conf | grep -v "^[[:space:]]*#" | egrep "filter[[:space:]]*.*[[:space:]]*{[[:space:]]*facility\(cron\);[[:space:]]*};" | wc -l`;if [ $cron_1 -ge 1 ];then cron_2=`cat /etc/syslog-ng/syslog-ng.conf | grep -v "^[[:space:]]*#" | grep "destination[[:space:]]*cron.*[[:space:]]*{[[:space:]]*file\(.*/var/log/cron.*\)[[:space:]]*;[[:space:]]*};"|awk '{print $2}'`;if [ -n $cron_2 ];file=`grep -v "^[[:space:]]*#" /etc/syslog-ng/syslog-ng.conf | grep "destination\s*cron" | grep -E "file\((\"|').+(\"|')\)" | awk -F '"' '{print $2}'`;if [ -n $cron_2 -a -f $file ];then cron_3=`cat /etc/syslog-ng/syslog-ng.conf | grep -v "^[[:space:]]*#" | egrep "log[[:space:]]*{[[:space:]]*source\(src\);[[:space:]]*filter\(.*\);[[:space:]]*destination\($cron_2\);[[:space:]]*};" | wc -l`;if [ $cron_3 -ge 1 ];then echo "Cron log has been configured";fi;else echo "$file does not exist";fi;fi;fi;
#### 期望结果
Cron日志已配置
#### 检测结果

修改建议

在文件/etc/rsyslog.conf添加如下配置:
 cron.*     /var/log/cron
或编辑文件/etc/syslog-ng/syslog-ng.conf,在文件增加如下内容(如果存在则无需新增)如下内容:
    filter f_cron { facility(cron); };
    destination cron { file("/var/log/cron"); };
    log { source(src); filter(f_cron); destination(cron); }; 其中/var/log/cron为日志文件。
    (1)、如果该文件不存在,则创建该文件,命令为:
        #touch /var/log/cron
    (2)、同时修改其权限为640,命令为:
        #chmod 640 /var/log/cron

使用SSH协议进行远程维护

威胁等级:High

规则描述

查看telnet和ssh服务状态

审计描述

查看telnet和ssh服务状态: 
systemctl is-enabled sshd, 
systemctl is-enabled telnet.socket

检测用例信息

修改建议

关闭Telnet服务, systemctl disable telnet.socket,并开启ssh服务, systemctl enable sshd

检查SSH的PermitEmptyPasswords是否禁用

威胁等级:Medium

规则描述

PermitEmptyPasswords参数指定SSH服务器是否允许使用空密码登录帐户。

审计描述

检查/etc/ssh/sshd_config文件中是否存在 PermitEmptyPasswords no

检测用例信息

修改建议

/编辑/etc/ssh/sshd_config文件将PermitEmptyPasswords设置为:no,并重启服务。
备注:PermitEmptyPasswords默认值为no

检查SSH的HostbasedAuthentication是否禁用

威胁等级:Medium

规则描述

HostbasedAuthentication参数指定身份验证是否允许。

审计描述

检查/etc/ssh/sshd_config文件中是否存在 HostbasedAuthentication no

检测用例信息

修改建议

编辑/etc/ssh/sshd_config文件将 HostbasedAuthentication 设置为:no,并重启服务。
备注:HostbasedAuthentication的默认值为no

修改SNMP的默认Community

威胁等级:Medium

规则描述

检查snmpd服务是否开启,若开启则修改snmp默认团体名称

审计描述

1、使用命令systemctl is-enabled snmpd查看snmpd服务是否开启。
2、snmpd服务若开启,则修改snmp默认团体名称
#cat /etc/snmp/snmpd.conf

检测用例信息

修改建议

修改snmp默认团体名称

禁止root用户登录FTP

威胁等级:Medium

规则描述

禁止root用户登录FTP

审计描述

禁止root用户登录ftp

1)检查是否有ftp服务,如果不存在,直接pass,如果有ftp服务,检查后面内容。
2)ftp服务启动时,检查下面内容:
检查userlist_enable是YES(默认是NO),同时userlist_deny是否是NO,且查看/etc/vsftpd/user_list文件是否有配置root用户,如果有root配置则不通过。
注:如果userlist_deny是YES(默认),则/etc/vsftpd/user_list中的用户都无法访问服务器,建议使用用户白名单。如果是pure-ftp服务器,查看如下配置文件pure-ftpd.conf。
pure-ftp服务器,pure-ftpd.conf文件中设置了MinUID            100,限制了uid<=100的用户登录FTP。
如果是wu-ftp服务器,查看如下配置文件/etc/ftpd/ftpusers(/etc/ftpusers)。
wu-ftp服务器,/etc/ftpd/ftpusers(/etc/ftpusers)文件中存在root用户。
如果是proftp服务器,查看如下配置文件proftpd.conf。
proftp服务器,proftpd.conf文件中不存在如下配置:
RootLogin           on
以上五个条件满足其一则合规,否则不合规。

检测用例信息

#### 检测描述
检查vsftpd.conf文件确保输出为userlist_enable=YES:if [ `ps -ef|grep ftpd|grep -v "grep"|wc -l` -ge 1 ];then data=`if [ -f /etc/vsftpd/vsftpd.conf ]; then printf '/etc/vsftpd/vsftpd.conf'; else if [ -f /etc/vsftpd.conf ]; then printf '/etc/vsftpd.conf';fi;fi;`; if [ ! -z "$data" ]; then cat $data | grep -v "^[[:space:]]*#" | awk -F'#' '{print $1}' | grep '^[[:space:]]*userlist_enable' 2>/dev/null;fi;fi;
#### 期望结果
userlist_enable=YES
#### 检测结果

#### 检测描述
检查vsftpd.conf文件确保输出为userlist_deny=NO:if [ `ps -ef|grep ftpd|grep -v "grep"|wc -l` -ge 1 ];then data=`if [ -f /etc/vsftpd/vsftpd.conf ]; then printf '/etc/vsftpd/vsftpd.conf'; else if [ -f /etc/vsftpd.conf ]; then printf '/etc/vsftpd.conf';fi;fi;`; if [ ! -z "$data" ]; then cat $data | grep -v "^[[:space:]]*#" | awk -F'#' '{print $1}'| grep '^[[:space:]]*userlist_deny' 2>/dev/null;fi ;fi;
#### 期望结果
userlist_deny=NO
#### 检测结果

#### 检测描述
检查pure-ftpd.conf文件确保存在MinUID      100:if [ `ps -ef|grep ftpd|grep -v "grep"|wc -l` -ge 1 ];then data=`if [ -f /etc/pure-ftpd/pure-ftpd.conf ]; then printf '/etc/pure-ftpd/pure-ftpd.conf'; else if [ -f /etc/pure-ftpd.conf ]; then printf '/etc/pure-ftpd.conf';fi;fi;`; if [ ! -z "$data" ]; then cat $data | egrep -v "^[[:space:]]*#|^[[:space:]]*$"|grep -i "MinUID";fi;unset data;fi;
#### 期望结果
MinUID 100
#### 检测结果

#### 检测描述
检查ftpusers文件,确保配置root:if [ `ps -ef|grep ftpd|grep -v "grep"|wc -l` -ge 1 ];then data=`if [ -f /etc/ftpusers ]; then printf '/etc/ftpusers'; else if [ -f /etc/ftpd/ftpusers ]; then printf '/etc/ftpd/ftpusers';fi;fi;`; if [ ! -z "$data" ]; then cat $data | egrep -v "^[[:space:]]*#|^[[:space:]]*$"|grep "^[[:space:]]*root";fi;unset data;fi;
#### 期望结果
root
#### 检测结果

#### 检测描述
检查proftpd.conf文件确保输出符合要求:if [ `ps -ef|grep ftpd|grep -v "grep"|wc -l` -ge 1 ];then data=`if [ -f /etc/proftpd.conf ]; then printf '/etc/proftpd.conf'; else if [ -f /etc/proftpd/proftpd.conf ]; then printf '/etc/proftpd/proftpd.conf';fi;fi;`; if [ ! -z "$data" ]; then cat $data | egrep -v "^[[:space:]]*#|^[[:space:]]*$"|egrep "RootLogin[[:space:]]+on"; else printf 'The configuration file of ftp does not exist'; fi;unset data;else printf 'Service ftp is not open'; fi;
#### 期望结果
ftp服务开启且proftpd.conf文件中不存在如下配置:RootLogin on
#### 检测结果
Service ftp is not open

修改建议

如果ftp服务不需要,需要关闭该服务。
如果需要ftp服务,则需要配置userlist_enable为YES,userlist_deny为NO,且/etc/vsftpd/user_list文件中删除root用户。
wu-ftp
    编辑/etc/ftpusers或者/etc/ftpd/ftpusers,在文件中录入root,例如:
    root
    venustech
    说明:ftpusers文件中用户将禁止登录FTP
proftp
    编辑配置文件proftpd.conf,在文件中查看是否存在如下内容,存在则将其注释掉:
    RootLogin           on
pure-ftp
    编辑配置文件pure-ftpd.conf,在文件中查看是否存在如下内容,没有则新增:
    MinUID          100          #即禁止uid<=100的用户登录FTP
重启FTP服务
备注:配置文件pure-ftpd.conf文件的默认路径为/etc/pure-ftpd/pure-ftpd.conf或/etc/pure-ftpd.conf 
配置文件proftpd.conf的默认路径为/etc/proftpd.conf或/etc/proftpd/proftpd.conf

禁止匿名FTP

威胁等级:High

规则描述

禁止匿名FTP

审计描述

禁止匿名登录ftp
1)检查是否有ftp服务,如果不存在,直接pass,如果有ftp服务,检查后面内容。
2)ftp服务启动时,检查下面内容:
a) 禁止匿名用户访问。
检查vsftpd.conf文件中anonymous_enable是否是NO,如果是No,则不需要检查b、c项,默认是YES。
b) 禁止匿名用户在FTP服务器中上传文件和创建目录。
检查vsftpd.conf文件中anon_upload_enable是否是NO,检查anon_mkdir_write_enable是否是NO。
备注:anon_upload_enable和anon_mkdir_write_enable默认为NO。
c) 禁止邮件地址登录。
检查vsftpd.conf文件中deny_email_enables是否是YES,同时检查banned_email_file配置的文件路径
如果是pure-ftp服务器,查看如下配置文件pure-ftpd.conf.
pure-ftp服务器,配置文件中存在NoAnonymous的值为yes
如果是wu-ftp服务器,查看如下配置文件ftpaccess.
wu-ftp服务器,配置文件中不存在class <class_name> [guest|anonymous] <ip_address>
如果是proftp服务器,查看如下配置文件proftpd.conf.
proftp服务器,配置文件中将匿名用户配置注释掉或者匿名用户配置中存在AnonRequirePassword的值为on
以上四个条件满足其一则合规,否则不合规

检测用例信息

#### 检测描述
检查vsftpd.conf确保输出为anonymous_enable=NO:data=`if [ -f /etc/vsftpd/vsftpd.conf ]; then printf '/etc/vsftpd/vsftpd.conf'; else if [ -f /etc/vsftpd.conf ]; then printf '/etc/vsftpd.conf';fi;fi;`; if [ ! -z "$data" ]; then cat $data | grep -v "^[[:space:]]*#" | awk -F'#' '{print $1}' | grep '^[[:space:]]*anonymous_enable' 2>/dev/null;fi
#### 期望结果
anonymous_enable=NO
#### 检测结果

#### 检测描述
检查vsftpd.conf确保输出为deny_email_enables=YES:data=`if [ -f /etc/vsftpd/vsftpd.conf ]; then printf '/etc/vsftpd/vsftpd.conf'; else if [ -f /etc/vsftpd.conf ]; then printf '/etc/vsftpd.conf';fi;fi;`; if [ ! -z "$data" ]; then cat $data  | grep -v "^[[:space:]]*#" | awk -F'#' '{print $1}' | grep '^[[:space:]]*deny_email_enables' 2>/dev/null;fi
#### 期望结果
deny_email_enable=YES
#### 检测结果

#### 检测描述
检查vsftpd.conf确保有输出:unset data;unset securecat;unset ret;data=`if [ -f /etc/vsftpd/vsftpd.conf ]; then printf '/etc/vsftpd/vsftpd.conf'; else if [ -f /etc/vsftpd.conf ]; then printf '/etc/vsftpd.conf';fi;fi;`; securecat=`if [ ! -z "$data" ]; then cat $data | grep -v "^[[:space:]]*#" | awk -F'#' '{print $1}' | grep '^[[:space:]]*banned_email_file' | awk -F'=' '{print $2}' 2>/dev/null;fi`;if [ ! -z "$securecat" ];then ret=`find $securecat -type f 2>/dev/null`;if [ ! -z "$ret" ];then echo $ret;fi;fi;unset securecat;unset ret;
#### 期望结果
文件存在
#### 检测结果

#### 检测描述
检查pure-ftpd.conf文件确保输出为NoAnonymous yes:data=`if [ -f /etc/pure-ftpd/pure-ftpd.conf ]; then printf '/etc/pure-ftpd/pure-ftpd.conf'; else if [ -f /etc/pure-ftpd.conf ]; then printf '/etc/pure-ftpd.conf';fi;fi;`; if [ ! -z "$data" ]; then cat $data | egrep -v "^[[:space:]]*#|^[[:space:]]*$"|egrep -i "NoAnonymous";fi;unset data;
#### 期望结果
NoAnonymous yes
#### 检测结果

#### 检测描述
检查ftpaccess文件确保输出满足要求:data=`if [ -f /etc/ftpaccess ]; then printf '/etc/ftpaccess'; else if [ -f /etc/ftpd/ftpaccess ]; then printf '/etc/ftpd/ftpaccess';fi;fi;`; if [ ! -z "$data" ]; then grep -v "^[[:space:]]*#" $data | egrep "^class\s*.*(guest|anonymous).*" 2>/dev/null;else echo "ftpaccess does not exist";fi;
#### 期望结果
文件存在且不包含内容class [类名][guest/anonymous] [IP地址]
#### 检测结果
ftpaccess does not exist
#### 检测描述
检查proftpd.conf文件确保输出满足要求:data=`if [ -f /etc/proftpd.conf ]; then printf '/etc/proftpd.conf'; else if [ -f /etc/proftpd/proftpd.conf ]; then printf '/etc/proftpd/proftpd.conf';fi;fi;`; if [ ! -z "$data" ]; then Anonymous_1=`cat $data|sed '/^[[:space:]]*#/d'|sed '/^[[:space:]]*$/d'|sed -n '/<Anonymous.*/,/<\/Anonymous>/p'|grep -i "AnonRequirePassword[[:space:]]*on"`;Anonymous_2=`cat $data|sed '/^[[:space:]]*#/d'|sed '/^[[:space:]]*$/d'|sed -n '/<Anonymous.*/,/<\/Anonymous>/p'`;if ([ -n "$Anonymous_1" ] || [ -z "$Anonymous_2" ]);then printf "true";fi;fi;
#### 期望结果
true
#### 检测结果

修改建议

如果ftp服务不需要,需要关闭该服务。
如果需要ftp服务,则需要配置vsftpd.conf文件中anonymous_enable为No,禁止匿名用户访问。
pure-ftp
编辑配置文件pure-ftpd.conf,在文件中找到如下行,修改NoAnonymous的值为yes(没有则添加)
NoAnonymous         yes
wu-ftp
编辑配置文件ftpaccess,如果文件中存在类似如下行,则注释掉:
class [类名] [guest/anonymous] [IP地址]
说明:用户类型不能为guest或者anonymous
proftp
编辑配置文件proftpd.conf,查看文件中找到如下结构:
<Anonymous ~ftp>
  Group                         ftp
  UserAlias                     anonymous ftp
</Anonymous>
在该结构中添加如下行:
AnonRequirePassword on     #启用认证功能,注意AnonRequirePassword后面更得是多个tab符.
或者将<Anonymous ~ftp>....</Anonymous>结构注释掉.
重启ftp服务
备注:配置文件pure-ftpd.conf文件的默认路径为/etc/pure-ftpd/pure-ftpd.conf或/etc/pure-ftpd.conf 
配置文件proftpd.conf的默认路径为/etc/proftpd.conf或/etc/proftpd/proftpd.conf

root用户环境变量的安全性

威胁等级:Medium

规则描述

查看path环境变量的值,检查root用户的系统路径中是否包含父目录。

审计描述

检查PATH环境变量的值,确认PATH环境变量中是否存在.或者..的路径

检测用例信息

修改建议

查看PATH环境变量的值,删除PATH环境变量中存在.或者..的路径

禁止组合键关机

威胁等级:Medium

规则描述

禁止Control-Alt-Delete重启动机器命令

审计描述

检查/usr/lib/systemd/system/reboot.target文件,如果该文件不存在、该文件都注释掉、该文件为空则pass,或者如果软链接文件/usr/lib/systemd/system/ctrl-alt-del.target不存在,也pass

检测用例信息

#### 检测描述
检查/usr/lib/systemd/system/reboot.target文件是否存在: cat /usr/lib/systemd/system/reboot.target 2>/dev/null | grep -v "^\s*#" 
#### 期望结果
文件/usr/lib/systemd/system/reboot.target不存在或该文件都注释掉或该文件为空
#### 检测结果

[Unit]
Description=Reboot
Documentation=man:systemd.special(7)
DefaultDependencies=no
Requires=systemd-reboot.service
After=systemd-reboot.service
AllowIsolate=yes
JobTimeoutSec=30min
JobTimeoutAction=reboot-force

[Install]
Alias=ctrl-alt-del.target
#### 检测描述
检查/usr/lib/systemd/system/ctrl-alt-del.target文件是否存在: ls /usr/lib/systemd/system/ctrl-alt-del.target 2>/dev/null
#### 期望结果
文件/usr/lib/systemd/system/ctrl-alt-del.target不存在
#### 检测结果
/usr/lib/systemd/system/ctrl-alt-del.target

修改建议

删掉/usr/lib/systemd/system/reboot.target文件

修改TELNET的Banner信息

威胁等级:Low

规则描述

检查在TELNET服务开启的时候,其Banner信息中是否包含敏感信息。

审计描述

1、检查TELNET服务
2、若TELNET服务开启,检查文件/etc/issue和/etc/issue.net是否不包含系统敏感信息(版本信息),执行命令:1. egrep '(\v|\r|\m|\s)' /etc/issue 2>/dev/null | grep -v "^\s*#" 2.egrep '(\v|\r|\m|\s)' /etc/issue.net 2>/dev/null | grep -v"^\s*#"

检测用例信息

#### 检测描述
检查/etc/issue文件是否存在敏感信息:egrep '(\v|\r|\m|\s)' /etc/issue 2>/dev/null | grep -v "^\s*#"
#### 期望结果
文件/etc/issue不存在敏感信息
#### 检测结果
Kernel \r on an \m
#### 检测描述
检查/etc/issue.net文件是否存在敏感信息:egrep '(\v|\r|\m|\s)' /etc/issue.net 2>/dev/null | grep -v"^\s*#"
#### 期望结果
文件/etc/issue.net不存在敏感信息
#### 检测结果
Kernel \r on an \m

修改建议

删除文件/etc/issue和/etc/issue.net中的系统敏感信息(版本信息)

更改主机解析地址的顺序

威胁等级:Low

规则描述

1、检查是否设置首先通过DNS解析IP地址,然后通过hosts文件解析。
2、检查设置检测是否"/etc/hosts"文件中的主机是否拥有多个IP地址(比如有多个以太口网卡)。
3、检查是否设置说明要注意对本机未经许可的IP欺骗。

审计描述

检查文件/etc/host.conf,看是否存在如下内容:
        order hosts,bind
        multi on
        nospoof on

检测用例信息

#### 检测描述
检查文件中是否存在order hosts,bind:egrep -v "^\s*#"  /etc/host.conf | egrep  -i "^\s*order\s*hosts\s*"
#### 期望结果
order hosts,bind
#### 检测结果

#### 检测描述
检查文件中是否存在nospoof on:egrep -v "^\s*#"  /etc/host.conf | egrep  -i "^\s*nospoof\s*"
#### 期望结果
nospoof on
#### 检测结果

修改建议

在文件/etc/host.conf中修改或添加如下内容:
        order hosts,bind
        multi on
        nospoof on

检查可疑数据包是否被记录

威胁等级:Medium

规则描述

开启功能后,将不可发送源地址的数据包记录到内核日志

审计描述

检查文件/etc/sysctl.conf或/etc/sysctl.d/*的参数net.ipv4.conf.all.log_martians和net.ipv4.conf.default.log_martians,值为1表示合规,执行命令:
1.sysctl net.ipv4.conf.all.log_martians 2.cat /etc/sysctl.conf/etc/sysctl.d/* | grep -v '^\s*#' | grep "net\.ipv4\.conf\.all\.log_martians"  
3.sysctl net.ipv4.conf.default.log_martians 4.cat /etc/sysctl.conf /etc/sysctl.d/* | grep '^\s*#' | grep "net\.ipv4\.conf\.default\.log_martians"

检测用例信息

#### 检测描述
查看系统设置的参数net.ipv4.conf.all.log_martians: sysctl net.ipv4.conf.all.log_martians
#### 期望结果
net.ipv4.conf.all.log_martians = 1
#### 检测结果
net.ipv4.conf.all.log_martians = 0
#### 检测描述
查看文件/etc/sysctl.conf或/etc/sysctl.d/*是否配置参数net.ipv4.conf.all.log_martians: cat /etc/sysctl.conf/etc/sysctl.d/* | grep -v '^\s*#' | grep "net\.ipv4\.conf\.all\.log_martians"
#### 期望结果
文件/etc/sysctl.conf或者/etc/sysctl.d/*配置:net.ipv4.conf.all.log_martians = 1
#### 检测结果

#### 检测描述
查看系统设置的参数net.ipv4.conf.default.log_martians:sysctl net.ipv4.conf.default.log_martians
#### 期望结果
net.ipv4.conf.default.log_martians = 1
#### 检测结果
net.ipv4.conf.default.log_martians = 0
#### 检测描述
查看文件/etc/sysctl.conf或/etc/sysctl.d/*是否配置参数net.ipv4.conf.default.log_martians: cat /etc/sysctl.conf /etc/sysctl.d/* | grep '^\s*#' | grep "net\.ipv4\.conf\.default\.log_martians"
#### 期望结果
文件/etc/sysctl.conf或者/etc/sysctl.d/*配置:net.ipv4.conf.default.log_martians = 1
#### 检测结果

修改建议

设置文件/etc/sysctl.conf或/etc/sysctl.d/*的参数:net.ipv4.conf.all.log_martians=1 和 net.ipv4.conf.default.log_martians=1,执行命令:sysctl -p重新加载配置文件使策略项生效

检查重复UID是否不存在

威胁等级:Medium

规则描述

虽然useradd命令不会允许创建重复的用户标识(UID),但管理员可以手动编辑 /etc/passwd 文件并更改UID字段。

审计描述

重复UID不存在

检测用例信息

修改建议

建立唯一的UID并确保与/etc/passwd文件中用户UID不重复。

检查重复用户名是否不存在

威胁等级:Medium

规则描述

虽然useradd命令不会允许创建重复的用户名,但管理员可以手动编辑 /etc/passwd 文件并更改用户名。

审计描述

重复用户名不存在

检测用例信息

修改建议

为用户设置唯一的用户名。

检查重复用户组名称是否不存在

威胁等级:Medium

规则描述

虽然groupadd命令不会允许创建重复的用户组名,但管理员可以手动编辑 /etc/group 文件并更改用户组名。

审计描述

重复用户组名称不存在

检测用例信息

修改建议

为用户组设置唯一的组名称。

检查重复GID是否不存在

威胁等级:Medium

规则描述

虽然groupadd命令不会允许创建重复的用户组标识(GID),但管理员可以手动编辑 /etc/group 文件并更改GID字段。

审计描述

重复GID不存在

检测用例信息

修改建议

建立唯一的GID并确保与/etc/group文件已有GID不重复

检查是否对系统账号进行登录限制

威胁等级:Low

规则描述

应限制默认帐户的访问权限,重命名系统默认帐户,修改这些帐户的默认口令

审计描述

检查是否对系统账号进行登录限制,执行:cat /etc/passwd | egrep "^(adm|daemon|bin|sys|lp|uucp|nuucp|smmsp):" | awk -F: '{print $1":"$7}' | egrep -v "/sbin/nologin|/bin/false",输出为空。

检测用例信息

修改建议

需要锁定账户有adm、daemon、bin、sys、lp、uucp、nuucp、smmsp。编辑/etc/passwd文件,重命名系统默认帐户,修改这些帐户的默认口令为/sbin/nologin或/bin/false。

限制FTP用户登录后能访问的目录

威胁等级:Low

规则描述

限制FTP用户登录后能访问的目录

审计描述

检查ftp服务状态,若服务开启,在相应的配置文件中查看配置信息:
    1、vsftp服务器,配置文件中存在如下内容:
        chroot_list_enable=YES
        chroot_local_user=NO
        chroot_list_file=/etc/vsftpd/chroot_list
    2、pure-ftp服务器,配置文件中存在ChrootEveryone的值为yes
    3、proftp服务器,配置文件中存在DefaultRoot ~.
    4、wu-ftp服务器,配置文件中存在restricted-uid *

检测用例信息

#### 检测描述
检查文件中chroot_list_enable是否等于YES:cat /etc/vsftpd.conf /etc/vsftpd/vsftpd.conf 2>/dev/null |grep -v "^\s*#"  | grep -i "^\s*chroot_list_enable\s*="
#### 期望结果
chroot_list_enable=YES
#### 检测结果

#### 检测描述
检查文件中chroot_local_user是否等于NO:cat /etc/vsftpd.conf /etc/vsftpd/vsftpd.conf 2>/dev/null |grep -v "^\s*#"  | grep -i "^\s*chroot_local_user\s*="
#### 期望结果
chroot_local_user=NO
#### 检测结果

#### 检测描述
检查文件中是否存在chroot_list_file的配置:cat /etc/vsftpd.conf /etc/vsftpd/vsftpd.conf 2>/dev/null |grep -v "^\s*#"  | grep -i "^\s*chroot_list_file\s*" | grep "^\s*chroot_list_file\s*="
#### 期望结果
存在chroot_list_file的配置
#### 检测结果

#### 检测描述
检查文件中ChrootEveryone的值是否为YES:cat /etc/pure-ftpd.conf /etc/pure-ftpd/pure-ftpd.conf 2>/dev/null |grep -v "^\s*#" | grep -i "ChrootEveryone"
#### 期望结果
ChrootEveryone YES
#### 检测结果

#### 检测描述
检查文件中是否存在restricted-uid:cat /etc/ftpaccess /etc/ftpd/ftpaccess 2>/dev/null |grep -v "^\s*#"|egrep -i "restricted-uid\s+
#### 期望结果
restricted-uid *
#### 检测结果

#### 检测描述
检查文件中是否存在DefaultRoot:cat /etc/proftpd.conf /etc/proftpd/proftpd.conf /usr/local/proftpd/etc/proftpd.conf 2>/dev/null |grep -v "^\s*#" |grep -i "DefaultRoot"
#### 期望结果
DefaultRoot ~.
#### 检测结果

修改建议

若服务开启,在相应的配置文件中添加配置信息:
    1、vsftp服务器,配置文件中添加如下内容:
        chroot_list_enable=YES
        chroot_local_user=NO
        chroot_list_file=/etc/vsftpd/chroot_list
    2、或者在pure-ftp服务器,配置文件中添加ChrootEveryone的值为yes
    3、或者在proftp服务器,配置文件中添加DefaultRoot ~.
    4、或者在wu-ftp服务器,配置文件中存添加restricted-uid *

用户FTP访问安全配置

威胁等级:Medium

规则描述

用户FTP访问安全配置

审计描述

检查ftp服务状态,若服务开启,则查看以下配置:
    1、vsftp服务器,查看/etc/vsftpd.conf(/etc/vsftpd/vsftpd.conf)是否存在如下内容:
        ls_recurse_enable=YES
        local_umask=022      //设置用户上传文件的权限为 755
        anon_umask=022     //匿名用户上传文件的权限为755
    2、proftp服务器,查看proftpd.conf是否存在如下内容:
        Umask   022
    3、wu-ftp服务器,如果ftpaccess文件中存在类似如下内容:
        upload /home/ftpd /incoming yes real guest anonymous 0644 dirs
        其文件上载权限必须为0644
    4、pure-ftp服务器,查看pure-ftpd.conf文件中是否存在如下配置:
        Umask   177:077

检测用例信息

#### 检测描述
检查文件中是否存在ls_recurse_enable的配置:cat /etc/vsftpd.conf /etc/vsftpd/vsftpd.conf 2>/dev/null | grep -v "^[[:space:]]*#" | grep "^\s*ls_recurse_enable\s*="
#### 期望结果
ls_recurse_enable=YES
#### 检测结果

#### 检测描述
检查文件中是否存在local_umask的配置:cat /etc/vsftpd.conf /etc/vsftpd/vsftpd.conf 2>/dev/null | grep -v "^[[:space:]]*#" | grep -i "^\s*local_umask"
#### 期望结果
local_umask=022
#### 检测结果

#### 检测描述
检查文件中是否存在anon_umask的配置:cat /etc/vsftpd.conf /etc/vsftpd/vsftpd.conf 2>/dev/null | grep -v "^[[:space:]]*#" | grep -i "^\s*anon_umask"
#### 期望结果
anon_umask=022
#### 检测结果

#### 检测描述
检查文件中是否存在umask的配置:cat /etc/pure-ftpd.conf /etc/pure-ftpd/pure-ftpd.conf 2>/dev/null | grep -v "^[[:space:]]*#" | grep -i "umask"
#### 期望结果
存在umask的配置
#### 检测结果

#### 检测描述
检查文件中是否存在upload的配置:cat /etc/ftpaccess /etc/ftpd/ftpaccess 2>/dev/null | grep -v "^[[:space:]]*#" | grep -i "upload"
#### 期望结果
ftpaccess文件中存在类似内容:upload /home/ftpd /incoming yes real guest anonymous 0644 dirs
#### 检测结果

#### 检测描述
检查文件中是否存在umask的配置:cat /etc/proftpd.conf /etc/proftpd/proftpd.conf  2>/dev/null | grep -v "^[[:space:]]*#" |grep -i "umask"
#### 期望结果
umask 022
#### 检测结果

修改建议

若服务开启,则添加以下配置:
    1、vsftp服务器,/etc/vsftpd.conf(/etc/vsftpd/vsftpd.conf)添加如下内容:
        ls_recurse_enable=YES
        local_umask=022      //设置用户上传文件的权限为 755
        anon_umask=022     //匿名用户上传文件的权限为755
    2、或者在proftp服务器,proftpd.conf添加如下内容:
        Umask   022
    3、或者在wu-ftp服务器,ftpaccess文件中添加类似如下内容:
        upload /home/ftpd /incoming yes real guest anonymous 0644 dirs
        其文件上载权限必须为0644
    4、或者在pure-ftp服务器,pure-ftpd.conf文件中添加如下配置:
        Umask   177:077

修改FTP的Banner信息

威胁等级:Low

规则描述

检查ftp服务状态,若服务开启,在相应的配置文件中检查是否设置了ftp banner信息

审计描述

检查ftp服务状态,若服务开启,在相应的配置文件中查看配置信息:
1、vsftp服务器,查看/etc/vsftpd.conf(/etc/vsftpd/vsftpd.conf)是否存在如下内容:
ftpd_banner=”Authorized users only. All activity may be monitored and reported.”
2、wu-ftp服务器,如果ftpaccess文件中存在类似如下内容:
banner          /etc/ftpd/banner.msg
且/etc/ftpd/banner.msg内容非空。
3、pure-ftp服务器,查看pure-ftpd.conf文件中是否存在如下内容:
FortunesFile              <file><file>内容非空。
4、proftpd服务器,查看proftpd.conf文件中是否存在如下内容:
DisplayConnect         <file><file>内容为非空。

检测用例信息

#### 检测描述
检查文件中是否存在ftpd_banner的配置:cat /etc/vsftpd.conf /etc/vsftpd/vsftpd.conf 2>/dev/null |grep -v "^\s*#" | grep "ftpd_banner"
#### 期望结果
存在ftpd_banner的配置
#### 检测结果

#### 检测描述
检查文件pure-ftpd.conf中是否存在FortunesFile的配置:path=$(grep -v '^\s*#' /etc/pure-ftpd.conf /etc/pure-ftpd/pure-ftpd.conf 2>/dev/null | grep -i "FortunesFile" | awk '{print $2}');if [ -n $path ];then cat $path 2>/dev/null | grep -v '^\s*#';fi
#### 期望结果
pure-ftpd.conf文件中FortunesFile配置且配置的文件内容不为空
#### 检测结果

#### 检测描述
检查文件中ftpaccess是否存在banner的配置:path=$(grep -v "^\s*#" /etc/ftpaccess /etc/ftpd/ftpaccess 2>/dev/null | grep -i "^\s*banner" | awk '{print $2}');if [ -n $path ];then cat $path 2>/dev/null | grep -v '^\s*#';fi
#### 期望结果
ftpaccess文件中banner配置且配置的文件内容不为空
#### 检测结果

#### 检测描述
检查文件proftpd.conf中是否存在DisplayConnect的配置:path=$(grep -v "^\s*#" /etc/proftpd.conf /etc/proftpd/proftpd.conf 2>/dev/null | grep -i "DisplayConnect" | awk '{print $2}');if [ -n $path ];then cat $path 2>/dev/null | grep -v '^\s*#';fi
#### 期望结果
proftpd.conf文件中DisplayConnect配置且配置的文件内容不为空
#### 检测结果

修改建议

若服务开启,则添加以下配置:
1、vsftp服务器,/etc/vsftpd.conf(/etc/vsftpd/vsftpd.conf)添加如下内容:
ftpd_banner=”Authorized users only. All activity may be monitored and reported.”
2、或者在wu-ftp服务器,ftpaccess文件中添加类似如下内容:
banner          /etc/ftpd/banner.msg
且/etc/ftpd/banner.msg内容非空。
3、或者在pure-ftp服务器,pure-ftpd.conf文件中添加如下配置:
FortunesFile              <file><file>内容非空。
4、或者在proftp服务器,proftpd.conf添加如下内容:
DisplayConnect         <file><file>内容为非空。

配置NTP

威胁等级:Low

规则描述

查看ntp服务状态,查看为目标主机配置ntp服务器的个数

审计描述

采用rpm -q ntp检查ntp服务是否有安装,没有安装则pass,若安装则检查以下ntp配置:
1、检查NTP服务是否开启:
ps -ef|egrep "ntp|ntpd"|grep -v grep 
2、检查/etc/ntp.conf文件设置NTP时间同步服务器: 
grep -v "^\s*#" /etc/ntp.conf 2>/dev/null |egrep -i "server\s*"

检测用例信息

#### 检测描述
检查NTP服务状态: ps -ef|egrep "ntp|ntpd"|grep -v grep
#### 期望结果
NTP服务已开启
#### 检测结果

#### 检测描述
检查是否设置了NTP时间同步服务器: cat /etc/ntp.conf |grep -v "^\s*#"|egrep -i "server\s*(2(5[0-5]|[0-4][0-9])|[0-1]?[0-9]{1,2})(\.(2(5[0-5]|[0-4][0-9])|[0-1]?[0-9]{1,2})){3}" 2>/dev/null
#### 期望结果
存在NTP时间同步服务器
#### 检测结果

修改建议

1.如果NTP服务没有安装,则该项通过, 
2.如果NTP服务安装,则启动服务,并要求设置NTP时间同步服务器

配置NFS服务限制

威胁等级:Low

规则描述

检查是否存在与nfs相关的守护进程检查NFS服务开启的情况下,是否限制访问nfs的ip地址

审计描述

查看系统是否存在如下NFS守护进程: rpc.lockd,rpc.nfsd,rpc.statd,rpc.mountd,执行:
# ps -ef | egrep "nfs|rpc.mountd|rpc.nfsd|rpc.lockd|rpc.statd"|egrep -v "egrep|grep"|grep -v kblockd 
检查NFS服务开启的情况下,检查限制访问nfs的ip地址,执行: egrep -i "nfs:all|all:all" /etc/hosts.deny | grep -v "^\s*#" 
检查允许访问nfs的ip地址,执行: egrep -i "nfs" /etc/hosts.allow | grep -v "^\s*#"

检测用例信息

#### 检测描述
检查允许访问nfs的ip地址: egrep -i "nfs" /etc/hosts.allow | grep -v "^\s*#"
#### 期望结果
nfs:允许访问的IP
#### 检测结果

#### 检测描述
检查限制访问nfs的ip地址: egrep -i "nfs:all|all:all" /etc/hosts.deny | grep -v "^\s*#"
#### 期望结果
nfs:all或者all:all
#### 检测结果

修改建议

编辑文件/etc/hosts.allow增加一行: nfs:允许访问的IP,编辑文件/etc/hosts.deny增加一行: nfs:all或者all:all

禁止存在心血漏洞

威胁等级:High

规则描述

检查openssl版本,判断设备是否存在心血漏洞

审计描述

查看openssl版本,判断版本是否不在下列列表中
(1.0.0、1.0.1f、1.0.1e、1.0.1d、1.0.1c、1.0.1b、1.0.1a、1.0.1、1.0.2-beta、1.0.2-beta1)

检测用例信息

修改建议

确认openssl版本不在下列列表中
(1.0.0、1.0.1f、1.0.1e、1.0.1d、1.0.1c、1.0.1b、1.0.1a、1.0.1、1.0.2-beta、1.0.2-beta1),如果在列表中需要对openssl进行更新

检查MCS Translation是否未安装

威胁等级:Medium

规则描述

mcstransd守护程序向请求信息的客户端进程提供类别标签信息。标签翻译在/etc/selinux/targeted/setrans.conf中定义。

审计描述

检查MCS Translation是否未安装,执行:rpm -q mcstrans 2>/dev/null

检测用例信息

修改建议

执行以下以下命令移除MCS Translation:
# yum remove mcstrans

关闭不必要启动项

威胁等级:Low

规则描述

以S开头的启动不必要服务的脚本文件个数为0

审计描述

检查/etc/rc2.d、/etc/rc3.d、/etc/rc4.d、/etc/rc5.d目录下的所有"S"打头的脚本文件,确认以下不必要服务脚本文件名是否以“S”打头:lp|rpc|snmpdx|keyserv|nscd|Volmgt|uucp|dmi|sendmail|autoinstall

检测用例信息

修改建议

修改以下脚本文件名使其不以“S”打头,lp|rpc|snmpdx|keyserv|nscd|Volmgt|uucp|dmi|sendmail|autoinstall

检查/etc/passwd中没有遗留的“+”条目

威胁等级:Medium

规则描述

各种文件中的+字符用于系统标记在系统配置文件中的某一点插入来自NIS映射的数据。大多数系统不再需要这些条目,但可能存在于从其他平台导入的文件中

审计描述

检查/etc/passwd文件中是否存在”+“条目,执行命令:grep "^\+:" /etc/passwd

检测用例信息

修改建议

删除/etc/passwd文件中遗留的“+”条目

检查/etc/shadow中没有遗留的"+"条目

威胁等级:Medium

规则描述

各种文件中的+字符用于系统标记在系统配置文件中的某一点插入来自NIS映射的数据。大多数系统不再需要这些条目,但可能存在于从其他平台导入的文件中

审计描述

查找/etc/shadow文件中是否存在“+”的条目,执行命令:grep "^\+:" /etc/shadow

检测用例信息

修改建议

删除/etc/shadow文件中遗留的“+”条目

检查/etc/group中没有遗留的“+”条目

威胁等级:Medium

规则描述

各种文件中的+字符用于系统标记在系统配置文件中的某一点插入来自NIS映射的数据。大多数系统不再需要这些条目,但可能存在于从其他平台导入的文件中

审计描述

查找/etc/group文件中是否存在“+”条目,执行命令:grep "^\+:" /etc/group

检测用例信息

修改建议

删除/etc/group文件中遗留的“+”条目

禁止存在bash安全漏洞

威胁等级:Medium

规则描述

禁止存在bash安全漏洞

审计描述

执行如下命令查看设备是否存在bash安全漏洞。执行命令:
env -i  X="() { (a)=>\" bash -c "/dev echo vulnerable"  2>/dev/null

检测用例信息

修改建议

升级系统的bash补丁

补丁安装

威胁等级:Low

规则描述

获取系统版本后由用户判断是否进行补丁安装

审计描述

检查系统版本然后由用户判断是否需要进行补丁安装。具体操作参照以下执行命令:cat /etc/centos-release, uname -a

检测用例信息

#### 检测描述
是否需要补丁安装:cat /etc/centos-release
#### 期望结果
由用户判断是否需要进行补丁安装
#### 检测结果
CentOS Linux release 7.9.2009 (Core)
#### 检测描述
是否需要补丁安装:uname -a
#### 期望结果
由用户判断是否需要进行补丁安装
#### 检测结果
Linux ecs-215417-0002 3.10.0-1160.53.1.el7.x86_64 #1 SMP Fri Jan 14 13:59:45 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

修改建议

对系统中/etc/yum/yum.repos.d下yum源进行配置后,采用命令yum update -y进行手动更新系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值