服务器的安全基线加固及应急响应总结
Posted EZ4GodJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器的安全基线加固及应急响应总结相关的知识,希望对你有一定的参考价值。
Windows安全基线及加固(例子为win server 2008):
1.身份鉴别
1)更改缺省账号:对于管理员帐号,要求更改缺省 Administrator 帐户名称
2)禁用guest账号
3)启用密码复杂性要求:使密码必须符合复杂性要求。
4)最小密码长度设置:最小口令长度不得小于8位
5)账户口令生存周期设置:静态口令认证,账户口令的生存期不得长于90天。
6)口令重复次数:静态口令认证,不能重复使用最近5次内使用的口令。
7)口令认证失败次数:静态口令认证失败次数不超过6次,反之被锁定,设定为0则表示永不锁定。
8)账户锁定时间:设置账号锁定时间不小于1分钟,设置为0则表示永不锁定。
9)账户锁定计数器:确定登录尝试失败之后和登录尝试失败计数器被复位为0次失败登录尝试之前经过的分钟数,时间应小于或等于帐户锁定时间
10)口令到期提示:密码到期前2个周提示更换密码
11)域成员禁用更改机器账户密码
12)限制匿名用户连接:检查是否限制匿名用户连接权限,防止用户远程枚举本地帐号和共
2.访问控制
1)共享账户检查
2)远程关机授权:在本地安全设置中从远端系统强制关机只指派给Administrators组
3)本地关机:在本地安全设置中关闭系统仅指派给Administrators组。
4)文件权限指派:在本地安全设置中取得文件或其它对象的所有权仅指派给Administrators。
5)授权帐户登陆:在本地安全设置中配置指定授权用户允许本地登陆此计算机。
6)授权帐户从网络访问:在组策略中只允许授权帐号从网络访问(包括网络共享等,但不包括终端服务)此计算机。
7)关闭默认共享:非域环境中,关闭Windows硬盘默认共享,例如C$,D$。
8)共享文件夹授权访问:查看每个共享文件夹的共享权限,只允许授权的帐户拥有权限共享 此文件夹。
3.安全审计
1)NTP服务:windows time服务设为已启动
2)用户登录日志记录:设备应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号,登录是否成功,登录时间,以及远程登录时,用户使用的IP地
3)系统日志完备性检查:控制面板->管理工具->本地安全策略->本地策略->审核策略->每项都设置->“成功”和“失败”都要审核需要配置的策略。
4.资源控制
1)登录超时管理:启用登录时间用完时自动注销用户。
2)远程登录超时配置:检查对于远程登陆的帐号,设置不活动断连时间15分钟。
5.剩余信息保护
1)不显示上次的用户名
2)关机前清除虚拟内存页面:关闭服务器前,应清除虚拟内存页面,保护暂存在在缓存中的数据。
3)不启用可还原的加密来存储密码:不启用可还原的加密来存储密码,防止能够获取明文密码。
Linux安全基线及加固(例子为CentOS 6.5):
1.身份鉴别
1)检查是否存在除root之外UID为0的用户:因为UID为0的任何用户都拥有系统的最高特权,保证只有root用户的UID为0。需要检查是否存在除root之外UID为0的用户。
执行:
awk -F: '($3 == 0) { print $1 }’ /etc/passwd
若返回值包括“root”以外的条目,则低于安全要求。
2)用户口令设置:对于采用静态口令认证技术的设备,帐户口令的生存期不长于90天并。
生存期检查:
执行:
more /etc/login.defs
检查PASS_MAX_DAYS/ PASS_MIN_DAYS/PASS_WARN_AGE参数。
PASS_MAX_DAYS 90 #新建用户的密码最长使用天数
PASS_MIN_DAYS 0 #新建用户的密码最短使用天数
PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数
口令检查:
询问管理员是否存在如下类似的简单用户密码配置,比如:
root/root, test/test, root/root1234
并执行:
awk -F: '($2 == "") { print $1 }' /etc/shadow
检查是否存在空口令帐号。
3)用户口令强度要求:对于采用静态口令认证技术的设备,口令长度至少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
4)用户锁定策略:对于采用静态口令认证技术的设备,应配置当用户连续认证失败次数超过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
2.访问控制
1)用户的umask安全配置:帐号与口令-用户的umask安全配置
执行:
more /etc/profile
more /etc/csh.login
more /etc/csh.cshrc
more /etc/bashrc
检查是否包含umask值且umask=027
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程序,执行:
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
若返回值非空则低于安全要求。
3.安全审计
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’"
4.资源控制
1)登录超时:帐号与口令-检查登录超时设置
使用命令
vi /etc/profile
修改配置文件,添加“TMOUT=”行开头的注释,建议设置为“TMOUT=180”,
即超时时间为3分钟,值为空或值低于180,则低于安全要求。
2)root远程登录限制:对SSH服务进行安全检查
使用命令
cat /etc/ssh/sshd_config
查看配置文件
A.检查是否允许root直接登录
检查“PermitRootLogin ”的值是否为no
B.检查SSH使用的协议版本
检查“Protocol”的值
使用命令
vi /etc/ssh/sshd_config
编辑配置文件
a.不允许root直接登录
设置“PermitRootLogin ”的值为no
b.修改SSH使用的协议版本
设置“Protocol”的版本为2
3)远程连接的安全性配置:帐号与口令-远程连接的安全性配置
执行:
find / -name .netrc
检查系统中是否有.netrc文件,
执行:
find / -name .rhosts
检查系统中是否有.rhosts文件,若返回值包含以上条件,则低于安全要求
等级保护基本要求:7.1.3.7 主机:资源控制(A3),a)应通过设定终端接入方式、网络地址范围等条件限制终端登录。
4)更改SSH服务端口
配置操作 /etc/ssh/sshd_config
5.入侵防范
1)关闭不必要的服务
使用命令
who -r
查看当前init级别
使用命令
chkconfig --list <服务名>
查看所有服务的状态
若有不必要的系统在当前级别下为on,则低于安全要求(需要手工检查)
使用命令
chkconfig --level <init级别> <服务名> on|off|reset
设置服务在个init级别下开机是否启动
服务器被入侵后应急响应流程:
- 准备相关的⼯具,查后⻔等⼯具
- 初步判断事件类型, 事件等级。
- 抑制范围,隔离使受害⾯不继续扩⼤
- 查找原因,封堵攻击源。
- 业务恢复正常⽔平.
- 总结,报告,并修复、监控
以上是关于服务器的安全基线加固及应急响应总结的主要内容,如果未能解决你的问题,请参考以下文章
Windows学习总结(22)——Windows基线检查加固脚本
Windows学习总结(22)——Windows基线检查加固脚本