博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
云计算之linux服务器用户管理
阅读量:3513 次
发布时间:2019-05-20

本文共 2266 字,大约阅读时间需要 7 分钟。

技术背景:

       工程师A:公司里那么多服务器,每天服务器上都会创建些新用户,这样不安全

       工程师B:不给他们创建用户的权限不就好了?

       工程师A:不放权,事事都自己管,那不累死了

      工程师B:那就写脚本监控,这样就知道什么时候,谁通过哪个终端创建了哪个用户了

技术实现:

服务器环境:centos7.4

1.运行pstree可以看到:进程树上有一个auditd进程
    auditd进程是审计监控,可以记录谁在什么时候对哪个文件做了什么操作,本脚本主要使用这个技术
2.本次是监听用户的创建,新创建的用户会写入/etc/passwd文件中,所以要通过audit审计监控这个文件
    auditctl -w /etc/passwd -p rwxa 
    auditctl -l ==>就可以看到自己创建的监听规则
    以上命令只是临时创建,服务器重启后就没了,不适用,所以要写入配置文件中
    vim /etc/audit/rules.d/audit.rules
        -w /etc/passwd -p rwxa
3.创建新用户,查看审计信息
    useradd li1
    echo 123 | passwd --stdin li1
    ausearch -f /etc/passwd | grep useradd | tail -1 
        ==>就可以看到刚刚操作的详细信息
    timer=`ausearch -f /etc/passwd | grep useradd | tail -1 | awk '{print $2}' | awk -F'[(.)]' '{print $2}'`        但是,并不能看到在哪个终端,创建了谁
4.通过上面的结果可以获取到时间,用户id,与父进程
    
    获取到操作的时间,不过是秒数,需要转换为标准时间
    timer=`date -d @$timer +%F-%Hh`
    这样就可以得到年-月-日-时h的时间格式了
    uid=`ausearch -f /etc/passwd | grep useradd | tail -1 | awk '{print $15}' | awk -F'=' '{print $2}'`
    这样可以取出用户ID,然后在通过/etc/passwd将用户id转换为用户名
    uname=`awk -F: '$3=='$uid'{print $1}' /etc/passwd`
    取出ppid父进程,通过这个父进程可以得到操作者的终端ip地址
    ppid=`ausearch -f /etc/passwd | grep useradd | tail -1 | awk '{print $12}' | awk -F'=' '{print $2}'`
    addr=`cat /var/log/audit/audit.log |grep "$ppid"| grep hostname | tail -1 | awk '{print $12}'|awk -F'=' '{print $2}'`
    然后可以查看/etc/passwd得到该操作者创建了谁
    WhoIsCreated=`tail -1 /etc/passwd | awk -F: '{print $1}'`
5.创建一个文件,将刚刚得到的结果追加写入这个文件中
    vim /root/users.txt
        时间    用户    地点    创建了谁?
    echo $timer $uname $addr $WhoIsCreated >> /root/users.txt 
6.可以将该结果通过邮件的方式发送给管理员
    echo $timer $uname $addr $WhoIsCreated | mail -S "通知" xx@tedu.cn

7.总结:以上操作可以写入脚本配合周期性计划任务自动执行

vim audit_useradd.sh
#!/bin/bash
#comment=`ausearch -f /etc/passwd | grep useradd | tail -1`
timer=`ausearch -f /etc/passwd | grep useradd | tail -1 | awk '{print $2}' | awk -F'[(.)]' '{print $2}'`
timer=`date -d @$timer +%F-%Hh`
uid=`ausearch -f /etc/passwd | grep useradd | tail -1 | awk '{print $15}' | awk -F'=' '{print $2}'`
uname=`awk -F: '$3=='$uid'{print $1}' /etc/passwd`
ppid=`ausearch -f /etc/passwd | grep useradd | tail -1 | awk '{print $12}' | awk -F'=' '{print $2}'`
addr=`cat /var/log/audit/audit.log |grep "$ppid"| grep hostname | tail -1 | awk '{print $12}'|awk -F'=' '{print $2}'`
WhoIsCreated=`tail -1 /etc/passwd | awk -F: '{print $1}'`

echo $timer $uname $addr $WhoIsCreated >> /root/a.txt 

 

转载地址:http://xpcqj.baihongyu.com/

你可能感兴趣的文章
Omap138开发板下以uboot2012.04.01为例分析uboot执行(六)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(七)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(八)
查看>>
中国大学MOOC—陆军工程大学数据结构MOOC习题集(2018秋)7-3 中位数
查看>>
Java发送邮件 注册成功发送邮件
查看>>
Mybatis的简单使用(增删改查),解决数据库字段名和实体类映射属性名不一致的问题
查看>>
Mybatis配置log4j文件 分页查询(limit,rowBounds)
查看>>
Mysql利用注解进行开发
查看>>
Mybatis一对多查询,多对一查询
查看>>
Spring配置bean.xml文件的头目录模板
查看>>
代理模式之------动态代理
查看>>
Spring实现AOP的三种方式
查看>>
Mybatis-Spring简单的配置和使用,配置事务
查看>>
SpringMVC的简单使用与配置
查看>>
SpringMVC和Mybatis整合使用的配置文件
查看>>
代码特效插件pycharm
查看>>
python实现tcp客户端从服务端下载文件
查看>>
将字符串 “k:1|k1:2|k2:3|k3:4” 转换成字典{“k”:1,”k1”:2,”k2”:3,”k3”:4}
查看>>
AttributeError: 'tuple' object has no attribute 'decode'
查看>>
node爬虫(牛刀小试)
查看>>