【信息安全系列】RedHat Linux常用安全检查标准

来源:互联网 发布:电影票软件 编辑:程序博客网 时间:2024/05/01 21:32

一、系统服务类检查

1、检查项目:检查Linux主机是否开启了不必要的服务等;

【检查要点】

明确不建议开启的服务列表。对需要特殊说明的服务,单独列出检查要求,如R系列服务。检查主机是否关闭SENDMAIL服务。

【检查对象】

RedHat Linux系统

【检查方法】

检查操作:
    执行:chkconfig --list,建议禁止以下服务:
    shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth,Anancron,Cups,Gpm,Isdn,Kudzu,Pcmcia,Rhnsd

参考配置操作
可以通过2种方式修改服务:
1. chkconfig指令:
     通过chkconfig --list 查看系统所有的系统服务是关闭还是打开。
     通过chkconfig iptables on 设置随机启动服务
     通过chkconfig iptables off 设置不随机启动服务
2  通过setup启动图形设置工具来设置要不要随机启动服务
     注意:这样修改需要重启机器后才能生效。如果只是这次需要某个服务,但是下次开机后不需要,可以通过service 服务 start 来手工启动该服务。
3、检查操作:
chkconfig  --list sendmail 显示sendmail服务是否在系统启动时启动

【判断条件】

符合:shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth,Anancron,Cups,Gpm,Isdn,Kudzu,Pcmcia,Rhnsd 、sendmail被禁用,且不能关闭的服务提交说明材料

不符合:shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth,Anancron,Cups,Gpm,Isdn,Kudzu,Pcmcia,Rhnsd  、sendmail服务存在未禁用情况,且不能关闭的服务未提交说明材料

【检查权重】

1分

2、检查项目:检查是否关闭R系列服务(rlogin、rsh、rexec等)

【检查要点】
检查方法同上。
备注:如果某项服务不能关闭,需要说明不能关闭的原因。

【检查对象】
RedHat Linux系统

【检查方法】
检查操作:
chkconfig  --list rlogin  
chkconfig  --list rsh
chkconfig  --list rexec
检查rlogin、rsh、rexec是否启动。

【判断条件】
符合:R系列服务(rlogin、rsh、rexec等)未启用
不符合:R系列服务(rlogin、rsh、rexec等)已启用
说明:HA设备、RAC数据库若不可关闭,需说明原因。

【检查权重】
1分

二、口令策略

1、检查用户口令策略是否符合安全要求

【检查要点】

最短密码长度8个字符,不能复用近期使用过的5个密码,启用本机组策略中密码必须符合复杂性要求的策略。即密码至少包含以下四种类别的字符中的三种:
 英语大写字母 A, B, C, … Z
 英语小写字母 a, b, c, … z
 西方阿拉伯数字 0, 1, 2, … 9
   非字母数字字符,如标点符号,@, #, $, %, &, *等
对于于采用静态口令认证技术的设备,帐户口令的生存期不长于90天。
对于采用静态口令认证技术的设备,应配置设备,使用户不能重复使用最近5次(含5次)内已使用的口令。


【检查对象】
RedHat Linux系统

【检查方法】

检查操作:
1、检查口令策略的配置长度、复杂度安全要求
    执行:cat /etc/pam.d/passwd命令
    输出结果:检查类似配置
password  requisite pam_cracklib.so minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
//代表最短密码长度为8,其中至少包含一个大写字母,一个小写字母,一个数字和一个字符
2、检查操作:
    执行:cat /etc/login.defs |grep PASS命令,查看口令配置文件,查看是否设置以下信息
    输出结果:PASS_MAX_DAYS 90        //代表密码最大有效期限为90天
              PASS_WARN_AGE 7         //密码过期之前7天内发出报警信息 检查操作:
3、检查不能复用的密码个数
    执行cat  /etc/pam.d/passwd命令,
    输出结果:查看以下内容:
password required pam_unix.so remember=5 use_authtok md5 shadow


【判断条件】

符合:
/etc/pam.d/passwd配置password  requisite pam_cracklib.so minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

password required pam_unix.so remember=5 use_authtok md5 shadow
//该值必须大于等于5

/etc/login.defs配置
PASS_MAX_DAYS小于等于90

不符合:未按要求配置密码复杂度策略


【检查权重】
1分

2、检查FTP是否禁止匿名登录

【检查要点】

检查FTP是否禁止匿名登录。
匿名用户登录ftp系统后,如果当前目录权限划分不对,可导致破坏数据。


【检查对象】
RedHat Linux系统

【检查方法】

检查操作:
    执行:grep anonymous /etc/ftpusers
    输出结果:anonymous_enable=NO

