Linux操作系统安全防护基线配置要求

        • 账号

编号:OS-Linux-账号-01

要求内容:

应按照不同的用户分配不同的账号。避免不同用户间共享账号。避免用户账号和设备间通信使用的账号共享

操作指南:

为用户创建账号:

#useradd username  #创建账号

#passwd username   #设置密码

检测方法:

使用不同的账号进行登录并进行一些常用操作。

判定条件:

能够登录成功并且可以进行常用操作。

编号:OS-Linux-账号-02

要求内容:

应删除或锁定与设备运行、维护等工作无关的账号,删除过期账号

操作指南:

删除用户:#userdel username;

锁定用户:

1) 修改/etc/shadow文件,用户名后加*LK*

2) 将/etc/passwd文件中的shell域设置成/bin/false

3) #passwd -l username

只有具备超级用户权限的使用者方可使用,#passwd -l username锁定用户,用#passwd –d username解锁后原有密码失效,登录需输入新密码,修改/etc/shadow能保留原有密码。

检测方法:

使用删除或锁定的与工作无关的账号登录系统。

判定条件:

被删除或锁定的账号无法登录成功。

补充说明:

需要锁定的用户:listen,gdm,webservd,nobody,nobody4、noaccess。

无关的账号主要指测试帐户、共享帐号、长期不用账号(半年以上未用)等。

编号:OS-Linux-账号-03

要求内容:

根据系统要求及用户的业务需求,建立多帐户组,将用户账号分配到相应的帐户组

操作指南:

groupadd 组名  创建用户组

groupdel 组名  删除用户组

useradd -m -g 组 新建用户名        创建用户并分配所属组

-m 自动建立用户家目录;
-g 指定用户所在的组

usermod -g 用户组 用户名         强行设置某个用户所在组
usermod -G 用户组 用户名        把某个用户改为 group(s)
usermod -a -G 用户组 用户名      把用户添加进入某个组(s)

Cat /etc/passwd

Cat /etc/group

判定条件:

人工分析判断。

编号:OS-Linux-账号-04

要求内容:

使用PAM禁止任何人su为root

操作指南:

编辑su文件(vi /etc/pam.d/su),在开头添加下面两行: auth sufficient /lib/security/pam_rootok.so auth required /lib/security/pam_wheel.so group=wheel 这表明只有wheel组的成员可以使用su命令成为root用户。你可以把用户添加到wheel组,以使它可以使用su命令成为root用户。添加方法为: # chmod –G10 username

检测方法:Cat /etc/pam.d/su

        • 授权

编号:OS-Linux-授权-01

要求内容:

在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限

操作指南:

通过chmod命令对目录的权限进行实际设置。

#chmod 750 directory  #其中750为设置的权限,可根据实际情况设置相应的权限,directory是要更改权限的目录)

使用该命令为不同的用户分配不同的账号,设置不同的口令及权限信息等。

chmod是Linux下设置文件夹权限的命令,后面一般跟三个数据,代表不用用户群体在这个文件夹上的权限设置:

一般是三个数字:

chmod 750 dir_wzg

第一个数字表示文件所有者的权限

第二个数字表示文件所有者同属一个用户组的其他用户在该文件上的权限

第三个数字表示其他用户组在该文件夹上的权限。

权限分为三种:读(r=4),写(w=2),执行(x=1)。结合起来还有:

可读+可执行(rx=5=4+1)对应数字5,

可读+可写(rw=6=4+2)等,对应数字6。

可读+可写+可执行(rwx=7=4+2+1)对应数字7

检测方法:

1) 利用管理员账号登录系统,并创建2个不同的用户;

2) 创建用户时查看系统是否提供了用户权限级别以及可访问系统资源和命令的选项;

3) 为两个用户分别配置不同的权限,2个用户的权限差异应能够分别在用户权限级别、可访问系统资源以及可用命令等方面予以体现;

4) 分别利用2个新建的账号访问设备系统,并分别尝试访问允许访问的内容和不允许访问的内容,查看权限配置策略是否生效。

判定条件:

1) 设备系统能够提供用户权限的配置选项,并记录对用户进行权限配置是否必须在用户创建时进行;

2) 记录能够配置的权限选项内容;

3) 所配置的权限规则应能够正确应用,即用户无法访问授权范围之外的系统资源,而可以访问授权范围之内的系统资源。

补充说明:

/etc/passwd 必须所有用户都可读,root用户可写 –rw-r—r—

/etc/shadow 只有root可读 –r--------

/etc/group  须所有用户都可读,root用户可写 –rw-r—r—

使用如下命令设置:

chmod 644 /etc/passwd

chmod 600 /etc/shadow

chmod 644 /etc/group

如果是有写权限,就需移去组及其它用户对/etc的写权限(特殊情况除外),执行命令#chmod -R go-w /etc

编号:OS-Linux-授权-02

要求内容:

