Ansible 安全 之【命令审计】

本文介绍了如何使用Ansible实现命令审计功能,包括设置审计日志文件、修改用户权限、配置环境变量以及利用PROMPT_COMMAND记录命令执行信息。此外,还详细阐述了日志轮换的配置步骤,确保审计日志的安全性和管理效率。最后,提到了在客户端如xshell中如何记录日志,以完整跟踪和记录命令操作。
摘要由CSDN通过智能技术生成

Ansible 安全 之【命令审计】

实现该功能要求如下:

1. 接受审计的登录用户默认shell必须为bash

2. bash版本至少3.00或以上

需要该要求的原因是实现功能的方法需要用到history命令的HISTTIMEFORMAT变量和PROMPT_COMMAND变量。

配置命令审计

1.创建一个审计日志文件 
mkdir /var/log/shell_audit
touch /var/log/shell_audit/audit.log

2.将日志文件所有者赋予一个最低权限的用户  
chown nobody:nobody /var/log/shell_audit/audit.log

3.给该日志文件赋予所有人的写权限  
chmod 002 /var/log/shell_audit/audit.log

4.设置文件权限,使所有用户对该文件只有追加权限  
chattr +a /var/log/shell_audit/audit.log

5.编辑/etc/profile在末尾添加下面内容
vim /etc/profile
...
HISTSIZE=2048
HISTTIMEFORMAT="%Y/%m/%d %T   ";export HISTTIMEFORMAT
export HISTORY_FILE=/var/log/shell_audit/audit.log
export PROMPT_COMMAND='{ code=$?;thisHistID=`history 1|awk "{print \\$1}"`;lastCommand=`history 1| awk "{\\$1=\"\" ;print}"`;user=`id -un`;whoStr=(`who -u am i`);realUser=${whoStr[0]};logDay=${whoStr[2]};logTime=${whoStr[3]};pid=${whoStr[5]};ip=${whoStr[6]};if [ ${thisHistID}x != ${lastHistID}x ];then echo -E `date "+%Y/%m/%d %H:%M:%S"` $user\($realUser\)@$ip[PID:$pid][LOGIN:$logDay $logTime] --- [$PWD]$lastCommand [$code];lastHistID=$thisHistID;fi; } >> $HISTORY_FILE' 

6. 刷新/etc/profile文件
source /etc/profile

查看命令审计

# 查看日志记录的命令信息
tail -f /var/log/shell_audit/audit.log
# 2021/10/27 10:01:27 root(root)@(192.168.15.1)[PID:17909][LOGIN:2021-10-27 10:01] --- [/root] 2021/10/27 10:01:27 hostname [0]
# 2021/10/27 10:05:03 root(root)@(192.168.15.1)[PID:17787][LOGIN:2021-10-27 09:51] --- [/root] 2021/10/27 10:05:03 pwd [0]

2021/10/27 10:01:27 	记录时间/命令执行完成时间
root(root)  	执行命令的用户(最初登录的用户) 
@(192.168.15.1) 	登录的IP
[PID:17909]    最初登录时的LOGIN产生的PID
[LOGIN:2021-10-27 10:01]    命令执行开始的时间
[/root] 	命令执行的当前目录
2021/10/27 10:01:27 	命令执行开始的时间
hostname  	执行的命令
[0] 	命令返回的状态码

设置audit.log的日志轮换

# 配置日志切割
vim /etc/logrotate.d/shell_audit 
/var/log/shell_audit/audit.log { 
    weekly  
    missingok 
    dateext 
    rotate 100
    sharedscripts 
    prerotate 
    /usr/bin/chattr -a /var/log/shell_audit/audit.log 
    endscript 
    sharedscripts 
    postrotate 
      /bin/touch /var/log/shell_audit/audit.log
      /bin/chmod 002 /var/log/shell_audit/audit.log
      /bin/chown nobody:nobody /var/log/shell_audit/audit.log
      /usr/bin/chattr +a /var/log/shell_audit/audit.log
    endscript 
}

# 执行以下命令,会对日志做切割,并在/var/log/shell_audit目录下生成一个audit.log-20211027格式的文件
logrotate -vf /etc/logrotate.d/shell_audit
# reading config file /etc/logrotate.d/shell_audit
# Allocating hash table for state file, size 15360 B

# Handling 1 logs

# rotating pattern: /var/log/shell_audit/audit.log  forced from command line (100 rotations)
# empty log files are rotated, old logs are removed
# considering log /var/log/shell_audit/audit.log
#   log needs rotating
# rotating log /var/log/shell_audit/audit.log, log->rotateCount is 100
# dateext suffix '-20211027'
# glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
# glob finding old rotated logs failed
# running prerotate script
# renaming /var/log/shell_audit/audit.log to /var/log/shell_audit/audit.log-20211027
# running postrotate script

客户端记录日志

我们在使用xshell的时候,可以设置日志记录。

在这里插入图片描述

重新连接,在xshell窗口输入命令,该该窗口的所有信息都会记录到日志文件中。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值