如使用vsftpd,则需要增加执行下面内容:
  执行:grep anonymous /etc/vsftpd/vsftpd.conf
  输出结果:anonymous_enable=NO
(备注:当anonymous_enable=NO时,代表禁止匿名登录)


【判断条件】

符合:使用anonymous用户登录, 输入密码:test@test.cn,登录失败

不符合:使用anonymous用户登录, 输入密码:test@test.cn,登录成功


【检查权重】
1分

3、检查SNMP是否修改默认通讯字符串

【检查要点】

如果采用了默认的SNMP配置,那么,SNMP的通讯字符串将是默认的public(只读)和private(可写),应对其进行更改。
【检查对象】
RedHat Linux系统

【检查方法】

1、检查SNMP是否开启,若未开启,则符合要求。若开启,执行第2步。
检查操作:
chkconfig  --list snmpd  显示snmpd服务是否启动,所有运行级别下均为关闭,则符合要求。

2、若SNMP开启,检查是否使用默认字符串,如未修改,则不符合要求。
检查操作:
 执行:cat /etc/snmp/snmpd.conf
   输出结果:检查SNMP的通讯字符串rocommunity或rwcommunity是否是默认的public(只读)和private(可写)
(备注:应更改默认团体名public和private,才能满足安全要求)


【判断条件】

符合:未开启SNMP或连接字符串未设置为public、private

不符合:连接字符串设置为public、private


【检查权重】
1分

4、检查操作系统帐号是否存在弱口令

【检查要点】

检查/etc/passwd、/etc/shadow中的用户密码是否存在弱密码。
【检查对象】
RedHat Linux系统

【检查方法】

对于未开启或临时关闭帐号锁定策略的主机:
使用口令远程暴力破解工具,加载常见弱口令字典进行口令猜解

对于开启帐号锁定策略的主机:
使用如下命令获取用户名及密码,并使用john工具离线测试是否存在用户名与密码相同的极弱密码。

执行命令,并把结果保存为文件testpass:
cat /etc/shadow
在检察人员使用的终端设备上,离线使用john测试:
john --single testpass

备注:漏洞扫描工具可自动检测root、oracle等常见用户的弱密码。


【判断条件】

符合:未发现弱口令

不符合:发现弱口令


【检查权重】
1分

三、访问控制

1、检查Unix系统是否启用信任主机方式,配置文件是否配置妥当

【检查要点】

检查root,数据库管理账号目录下的.rhosts、hosts.equiv
【检查对象】
RedHat Linux系统

【检查方法】

执行命令:cat $HOME/.rhosts或者cat /etc/hosts.equiv
结果输出:(不能设置++,要配置具体的IP地址或主机名)


【判断条件】

符合:/.rhosts、/etc/hosts.equiv不存在++、只配置了具体IP地址或主机名

不符合:/.rhosts、/etc/hosts.equiv存在++


【检查权重】
1分

2、检查是否关闭TELNET,使用SSH进行维护。

【检查要点】

远程执行管理员权限操作,应先以普通权限用户远程登录后,再切换到超级管理员权限账号后执行相应操作。检查是否已限制root账号以telnet和ssh方式远程登录。
【检查对象】
RedHat Linux系统

【检查方法】

执行命令:chkconfig --list
结果输出:
检查输出结果中是否包含telnet服务。


【判断条件】

符合:telnet被停用、只可使用ssh远程维护

不符合:telnet启用或可使用telnet远程维护


【检查权重】
1分

 

四、日志审计

1、检查系统日志设置

【检查要点】

设备应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号,登录是否成功、登录时间、以及远程登录时、用户使用的IP地址
【检查对象】
RedHat Linux系统

【检查方法】

检查操作:
    执行:cat /etc/login.defs命令,
    输出结果:查看以下内容
     LASTLOG_ENAB            yes
    执行:last命令查看登录日志
    输出结果:查看类似以下信息
root     :0/10.164.10 10.164.104.73    Fri Feb 20 14:29 - 16:53  (02:24)   
root     10.164.104.7 10.164.104.73    Fri Feb 20 14:29 - 16:53  (02:23)   
root     pts/3                         Fri Feb 20 14:21 - 14:28  (00:06)   
rokay    pts/3        10.164.104.73    Fri Feb 20 14:16 - 14:19


【判断条件】

符合:LASTLOG_ENAB            yes

不符合:LASTLOG_ENAB未配置或为no


【检查权重】
1分

2、设备安全事件审计

【检查要点】

设备应配置日志功能,记录对与设备相关的安全事件。
【检查对象】
RedHat Linux系统

【检查方法】

