zoukankan      html  css  js  c++  java
  • Ubuntu等保三级检查命令

    一、操作系统

      Ubuntu系统默认只能以普通权限账户登录,无法直接登录root账户,所以很多要用到管理员权限的命令加sudo。

      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

      2、查看系统版本

    cat /etc/issue
    cat /proc/version
    uname -a 
    lsb_release -a

      3、服务相关

    service --status-all                     查看本机的所有服务运行状态(这条命令可以看到服务器是否安装杀毒软件)
    service --status-all | more
    service --status-all | less
    service --status-all | grep running      只查看正在运行的服务
    chkconfig --list                         查看开机自启服务

    sysv
    -rc-conf 配置服务级别的命令: 一般的linux有7个级别,ubuntu有8个级别(多了一个S级别) 0代表关机(halt) 1级别是单用户模式(single) 2级别是多用户级别,这个是默认级别 3,4,5未定义,可以提供给用户定义其他多用户级别 6代表重启(restart) S级别系统内部定义的单用户恢复模式。 可以用init 6代表重启,切换运行级别。

      4、审计相关

    rpm -ql auditd                   检查是否安装了 audit 插件
    sudo apt-get install auditd      安装 audit 插件
    service auditd status            查看audit 服务的运行状态
    auditctl -s                      查询状态
    auditctl -l                      查看规则
    auditctl -D                      删除所有规则
    ausearch -i -k key_name          查看审计日志#key_name为标识符

      5、审计规则语法

    临时测试语法格式:auditctl -w PATH -p PERMISSION -k KEY_NAME,直接执行命令。
    
     永久生效语法格式: -w PATH -p PERMISSION -k KEY_NAME,需要配置到/etc/audit/audit.rules 或者 /etc/audit/rules.d/audit.rules 文件中。
    
    PATH:审计指定路径。
    PERMISSION:审计权限范围,r为读,w为写,x为执行,a代表文件或目录的属性发生变化。
    KEY_NAME:标识符。

      6、配置临时审计规则

    临时添加审计规则并测试,临时添加的审计规则,重启服务后会自动消失,这里用于测试。
    1.添加临时测试审计命令:
    auditctl -w /root -p rwxa -k root_test_change
    # 审计目录为:root,审计权限为:rwxa,标识符为:root_test_change
    2.模拟产生审计日志命令: ll /root; touch /root/test;
    3.查看审计日志命令: ausearch -i -k root_test_change

      7、配置永久审计规则

    编辑以下任意1个文件,实现审计规则,/etc/audit/audit.rules 或者 /etc/audit/rules.d/audit.rules。
    
    这里对5个目录操作实现审计行为:
    -w /etc/passwd -p rwxa -k passwd_change,系统用户账户信息。
    -w /etc/shadow -p rwxa -k shadow_change,系统用户密码信息。
    -w /etc/group -p rwxa -k group_change,系统用户组信息。
    -w /var/log/ -p rwxa -k log_change,系统日志信息。
    -w /usr/local/mysql -p rwxa -k mysql_change,MySQL数据库信息。
    通过命令,service auditd restart 重启服务后,auditctl -s 和 auditctl -l 查看服务状态和审计规则。
    查询 /etc/auditd.conf 主配置文件如下:
    log_file = /var/log/audit/audit.log,默认的日志存储目录文件。

    二、mysql数据库

      系统等保要求,MySQL 数据库必须开启密码策略(复杂度)设置和安装审计插件。

           数据库的密码复杂度设置从内部即可开启和设置,但是审计插件必须额外进行下载和安装。

      1、MySQL 数据库密码策略(复杂度)设置

    登录数据库,输入以下命令,检查当前密码策略情况
    show variables like 'validate_password%';
    通过以下命令,可以修改策略值(例)
    set global validate_password_policy=0;
    关于MySQL密码策略相关参数说明:
    1)、validate_password_length 固定密码的总长度; 2)、validate_password_dictionary_file 指定密码验证的文件路径; 3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数; 4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数; 5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM; 关于 validate_password_policy 的取值:   0/LOW:只验证长度;   1/MEDIUM:验证长度、数字、大小写、特殊字符;   2/STRONG:验证长度、数字、大小写、特殊字符、字典文件; 6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数; 如果显示命令无效,则说明策略尚未开启,按照以下步骤操作,编辑配置文件 vim /etc/my.cnf,添加以下命令。 plugin-load=validate_password.so 重启服务,登录数据库,执行以下命令进行插件安装。 INSTALL PLUGIN validate_password SONAME 'validate_password.so'; 再次重启服务,输入以下命令,检查当前密码策略情况。 show variables like 'validate_password%';

      2、审计插件

      审计插件下载地址:https://bintray.com/mcafee/mysql-audit-plugin/release/1.1.6-784#files

           下载文件:audit-plugin-mysql-5.7-1.1.6-784-linux-x86_64.zip

      目录说明:lib -> libaudit_plugin.so、utils -> offset-extract.sh,用到这两个文件。

    1. 查询数据库插件统一存放目录位置,将 libaudit_plugin.so 上传到目录下。
    show global variables like 'plugin_dir';
    
    2.来到 plugin 目录下对 so 文件授权。
    chmod +x libaudit_plugin.so
    chown mysql:mysql libaudit_plugin.so
    
    3. 创建审计日志目录,并授权 mysql 用户操作权限,授权操作不执行会导致日志无法生成。
    mkdir /usr/local/mysql/3306/audit_log/
    chown mysql.mysql /usr/local/mysql/3306/audit_log/
    
    4. 将 offset-extract.sh 脚本上传到服务器上,并授权。
    chmod +x offset-extract.sh
    
    5. 执行脚本运算,获取运算值。
    ./offset-extract.sh /usr/local/mysql/bin/mysqld
    //offsets for: /usr/local/mysql/bin/mysqld (5.7.26)
    {"5.7.26","454f8eee117882061d2a4ed575328a01", 7824, 7872, 3632, 4792, 456, 360, 0, 32, 64, 160, 536, 7988, 4360, 3648, 3656, 3660, 6072, 2072, 8, 7056, 7096, 7080, 13472, 148, 672},
    
    6. 在 MySQL 配置文件中,配置以下命令。
    plugin-load=AUDIT=libaudit_plugin.so
    audit_offsets=7824, 7872, 3632, 4792, 456, 360, 0, 32, 64, 160, 536, 7988, 4360, 3648, 3656, 3660, 6072, 2072, 8, 7056, 7096, 7080, 13472, 148, 672 # 运算值,通过第五步得出
    audit_json_file=ON
    audit_json_log_file=/usr/local/mysql/3306/audit_log/mysql-audit.json # 日志目录
    audit_record_cmds=insert,delete,update,create,drop,revoke,alter,grant,set # 针对这些语句来审计
    
    7. 重启数据库服务,service mysql.server restart,输入以下命令查询插件安装情况。
    show plugins;
    
    8. 查看插件版本。
    show global status like 'AUDIT_version';
    
    9.查看日志文件是否开启。
    show global variables like 'audit_json_file';
      *参数说明:
        1. audit_json_file 
       #是否开启audit功能 
      
       2. audit_json_log_file 
       #记录文件的路径和名称信息 
    
       3. audit_record_cmds 
       #audit记录的命令,默认为记录所有命令可以设置为任意dml、dcl、ddl的组合 如:audit_record_cmds=select,insert,delete,update 还可以在线设置set global audit_record_cmds=NULL(表示记录所有命令) 
    
       4.audit_record_objs
       #audit记录操作的对象,默认为记录所有对象,可以用SET GLOBAL 
       audit_record_objs=NULL设置为默认。也可以指定为下面的格式: 
       audit_record_objs=,test.*,mysql.*,information_schema.*8. 查看审计日志
    cat /usr/local/mysql/3306/audit_log/mysql-audit.json

      3、测试

    进入到 MySQL 命令行,执行语句
    CREATE TABLE `t1` ( `id` int(10) NOT NULL AUTO_INCREMENT, `age` tinyint(4) NOT NULL DEFAULT '0', `name` varchar(30) NOT NULL DEFAULT '', PRIMARY KEY (`id`) )DEFAULT CHARSET=utf8; 
    INSERT INTO `test`.`t1` (`age`, `name`) VALUES ('1', '1'); 
    INSERT INTO `test`.`t1` (`age`, `name`) VALUES ('3', '3'); 
    INSERT INTO `test`.`t1` (`age`, `name`) VALUES ('4', '4'); 
    INSERT INTO `test`.`t1` (`age`, `name`) VALUES ('5', '5'); 
    update t1 set name='6' where age='5'; 
    delete from t1 where age='1'; select * from t1; 
    
    查看日志即可。
    cat /usr/local/mysql/3306/audit_log/mysql-audit.json
  • 相关阅读:
    Compression algorithm (deflate)
    tcpip数据包编码解析(chunk and gzip)_space of Jialy_百度空间
    What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
    gzip压缩算法: gzip 所使用压缩算法的基本原理
    Decompressing a GZip Stream with Zlib
    Frequently Asked Questions about zlib
    how to decompress gzip stream with zlib
    自己动手写web服务器四(web服务器是如何通过压缩数据,web服务器的gzip模块的实现)
    What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
    C语言抓http gzip包并解压 失败 C/C++ ChinaUnix.net
  • 原文地址:https://www.cnblogs.com/aqicheng/p/14668187.html
Copyright © 2011-2022 走看看