您的位置:首页 > 运维架构 > Linux

Linux 安全配置规范

2015-03-20 23:28 323 查看

第一章 概述

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/false3)#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来停止SSH2、补充操作说明
查看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、检查口令强度配置选项是否可以进行如下配置: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用户可写 –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.htmlTurboLinux: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 注释住处信息

附表:端口及服务

服务名称端口应用说明关闭方法处置建议
daytime13/tcpRFC867 白天协议chkconfig daytime off 建议关闭
13/udpRFC867 白天协议chkconfig daytime off
time37/tcp时间协议chkconfig time off
37/udp时间协议chkconfig time-udp off
echo7/tcpRFC862_回声协议chkconfig echo off
7/udpRFC862_回声协议chkconfig echo-udp off
discard9/tcpRFC863 废除协议chkconfig discard off
9/udpchkconfig discard-udp off
chargen19/tcpRFC864 字符产生协议chkconfig chargen off
19/udpchkconfig chargen-udp off
ftp21/tcp文件传输协议(控制)chkconfig gssftp off 根据情况选择开放
telnet23/tcp虚拟终端协议chkconfig krb5-telnet off 根据情况选择开放
sendmail25/tcp简单邮件发送协议chkconfig sendmail off建议关闭
nameserver53/udp域名服务chkconfig named off 根据情况选择开放
53/tcp域名服务chkconfig named off 根据情况选择开放
apache80/tcpHTTP 万维网发布服务chkconfig httpd off 根据情况选择开放
login513/tcp远程登录chkconfig login off根据情况选择开放
shell514/tcp远程命令, no passwd usedchkconfig shell off根据情况选择开放
exec512/tcpremote execution, passwd requiredchkconfig exec off根据情况选择开放
ntalk518/udpnew talk, conversationchkconfig ntalk off建议关闭
ident113/tcpauthchkconfig ident off建议关闭
printer515/tcp远程打印缓存chkconfig printer off强烈建议关闭
bootps67/udp引导协议服务端chkconfig bootps off建议关闭
68/udp引导协议客户端chkconfig bootps off建议关闭
tftp69/udp普通文件传输协议chkconfig tftp off强烈建议关闭
kshell544/tcpKerberos remote shell -kfallchkconfig kshell off建议关闭
klogin543/tcpKerberos rlogin -kfallchkconfig klogin off建议关闭
portmap111/tcp端口映射chkconfig portmap off根据情况选择开放
snmp161/udp简单网络管理协议(Agent)chkconfig snmp off根据情况选择开放
snmp trap161/tcp简单网络管理协议(Agent)chkconfig snmp off根据情况选择开放
snmp-trap162/udp简单网络管理协议(Traps)chkconfig snmptrap off根据情况选择开放
syslogd514/udp系统日志服务chkconfig syslog off建议保留
lpd515/tcp远程打印缓存chkconfig lpd off强烈建议关闭
nfs2049/tcpNFS远程文件系统chkconfig nfs off强烈建议关闭
2049/udpNFS远程文件系统chkconfig nfs off强烈建议关闭
nfs.lock动态端口rpc服务chkconfig nfslock off强烈建议关闭
ypbind动态端口rpc服务chkconfig ypbind off强烈建议关闭
欢迎大家访问记忆碎片 www.debris.cn ,在碎片中寻找你的记忆!
本文出自 “Debris·记忆” 博客,请务必保留此出处http://debris.blog.51cto.com/1614432/1622689
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: