Linux三级系统测评及加固方法
- 身份鉴别
- 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换
测评方法:
①一般采用用户名+口令进行身份鉴别,身份标识具有唯一性无法创建相同用户名
通过more /etc/shadow 命令查看用户列表,此语句字段格式有九段
第一字段:用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd和shadow中用的用户记录联系在一起;这个字段是非空的;
第二字段:密码(已被加密,所以看到是一堆乱码,CentOS7以上都是采取的SHA256加密算法进行加密),如果是有些用户在这段是x,*,!!,表示这个用户不能登录到系统或者是没用密码不能登录;这个字段是非空的;
第三字段:上次修改口令的时间;这个时间是从UNIX的诞生日1970年01月01日算起到最近一次修改口令的时间间隔(天数),你可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化;
第四字段:两次修改口令间隔最少的天数;如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义;
第五字段:两次修改口令间隔最多的天数;这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义;
第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义;
第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;
第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;
第九字段:保留字段,目前为空,以备将来Linux发展之用;
也可通过awk -F: ' ($2=="") {print $1}' /etc/shadow查看是否具有空口令账户。
②查看密码复杂度配置:cat /etc/pam.d/system-auth 或 cat /etc/security/pwquality.conf 密码长度应不低于8位,需由大小写字母、数字、特殊字符等三种以上组合而成,图中为符合要求
③查看密码定期更换策略:cat /etc/login.defs 密码最长应不超过180天,图中为符合要求
lslogins -a 可查看所有用户口令过期时间,chage -l [user] 可查看对应用户的口令过期时间
加固方法:
针对②,编辑system-auth文件,通过命令vim /etc/pam.d/system-auth进入配置文件,修改策略或通过命令vim /etc/security/pwquality.conf 进入配置文件,修改策略
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=5 enforce_for_root
参数说明
负数:代表最少出现次数,正数:代表最多出现次数
minlen = 8,密码长度至少8位;
lcredit=-1,至少包含一个小写字母;
ucredit=-1,至少包含一个大写字母;
dcredit=-1,至少包含要给数字;
ocredit=-1,至少包含一个特殊字符;
difok=5,新密码最多与旧密码重复5个字符;
enforce_for_root,对root强制执行密码复杂度策略。
针对③,编辑login.defs文件,通过命令vim /etc/login.defs 进入配置文件,修改策略
PASS_MAX_DAYS 90 #密码的最大有效期
PASS_MIN_DAYS 0 #是否可修改密码,多少天后可修改
PASS_MIN_LEN 8 #密码最小长度,pam_pwquality设置优先
PASS_WARN_AGE 7 #密码失效前多少天在用户登录时通知用户修改密码
#以上设置只针对新用户生效,原来用户不生效,原有用户设置密码有效期,可以使用命令:
chage -M [90] [user]
- b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措
测评方法:
①查看远程管理登录失败策略:cat /etc/pam.d/sshd 登录失败次数最多不应超过5次,图中为符合要求
②查看本地管理登录失败策略:cat /etc/pam.d/system-auth 登录失败次数最多不应超过5次,图中为符合要求
③查看登录超时自动退出策略:cat /etc/profile 或echo $TMOUT 最多不应超过30分钟
加固方法:
针对①,通过命令vim /etc/pam.d/sshd进入配置文件,修改策略
authrequired pam_tally2.so onerr=fail deny=3 unlock_time=300 root_unlock_time=300
针对②,通过命令vim /etc/pam.d/system-auth进入配置文件,修改策略
authrequired pam_tally2.so onerr=fail deny=3 unlock_time=300 root_unlock_time=300
针对③,通过命令vim /etc/profile进入配置文件,添加策略TMOUT=300保存退出后执行source /etc/profile 使其生效
- c) 当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听
测评方法:
①查看远程管理ssh是否开启:systemctl list-unit-files | grep ssh
②查看远程管理telnet是否开启:systemctl list-unit-files | grep telnet 默认未安装Telnet服务即默认未开启,符合
- d) 应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现
测评方法:
Linux操作系统一般采用“用户名+口令”进行鉴别,一般是不符合的,目前常见的有通过数字证书、Ukey来实现双因子认证。
二、访问控制
a)应对登录的用户分配账户和权限;
测评方法:
①通过more /etc/shadow more /etc/passwd命令查看用户列表
通过passwd文件,判断出哪些是普通用户(UID>1000,该设置值在login.defs文件中)、系统用户(UID<1000)和超级用户(UID=0)。
再判断哪些用户不可登录,如shell字段为/sbin/nologin、/bin/false的就不可登录,shadow文件用户第二字段为*或!!为锁定状态,不允许登录。
b)应重命名或删除默认账户,修改默认账户的默认口令;
测评方法:
①通过 more /etc/shadow 命令查看用户列表,查看是否有默认账户在使用,centos默认可登录账户只有root,其他账户虽不会被使用,但应禁用或删除。
②root作为Linux系统的超级用户,要求禁止远程登录,通过more /etc/ssh/sshd_config 命令查看,需注意是否被注释掉,图中为符合
加固方法:
针对②,通过vim /etc/ssh/sshd_config命令进入配置文件,修改策略,如图即可满足
c)应及时删除或停用多余的、过期的账户,避免共享账户的存在;
测评方法:
①通过shadow文件确定是否存在多余过期等账户,除root外默认账户应禁用或删除,也可以通过lastlog命令查看用户最后登录时间。
d)应授予管理用户所需的最小权限,实现管理用户的权限分离;
测评方法:
①通过命令more /etc/sudoers查看权限划分情况
e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则;
测评方法:
①我们都知道在Linux下创建一个文件或者目录之后,可以通过chmod等命令进行权限设置,来达到给当前用户、用户组用户以及其他用户分配不同的访问权限。那么,我们新创建的目录和文件本身也是有它的默认权限的,这个默认权限是什么,就是由权限掩码umask所决定。它的功能可以说与chmod刚好相反,掩码我们都知道其含义,就是掩盖,代表默认拿走的,也就是说不要的权限。
②所以说,umask用来指定"当前用户在新建文件或者目录时候的权限默认值"。那我们如何得知或者设置这个umask呢?
③在linux下我们查看的方式有两种,一种可以直接输入umask,就可以看到数字形态的权限掩码,一种则是加-S(Symbolic)参数,就能以符号的方式来显示出权限了。我先进行一次查看,显示如下所示:
我们在这里看到的0022有四组数字,第一组代表的是特殊权限我们这里先不做讨论。后面三组依次表示属主、属组、其他人的权限掩码。
然而,目录和文件的默认权限属性是不同的,因为对于一个目录来说它的x权限也就是执行权限是很重要的,进入目录等操作都是需要目录具有执行权限的,而对于文件来说,一般情况都是用于数据的记录操作,所以一般不需要执行权限。从而,在linux下默认的情况是这样的:
如果用户创建的是目录,则默认所有权限都开放,为777,默认为:drwx rwx rwx
如果创建的是文件,默认没有x权限,那么就只有r、w两项,最大值为666,默认为:-rw-rw-rw-
那么之前所说的拿走的权限就是这个默认值要减掉的权限,r、w、x分别是4、2、1,要拿掉读权限就输入4,拿掉写权限就输入2,以此类推。
再看上图,umask为022,也就是说,对于当前用户没有拿掉权限,group用户和other用户都被拿走了w权限,所以此时如果用户创建目录和文件的时候,默认权限会进行如下的减法操作:
**新建文件:**666-022=644;
**新建目录:**777-022=755.
经过验证,目录的默认权限是rwxr-xr-x(755),文件的默认权限是-rw-r--r--(644)。
f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级;
测评方法:
此项默认满足要求。
g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问
测评方法:
首先敏感标记的目的就是实现强制访问控制,而目前我们所接触到的操作系统基本均是传统的基于权限的访问控制(如文件权限、用户组权限等)是自主访问控制(Discretionary Access Control,DAC),其中资源的所有者可以自行决定资源的访问权限。而强制访问控制则超越了个体的控制权,依赖于更为严格的访问策略和安全模型。它是一种基于系统级别的强制性访问控制,不受用户或进程的自主决策的影响,确保系统中的资源只能被授权用户或进程访问,而不依赖于用户或进程的标签或权限。
这条应该是作为做等保人员比较难测评的一条条款了,因为客户基本不可能会去自己配置。
SELinux 提供 3 种不同的策略可供选择,分别是 Targeted、MLS 以及 MiNimum;
Target 策略主要对系统中的服务进程进程访问控制,同时,它还可以限制其他进程和用户
MLS策略会对系统中的所有进程进行控制,启用 MLS 之后,用户即便执行最简单的指令(如 ls),都会报错;
Minimum 策略的意思是“最小限制”,该策略最初是针对低内存计算机或者设备(比如智能手机)而创建的。
所以,在实际测评中,此项基本都是不符合的,详细配置可以查阅资料进行了解配置。
三、安全审计
a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;
测评方法:
①通过命令service auditd status 和 service rsyslog status 查看日志服务是否开启
②通过命令cat /etc/audit/audit.rules查看审计规则
③通过命令cat /etc/rsyslog.conf查看日志记录各字段的详细情况
b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;
测评方法:
① 通过命令tail -20 /var/log/audit/audit.log或ausearch -i |more查看日志信息
c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
① 通过命令cat /etc/rsyslog.conf查看日志是否发送到日志服务器或日志审计系统,日志留存时间是否满足网络安全法要求不少于6个月
d)应对审计进程进行保护,防止未经授权的中断。
测评方法:
①使用非审计管理员测试中断审计进程,是否能成功,询问和检查是否安装第三方审计进程保护软件。
四、入侵防范
a) 应遵循最小安装的原则,仅安装需要的组件和应用程序;
测评方法:
①通过命令uname -a和yum list installed查看系统版本和已安装的程序
b) 应关闭不需要的系统服务、默认共享和高危端口;