安全基线检查平台之Centos7

0x00 前言#

最近在做安全基线检查相关的,网上有一些代码比较零散;也有一些比较完整的项目,比如owasp中的安全基线检查项目,但是收费;还有一些开源且完整的,比如lynis,但是不符合我的要求。

我的要求如下:

  • 能够对操作系统、中间件和数据库进行基线检查

  • 脚本在系统上进行基线检查后的结果或者收集到的数据能够传输到一个服务端

  • 服务端要做可视化展示

最终的效果是什么呢?最好能够达到阿里云里的安全基线检查的样子,差一点的话也没关系啦

本篇文章是代码中在centos7系统中将要检查的项目,参考CIS标准而来。代码在https://github.com/chroblert/SecurityBaselineCheck
现在完成了Centos基线检查第一个版本的编写,脚本(简称agent)只在要检查的服务器上运行并显示检查结果。之后会将检查的结果以json串的形式上传到基于django搭建的后端上。
简要截图如下:

0x01 初始设置#

1.1 文件系统配置:

将/tmp挂载至一个单独的分区

挂载时指定noexec,nosuid:不允许运行可执行文件

1.2 安全启动设置:

设置bootloader的配置文件的权限为600

设置bootloader的密码:进入引导界面需输入密码

为单用户启动认证机制

1.3 强制访问控制:

安装SELinux

设置SELinux的状态为enforcing

设置SELinux的policytargeted

0x02 服务配置#

2.1 时间同步设置:

开启时间同步服务

使用ntpchrony来统一服务器的时间

不安装X-windows系统:即不适用可视化界面

0x03 网络配置#

3.1 hosts设置:

配置/etc/hosts.allow/etc/hosts.deny文件

配置/etc/hosts.allow1与/etc/hosts.deny文件的权限为0644

配置/etc/hosts.allow1与/etc/hosts.deny文件的属主为root

3.2 防火墙配置

安装iptables

设置各个Chain的默认策略为drop

为回环流量设置防火墙规则【-】

为新的outboundEstblished的链接设置防火墙规则【-】

为所有开放的端口设立规则 【-】

0x04 审计设置#

安装并使用auditd

配置记录审计日志的文件大小:8M

配置记录审计日志的文件个数:5

单个审计日志文件大小达到设定的值时触发的动作为:keep_logs/rotate

磁盘空间满后触发的动作为:rotate

auditd需配置的一些规则:

规则:审计更改日期和时间的操作
规则:审计更改用户/组信息的操作
规则:审计更改系统网络环境的操作
规则:审计更改系统强制访问控制的操作
规则:审计登入登出系统的事件
规则:审计企图改变文件权限的操作
规则:审计未授权情况下企图访问文件未成功的事件
规则:审计使用提权命令的操作
规则:审计删除文件的操作????
规则:审计sudoers文件的变更
规则:审计sudoers日志文件的变更????
规则:审计日志文件audit.log不能被改变

 

0x05 日志设置#

安装并启用rsyslog

将日志发送到远端日志服务器:????

远端日志服务器配置接收的端口与协议???

0x06 认证授权#

6.1 配置cron:

开启cron服务

配置 /etc/crontab,/etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly,//etc/cron.d文件的权限为0700

设置cron.allow:只允许特定的用户可以使用cron

6.2 配置SSH:

配置/etc/ssh/sshd_config文件的权限为0600

设置协议为SSH2????

设置日志记录级别为INFO????

关闭X11Forwarding

设置最大认证尝试次数:4

开启IgnoreRhosts:不启用基于主机的认证

关闭HostbasedAuthentication: 关闭基于主机的认证

禁止使用root直接登录:PermitRootLogin no

禁止使用空密码登录:PermitEmptyPasswords no

禁止用户环境:PermitUserEnvironment no

设置使用的MAC算法:

hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com,curve25519sha256@libssh.org,diffie-hellman-group-exchange-sha256

 

设置空闲超时时间:180秒ClientAliveInterval 180

设置一次登录花费时间:120秒LoginGraceTime 120

6.3 配置PAM:

密码长度最少位数:12

密码中最少字符类型数:3

配置密码锁定:????

配置密码重用限制:不使用最近5次的密码

配置密码hash算法:SHA512

6.5 用户账户和环境设置:

密码有效时间:90天

密码更改最短间隔:7天

密码过期警告:7天

自动禁用特定时间内没有活动的账号:365天

配置系统账号的无法登录

配置root账号默认群组的GID为0

配置umask的默认值为027???

配置shell超时关闭会话时间:180

配置可以使用su命令的用户

0x07 系统维护#

7.1 重要文件权限:

/etc/passwd 0644 uid 0 gid 0
/etc/shadow 0000 uid 0 gid 0
/etc/group 0644 uid 0 gid 0
/etc/gshadow 0000 uid 0 gid 0
/etc/passwd- 0644 uid 0 gid 0
/etc/shadow- 0000 uid 0 gid 0
/etc/group- 0644 uid 0 gid 0
/etc/gshadow- 0000 uid 0 gid 0

 

审计设置了SUID可执行文件的完整性 前面

审计设置了SGID的可执行文件的完整性

7.2 用户和组设置:

不允许密码为空的账号

只允许root账号的UID为0

设置path环境变量中的目录只有owner可写,groupother都没有w的权限

设置所有用户都有家目录

设置所有用户家目录的权限为0750

设置所有用户家目录的owner都为其自身

设置用户家目录内以.开头的文件,只有owner可写,groupother都没有w的权限

确保没有.netrc,.rhosts,.forward文件

确保所有在/etc/passwd中的组都在/etc/group

确保每个用户的UID都不同

确保每个组的GID都不同

确保用户名唯一

确保组名唯一

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值