这次用户高危命令审计分析也是基于系统的syslog。
所以建议没有看过上编文章的可以先温习一下。
1、首先我们要做的就是能够自动记录用户操作的命令并实时发送到syslog。
运行以下命令:
echo 'export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
PROMPT_COMMAND=$(history 1)
typeset -r PROMPT_COMMAND
function log2syslog
{
declare command
command=$BASH_COMMAND
IP=`/sbin/ip addr list|grep -oP '\d{1,3}(\.\d{1,3}){3}'|grep -Ev '^127|255$'|head -n1`
logger -p local1.notice -t bash2syslog -i "audit_log,$HOSTNAME,$IP,$USER,$PPID,$SSH_CLIENT,$PWD,$command"
}
trap log2syslog DEBUG' > /etc/profile.d/zzz_history.sh
对trap命令不了解的同学可以网上查一下,在此就不过多解释了。
为啥放到/etc/profile.d/文件夹下,也可以查阅相关资料自学一下。
2、我们Ctrl + D 断开当前ssh连接,在重新登陆之后查看以下syslog日志:
tail -f /var/log/messages
能看到有audit_log关键字的命令记录了,说明脚本已经生效了。
2020-04-02 10:15:22 graylog bash2syslog[25424]: audit_log,graylog.server.local,192.168.254.102,root,32298,192.168.254.133 56701 22,/etc/yum.repos.d,tail -f /var/log/messages
3、返回到graylog2中,找到刚才关键字为tail的那条message,创建解析器,选中Copy input
4、条件Condition中选择正则匹配,填入高危命令关键字的正则表达式,并创建新的risk_cmd字段。
(.+:.+:.+:|rm .+rf|dd .+|fdisk .+|\/dev.+|mkfs.+|wget.+|curl.+|ftp.+|sftp.+|mv .+|kill .+|.+ restart|.+ reload)
关于正则如何写,给大家推荐一本书精通正则表达式www.amazon.cn
然后在菜鸟工具中检测一下:
5、创建一个名为risk_cmd的Stream,条件是Field risk_cmd must be present。
6、在grafana添加一条数据源:
7、创建审计看板: