Linux 安全配置规范

第一章   概述

1.1      适用范围

原来在IDC机房里面进行上架,他们说了必须通过安全扫描才能接入外网,所以就得很苦逼的一个一个去改配置,有的参数不小心配置错了还得重新装系统,郁闷惨了。整理了一些文本给大家提供参考,可作为编制设备入网测试、安全验收、安全检查规范等文档的参考。

 

第二章   安全配置要求

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 �Cd username解锁后原有密码失效,登录需输入新密码,修改/etc/shadow能保留原有密码。

2、补充操作说明

需要锁定的用户:listen,gdm,webservd,nobody,nobody4noaccess

 

检测方法

1、判定条件

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

2、检测操作

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

3、补充说明

需要锁定的用户:listen,gdm,webservd,nobody,nobody4noaccess

 

 

编号: 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 �Cef|grep ssh

 

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

检测方法

1、判定条件

# ps �Cef|grep ssh

是否有ssh进程存在

是否有telnet进程存在

2、检测操作

查看SSH服务状态:

# ps �Cef|grep  ssh

查看telnet服务状态:

# ps �Cef|grep  telnet

3、补充说明

 

 

2.2口令

编号:1

要求内容

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

操作指南

1、参考配置操作

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

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

 

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

检测方法

1、判定条件

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

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

2、检测操作

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

i.           配置口令的最小长度;

ii.         将口令配置为强口令。

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用户可写 �Crw-r―r―

/etc/shadow 只有root可读 �Cr--------

/etc/group  须所有用户都可读,root用户可写  �Crw-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  �Cl   /etc/

ls  �Cl   /etc/rc.d/init.d/

ls  �Cl   /tmp

ls  �Cl   /etc/inetd.conf

ls  �Cl   /etc/security

ls  �Cl   /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,这给新创建的文件默认权限755777-022=755),这会给文件所有者读、写权限,但只给组成员和其他用户读权限。

umask的计算:

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

 

 

2.4补丁安全

编号:1

要求内容

在保证业务网络稳定运行的前提下,安装最新的OS补丁。补丁在安装前需要测试确定。

操作指南

1、参考配置操作

看版本是否为最新版本。

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

#uname �Ca

 

2、补充操作说明
 
 

检测方法

1、判定条件

看版本是否为最新版本。

# uname �Ca查看版本及大补丁号

RedHat Linuxhttp://www.redhat.com/support/errata/

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

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

TurboLinuxhttp://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 �Cl查看下列日志文件权限

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

2、补充操作说明

 

检测方法

1、判定条件

 

2、检测操作

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

3、补充说明

 

 

2.6不必要的服务、端口

编号:1

要求内容

列出所需要服务的列表(包括所需的系统服务),不在此列表的服务需关闭。

操作指南

1、参考配置操作

查看所有开启的服务:

#ps �Cef 

#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 �Cef 

#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.netissue文件:

# 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

强烈建议关闭

 

 

 

欢迎大家访问记忆碎片 www.debris.cn  ,在碎片中寻找你的记忆!

你可能感兴趣的:(Linux 安全配置规范)