安全配置基线规范
V1.1
2019年3月18日
修订记录2
第1章概述3
1.1目的3.
1.2适用范围3.
1.3实施3.
1.4例外条款4.
1.5评审与修订4.
第2章帐户、权限、日志4
2.1帐户4.
2.1.1禁止多人共享账号4.
2.1.2禁用存在空密码帐户5
2.1.3禁止存在除root外UID为0的账号5
2.1.4口令复杂度6.
2.1.5口令生存周期6.
2.2权限7.
2.2.1文件与目录缺省权限控制7
2.2.2帐号文件权限设置7.
2.2.3设置关键文件属性8.
2.3日志8.
2.3.1记录帐户登录日志8
第3章系统服务安全9
3.1远程访问服务9.
3.1.1root用户SSH远程登录9
3.1.2用SSH协议进行远程维护10
3.2协议设置11
3.2.1修改SNMP的默认Community11
3.2.2禁止Root用户登录FTP11
3.2.3禁止匿名FTP13
3.2.4Root用户环境变量的安全性14
3.3安全漏洞检查15
3.3.1OPENSSL心脏滴血漏洞检查15
3.3.2Bash安全漏洞检查15
修订记录
版本 | 版本控制信息 | 更新日期 | 更新人 |
V1.0 | 创建 | 2018年7月 | |
V1.1 | 1.更新基线编号 2.修改校正错误描述 | 2019年3月 | |
1.1目的
本文档针对安装运行SuSELinux系列操作系统的主机所应当遵循的通用基本安全配置要求提供了参考建议,旨在指导系统管理人员或安全检查人员进行SuSELinux系列操作系统过程中进行安全配置合规性自查、检查、加固提供标准依据与操作指导。
1.2适用范围
本配置标准的使用者包括:服务器系统管理员、应用管理员、网络安全管理员。
本配置标准适用的范围包括:SuSELinux服务器系统
1.3实施
本标准自发布之日起生效
本标准的解释权和修改权属于,在本标准的执行过程中若有任何意见或建议,请发送邮
件至
1.4例外条款
欲申请本标准的例外条款,申请人必须准备书面申请文件,说明业务需求和原因,送交
进行审批备案。
1.5评审与修订
本文档由定期进行审查,根据审视结果修订标准,并颁发执行。
第2章帐户、权限、日志
2.1帐户
2.1.1禁止多人共享账号
安全基线项目名称 | 操作系统Linux-共享账号管理 |
安全基线编号 | CAFSBL-Linux-02-01-01 |
安全基线项说明 | 多人共享账号存在责任不清、权限滥用等风险,应根据职责划分为每个用户设置单独的账号,提高系统安全。 |
检测操作步骤 | 检测方法 1、使用如下命令查看文件/etc/login.defs,确认文件中变量UID_MIN和UID_MAX的值:#grep-vA#/etc/login.defs|grep"AUID_MIN"|awk'($1="UID_MIN"){print$2}' #grep-vA#/etc/login.defs|grep"AUID_MAX"|awk'($1="UID_MAX"){print$2}' 2、使用以下命令查看系统中是否存在用户id>=UID_MIN且<=UID_MAX的用户: #up_uidmin='(grep-vA#/etc/login.defs|grep"AUID_MIN"|awk'($1="UID_MIN"){print$2}')'#up_uidmax='(grep-vA#/etc/login.defs|grep"AUID_MAX"|awk'($1="UID_MAX"){print$2}')'#egrep-v"oracle|sybase|postgres"/etc/passwd|awk-F:'($3>='$up_uidmin‘&& $3<='$up_uidmax'){print$1":"$3}' 判定依据 存在用户id>=UIDMIN且<=UIDMAX的用户则合规,否则不合规。 |
加固操作步骤 | 参考配置操作 1、创建用户 #useraddusername#创建账号 #passwdusername#设置密码修改权限 |
备注 |
安全基线项目名称 | 操作系统Linux-空密码账号管理 |
安全基线编号 | CAFSBL-Linux-02-01-02 |
安全基线项说明 | 空口令账号存在很大风险,用户不用口令认证就能进入系统,应禁止存在空口令账号。 |
检测操作步骤 | 检测方法 执行以下命令查看系统中是否存在空口令账号 #awk-F:'($2==""){print$1}'/etc/shadow 判定依据 系统中口令为空的账号个数为0则合规,否则不合规。 |
加固操作步骤 | 参考配置操作 1、执行备份: #cp-p/etc/passwd/etc/passwd_bak #cp-p/etc/shadow/etc/shadow_bak 2、为帐户设置满足密码复杂度的密码: #passwdusername |
备注 |
安全基线项目名称 | 操作系统Linux-UID为0的账号管理 |
安全基线编号 | CAFSBL-Linux-02-01-03 |
安全基线项说明 | UID=0的账号权限过大,容易被非法利用,应禁止存在除root外uid为0的账号 |
检测操作步骤 | 检测方法 通过如下命令查看/etc/passwd文件中UID为0的账号: #awk-F:'($3==0){print$1}'/etc/passwd 判定依据 不存在root用户外的其他用户UID为0则合规,否则不合规。 |
加固操作步骤 | 参考配置操作 1、执行配置文件备份: #cp-p/etc/passwd/etc/passwd_bak #cp-p/etc/shadow/etc/shadow_bak #cp-p/etc/group/etc/group_bak 2、查询UID为0的账号信息 #awk-F:'($3==0){print$1}'/etc/passwd 如果命令的输出存在非root账号,则使用如下命令删除该账户(切记不要删除root用户)。 #userdelusername |
备注 | UID为0的任何用户都拥有系统的最高,确保只有root用户的UID为0 |
安全基线项目名称 | 操作系统Linux-用户复杂度设置要求 |
安全基线编号 | CAFSBL-Linux-02-01-04 |
安全基线项说明 | 对于采用静态口令认证技术的设备,口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类。 |
检测操作步骤 | 检测方法 suse9编辑/etc/pam.d/passwd、suse10以上编辑/etc/pam.d/common-password是否存在如下配置: passwordrequiredpam_pwcheck.sonullok passwordrequisitepam_cracklib.sominlen=8minclass=2dcredit=-1lcredit=-1 ucredit=-1ocredit=-1use_authtok passwordrequiredpam_unix2.sonullokuse_first_passuse_authtok 判定依据 设置了口令复杂度则合规,否则不合规。 |
加固操作步骤 | 参考配置操作 suse9编辑/etc/pam.d/passwd、suse10以上编辑/etc/pam.d/common-password,在文件中加入如下内容(如果文件中存在password的行请首先注释掉): passwordrequiredpam_pwcheck.sonullok passwordrequisitepam_cracklib.sominlen=8minclass=2dcredit=-1lcredit=-1 ucredit=-1ocredit=-1use_authtok passwordrequiredpamunix2.sonullokusefirstpassuseauthtok |
备注 |
安全基线项目名称 | 操作系统Linux-口令生存周期设置要求 |
安全基线编号 | CAFSBL-Linux-02-01-05 |
安全基线项说明 | 对于采用静态口令认证技术的设备,帐户口令的生存期不长于90天,减少口令安全隐患。 |
检测操作步骤 | 检测方法 查看/etc/login.defs,检查如下参数值是否满足要求: PASS_MAX_DAYS90#新建用户的密码最长使用天数不大于90 判定依据 PASSMAXDAYS不大于90则合规,否则不合规。 |
加固操作步骤 | 参考配置操作 1、执行备份: #cp-p/etc/login.defs/etc/login.defs_bak 2、修改策略设置,编辑文件/etc/login.defs(vi/etc/login.defs),在文件中加入如下内容(如果存在则修改,不存在则添加): |
PASS_MAX_DAYS | 90 | |
备注 |
2.2.1文件与目录缺省权限控制
安全基线项目名称 | 操作系统Linux-文件与目录缺省权限设置 |
安全基线编号 | CAFSBL-Linux-02-02-01 |
安全基线项说明 | 控制用户缺省访问权限,当在创建新文件或目录时,屏蔽掉新文件或目录不应有的访问允许权限。防止同属于该组的其它用户及别的组的用户修改该用户的文件或更高。 |
检测操作步骤 | 检测方法 查看文件/etc/profile的末尾是否设置umask值: #awk'{print$T':"$2}'/etc/profile|grepumask|tail-n1 判定依据 /etc/profile文件末尾存在umask027,则合规,否则为不合规。 |
加固操作步骤 | 参考配置操作 1、首先对/etc/profile进行备份: #cp/etc/profile/etc/profile.bak 2、编辑文件/etc/profile,在文件末尾加上如下内容: umask027 3、执行以下命令让配置生效: #source/etc/profile |
备注 |
安全基线项目名称 | 操作系统Linux-账号文件权限管理要求 |
安全基线编号 | CAFSBL-Linux-02-02-02 |
安全基线项说明 | 设置关键目录的权限,在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限。 |
检测操作步骤 | 检测方法 执行以下命令查看用户及组文件权限 #ls-alL/etc/passwd/etc/shadow/etc/group 判定依据 1、/etc/passwd文件的权限<=4(所有用户必须要有读权限,只有root用户有写的权限) 2、/etc/shadow文件的权限<=400(只有root用户拥有该文件的读权限) 3S/etc/group文件的权限<=4(所有用户必须要有读权限,只有root用户有写的权限) 以上三个条件同时满足则合规,否则不合规。 |
加固操作步骤 | 参考配置操作 1、使用如下命令查看一下文件的权限: #ls-alL/etc/passwd/etc/shadow/etc/group 2、执行备份:使用cp命令备份需要修改权限的文件或目录。 3、权限修改: ⑴修改/etc/passwd文件的权限为4 #chmod4/etc/passwd(所有用户必须要有读权限,只有root用户有写的权限)。 (2)修改/etc/shadow文件的权限 #chmod400/etc/shadow(只有root用户拥有该文件的读权限)。 (3)修改/etc/group文件的权限 #chmod4/etc/group(所有用户必须要有读权限,只有root用户有写的权限)。 |
备注 |
安全基线项目名称 | 操作系统Linux-关键文件属性设置要求 |
安全基线编号 | CAFSBL-Linux-02-02-03 |
安全基线项说明 | 增强关键文件的属性,减少安全隐患。 |
检测操作步骤 | 检测方法 使用命令查看messages文件是否只可追加不可修改: #lsattr/var/log/messages 判定依据 以上文件的权限第六位为a则合规,否则不合规。 |
加固操作步骤 | 参考配置操作 1、更改该日子文件属性 #chattr+a/var/log/messages#如果不存在则忽略 |
备注 |
2.3.1记录帐户登录日志
安全基线项目名称 | 操作系统Linux-账号登录日志管理 |
安全基线编号 | CAFSBL-Linux-02-03-01 |
安全基线项说明 | 启用日志记录功能,记录账号登录事件 |
检测操作步骤 | 检测方法 查看文件/etc/syslog-ng/syslog-ng.conf,存在类似如下内容: filterf_auth{facility(auth);}; destinationf_authlog{file(7var/log/authlog");}; log{source(src);filter(fauth);destination(fauthlog);}; |
判定依据 满足上述配置要求则合规,否则不合规。 | |
加固操作步骤 | 参考配置操作 1、编辑文件/etc/syslog-ng/syslog-ng.conf,增加如下内容:filterf_auth{facility(auth);}; destinationf_authlog{file(7var/log/authlog");}; log{source(src);filter(f_auth);destination(f_authlog);}; 3、创建日志文件,并赋予其权限 #touch/var/log/authlog #chmod0/var/log/authlog 4、重启syslog服务 #/etc/init.d/syslogstop #/etc/init.d/syslogstart |
备注 |
3.1远程访问服务
3・1・1root用户SSH远程登录
安全基线项目名称 | 操作系统Linux-SSH协议安全-禁止root远程登录 |
安全基线编号 | CAFSBL-Linux-03-01-01 |
安全基线项说明 | 具备超级管理员权限的用户远程登录。远程执行管理员权限操作,应先以普通权限用户远程登录后,再切换到超级管理员权限账。 |
检测操作步骤 | 检测方法 1、执行以下命令查看配置文件/etc/ssh/sshd_config是否配置拒绝root用户通过ssh协议远程登录: #grep-v"八[[:space:]]*#"/etc/ssh/sshd_config|grep"PermitRootLoginno" 2、执行以下命令查看ssh协议版本是否为2: #grep-v"A[[:space:]]*#"/etc/ssh/sshd_config|egrep"Aprotocol\\s*2|AProtocol\\s*2" 判定依据 /etc/ssh/sshd_config文件存在PermitRootLoginno(表示禁止root用户通过ssh协议远程登录)且ssh协议为protocol2(表示ssh协议版本为2)则合规,否则不合规。 |
加固操作步骤 | 参考配置操作 1、执行备份: #cp-p/etc/ssh/sshd_config/etc/ssh/sshd_config_bak 2、新建一个普通用户并设置高强度密码(防止设备上只存在root用户可用时,无法远程访问): #useraddusername #passwdusername |
3、禁止root用户远程登录系统 (1)、编辑文件/etc/ssh/sshd_config(vi/etc/ssh/sshd_config),修改PermitRootLogin值为no并去掉注释。 PermitRootLoginno#贝9禁止了root从ssh登录。 ⑵、重启SSH服务 #/etc/init.d/sshdrestart 4、修改SSH协议版本 (1))编辑文件/etc/ssh/sshd_config(vi/etc/ssh/sshd_config),修改Protocol的值为2并去掉注释。 Protocol2 (2))重启ssh服务 #/etc/init.d/sshdrestart | |
备注 |
安全基线项目名称 | 操作系统Linux-远程维护安全 |
安全基线编号 | CAFSBL-Linux-03-01-02 |
安全基线项说明 | 使用非加密通信,内容易被非法监听,使用SSH远程管理,提高远程管理安全性 |
检测操作步骤 | 检测方法 使用以下命令查看telnet和ssh服务状态: #chkconfig--list|grep"teInet|ssh" 判定条件 输出ssh服务启用,telnet服务关闭则合规,否则不合规。 |
加固操作步骤 | 参考配置操作 1、关闭TELNET服务(如果设备安装了TELNET服务则执行以下操作关闭,否则无需操作): ⑴、备份 #cp-p/etc/xinetd.d/telnet/etc/xinetd.d/telnet_bak (2)、编辑文件/etc/xinetd.d/telnet(vi/etc/xinetd.d/telnet),扌巴disable项改为yes,即disable=yes。 (3)、执行以下命令重启xinetd服务。 #servicexinetdrestart 2、开启SSH服务: (1)、安装SSH软件包。 (2)、通过以下命令启动ssh服务: #/etc/init.d/sshdstart |
备注 |
3.2.1修改SNMP的默认Community
安全基线项目名称 | 操作系统Linux-snmp协议安全 |
安全基线编号 | CAFSBL-Linux-03-02-01 |
安全基线项说明 | 加固snmp服务,避免因snmp默认团体名导致的敏感信息泄露 |
检测操作步骤 | 检测方法 1、查看snmpd服务状态: #chkconfigsnmpd 2、查看SNMP共同体字符串配置: ⑴SUSE9: #cat/etc/snmpd.conf (2)SUSE10: #cat/etc/snmp/snmpd.conf 判定依据 1、SNMP服务未开启 2、SNMP服务开启,且修改了默认团体名称两个条件满足其中一个则合规,否则不合规。 |
加固操作步骤 | 参考配置操作 1、SUSE9步骤: (1)修改snmp配置文件/etc/snmpd.conf找到以rocommunity或rwcommunity开头的行,如:rocommunitypublic127.0.0.1其中的第二个字段(public)即为团体名,用新的团体名称替换该字段:rocommunitycommunity_name127.0.0.1 (2)重启snmp服务: #rcsnmpdrestartb 2、SUSE10步骤 (1)修改snmp配置文件/etc/snmp/snmpd.conf找到以rocommunity或rwcommunity开头的行,^口:rocommunitypublic127.0.0.1其中的第二个字段(public)即为团体名,用新的团体名称替换该字段: rocommunitycommunity_name127.0.0.1 (2)重启snmp服务: #servicesnmpdrestart |
备注 |
安全基线项目名称 | 操作系统Linux-FTP协议安全-禁止root登录ftp |
安全基线编号 | CAFSBL-Linux-03-02-02 |
安全基线项说明 | 禁止root账号登陆FTP,对系统造成损坏。 |
检测操作步骤 | 检测方法 1、如果是vsftp服务器,查看如下配置文件/etc/pam.d/vsftpd、/etc/vsftpd/vsftpd.conf(/etc/vsftpd.conf)。 2、如果是pure-ftp服务器,查看如下配置文件pure-ftpd.conf。 3、如果是wu-ftp服务器,查看如下配置文件/etc/ftpd/ftpusers(/etc/ftpusers)。 4、如果是proftp服务器,查看如下配置文件proftpd.conf。 判定依据 1、FTP进程不存在 2、vsftp服务器,/etc/pam.d/vsftpd中指定了ftpusers,且对应的ftpusers中存在root用户或者在配置文件/etc/vsftpd/vsftpd.conf(/etc/vsftpd.conf)配置了userlist_enable=YES、userlist_deny=NO、userlist_file= 3、pure-ftp服务器,pure-ftpd.conf文件中设置了MinUID100,了 uid<=100的用户登录FTP。 4、wu-ftp服务器,/etc/ftpd/ftpusers(/etc/ftpusers)文件中存在root用户。 5、proftp服务器,proftpd.conf文件中不存在如下配置: RootLoginon 以上五个条件满足其一则合规,否则不合规。 |
加固操作步骤 | 参考配置操作 1、vsftp 1.1修改ftpusers文件,增加不能通过FTP登录的用户 1)首先需确定ftpusers文件位置,可以通过以下命令知道 #cat/etc/pam.d/vsftpd authrequiredpam_listfile.soitem=usersense=deny file=/etc/vsftpd.ftpusersonerr=succeed #其中file=/etc/vsftpd/ftpusers即为当前系统上的ftpusers文件. 2)修改file对应的文件在文件中增加以下用户,则该用户均不允许通过FTP登录(每个用户占一行): Root;daemon;bin;sys;adm;lp;uucp; Nuucp;listen;nobody;noaccess;nobody4 1.2配置vsftpd.conf文件,设定只允许特定用户通过FTP登录: 1)vsftpd.conf文件路径一般为/etc/vsftpd.conf或者/etc/vsftpd/vsftpd.conf。 修改其中内容: userlist_enable=YES #此选项被激活后,VSFTPD将读取userlist_file参数所指定的文件中的用户列表。userlist_deny=NO #决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器,YES默认值,禁止文件中的用户登录,同时也不向这些用户发出输入口令的提示,NO只允许在文件中的用户登录FTP服务器. |
userlist_file=/etc/vsftpd/user_list 2)编辑userlist_file对应的文件去掉root. 2、wu-ftp 编辑/etc/ftpusers或者/etc/ftpd/ftpusers,在文件中另取一行录入root,例如:root venustech 说明:ftpusers文件中用户将禁止登录FTP 3、proftp 编辑配置文件proftpd.conf,在文件中查看是否存在如下内容,存在则将其注释掉: RootLoginon 4、pure-ftp 编辑配置文件pure-ftpd.conf,在文件中查看是否存在如下内容,没有则新增: MinUID100#即禁止uid<=100的用户登录FTP | |
备注 |
安全基线项目名称 | 操作系统Linux-FTP协议安全按-禁止匿名ftp登录 |
安全基线编号 | CAFSBL-Linux-03-02-03 |
安全基线项说明 | 匿名FTP会导致敏感信息泄露,要求禁止FTP匿名访问。 |
检测操作步骤 | 检测步骤 1、如果是vsftp服务器,查看如下配置文件/etc/vsftpd.conf(或者/etc/vsftpd/vsftpd.conf). 2、如果是pure-ftp服务器,查看如下配置文件pure-ftpd.conf. 3、如果是wu-ftp服务器,查看如下配置文件ftpaccess. 4、如果是proftp服务器,查看如下配置文件proftpd.conf. 判定条件 1sftp进程不存在 2、vsftp服务器,配置文件中存在anonymous_enable的值为NO 3、pure-ftp服务器,配置文件中存在NoAnonymous的值为yes 4、proftp服务器,配置文件中将匿名用户配置注释掉或者匿名用户配置中存在 AnonRequirePassword的值为on. 5、wu-ftp服务器,配置文件中不存在class |
加固操作步骤 | 参考配置操作 1)vsftp 编辑文件编辑vi/etc/vsftpd.conf(或vi/etc/vsftpd/vsftpd.conf)文件 设置: anonymous_enable=NO#如果存在anonymous_enable则修改,如果不存在则手动增 加 |
2)pure-ftp 编辑配置文件pure-ftpd.conf,在文件中找到如下行,修改NoAnonymous的值为yes(没有则添加) NoAnonymousyes 3)wu-ftp 编辑配置文件ftpaccess,如果文件中存在类似如下行,则注释掉: class[类名][guest/anonymous][IP地址] 说明:用户类型不能为guest或者anonymous 4)proftp 编辑配置文件proftpd.conf,查看文件中找到如下结构: Groupftp UserAliasanonymousftp 在该结构中添加如下行: AnonRequirePasswordon#启用认证功能,注意AnonRequirePassword后面更得是多 个tab符. 或者将 5)重启ftp服务 | |
备注 |
安全基线项目名称 | 操作系统Linux-Root环境变量安全配置要求 |
安全基线编号 | CAFSBL-Linux-03-02-04 |
安全基线项说明 | 加强Root用户PATH环境变量设置,提高系统安全性 |
检测操作步骤 | 检测方法 使用命令echo$PATH查看PATH环境变量的值,确认PATH环境变量中是否存在.或者••的路径: .:/usr/bin:..:/usr/sbin 判定依据 $PATH环境变量中不存在•或者••的路径则合规,否则不合规。 |
加固操作步骤 | 参考配置操作 1、修改文件/etc/profile或/root/.bash_profile 修改环境变量$PATH,删除环境变量值包含的(•和••)的路径。 |
备注 |
3・3・1OPENSSL心脏滴血漏洞检査
安全基线项目名称 | 操作系统Linux-openssl心脏滴血漏洞检查 |
安全基线编号 | CAFSBL-Linux-03-03-01 |
安全基线项说明 | 检查是否存在openssl心脏滴血漏洞 |
检测操作步骤 | 检测方法 执行如下命令查看openssl版本。 #opensslversion 判定依据 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 |
加固操作步骤 | 参考配置操作 1、请立即升级openssl版本。(本检查项不提供具体升级步骤,请参考相关资料)。 |
备注 |
安全基线项目名称 | 操作系统Linux-bash安全漏洞检查 |
安全基线编号 | CAFSBL-Linux-03-03-02 |
安全基线项说明 | 检查是否存在bash安全漏洞 |
检测操作步骤 | 检测方法 执行如下命令查看设备是否存在bash安全漏洞。 #env-iX='(){(a)=>\\‘bash-c'/dev/stdoutechovulnerable'2>/dev/null判定依据 如果以上命令的输出为以下内容则不合规: vulnerable |
加固操作步骤 | 参考配置操作 1、请立即升级bash版本。(本检查项不提供具体升级步骤,请参考相关资料)。 |
备注 |