跳至主要內容

等保三级检查命令

知识库编程技巧CentOSLinux大约 4 分钟

操作系统

1、查看文件权限

## 查看该文件的权限
ls -la /var/log/audit/audit.log

## 查看如下文件的权限是否满足
ls -l /etc/passwd
ls -l /etc/hosts
ls -l /etc/login.defs
ls -l /etc/hosts.allow
ls -l /etc/shadow
ls -l /etc/hosts.deny
ls -l /etc/group
ls -l /etc/services

## 文件中日志信息所在文件的访问权限
ls -l /var/log/messages
ls -l /var/log/secure
ls -l /var/log/audit/audit.log

## 查看rhost文件
find / -name ".rhosts"
## 查看文件的完整性,结果在结尾显示是否改变
pwck -r /etc/passwd
## 查看文件的完整性,结果在结尾显示是否改变
pwck -r /etc/shadow

2、查看系统版本

## 查看系统版本号
more /proc/version
## 查看已安装系统补丁
rpm -qa| grep patch
## 查看当前系统版本
more /etc/issue
more /etc/redhat-release

3、服务相关

## 查看操作系统中已安装的程序包
yum list installed
## 查看开机自启项
systemctl list-unit-files
## 系统查看运行的服务
systemctl list-units |grep running centos
## 查看所运行中服务情况(否已经关闭危险的网络服务如 echo、shell、login、finger、命令等。关闭非必需的网络服务如 talk、ntalk、pop-2、Sendmail、Imapd、Pop3d 等)
service --status-all
## 查看端口开启情况
lsof -i:80
## 查看是否启用对应的 telnet 端口服务
more /etc/services|grep telnet
## 查看是否安装了 SSH 相应的包
rpm -aq|grep ssh
## 查看 ssh 是否启动
ps -e | grep ssh
## 核查是否不存在非必要的高危端口
netstat -an -t
## 访问 ssh 配置文件
more /etc/ssh/sshd_config

3、审计相关

## 检查日志运行
systemctl status rsyslog
## 查看审计功能是否正常运行
service auditd status
service rsyslog status
more /var/log/audit/audit.log   ## 审计日志存放位置
auditctl -l 查看 audit          ## 规则
auditctl -s 查看 audit          ## 运行状态;
more /var/log/messages          ## 系统日志信息存放在此文件
more /var/log/audit/audit.log   ## 查看审计具体记录内容
more /etc/audit/audit.rules     ## 查看审计规则
more /etc/rsyslog.conf          ## 审计配置内容
more /etc/audit/auditd.conf     ## 审计配置内容
more /etc/rsyslog.conf          ## 配置文件里设置了日志服务器
authconfig --test | grep hashing ## 查看加密
more /etc/audit/auditd.conf     ## 重点检查 num_logs(最大能生成几个审计文件),max_log_file(单个审计文件最大容量多少兆),max_log_file_action(日志容量达到最大后的操作),disk_full_action,disk_erro_action 等字段。

4、密码复杂度

chage -l root Root ## 密码复杂度
cat /etc/login.defs|grep PASS ## 查看当前所设置的密码长度及更换周期
more /etc/pam.d/system-auth ## 确认密码复杂度要求及针对终端直接登录,如:登录失败等
more /etc/pam.d/sshd ## 只针对 SSH 远程登录也可设置登录失败次数
more /etc/sudo.conf (cat /etc/sudoers|grep =\(ALL\)## 核查 root 级用户的权限都授予哪些账户
more /etc/passwd |awk -F: '{print $1,$2}' ## 用户中的第二个字段(口令)不为空,为 x 表示设置了密码。

more /etc/shadow ## 第二个字段为口令加密字段。(第一位:账号、第二位:加密加密、第三位:上次修改密码的时间、第四位:两次修改口令之间所需的最小天数、第五位:密码保持有效的最大天数天数、第六位:密码变更前提前几天警告、第七位:账号失效日期、第八位:账号取消日期。其中在密码栏的第一个字星号代表帐号被锁定、双叹号表示这个密码已经过期了,失效日期是从 1970 年 1 月 1 日开始的多少天)

5、入侵检测

find / -namie <daemonname> -print ## 检查是否安装了主机入侵检测软件
more /var/log/secure | grep refused ## 查看入侵检测的措施
more /etc/hosts.deny ## (黑名单)对终端接入范围进行限制
more /etc/hosts.allow ## (白名单)或 more /etc/ssh/sshd_config 指定终端地址可访问
crontab -l ## 核查入侵和病毒行规则
more /etc/profile ## 查看有无 tmout 连接超时
more /etc/profile ## 清除敏感数据所在的存储空间
more /etc/security/limits.conf ## 是否对资源进行了限定

mysql 数据库

1、检查

mysql -u root -p                                ## 进入数据库
SELECT \* FROM mysql.user;                      ## 查看设置的用户
SELECT Host,User,plugin FROM mysql.user;
SELECT Host,User,Password,plugin FROM mysql.user; ## 检查是否存在空口令用户(MySQL5.6 及以下)
SELECT Host,User,authentication_string,plugin FROM mysql.user; ## 检查是否存在空口令用户(MySQL5.7 及以上)
SHOW VARIABLES LIKE'validate_password%';        ## 检查口令复杂度(MySQL5.6 及以下)
SELECT Host,User,password_lifetime FROM mysql.user; ## 检查口令定期更换(MySQL5.7 及以上)
SELECT \* FROM information_schema.PLUGINS WHERE PLUGIN_NAME='connection_control' ;  ## 检查是否安装登录失败处理模块(MySQL5.6 及以下)
SHOW variables LIKE 'connection_control%';      ## 检查是否配置登录失败处理参数;(MySQL5.6 及以下)
SHOW variables LIKE '%timeout';                 ## 检查连接超时
SHOW variables LIKE 'general_log%';             ## 检查数据库日志模块状态
SELECT \* FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME='audit_log';            ## 检查是否安装并开启 MySQL Enterprise Audit 模块
SHOW variables LIKE'require_secure_transport';