美文网首页
ELK linux主机操作命令审计

ELK linux主机操作命令审计

作者: 阿fong | 来源:发表于2020-08-28 16:49 被阅读0次

PROMPT_COMMAND环境变量的作用是,在每一次执行命令之前都会执行此环境变量。

审计的原理是:

通过配置/etc/bashrc配置文件,配置PROMPT_COMMAND环境变量,从history中取出命令,写入到指定的日志文件(这里是/var/log/command/command-%Y-%m-%d.log)中。
然后通过filebeat收集,发送给logstash过滤,再给es进行存储。

/etc/bashrc

HISTFILE="/var/log/command/command-`date +%Y-%m-%d`.log"
if [ ! -d "/var/log/command/" ];then
        mkdir /var/log/command/ && chmod o+wx /var/log/command/
fi
if [ ! -f ${HISTFILE} ];then
        touch ${HISTFILE} && chmod 777 ${HISTFILE}
fi
export cmd_login_user=$(who am i|awk '{print $1}')
export cmd_login_ip=$(echo "$SSH_CLIENT" | awk '{print $1}')
export PROMPT_COMMAND='{ date "+%Y-%m-%d %T cmd_hostname:$HOSTNAME cmd_login_user:$cmd_login_user cmd_now_user:$USER cmd_login_ip=$cmd_login_ip cmd:$(history 1 | { read x cmd; echo "$cmd"; })";} >> $HISTFILE'
function my_history(){
        if [ -f "${HISTFILE}" ];then
                last_command=`grep "cmd_now_user:${LOGNAME}" ${HISTFILE} | tail -1 | awk -Fcmd_hostname: '{print $NF}'`
        fi
        msg="$HOSTNAME cmd_login_user:$cmd_login_user cmd_now_user:`whoami` cmd_login_ip=$cmd_login_ip cmd:$(history 1 | { read x cmd; echo "$cmd"; })"
        if [ "${last_command}" != "${msg}" ];then
                echo "`date +"%Y-%m-%d %H:%M:%S"` cmd_hostname:${msg}" >> ${HISTFILE}
        fi
}
export PROMPT_COMMAND=my_history

filebeat

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/command/command-*.log
  tags: ["linux_command"]
  exclude_lines: ['^[a-z]','^[A-Z]']  #过滤掉脏数据,执行exite命令可能会出现脏数据


output.logstash:
  hosts: ["19.xxx.244.xxx:5056"]

logstash

input {
    beats {
        port => 5056
    }
}

filter {
    if "linux_command" in [tags] {
        dissect {
                mapping => {
                    "message" => "%{timestamp} cmd_hostname:%{cmd_hostname} cmd_login_user:%{cmd_login_user} cmd_now_user:%{cmd_now_user} cmd_login_ip=%{cmd_login_ip} cmd:%{cmd}"
                }
        }
              #将匹配失败的脏数据都删除
        if "_dissectfailure" in [tags] {
                drop {}
        }

    }
}

output {
    if "linux_command" in [tags]  {
        elasticsearch {
            hosts  => ["19.xxx.244.xxx:9200"]
            index => "linux-command-%{+YYYY.MM.dd}"
        }
    }
}

相关文章

  • ELK linux主机操作命令审计

    PROMPT_COMMAND环境变量的作用是,在每一次执行命令之前都会执行此环境变量。 审计的原理是: 通过配置/...

  • 用 Shell 搞定 Linux 操作审计

    前段时间学习群中有朋友在询问线上 Linux 主机的命令行操作审计方案时,当时给了一个用 rsyslog + el...

  • Linux主机操作命令捕获

    添加环境变量脚本 编辑环境变量配置文件 添加如下内容 使配置生效 存在问题

  • 每天一个Linux命令之rcp

    rcp命令使在两台Linux主机之间的文件复制操作更简单。通过适当的配置,在两台Linux主机之间复制文件而无需输...

  • 活用History命令

    谁动了我的主机? 之活用History命令 Linux系统下可通过history命令查看用户所有的历史操作记录,在...

  • Linux用户相关操作

    Linux用户相关操作 这篇文章主要记录一下几个问题 登录远程Linux主机 关机重启命令 用户管理增删用户 用户...

  • Linux基础02

    ** Linux基本操作常用命令(二) ** 用户名与主机名 当你进入Linux终端时,你会看到如下样式的图片: ...

  • 面试题 2021-11-01~2021-11-12

    常用的Linux命令 Linux命令 - Linux安全网 - Linux操作系统_Linux 命令_Linux教...

  • Linux

    linux awk命令详解、linux awk命令Linux常用操作指令Linux netstat命令详解 awk...

  • 内网渗透笔记[持续更新]

    主机发现命令 (需要 ping 命令) Windows Linux 端口扫描 (需要 nc 命令) Windows...

网友评论

      本文标题:ELK linux主机操作命令审计

      本文链接:https://www.haomeiwen.com/subject/cgilsktx.html