检查操作:
    执行:cat /etc/syslog.conf
    输出结果:查看以下内容
    *.err        /var/log/errors
    authpriv.info    /var/log/authpriv_info
    *.info        /var/log/info
    auth.none     /var/log/auth_none

    执行以下命令:
    #more /var/log/errors
    #more /var/log/authpriv_info
    #more /var/log/info
    #more /var/log/auth_none
    输出结果:查看/var/log/errors,/var/log/messages,查看安全事件审计情况
(备注:有返回结果则表示安全事件审计正常,符合安全要求)


【判断条件】

符合:
执行:cat /etc/syslog.conf
    输出结果:查看以下内容
    *.err        /var/log/errors
    authpriv.info    /var/log/authpriv_info
    *.info        /var/log/info
    auth.none     /var/log/auth_none

    执行以下命令:
    #more /var/log/errors
    #more /var/log/authpriv_info
    #more /var/log/info
    #more /var/log/auth_none并能查看到日志信息

不符合:
未配置syslog策略或不能查看到日志信息


【检查权重】
1分

五、帐号安全

1、检查是否存在无用帐号、账号组

【检查要点】

应删除或锁定与设备运行、维护等工作无关的账号。包括:Linux中的系统自带的默认帐号;各种测试帐号。

备注:如果这些帐号已被设置密码,需管理员提供设置密码的原因。


【检查对象】
RedHat Linux系统

【检查方法】

检查操作:
    执行:cat /etc/shadow,确认是否存在与业务无关的账号
    建议:锁定的用户:Adm、lp、sync、shutdown、halt、news、uucp、operator、games


【判断条件】

符合:/etc/shadow中Adm、lp、sync、shutdown、halt、news、uucp、operator、games帐号密码字段为LK等锁定状态

不符合:/etc/shadow中Adm、lp、sync、shutdown、halt、news、uucp、operator、games帐号配置了密码


【检查权重】
1分

2、限制密码文件的访问权限

【检查要点】

passwd、shadow、group等文件权限
【检查对象】
RedHat Linux系统

【检查方法】

检查操作:
    执行:ls -la /etc/passwd
    输出结果:–rw-r—r— ******
    执行:ls -la /etc/group
    输出结果:–rw-r—r— ******
    执行:ls -la /etc/shadow
    输出结果:–r-------- ******

(备注:以下配置符合安全要求
/etc/passwd 必须所有用户都可读,root用户可写 –rw-r—r—
/etc/group 必须所有用户都可读,root用户可写 –rw-r—r—
/etc/shadow 只有root可读 –r--------)


【判断条件】

符合:
/etc/passwd  –rw-r—r—
/etc/group  –rw-r—r—
/etc/shadow  –r--------

不符合:
3个文件权限未按上述要求配置


【检查权重】
1分

3、检查root是否可以直接登录

【检查要点】

分别检查telnet、SSH是否可以远程登录.限制具备超级管理员权限的用户远程登录
【检查对象】
RedHat Linux系统

【检查方法】

检查操作:
1、查看是否已限制root账号telnet登录:
    执行:cat /etc/pam.d/login
    输出结果:确定以下内容未被注释:
  auth     required       pam_securetty.so
    执行:cat /etc/securetty
    输出结果:确定以下内容已被注释:
      pts/1
      pts/2
      .........
      Ptsn
(备注:满足以上配置则符合安全要求,代表禁止root用户以ssh方式远程登录)

2、查看是否已限制root账号SSH登录:
    执行:cat /etc/ssh/sshd_config
    输出结果:查看以下内容:
    PermitRootLogin no
(备注:PermitRootLogin no符合安全要求,代表禁止root用户以ssh方式远程登录)


【判断条件】

符合:telnet被停用、只可使用ssh远程维护且root用户不能直接登录

不符合:telnet启用或可使用telnet远程维护或root用户可直接登录


【检查权重】
1分

4、检查除root之外UID帐号

【检查要点】

帐号与口令-检查是否存在除root之外UID为0的用户,不允许多个uid=0账户存在。
【检查对象】
RedHat Linux系统

【检查方法】

检测操作步骤:
执行:awk -F: '($3 == 0) { print $1 }' /etc/passwd
基线符合性判定依据:
返回值包括“root”以外的条目,则低于安全要求;
备注:
补充操作说明
UID为0的任何用户都拥有系统的最高特权,保证只有root为UID为0的账号


【判断条件】

符合:uid=0用户只有root

不符合:除root外还有其他帐户uid=0


【检查权重】
1分

5、检查Linux超级用户环境变量

【检查要点】

帐号与口令-root用户环境变量的安全性
【检查对象】
RedHat Linux系统

【检查方法】

执行:echo $PATH | egrep '(^|:)(\.|:|$)',检查是否包含父目录,
执行:find `echo $PATH | tr ':' ' '` -type d \( -perm -002 -o -perm -020 \) -ls,检查是否包含组目录权限为777的目录


