编号 加固项 "风险
等级" 加固原理/Rationale 审计方法/Audit 期望结果/Expect Results 加固方法/Remediation
1 OpenSSH加固配置
1.1 OpenSSH加固配置
1.1.1 SSH使用的版本 H "Open SSH V2版本在安全性能、方便性上有所提高,默认使用V2版本。
如果用户根据实际需要采用V1版本,可登录主机将数值修改为“1”。
" 查看/etc/ssh/sshd_config文件 Protocol被设置为“2” 将Protocol设置为2
1.1.2 SSH密码算法 H "基于SSH加密传输的安全性需求,请使用以下加密算法:AES128,AES256,AES192,允许同时配置多个算法,以逗号隔开。
" 查看/etc/ssh/sshd_config文件 Ciphers被设置为“aes128-ctr,aes192-ctr,aes256-ctr”(x86系统下)或“aes128-ctr,aes192-ctr,aes256-ctr,chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.com”(arm系统下) 将Ciphers配置项设置为“aes128-ctr,aes192-ctr,aes256-ctr”(x86系统下)或“aes128-ctr,aes192-ctr,aes256-ctr,chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.com”(arm系统下)
1.1.3 SSH认证方式 H 允许公钥认证。 查看/etc/ssh/sshd_config文件 PubkeyAuthentication被设置为“yes” 将PubkeyAuthentication设置为“yes”
1.1.4 SSH认证方式 H 允许使用RSA算法进行安全验证。 查看/etc/ssh/sshd_config文件 RSAAuthentication被设置为“yes”(仅X86系统) 将RSAAuthentication设置为“yes”(仅X86系统)
1.1.5 SSH认证方式 H 认证时不需要使用“rhosts”和“shosts”文件。 查看/etc/ssh/sshd_config文件 IgnoreRhosts被设置为“yes” 将IgnoreRhosts设置为“yes”
1.1.6 SSH认证方式 H 不允许用rhosts或“/etc/hosts.equiv”加上RSA进行安全验证。 查看/etc/ssh/sshd_config文件 RhostsRSAAuthentication被设置为“no”(仅X86系统) 将RhostsRSAAuthentication设置为“no”(仅X86系统)
1.1.7 SSH认证方式 H 需要通过密码认证(需要手动在键盘输入密码认证) 查看/etc/ssh/sshd_config文件 PasswordAuthentication被设置为“yes” 将PasswordAuthentication设置为“yes”
1.1.8 SSH访问所有权 H 设置SSH在接收登录请求之前不检查用户目录和rhosts文件的权限和所有权 查看/etc/ssh/sshd_config文件 StrictModes被设置为“yes” 将StrictModes设置为“yes”
1.1.9 SSH登录前显示提示信息 H 设置SSH登录前显示提示信息。默认的提示信息为“Authorized users only. All activity may be monitored and reported.”。 查看/etc/ssh/sshd_config文件 Banner被设置为“/etc/issue.net” 将Banner设置为“/etc/issue.net”
1.1.10 SSH日志 H "在记录来自sshd的消息的时候,是否给出“facility code”。
KERN:内核信息。
DAEMON:与xinetd相关的信息。
USER:用户程序产生的日志信息。
AUTH:认证信息。
MAIL:邮件程序产生的日志信息。
" 查看/etc/ssh/sshd_config文件 SyslogFacility被设置为“AUTH” 将SyslogFacility设置为“AUTH”
1.1.11 SSH日志 H 记录日志提供的详细程度,该值从低到高顺序是:QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG。 查看/etc/ssh/sshd_config文件 LogLevel被设置为“VERBOSE” 将LogLevel设置为“VERBOSE”
1.1.12 禁止空密码用户登录 H 空密码用户是指口令为空的用户,基于安全考虑禁止空密码用户登录系统。 查看/etc/ssh/sshd_config文件 PermitEmptyPasswords被设置为“no” 将PermitEmptyPasswords设置为“no”
1.1.13 PAM登录认证 H 使用PAM模块认证。 查看/etc/ssh/sshd_config文件 UsePAM被设置为“yes” 将UsePAM设置为“yes”
1.1.14 禁止root用户直接SSH登录系统 H 允许root用户直接登录系统,攻击者可能会暴力破解root密码或绕过认证直接登入系统,获取系统超级权限,因此禁止root用户直接SSH登录系统。 查看/etc/ssh/sshd_config文件 PermitRootLogin被设置为“no” 将PermitRootLogin设置为“no”
1.1.15 允许external_om和internal_base平面网段访问22端口 H 不允许除external_om和internal_base平面网段的其他网段访问22端口 执行命令:iptables-save | grep ssh-INPUT 返回结果中存在external_om和internal_base平面网段 无
2 系统访问安全配置
2.1 系统访问安全配置
2.1.1 禁止通过CTRL+ALT+DEL重启系统 H 禁止通过"ALT+CTRL+DEL"重启系统,防止机器遭受非授权的人为的重启 查看/etc/systemd/system/ctrl-alt-del.target和/usr/lib/systemd/system/ctrl-alt-del.target "/etc/systemd/system/ctrl-alt-del.target和
/usr/lib/systemd/system/ctrl-alt-del.target文件不存在" "删除如下文件和链接
rm -f /etc/systemd/system/ctrl-alt-del.target
rm -f /usr/lib/systemd/system/ctrl-alt-del.target"
2.1.2 设置会话超时后系统自动退出 M 无人看管的终端容易被监听或被攻击,可能会危及系统安全。设置会话在5分钟(300秒)没有活动的情况下会话超时。当会话超时时自动退出终端,降低系统被攻击的风险 查看/etc/profile文件 文件中有: export TMOUT=300 文件中有:export TMOUT=300
2.1.3 限制命令历史记录的数量 M Linux会自动记录用户输入过的命令,用于问题定位时查看,此处限制最多记录5000条,当超过5000条时,删除最老的记录 查看/etc/profile文件 "文件中有:
export HISTSIZE=5000
" "在文件中添加:
export HISTSIZE=5000
"
2.1.4 禁用魔术键 H 禁用魔术键,避免由于直接发送命令到内核对系统造成影响,增强内核安全性 查看/etc/sysctl.d/60-uvp-security.conf文件 /etc/sysctl.d/60-uvp-security.conf中,将配置项“kernel.sysrq”设置为“=0” /etc/sysctl.d/60-uvp-security.conf中,将配置项“kernel.sysrq”设置为“=0”
2.1.6 设置内核oops后系统重启 H oops是指内核发生严重错误,最普遍的是引用了内存空地址。安全加固默认系统在发生该情况时重启,防止系统带病运行带来严重的影响 查看/etc/sysctl.d/60-uvp-security.conf文件 "/etc/sysctl.d/60-uvp-security.conf中,将配置项“kernel.panic_on_oops”设置为“=1”
" /etc/sysctl.d/60-uvp-security.conf中,将配置项“kernel.panic_on_oops”设置为“=1”
3 文件及目录安全配置
3.1 文件及目录安全配置
3.1.1 只允许文件属主对本文件进行修改,禁止其他用户对该文件的修改 H 禁止其他用户删除或修改系统日志文件,保证系统日志的完整性 查看/var/log/目录下文件权限 普通用户没有这些文件的修改和执行权限 "执行如下命令。
chmod go-wx /var/log/*
"
3.1.2 设置日志目录和系统命令目录的权限 H 设置/var/log和/sbin、/usr/sbin目录权限为root用户可读写并执行,其他用户可读和可执行 查看/var/log /sbin /usr/sbin目录下文件夹的权限 /var/log /sbin /usr/sbin目录下文件夹的权限分别为755、777、555 "执行如下命令。
chmod 755 /var/log
chmod 777 /sbin
chmod 555 /usr/sbin"
3.1.3 为全局可写目录/tmp设置粘贴位 M 对于公共可写目录/tmp设置粘贴位,避免个人文件被他人修改 查看/tmp目录的权限 /tmp目录的权限信息中有“t”标识 "执行如下命令。
chmod o+t /tmp"
3.1.4 禁止非root用户读写或进入/root目录 H 禁止非root用户读写或进入/root目录 查看/root目录权限 目录权限为700 "执行如下命令。
chmod 700 /root"
3.1.5 设置口令文件权限 H 设置口令文件权限,防止普通用户读取或拷贝加密的口令文件内容。默认权限设置为000,该权限的含义是仅允许root用户进行读操作 查看目录/etc/shadow、/etc/shadow-权限 "/etc/shadow目录权限为000
/etc/shadow-目录权限为000" "执行如下命令。
chmod 000 /etc/shadow
chmod 000 /etc/shadow-
"
3.1.6 禁用core dump H core dump记录Linux系统运行错误的相关信息,甚至包含了系统的敏感信息,为了防止系统信息泄露,禁止使用core dump 查看/etc/profile文件 ulimit -c”设置为“0” ulimit -c”设置为“0”
3.1.7 限制at命令的使用权限,禁止非root用户使用at命令 M at命令用于创建在指定时间自动执行的任务,为避免任意用户通过at命令安排工作,造成系统易受攻击,仅指定root用户可使用该命令 查看/etc/at.deny、/etc/at.allow文件 "/etc/at.deny不存在
/etc/at.allow的所属用户组都是root,权限为400
" "执行如下命令。
rm -f /etc/at.deny
rm -f /etc/at.allow
touch /etc/at.allow
chown root:root /etc/at.allow
chmod 400 /etc/at.allow
"
3.1.8 限制cron命令的使用权限,禁止非root用户使用cron命令 M cron命令用于创建例行性任务,为避免任意用户通过cron命令安排工作,造成系统易受攻击,仅指定root用户可使用该命令 "查看/etc/cron.deny、/etc/cron.allow文件
" "/etc/cron.deny不存在
/etc/cron.allow不存在
" "rm -f /etc/cron.deny
rm -f /etc/cron.allow "
3.1.9 设置守护进程的umask值 M umask用来为新创建的文件和目录设置缺省权限,如果没有设定umask值,则生成的文件具有全局可写权限,存在一定的风险。为了提高守护进程新创建文件和目录的安全性,为其设置umask值为027 查看/etc/rc.status文件 umask被设置为“027” 将umask设置为“027”
3.1.10 设置/etc/inittab的模式和所有权 H 设置/etc/inittab的属主和群组都为root,权限为只有root用户可读和可写 查看/etc/inittab文件的权限和所属用户、组 /etc/inittab文件的权限为600,所属用户和组都是root "执行如下命令
chown root:root /etc/inittab
chmod 600/etc/inittab"
4 帐户口令安全及认证配置
4.1 帐户口令安全及认证配置
4.1.1 锁定连续三次登录失败的用户 H 锁定连续三次登录失败的用户(包括root),5分钟(300秒)后自动解锁 查看/etc/pam.d/password-auth和/etc/pam.d/system-auth文件 "文件中有如下配置
auth required pam_faillock.so preauth audit deny=3 even_deny_root unlock_time=300
auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=300
auth sufficient pam_faillock.so authsucc audit deny=3 even_deny_root unlock_time=300" "在配置文件/etc/pam.d/password-auth和/etc/pam.d/system-auth中,写入如下内容:
auth required pam_faillock.so preauth audit deny=3 even_deny_root unlock_time=300
auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=300
auth sufficient pam_faillock.so authsucc audit deny=3 even_deny_root unlock_time=300
"
4.1.2 设置密码复杂度 H 用户密码必须符合相应的复杂度要求 查看/etc/pam.d/password-auth和/etc/pam.d/system-auth文件 "文件中有如下配置:
password requisite pam_pwquality.so minlen=8 minclass=3 enforce_for_root try_first_pass local_users_only retry=3 dcredit=0 ucredit=0 lcredit=0 ocredit=0
password required pam_pwhistory.so use_authtok remember=5 enforce_for_root
" "文件中有如下配置:
password requisite pam_pwquality.so minlen=8 minclass=3 enforce_for_root try_first_pass local_users_only retry=3 dcredit=0 ucredit=0 lcredit=0 ocredit=0
password required pam_pwhistory.so use_authtok remember=5 enforce_for_root"
4.1.3 "通用加密算法场景下:密码通过sha512方式进行加密
SM系列商密算法场景下:密码通过sm3方式进行加密" H "通用加密算法场景下:使用不可逆的安全的sha512加密算法对密码进行加密
SM系列商密算法场景下:使用不可逆的安全的sm3加密算法对密码进行加密" "查看“/etc/pam.d/password-auth
”和“/etc/pam.d/system-auth”文件" "文件中有如下配置:
通用加密算法场景下:password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
SM系列商密算法场景下:password sufficient pam_unix.so sm3 shadow nullok try_first_pass use_authtok" "通用加密算法场景下:在配置文件“/etc/pam.d/password-auth
”和“/etc/pam.d/system-auth”文件中,写入password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
SM系列商密算法场景下:
在配置文件“/etc/pam.d/password-auth
”和“/etc/pam.d/system-auth”文件中,写入password sufficient pam_unix.so sm3 shadow nullok try_first_pass use_authtok"
4.1.4 验证登录用户的信息是否正确 H 在用户登录系统时使用pam_unix.so验证用户信息是否正确。如果用户信息错误,则禁止用户登录 "查看“/etc/pam.d/password-auth
”和“/etc/pam.d/system-auth”文件" "文件中有如下配置
account required pam_unix.so" "在配置文件“/etc/pam.d/password-auth
”和“/etc/pam.d/system-auth”中,写入如下内容。
account required pam_unix.so
"
4.1.5 设置密码有效期 H 用户需要定期修改密码,密码必须90天以内更换一次,在密码过期前7天提醒用户 查看/etc/login.defs文件 "写入如下内容。
PASS_MAX_DAYS 90
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
" "写入如下内容。
PASS_MAX_DAYS 90
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
"
4.1.6 限制使用su命令的帐户 H 只允许属于wheel群组的帐户使用su命令 查看/etc/pam.d/su文件 "写入如下内容。
auth required pam_wheel.so use_uid
" "写入如下内容。
auth required pam_wheel.so use_uid
"