某电信公司Linux 安全配置规范

  • 内容
  • 评论
  • 相关

第一章   概述

1.1       适用范围

适用于中国电信使用Linux操作系统的设备。本规范明确了安全配置的基本要求,可作为编制设备入网测试、安全验收、安全检查规范等文档的参考。

 

第二章   安全配置要求

2.1账号

编号: 1

要求内容 应按照不同的用户分配不同的账号,避免不同用户间共享账号,避免用户账号和设备间通信使用的账号共享。
操作指南 1、参考配置操作

为用户创建账号:

#useradd username  #创建账号

#passwd username   #设置密码

修改权限:

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

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

2、补充操作说明

 

检测方法 1、判定条件

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

2、检测操作

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

3、补充说明

 

 

编号: 2

要求内容 应删除或锁定与设备运行、维护等工作无关的账号。
操作指南 1、参考配置操作

删除用户:#userdel username;

锁定用户:

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

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

3)#passwd -l username

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

2、补充操作说明

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

 

检测方法 1、判定条件

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

2、检测操作

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

3、补充说明

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

 

 

编号: 3

要求内容 限制具备超级管理员权限的用户远程登录。

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

操作指南 1、参考配置操作

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

2、补充操作说明

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

 

检测方法 1、判定条件

root远程登录不成功,提示“没有权限”;

普通用户可以登录成功,而且可以切换到root用户;

2、检测操作

root从远程使用telnet登录;

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

root从远程使用ssh登录;

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

 

3、补充说明

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

 

编号:4

要求内容 对于使用IP协议进行远程维护的设备,设备应配置使用SSH等加密协议,并安全配置SSHD的设置。
操作指南 1、参考配置操作

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

通过#/etc/init.d/sshd stop来停止SSH

2、补充操作说明

查看SSH服务状态:

# ps –ef|grep ssh

 

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

检测方法 1、判定条件

# ps –ef|grep ssh

是否有ssh进程存在

是否有telnet进程存在

2、检测操作

查看SSH服务状态:

# ps –ef|grep ssh

查看telnet服务状态:

# ps –ef|grep telnet

3、补充说明

 

 

2.2口令

编号:1

要求内容 对于采用静态口令认证技术的设备,口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少3类。
操作指南 1、参考配置操作

vi /etc/login.defs,修改设置如下

PASS_MIN_LEN=8 #设定最小用户密码长度为8位

 

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

检测方法 1、判定条件

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

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

2、检测操作

1、检查口令强度配置选项是否可以进行如下配置:

  1. 配置口令的最小长度;
  2. 将口令配置为强口令。

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

3、补充说明

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实施

 

编号: 2

要求内容 对于采用静态口令认证技术的设备,帐户口令的生存期不长于90天。
操作指南 1、参考配置操作

vi /etc/login.defs

PASS_MAX_DAYS=90   #设定口令的生存期不长于90天

检测方法 1、判定条件

登录不成功;

2、检测操作

使用超过90天的帐户口令登录;

3、补充说明

测试时可以将90天的设置缩短来做测试;

 

2.3授权

编号:1

要求内容 在设备权限配置能力内,根据用户的业务需要,配置其所需的最小权限。
操作指南 1、参考配置操作

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

2、补充操作说明

/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

 

检测方法 1、判定条件

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

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

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

2、检测操作

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

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

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

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

3、补充说明

编号:2(可选)

要求内容 对文件和目录进行权限设置,合理设置重要目录和文件的权限
操作指南 执行以下命令检查目录和文件的权限设置情况:

ls  –l  /etc/

ls  –l  /etc/rc.d/init.d/

ls  –l  /tmp

ls  –l  /etc/inetd.conf

ls  –l  /etc/security

ls  –l  /etc/services

ls  -l  /etc/rc*.d

检测方法 1、判定条件

文件权限的设置合理

2、检测操作

对于重要目录,建议执行如下类似操作:

# chmod -R 750 /etc/rc.d/init.d/*

这样只有root可以读、写和执行这个目录下的脚本。

 

编号: 3(可选)

要求内容 控制用户缺省访问权限,当在创建新文件或目录时 应屏蔽掉新文件或目录不应有的访问允许权限。防止同属于该组的其它用户及别的组的用户修改该用户的文件或更高限制。
操作指南 1、参考配置操作

设置默认权限:

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

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

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

根据实际情况设置权限;

2、补充操作说明

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

检测方法 1、判定条件

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

2、检测操作

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

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

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

3、补充说明

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

umask的计算:

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

 

 

2.4补丁安全

编号:1

要求内容 在保证业务网络稳定运行的前提下,安装最新的OS补丁。补丁在安装前需要测试确定。
操作指南 1、参考配置操作

看版本是否为最新版本。

执行下列命令,查看版本及大补丁号。

#uname –a

 

2、补充操作说明

检测方法 1、判定条件

看版本是否为最新版本。

# uname –a查看版本及大补丁号

RedHat Linux:http://www.redhat.com/support/errata/

Slackware Linux:ftp://ftp.slackware.com/pub/slackware/

SuSE Linux:http://www.suse.com/us/support/security/index.html

TurboLinux:http://www.turbolinux.com/security/

2、检测操作

在系统安装时建议只安装基本的OS部份,其余的软件包则以必要为原则,非必需的包就不装。

3、补充说明

 

 

2.5日志安全要求

编号:1

要求内容 打开syslog系统日志审计功能有助于系统的日常维护和故障排除,或者防止被攻击后查看日志采取防护补救措施,增强系统安全日志。
操作指南 1、参考配置操作

#cat /etc/syslog.conf 查看是否有#authpriv.*    /var/log/secure

2、补充操作说明

将authpirv设备的任何级别的信息记录到/var/log/secure文件中,这主要是一些和认证、权限使用相关的信息。

检测方法 1、判定条件

查看是否有#authpriv.*    /var/log/secure

2、检测操作

#cat /etc/syslog.conf

3、补充说明

将authpirv设备的任何级别的信息记录到/var/log/secure文件中,这主要是一些和认证、权限使用相关的信息。

 

编号:2

要求内容 确认系统日志文件由syslog创立并且不可被其他用户修改;确认其它的系统日志文件不是全局可写
操作指南 1、参考配置操作

查看如下等日志的访问权限

#ls –l查看下列日志文件权限

/var/log/messages、/var/log/secure、 /var/log/maillog、/var/log/cron、 /var/log/spooler、/var/log/boot.log

2、补充操作说明

 

检测方法 1、判定条件

 

2、检测操作

使用ls –l 命令依次检查系统日志的读写权限

3、补充说明

 

 

2.6不必要的服务、端口

编号:1

要求内容 列出所需要服务的列表(包括所需的系统服务),不在此列表的服务需关闭。
操作指南 1、参考配置操作

查看所有开启的服务:

#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服务,即可。

 

2、补充操作说明

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

 

检测方法 1、判定条件

所需的服务都列出来;

没有不必要的服务;

2、检测操作

#ps –ef

#chkconfig --list

#cat /etc/xinetd.conf

3、补充说明

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

注意:改变了“/etc/xinetd.conf”文件之后,需要重新启动xinetd。

对必须提供的服务采用tcpwapper来保护

2.7系统Banner设置

要求内容 修改系统banner,避免泄漏操作系统名称,版本号,主机名称等,并且给出登陆告警信息
操作指南 1、参考配置操作

 

在缺省情况下,当你登录到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 注释住处信息

 

附表:端口及服务

服务名称 端口 应用说明 关闭方法 处置建议
daytime 13/tcp RFC867 白天协议 chkconfig daytime off 建议关闭
13/udp RFC867 白天协议 chkconfig daytime off
time 37/tcp 时间协议 chkconfig time  off
37/udp 时间协议 chkconfig time-udp off
echo 7/tcp RFC862_回声协议 chkconfig echo  off
7/udp RFC862_回声协议 chkconfig echo-udp    off
discard 9/tcp RFC863 废除协议 chkconfig discard off
9/udp chkconfig discard-udp off
chargen 19/tcp RFC864 字符产生协议 chkconfig chargen off
19/udp chkconfig chargen-udp off
ftp 21/tcp 文件传输协议(控制) chkconfig gssftp off 根据情况选择开放
telnet 23/tcp 虚拟终端协议 chkconfig krb5-telnet off 根据情况选择开放
sendmail 25/tcp 简单邮件发送协议 chkconfig sendmail off 建议关闭
nameserver 53/udp 域名服务 chkconfig named off 根据情况选择开放
53/tcp 域名服务 chkconfig named off 根据情况选择开放
apache 80/tcp HTTP 万维网发布服务 chkconfig httpd off 根据情况选择开放
login 513/tcp 远程登录 chkconfig login   off 根据情况选择开放
shell 514/tcp 远程命令, no passwd used chkconfig shell   off 根据情况选择开放
exec 512/tcp remote execution, passwd required chkconfig exec    off 根据情况选择开放
ntalk 518/udp new talk, conversation chkconfig ntalk   off 建议关闭
ident 113/tcp auth chkconfig ident   off 建议关闭
printer 515/tcp 远程打印缓存 chkconfig printer off 强烈建议关闭
bootps 67/udp 引导协议服务端 chkconfig bootps  off 建议关闭
68/udp 引导协议客户端 chkconfig bootps  off 建议关闭
tftp 69/udp 普通文件传输协议 chkconfig tftp    off 强烈建议关闭
kshell 544/tcp Kerberos remote shell -kfall chkconfig kshell  off 建议关闭
klogin 543/tcp Kerberos rlogin -kfall chkconfig klogin  off 建议关闭
portmap 111/tcp 端口映射 chkconfig portmap  off 根据情况选择开放
snmp 161/udp 简单网络管理协议(Agent) chkconfig snmp  off 根据情况选择开放
snmp trap 161/tcp 简单网络管理协议(Agent) chkconfig snmp  off 根据情况选择开放
snmp-trap 162/udp 简单网络管理协议(Traps) chkconfig snmptrap  off 根据情况选择开放
syslogd 514/udp 系统日志服务 chkconfig syslog  off 建议保留
lpd 515/tcp 远程打印缓存 chkconfig lpd  off 强烈建议关闭
nfs 2049/tcp NFS远程文件系统 chkconfig nfs  off 强烈建议关闭
2049/udp NFS远程文件系统 chkconfig nfs  off 强烈建议关闭
nfs.lock 动态端口 rpc服务 chkconfig nfslock  off 强烈建议关闭
ypbind 动态端口 rpc服务 chkconfig ypbind  off 强烈建议关闭

 

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注