按钮点击获取name_06736.2.0通过Nginx获取CDSW的登录信息(续)

作者:余枫

1

文档编写目的

在上一篇文章《6.2.0-通过Nginx获取CDSW的登录信息》中,通过Nginx的配置捕获了用户登陆相关的一些信息,比如登陆成功或失败、登陆时间、用户名等等。在收集了用户的登陆信息后,目前还想对用户的一些操作进行捕获,然后存入数据库中进行查询分析,本文档将介绍如何捕获当用户使用“Share”功能和进行Kerberos绑定时的操作信息。

  • 测试环境:

1.RedHat7.4

2.CDH6.2

3.Nginx1.16.0

4.CDSW1.5

2

实现过程

由于增加了新的需求,需要通过下面几个方面进行改进:

Nginx的配置不用修改,保持和之前一致,如下图:

7d0a18f27da63d049bf4347e5518a874.png

1.修改脚本,在脚本里加入新的判断条件,对Share功能和Kerberos认证进行捕获

#!/bin/bash
HOSTNAME="192.168.0.178"
PORT="3306"
USERNAME="root"
PASSWORD="123456"
DBNAME="cdsw_login_info"
TABLENAME="login_info"
log_dir=/usr/local/nginx/logs/
log_name=$(date -d "yesterday" +"%Y%m%d")

#将nginx日志中的十六进制引号转为正常显示的引号并定向到前一天日期命令的新日志文件
sed 's#\\x22#"#g' ${log_dir}access.log > ${log_dir}${log_name}.log
#将nginx日志文件清空,确保每次处理的是前一天的日志
cat /dev/null > ${log_dir}access.log
#按行读取新的日志文件进行处理
cat ${log_dir}${log_name}.log | while read line
do
if [[ $line =~ "authenticate" ]] && [[ $line =~ "POST" ]] && [[ $line =~ "login" ]]; then
    OIFS=$IFS; IFS="|"; set -- $line; aa=$1;bb=$3;cc=$4;source_ip=$5;referer=$6;user_agent=$7 IFS=$OIFS
    OIFS=$IFS; IFS='""'; set -- $cc; username=$7 IFS=$OIFS
    occur_time=${aa:0:10}" "${aa:11:8}
    if [[ $bb = "200"  ]]; then
        login_state='1'
    elif [[ $bb = "401"  ]]; then
        login_state='0'
    else
        login_state=''
    fi
    insert_sql="insert into ${DBNAME}.${TABLENAME}(source_ip,name,referer,user_agent,login_state,occur_time) values('$source_ip','$username','$referer','$user_agent',$login_state,'$occur_time')"
    mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e "${insert_sql}"
fi
if [[ $line =~ "sharing" ]]; then
    OIFS=$IFS; IFS="|"; set -- $line; aa=$1;bb=$3;cc=$4;source_ip=$5;referer=$6;user_agent=$7 IFS=$OIFS
    OIFS=$IFS; IFS='""'; set -- $cc; share_flag=$9 IFS=$OIFS
    occur_time=${aa:0:10}" "${aa:11:8}
    if [[ $share_flag = ""  ]]; then
        share_flag="clickShare"
    fi
    insert_sql="insert into ${DBNAME}.${TABLENAME}(source_ip,name,referer,user_agent,login_state,occur_time,share_flag) values('$source_ip','$username','$referer','$user_agent',$login_state,'$occur_time','$share_flag')"
    mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e "${insert_sql}"
fi
if [[ $line =~ "kerberos-credentials" ]]; then
    OIFS=$IFS; IFS="|"; set -- $line; aa=$1;request=$2;bb=$3;cc=$4;source_ip=$5;referer=$6;user_agent=$7 IFS=$OIFS
    OIFS=$IFS; IFS='""'; set -- $cc; IFS=$OIFS
    occur_time=${aa:0:10}" "${aa:11:8}
    insert_sql="insert into ${DBNAME}.${TABLENAME}(source_ip,name,referer,user_agent,login_state,occur_time,request) values('$source_ip','$username','$referer','$user_agent',$login_state,'$occur_time','$request')"
    mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e "${insert_sql}"
fi
done

ef2d84f2d0fc71ffdd25b8e9cdf24753.png

2.修改存储信息的表结构,建表语句如下:

CREATE TABLE `login_info` (
  `id` int(5) primary key NOT NULL AUTO_INCREMENT,
  `source_ip` varchar(32) DEFAULT NULL,
  `name` varchar(16) DEFAULT NULL,
  `referer` varchar(64) DEFAULT NULL,
  `user_agent` varchar(256) DEFAULT NULL,
  `login_state` char(1) DEFAULT NULL,
  `occur_time` timestamp ,
  `request` varchar(256) DEFAULT NULL,
  `share_flag` varchar(16) DEFAULT NULL) 
ENGINE=InnoDB DEFAULT CHARSET=utf8;

63852ec9fc04f78ba0b8ee85cbd04107.png

3

获取操作信息

3.1

用户使用“Share”功能

1.用户点击“Share”功能

ea0dbb376b94338cf5cb2a38bec47666.png

获取用户点击“Share”功能的信息

select * from login_info where share_flag='clickShare';

37904bd2b39d4e7d284bc55737c439fc.png

2.用户点击“Share with Others”

61f27e698eb33af6c63549dfeec3ce82.png

获取用户点击“Share with Others”按钮的信息

select * from login_info where share_flag in ('specific','authenticated','all');

f6cfb6c7806cade59d6797ff14563666.png

3.用户点击“Stop Sharing”

24858f163202b7d9a245447697bdb2f0.png

获取用户点击“Stop Sharing”按钮的信息

select * from login_info where share_flag='private';

e446a0832694067b9f13c4ffa38378de.png

3.2

用户使用Kerberos绑定功能

1.用户进入Kerberos认证页面

ce4d14a7f16203687b75913a98a8bb18.png

获取用户进入Kerberos认证页面的信息

select * from login_info where request like '%GET%kerberos-credentials%';

e61169c4cdb8da970bf790d0ae683057.png

2.用户进行Kerberos认证

a8bb37ffa7bd6e934ce29c61966cad5b.png

获取用户点击Kerberos认证按钮的信息

select * from login_info where request like '%POST%kerberos-credentials%';

5d76efa712f8c99c193150b4e10c52a3.png

3.用户取消Kerberos认证

7d90766d46d7a01bead616c26edb610d.png

获取用户取消Kerberos认证的信息

select * from login_info where request like '%DELETE%kerberos-credentials%';

5121645fdda74528f9db3443ef616c3c.png

4

总结

1.通过Nginx转发请求的方式能够捕获到CDSW上很多的操作信息,获取到操作信息之后可以对保存的信息的表进行进一步的统计分析,这对审计很有帮助。

2.用户在使用这两个功能时,每点击一个按钮都会打印出相应的日志,所以本文档中对点击相应的按钮的日志做了处理,分开存入了数据库中,在分析时可以通过不同的条件查询出需要的结果。

3.在处理信息的过程中,最重要的步骤是对脚本的修改以及在数据库中进行查询时,需要通过分析日志的特征来选择合适的条件过滤出需要的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值