“胖猴,某大型企业高级运维,马哥教育原创作者联盟成员,热爱分享Linux应用技术和原创知识,有30万字以上的原创内容。”
说明:本次文档是根据某厂的主机合规分析报告内容进行整改的,整改后评分达到90分,本次试验环境为Centos6.7。
一、账号管理
1.1密码锁定策略
pam_tally2和pam_faillock PAM 模块都可以允许系统管理员锁定在指定次数内登录尝试失败的用户账户。并在尝试指定次数是进行锁定,防止暴力破解。
检查方法:
查看/etc/pam.d/system-auth和/etc/pam.d/password-auth是否包含下面选项auth required pam_tally2.so deny=3 onerr=fail no_magic_root unlock_time=180 even_deny_root root_unlock_time=10
修改方法:
修改/etc/pam.d/system-auth 文件和/etc/pam.d/password-auth 文件中的 auth
在指定的两个文件中的 account 区段中添加以下命令行:
说明:
/etc/pam.d/login中配置只在本地文本终端上做限制;
/etc/pam.d/kde在配置时在kde图形界面调用时限制;
/etc/pam.d/sshd中配置时在通过ssh连接时做限制;
/etc/pam.d/system-auth中配置凡是调用 system-auth 文件的服务,都会生效。
- deny 指定最大认证错误次数,如果超出此次数,将执行后面的策略。如锁定N秒,如果后面没有其他策略指定时,默认永远锁定,除非手动解锁。
- lock_time 锁定时长,按秒为单位;
- unlock_time 指定认证被锁后,多长时间自动解锁用户;
- magic_root 如果用户uid=0(即root账户或相当于root的帐户)在帐户认证时调用该模块发现失败时,不计入统计;
- no_lock_time 不使用.fail_locktime项在/var/log/faillog 中记录用户 ---按英文直译不太明白,个人理解即不进行用户锁定;
- even_deny_root root用户在认证出错时,一样被锁定(该功能慎用,搞不好就要单用户时解锁了)
- root_unlock_time root用户在失败时,锁定多长时间。该选项一般是配合even_deny_root 一起使用的。
测试
可人工将计数器清零:
1.2 密码生存期
密码生存期是另一个系统管理员用来保护在机构中防止不良密码的技术。密码有效期的意思就是在指定时段后(通常为 90 天),会提示用户创建新密码。它的理论基础是如果强制用户周期性修改其密码,那么破解的密码对与入侵者来说只在有限的时间内有用。密码有效期的负面影响是用户可能需要写下这些密码。
主要是修改下面三行的内容:
1.3 密码复杂度
由于管理员给用户创建的密码暴露,所以管理员都是让用户自己修改密码,但还需要符合密码的强度,在这种场景下,管理员可能会强制用户定期更改密码,防止密码过期。
当用户需要更改密码时,为符合密码强度,可使用pam_cracklib.so 这个PAM模块来检测用户设置的密码是否符合要求。
将上面的这行修改为下面的内容:
1.4 删除无关帐号
下面的系统自带的账号应该移除或锁定。这类用户的密码列不是用*或者!!开头的。
三类用户:
超级用户:拥有对系统的最高管理权限,缺省是root用户。
普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限。
虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。
如果上面的这些用户没有被删除或锁定,可选用如下的三种操作:
4.1直接将用户移除掉
4.2若不想将上述用户移除,也可将其进行锁定
4.3还可修改用户的shell为/bin/false
执行下面的指令将上述用户进行锁定:
1.5 口令重复次数限制
对于采用静态口令认证技术的设备,应配置设备,使用户不能重复使用最近五次(含五次)内已使用的口令。
将上面的这行密码控制语句改为:
注意:NIS系统无法生效,非NIS系统或NIS+系统能够生效。
1.6 禁止管理组之外的用户su为根用户
注意:auth同sufficient之间由两个tab建隔开,sufficient与动态库路径之间使用一个tab建隔开。
通常情况下,一般用户通过执行su -命令,输入正确的根用户密码,就能登录成为根用户。但是,为了更进一步加强安全性,有必要创建一个管理员组,只允许该组的用户来执行su -命令登录为根用户,而使得其他组的用户即使是执行了该指令、输入了正确的密码,也无法登录为根用户。这个组的名称通常为wheel。
按照上面的方法修改后,普通用户无法登录为根用户:
若希望该普通用户能够登录为根用户,需要将其加入到wheel组中:
二、文件与目录权限
2.1文件与目录缺省权限控制
首先要对操作的目标文件进行备份:
2.2 配置用户最小授权
2.3 设置关键文件的属性
使用命令查看messages文件是否只可追加不可修改:
a即append,设定该参数后,只能向文件中添加数据,而不能删除。
如果一个用户以root的权限登录或者某个进程以root的权限运行,会保证messages文件不会被篡改,保证系统的相对安全。
三、日志安全
3.1 记录安全事件日志
3.2 日志文件安全
对权限>640的日志文件设定为640的权限。
检测方法:
使用以下命令查看日志文件权限
找到这些权限有问题的日志文件后,对其进行修改权限的操作:
四、系统服务
4.1 限制root用户SSH远程登录
检测方法:
修改方法:
编辑/etc/ssh/sshd_config修改以下两个选项
4.2 登陆超时时间设置
检测方法:
修改方法:
如果/etc/profile中有下面的两行则按需要进行修改,没有这两行则写入这两行:
4.3 清除潜在危险文件
要求系统中不能有这三个文件:.rhosts、.netrc、hosts.equiv。如果使用rlogin进行远程登录,就会需要这三个文件。通常情况下是没有这三个文件的,因而该远程登录方法很少使用了。、
检测方法:
修改方法:
需要删除.rhosts、.netrc、hosts.equiv
如无应用,删除以上文件
删除前需要备份
mv .rhosts .rhosts.bak
mv .netrc.netrc.bak
mv hosts.equiv hosts.equiv.bak
执行删除操作
4.4 配置NFS服务限制
4.1检测方法:
4.1.1查看系统是否存在如下NFS守护进程:
4.1.2查看NFS服务状态:
4.1.3查看是否对NFS服务访问做限制:
4.2判断依据
4.2.1不存在与NFS有关的服务进程
4.2.2如果存在NFS守护进程,但/etc/hosts.allow设置了允许访问NFS的远程地址且/etc/hosts.deny设置了拒绝访问NFS的远程地址,二者满足其一即可。
4.3修改方案:
4.3.1杀掉如下NFS进程:rpc.lockd rpc.nfsd rpc.statd rpc.mountd
4.3.2禁用NFS
4.3.4如需要NFS服务,设置限制能够访问NFS服务的IP范围
编辑/etc/hosts.allow增加一行:
nfs:允许访问的IP
编辑/etc/hosts.deny增加一行:
nfs:all
五、网络安全
5.1禁止IP源路由
源路由是一种互联网协议机制,可许可IP数据包携带地址列表的信息,以此分辨数据包沿途经过的路由器。通过某一路径时,会出现一可选项,记录为中间路径。所列出的中间路径,即路径记录,可提供返回至源路由路径上的目的地。这就允许源路由可指定某一路径,无论是严格的还是松散的,可忽略路径列表上的一些或全部路由器。它可允许用户恶意重定向网络流量。因而,应禁用源路由。
5.2控制远程访问的IP地址
首先执行备份:
检查办法:
查看/etc/hosts.allow /etc/hosts.deny文件中是否设置IP范围限制
修改办法
5.3禁止ICMP重定向
为何要关闭该功能,因为其会导致ICMP重定向攻击,即利用ICMP路由公告功能,攻击者使用该功能可改变攻击目标的路由配置(可造成主机的网络连接异常,被用于流量攻击等严重后果)。
检测方法:
修改办法:
5.4对root为ls、rm设置别名
5.5Update bash
确认bash的版本:
可直接使用Yum进行升级,但并不是最新的版本,若要升级到最新的版本,请进行编译安装升级。
文章来源:马哥教育
官方微信:马哥linux运维
技术交流群:537045784