0x01 前言
安全服务工程师大家应该都知道,对于他的岗位职责你可能会说不就是渗透测试啊、应急响应嘛.....实际上正式一点的企业对于安服的要求是包括了漏洞扫描、安全基线检查、渗透测试、安全加固、日志分析、恶意代码检查、应急响应、安全加固等差不多十个方面的内容的。内容多吗?我也觉得多!
对于基线加固说,不管是对于安服还是安全运营人员来说都是被要求的!一起来看看呗!(全篇以CentOS 6.5为例)
0x02 身份鉴别
1、 检查是否存在除root之外UID为0的用户
安全基线项说明:因为UID为0的任何用户都拥有系统的最高特权,保证只有root用户的UID为0。需要检查是否存在除root之外UID为0的用户
检测操作步骤:执行:awk -F: '($3 == 0) { print $1 }’ /etc/passwd
基线符合性判定依据:返回值包括“root”以外的条目,则低于安全要求;
2、用户口令设置(1)
安全基线项说明:对于采用静态口令认证技术的设备,帐户口令的生存期不长于90天。
检测操作步骤: 1.询问管理员是否存在如下类似的简单用户密码配置,比如:
root/root, test/test, root/root1234
基线符合性判定依据:不存在空口令帐号
3、用户口令设置(2)
安全基线项说明:对于采用静态口令认证技术的设备,帐户口令的生存期不长于90天。
检测操作步骤
执行:more /etc/login.defs,检查PASS_MAX_DAYS/ PASS_MIN_DAYS/PASS_WARN_AGE参数
基线符合性判定依据:建议在/etc/login.defs文件中配置:
PASS_MAX_DAYS 90 #新建用户的密码最长使用天数
PASS_MIN_DAYS 0 #新建用户的密码最短使用天数
PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数
4. 用户口令设置(3)
安全基线项说明:对于采用静态口令认证技术的设备,帐户口令的生存期不长于90天。
检测操作步骤
执行:awk -F: '($2 == "") { print $1 }' /etc/shadow, 检查是否存在空口令帐号
5、用户口令强度要求
安全基线项说明:对于采用静态口令认证技术的设备,口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少2类。
检测操作步骤:/etc/pam.d/system-auth文件中是否对pam_cracklib.so的参数进行了正确设置。
基线符合性判定依据:建议在/etc/pam.d/system-auth 文件中配置:
password requisite pam_cracklib.so difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=1
至少8位,包含一位大写字母,一位小写字母和一位数字
6、用户锁定策略
安全基线项说明:对于采用静态口令认证技术的设备,应配置当用户连续认证失败次数超过10次,锁定该用户使用的帐号。
检测操作步骤:/etc/pam.d/system-auth文件中是否对pam_tally.so的参数进行了正确设置。
基线符合性判定依据:设置连续输错10次密码,帐号锁定5分钟,
使用命令“vi /etc/pam.d/system-auth”修改配置文件,添加
auth required pam_tally.so onerr=fail deny=10 unlock_time=300
注:解锁用户 faillog -u <用户名> -r
0x03 访问控制
1、用户的umask安全配置
安全基线项说明:帐号与口令-用户的umask安全配置
检测操作步骤:执行:
more /etc/profile
more /etc/csh.login
more /etc/csh.cshrc
more /etc/bashrc
检查是否包含umask值且umask=027
基线符合性判定依据:umask值是默认的,则低于安全要求
2、重要目录和文件的权限设置
安全基线项说明:文件系统-重要目录和文件的权限设置
检测操作步骤:执行以下命令检查目录和文件的权限设置情况:
ls –l /etc/
ls –l /etc/rc.d/init.d/
ls –l /tmp
ls –l /etc/inetd.conf
ls –l /etc/passwd
ls –l /etc/shadow
ls –l /etc/group
ls –l /etc/security
ls –l /etc/services
ls -l /etc/rc*.d
对于重要目录,建议执行如下类似操作:
# chmod -R 750 /etc/rc.d/init.d/*
这样只有root可以读、写和执行这个目录下的脚本。
3、查找未授权的SUID/SGID文件
安全基线项说明:文件系统-查找未授权的SUID/SGID文件
检测操作步骤:用下面的命令查找系统中所有的SUID和SGID程序,执行:
for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do
find $PART ( -perm -04000 -o -perm -02000 ) -type f -xdev -print
Done
建议:经常性的对比suid/sgid文件列表,以便能够及时发现可疑的后门程序
基线符合性判定依据:若存在未授权的文件,则低于安全要求;
4、检查任何人都有写权限的目录
安全基线项说明:文件系统-检查任何人都有写权限的目录
检测操作步骤:在系统中定位任何人都有写权限的目录用下面的命令:
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
基线符合性判定依据:若返回值非空,则低于安全要求;
5、查找任何人都有写权限的文件
安全基线项说明:文件系统-查找任何人都有写权限的文件
检测操作步骤:在系统中定位任何人都有写权限的文件用下面的命令:
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
基线符合性判定依据:若返回值非空,则低于安全要求;
0x04 安全审计
1、 syslog登录事件记录
安全基线项说明:日志审计-syslog登录事件记录
检测操作步骤:执行命令:more /etc/rsyslog.conf
查看参数authpriv值
基线符合性判定依据:若未对所有登录事件都记录,则低于安全要求;
2、 Syslog.conf的配置审核
安全基线项说明:日志审计-Syslog.conf的配置审核
检测操作步骤:执行:more /etc/rsyslog.conf,查看是否设置了下列项:
kern.warning;*.err;authpriv.none @loghost
*.info;mail.none;authpriv.none;cron.none @loghost
*.emerg @loghost
local7.* @loghost
建议:配置专门的日志服务器,加强日志信息的异地同步备份
基线符合性判定依据:若未设置,则低于安全要求;
3、 设置history时间戳
在问题定位时,我们有时需要查看history命令记录,看是否有删除/移动文件、修改配置等误操作,为history命令添上时间记录,可便于分析、定位问题。默认如下:
执行:vim ~/.bash_profile
export HISTTIMEFORMAT="%F %T “
export HISTTIMEFORMAT=“%F %T ‘whoami’"
0x05 资源控制
1、登录超时
安全基线项说明:帐号与口令-检查登录超时设置
检测操作步骤:使用命令“vi /etc/profile”修改配置文件,添加“TMOUT=”行开头的注释,建议设置为“TMOUT=180”,即超时时间为3分钟。
基线符合性判定依据:返回值为空或值低于180,则低于安全要求
2、root远程登录限制
安全基线项说明:对SSH服务进行安全检查
检测操作步骤:使用命令“cat /etc/ssh/sshd_config”查看配置文件
1.检查是否允许root直接登录
检查“PermitRootLogin ”的值是否为no
2.检查SSH使用的协议版本
检查“Protocol”的值
基线符合性判定依据:使用命令“vi /etc/ssh/sshd_config”编辑配置文件
1.不允许root直接登录
设置“PermitRootLogin ”的值为no
2.修改SSH使用的协议版本
设置“Protocol”的版本为2
3、远程连接的安全性配置
安全基线项说明:帐号与口令-远程连接的安全性配置
检测操作步骤:执行:find / -name .netrc,检查系统中是否有.netrc文件,
执行:find / -name .rhosts ,检查系统中是否有.rhosts文件
基线符合性判定依据:返回值包含以上条件,则低于安全要求;
等级保护基本要求:7.1.3.7 主机:资源控制(A3),a)应通过设定终端接入方式、网络地址范围等条件限制终端登录。
4、 更改SSH服务端口
配置操作
/etc/ssh/sshd_config
0x06 入侵防范
1、操作系统Linux关闭不必要的服务
安全基线项说明:帐号与口令-关闭不必要的服务
检测操作步骤:
使用命令“who -r”查看当前init级别
使用命令“chkconfig --list <服务名>”查看所有服务的状态
基线符合性判定依据:若有不必要的系统在当前级别下为on,则低于安全要求
备注:需要手工检查。
使用命令“chkconfig --level <init级别> <服务名> on|off|reset”设置服务在个init级别下开机是否启动
0x07 后记
内容有点多,不明白的地方百度一下,查查资料应该是不难。本来就是之前学习的的笔记,说实话,本来我的记性就差,让我记忆我也不能的完全记住!(哈哈哈哈哈)
看一看,点个收藏,关注一下信安旅程~有需要的时候还能拿出来翻翻!
原文始发于微信公众号(学安全在路上):安全服务之安全基线及加固(二)Linux篇
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论