控制用户缺省访问权限,当在创建新文件或目录时 应屏蔽掉新文件或目录不应有的访问允许权限。防止同属于该组的其它用户及别的组的用户修改该用户的文件或更高限制

操作指南:

设置默认权限:

vi /etc/login.defs    在末尾增加umask 027,将缺省访问权限设置为750

修改文件或目录的权限,操作举例如下:

#chmod 444 dir ; #修改目录dir的权限为所有人都为只读。

根据实际情况设置权限。

检测方法:

查看新建的文件或目录的权限,操作举例如下:

#ls -l dir ; #查看目录dir的权限

#cat /etc/login.defs 查看是否有umask 027内容

判定条件:

权限设置符合实际需要;不应有的访问允许权限被屏蔽掉。

补充说明:

如果用户需要使用一个不同于默认全局系统设置的umask,可以在需要的时候通过命令行设置,或者在用户的shell启动文件中配置。

umask的默认设置一般为022,这给新创建的文件默认权限755(777-022=755),这会给文件所有者读、写权限,但只给组成员和其他用户读权限。

umask的计算:umask是使用八进制数据代码设置的,对于目录,该值等于八进制数据代码777减去需要的默认权限对应的八进制数据代码值;对于文件,该值等于八进制数据代码666减去需要的默认权限对应的八进制数据代码值。

编号:OS-Linux-授权-03

要求内容:

如果需要启用FTP服务,控制FTP进程缺省访问权限,当通过FTP服务创建新文件或目录时应屏蔽掉新文件或目录不应有的访问允许权限

操作指南:

以vsftp为例,打开/etc/vsftpd/chroot_list文件,将需要限制的用户名加入到文件中。

检测方法:

查看新建的文件或目录的权限。

判定条件:

权限设置符合实际需要;不应有的访问允许权限被屏蔽掉。

        • 口令

编号:OS-Linux-口令-01

要求内容:

对于采用静态口令认证技术的设备,口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类

操作指南:

正确配置

方法一:

#vi /etc/login.defs

修改配置文件,加入如下配置:

PASS_MAX_DAYS  90  #口令至少每隔90天更改一次(根据实际要求)

PASS_MIN_DAYS  1   #口令至多每隔1天更改一次

PASS_MIN_LEN   8   #用户口令长度不少于8个字符

MINCLASS 4         #密码组成方式(大/小写字母、数字、特殊字符)

PASS_WARN_AGE  7   #口令到期前7天提醒用户更换口

Linux用户密码的复杂度可以通过pam_cracklib module或pam_passwdqc module进行设置。

检测方法:

1) 检查口令强度配置选项是否可以进行如下配置:配置口令的最小长度;将口令配置为强口令;

2) 创建一个普通账号,为用户配置与用户名相同的口令、只包含字符或数字的简单口令以及长度短于8的口令,查看系统是否对口令强度要求进行提示;输入带有特殊符号的复杂口令、普通复杂口令,查看系统是否可以成功设置。

判定条件:

不符合密码强度的时候,系统对口令强度要求进行提示;

符合密码强度的时候,可以成功设置。

补充说明:

pam_cracklib主要参数说明:

    tretry=N:重试多少次后返回密码修改错误

    difok=N:新密码必需与旧密码不同的位数

    dcredit=N: N >= 0:密码中最多有多少个数字;N < 0密码中最少有多少个数字.

    lcredit=N:小宝字母的个数

    ucredit=N大宝字母的个数

    credit=N:特殊字母的个数

    minclass=N:密码组成(大/小字母,数字,特殊字符)

pam_passwdqc主要参数说明:

   mix:设置口令字最小长度,默认值是mix=disabled。

   max:设置口令字的最大长度,默认值是max=40。

   passphrase:设置口令短语中单词的最少个数,默认值是passphrase=3,如果为0则禁用口令短语。

   atch:设置密码串的常见程序,默认值是match=4。

   similar:设置当我们重设口令时,重新设置的新口令能否与旧口令相似,它可以是similar=permit允许相似或similar=deny不允许相似。

   random:设置随机生成口令字的默认长度。默认值是random=42。设为0则禁止该功能。

   enforce:设置约束范围,enforce=none表示只警告弱口令字,但不禁止它们使用;enforce=users将对系统上的全体非根用户实行这一限制;enforce=everyone将对包括根用户在内的全体用户实行这一限制。

   non-unix:它告诉这个模块不要使用传统的getpwnam函数调用获得用户信息。

   retry:设置用户输入口令字时允许重试的次数,默认值是retry=3。

密码复杂度通过/etc/pam.d/system-auth实施。

        • 登录失败处理策略

编号:OS-Linux-登录失败策略设置-01

要求内容:

对于登录错误次数超过一定数量,配置账号锁定时间

操作指南:

方法一:设置为密码连续错误3次锁定,锁定时间300秒,

#vi /etc/pam.d/system-auth

修改配置文件,加入如下配置:

auth required pam_tally.so onerr=fail deny=3 unlock_time=300

判定条件:

/etc/pam.d/system-auth未设置3次登录失败断开连接

补充说明:

首先应当检查/var/log/messages或者/var/log/secure中的输出信息,根据这些信息判断用户账号的有效性。登录失败3次,账号将锁定5分钟。

        • 登录超时时间设置

编号:OS-Linux-登录超时时间设置-01

要求内容:

对于具备字符交互界面的设备,配置定时帐户自动登出

操作指南:

通过修改账户中“TMOUT”参数,可以实现此功能。TMOUT按秒计算。编辑profile文件(vi /etc/profile),在“HISTFILESIZE=”后面加入下面这行:

建议TMOUT=300(可根据情况设定)

判定条件:

查看TMOUT=300

补充说明:

改变这项设置后,必须先注销用户,再用该用户登录才能激活这个功能。

        • 远程登录

编号:OS-Linux-远程登录-01

要求内容:

限制具备超级管理员权限的用户远程登录。远程执行管理员权限操作,应先以普通权限用户远程登录后,再切换到超级管理员权限账号后执行相应操作

操作指南:

编辑/etc/passwd,帐号信息的shell为/sbin/nologin的为禁止远程登录,如要允许,则改成可以登录的shell即可,如/bin/bash。

检测方法:

1、检测操作

root从远程使用telnet登录;普通用户从远程使用telnet登录;root从远程使用ssh登录;普通用户从远程使用ssh登录。

判定条件:

root远程登录不成功,提示“没有权限”;普通用户可以登录成功,而且可以切换到root用户。

补充说明:

如果限制root从远程ssh登录,修改/etc/ssh/sshd_config文件,将PermitRootLogin yes改为PermitRootLogin no,重启sshd服务。

限制root从远程ssh登录,修改/etc/ssh/sshd_config文件,将PermitRootLogin yes改为PermitRootLogin no,重启sshd服务。

编号:OS-Linux-远程登录-02

要求内容:

对于使用IP协议进行远程维护的设备,设备应配置使用SSH等加密协议,并安全配置SSHD的设置

操作指南:

正常可以通过#/etc/init.d/sshd start来启动SSH;通过#/etc/init.d/sshd stop来停止SSH

检测方法:

查看SSH服务状态:# ps—ef|grep ssh

查看telnet服务状态:# ps—ef|grep telnet

判定条件:

# ps—ef|grep ssh

是否有ssh进程存在

是否有telnet进程存在

补充说明:

查看SSH服务状态:# ps—ef|grep ssh

注:禁止使用telnet等明文传输协议进行远程维护;如特别需要,需采用访问控制策略对其进行限制。

        • 不必要的服务

编号:OS-Linux-不必要的服务-01

要求内容:

关闭不必要的服务

操作指南:

查看所有开启的服务:

#ps—ef 

#chkconfig --list

#cat /etc/xinetd.conf

在xinetd.conf中关闭不用的服务 首先复制/etc/xinetd.conf。 #cp /etc/xinetd.conf /etc/xinetd.conf.backup 然后用vi编辑器编辑

xinetd.conf文件,对于需要注释掉的服务在相应行开头标记"#"字符,重启xinetd服务,即可。

检测方法:

#ps—ef 

#chkconfig --list

#cat /etc/xinetd.conf

判定条件:

所需的服务都列出来;没有不必要的服务;

补充说明:

参考附表3,根据需要关闭不必要的服务。

在/etc/xinetd.conf文件中禁止不必要的基本网络服务。

注意:改变了“/etc/xinetd.conf”文件之后,需要重新启动xinetd,对必须提供的服务采用tcpwapper来保护。

        • 系统Banner设置

编号:OS-Linux-系统Banner设置 -01

要求内容:

修改系统banner,避免泄漏操作系统名称,版本号,主机名称等,并且给出登陆告警信息

操作指南:

在缺省情况下,当你登录到linux系统,它会告诉你该linux发行版的名称、版本、内核版本、服务器的名称。应该尽可能的隐藏系统信息。

首先编辑“/etc/rc.d/rc.local” 文件,在下面显示的这些行前加一个“#”,把输出信息的命令注释掉。

# This will overwrite /etc/issue at every boot. So, make

any changes you want to make to /etc/issue here or you

will lose them when you reboot.

#echo "" > /etc/issue

#echo "$R" >> /etc/issue

#echo "Kernel $(uname -r) on $a $(uname -m)" >>

/etc/issue

#cp -f /etc/issue /etc/issue.net

#echo >> /etc/issue

其次删除"/etc"目录下的isue.net和issue文件:

# mv /etc/issue /etc/issue.bak

# mv /etc/issue.net /etc/issue.net.bak

检测方法:

查看Cat /etc/rc.d/rc.local 注释住处信息。

 

 

猜你喜欢

转载自blog.csdn.net/weixin_51590879/article/details/126697879