【判断条件】

符合:返回值为空

不符合:返回值不为空


【检查权重】
1分

六、安全策略

1、检查Linux用户umask安全值

【检查要点】

帐号与口令-用户的umask安全配置
【检查对象】
RedHat Linux系统

【检查方法】

检测操作步骤:
执行:more /etc/profile  more /etc/csh.login  more /etc/csh.cshrc  more /etc/bashrc检查是否包含umask值且umask=077
基线符合性判定依据:
umask值是默认的,则低于安全要求
备注:
补充操作说明
建议设置用户的默认umask=027


【判断条件】

符合:
more /etc/profile  more /etc/csh.login  more /etc/csh.cshrc  more /etc/bashrc的umask值且umask=077

不符合:umask未配置为077


【检查权重】
1分

2、检查Linux目录写权限

【检查要点】

文件系统-检查任何人都有写权限的目录
【检查对象】
RedHat Linux系统

【检查方法】

检测操作步骤:
在系统中定位任何人都有写权限的目录用下面的命令:
for PART in `awk '($3 == "ext2" || $3 == "ext3") \
{ print $2 }' /etc/fstab`; do
find $PART -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
Done
基线符合性判定依据:
若返回值非空,则低于安全要求;


【判断条件】

符合:返回值为空

不符合:返回值不为空


【检查权重】
1分

3、检查Linux文件写权限

【检查要点】

文件系统-查找任何人都有写权限的文件
【检查对象】
RedHat Linux系统

【检查方法】

检测操作步骤 在系统中定位任何人都有写权限的文件用下面的命令:
for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do
find $PART -xdev -type f \( -perm -0002 -a ! -perm -1000 \) -print
Done
基线符合性判定依据 若返回值非空,则低于安全要求;
备注 需要手工检查。


【判断条件】

符合:返回值为空

不符合:返回值不为空


【检查权重】
1分

4、检查SSH安全配置

【检查要点】

检查是否只允许协议2
【检查对象】
RedHat Linux系统

【检查方法】

检查操作:
    执行:grep Protocol /etc/ssh/sshd_config
    输出结果:“Protocol 2”
(备注:若为“Protocol 2”则符合安全要求。)

备注:如果Protocol行被注释,利用SSH登录工具(如SecureCRT)登录,如果允许协议1,则不符合要求。


【判断条件】

符合:Protocol 2

不符合:Protocol 2不存在或被注释


【检查权重】
1分

5、检查终端超时退出时间

【检查要点】

在Linux系统中root账户是具有最高特权的。如果系统管理员在离开系统之前忘记注销root账户,那将会带来很大的安全隐患,应该让系统自动注销。
【检查对象】
RedHat Linux系统

【检查方法】

通用策略:
    可根据实际要求设置超时退出时间,一般情况下设置为180秒
风险说明:
    设置shell会话超时退出时间后,用户在本次会话中没有用nohup启动的用户进程可能会随会话自动退出。
检查操作:
    执行:cat /etc/profile命令,
    输出结果:查看以下内容
    TMOUT=180
    export TMOUT
(备注:查看TMOUT是否被设置,有设置则符合安全要求,一般将超时时间设置为180秒)


【判断条件】

符合:TIMEOUT=180

不符合:TIMEOUT未设置或大于180


【检查权重】
1分

6、检查操作系统Linux core dump状态安全

【检查要点】

系统文件-系统core dump状态
【检查对象】
RedHat Linux系统

【检查方法】

检测操作步骤 执行:more /etc/security/limits.conf 检查是否包含下列项:
* soft core 0
* hard core 0
基线符合性判定依据 若不存在,则低于安全要求
备注 补充操作说明
core dump中可能包括系统信息,易被入侵者利用,建议关闭


【判断条件】

符合:
包含* soft core 0
* hard core 0

不符合:未包含


【检查权重】
1分

7、检查服务器时间是否同步

【检查要点】

如果网络中存在信任的NTP服务器,应该配置系统使用NTP服务保持时间同步。
【检查对象】
RedHat Linux系统

【检查方法】

查看ntp 的配置文件:#cat /etc/inet/ntp.conf
查看xntpd进程:#ps –elf|grep ntp


【判断条件】

符合:ntp进程运行、/etc/inet/ntp.conf中配置时间服务器,且主机时间正确

不符合:ntp进程未运行或/etc/inet/ntp.conf中未配置时间服务器或主机时间不正确


【检查权重】
1分

七、补丁

1、检查补丁更新情况

【检查要点】

检查系统的详细版本号
【检查对象】
RedHat Linux系统

【检查方法】

版本查看方法:
cat /etc/redhat-release


【判断条件】

该项仅作为调研项
【检查权重】
1分

 

0 0