安全审计这块我能想到的有两种方案可以解决,一种是在Linux中配置实现,一种是使用Python开发堡垒机实现,我先实现了第一种比较简单的:后面会开发堡垒机:
 
一、首先我们需要在/etc/profile中配置
#获取本地IP地址以及原始登录用户
USER_IP=`ifconfig eth3 |grep "inet addr"|awk '{print $2}'|awk -F':' '{print $2}'`       
login_user=`who am i |awk '{print $1}'`
#定义命令存放的文件夹  
HISTDIR=/usr/share/.history  
if [ -z $USER_IP ]  
then  
USER_IP=`hostname`  
fi  
#在.history目录下创建原始用户目录
if [ ! -d $HISTDIR/${login_user} ]  
then  
mkdir -p $HISTDIR/${login_user}  
chmod 300 $HISTDIR/${login_user}  
fi  
DT=`date +%Y%m%d`  
#生成用户所操作的命令文件(这个文件需要用户关闭登录的时候才会生成)
export HISTFILE="$HISTDIR/${login_user}/${USER_IP}.history.$DT"  
export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]" 
#改变文件的权限,这样原始用户才能读到历史命令,不过只限于本天的
chmod 644 $HISTDIR/${login_user}/*.history* 2>/dev/null
 
二、然后需要在/etc/bashrc配置:
HISTFILESIZE=10000  
HISTSIZE=10000
#定义执行history命令的时候,输出的格式
HISTTIMEFORMAT="%F %T `who am i |awk '{print $1}'` : "  
export HISTTIMEFORMAT
 
注意:上面的两个配置需要在所有的客户端服务器配置
 
三、使用rsync+inotify实现命令文件的实时传输
3.1、首先需要搭建一个rsync server端
增加配置文件/etc/rsyncd.conf:
uid = root
gid = root
secrets file = /etc/rsync.password
auth users = rsync_test
log file = /var/log/rsyncd.log
#自定义名称,不过要与下面的模块名称一致
[rsync_backup]
#传输要写入的目录
path = /data1/rsync_backup
#模块名
comment = rsync_backup
read only = no
list = no
 
增加密码文件/etc/rsync.password:
#格式为:用户名:密码
rsync_test:rsync@123qaz
 
chmod 600 /etc/rsyncd.conf  && chmod 600 /etc/rsync.password
&& mkdir /data1/rsync_backup
 
然后就可以直接执行 rsync --daemon运行了
 
3.2、client配置:
客户端也需要增加一个密码文件/etc/rsync.pass,里面的密码就是你刚才在server端创建的密码
 
然后需要安装inotify工具:
 
建立一个脚本实现自动传输(/opt/scripts/rsync_users_history.sh):
#!/bin/bash
/usr/local/inotify-tools/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e 'close_write,modify,delete,create' /usr/share/.history/ |while read file
  do
    rsync -az /usr/share/.history/  rsync_test@10.122.33.132::rsync_backup --password-file=/etc/rsync.pass
done
 
运行脚本实现实时传输:
nohup sh /opt/scripts/rsync_users_history.sh  >> /var/log/rsync.log &
 
测试
 
 
总结:
优点:
可以实现安全审计的功能,存储每个用户的执行命令
缺点:
如果一个懂Linux的用户在操作的话,可以删除自己执行的命令文件,安全性不是特别高,所以要实现高安全的审计,还需要自己开发堡垒机去实现,下一章就开始

Linux安全审计-基础篇的更多相关文章

  1. Linux入门基础篇

    Linux入门基础篇 Linux诞生 Linux发行版本说明 Linux官方网站 Linux内核官方网站 比较有名的Linux发行版 虚拟机(Virtual Machine),一个虚拟的系统,安装在系 ...

  2. 二进制入门-打造Linux shellcode基础篇

    0x01 前言   本文的目的不是为了介绍如何进行恶意的破坏性活动,而是为了教会你如何去防御此类破坏性活动,以帮助你扩大知识范围,完善自己的技能,如有读者运用本文所学技术从事破坏性活动,本人概不负责. ...

  3. 小朋友学Linux<一>基础篇

    Linux最基础之<小朋友也能学会Linux>... 1.Linux 知识积累: Linux 英文解释为 Linux is not Unix.学习Linux必须要熟练使用的操作系统是Cen ...

  4. linux操作系统基础篇(七)

    Linux服务篇(二) 1.nfs服务的搭建 安装: yum install rpcbind nfs-utils -y 配置: NFS服务的配置文件为 /etc/exports,这个文件是NFS的主要 ...

  5. linux操作系统基础篇(六)

    linux服务篇 1.samba服务的搭建 samba的功能: samba是一个网络服务器,用于Linux和Windows之间共享文件.2. samba服务的启动.停止.重启service smb s ...

  6. linux操作系统基础篇(一)

    1.什么是linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序 ...

  7. Linux学习——————基础篇

    一.linux试用 1.使用man或者info查询 2.超级简单的文本编辑器:nano 3.sync:数据同步写入磁盘,将内存中的数据写入磁盘 3.惯用的关机命令:shutdown /sbin/shu ...

  8. linux操作系统基础篇(五)

    Linux网络以及rpm安装yum源的配置 1.Linux网络 1. 使用ifconfig命令来维护网络1) fconfig命令的功能:显示所有正在启动的网卡的详细信息或设定系统中网卡的IP地址.2) ...

  9. linux操作系统基础篇(四)

    一.系统监控 1.TOP 命令 1) top命令的功能:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 2) 使用top命令列 ...

随机推荐

  1. windows API 创建系统托盘图标

    系统托盘在我们使用的程序中很普遍,下面我们来看一个很不错的例子,使用Win32 API实现,对理解系统托盘有些帮助. [cpp] view plaincopy #include <windows ...

  2. python excel单元格及样式

    python excel单元格及样式: #!/usr/bin/env python # -*- coding: utf-8 -*-” #只对当前文件的中文编码有效 # Filename : Write ...

  3. Socket通信1.0

    Socket通信1.0 服务器端: package page; import java.io.BufferedReader; import java.io.IOException; import ja ...

  4. 快速列出大纲.提纲.归纳知识点 思维导图工具Xmind

    博客搬迁,给您带来的不便敬请谅解! http://www.suanliutudousi.com/2017/10/23/%E5%BF%AB%E9%80%9F%E5%88%97%E5%87%BA%E5%A ...

  5. CSS 案例学习

    1.样式 display:inline-block;可改变a标签,合其可定义宽高 2.a:hover表示鼠标经过 3.background:url(110.png) bottom 表示:给链接一个图片 ...

  6. hdu6315 /// 线段树区间更新

    题目大意: 给定n q 为序列的个数和操作的个数 给定n个数的序列b[]作为分母 初始全为0的序列a[]作为分子 两种操作 add l r 为a[]的l到r区间全部+1 query l r 为查询l到 ...

  7. 自动生成web api接口文档

    然后打开web程序,访问ip:port/Help. 为什么可以直接输入Help就能访问呢,因为这个插件本身已经配置了路径,如下. public class HelpPageAreaRegistrati ...

  8. C预处理之宏定义

    #include <stdio.h> //定义不带参数的宏 #define PI 3.14 /*********************************************** ...

  9. thinkphp助手函数

    tp3 C($name=null, $value=null,$default=null) 获取和设置配置参数 支持批量定义 load_config($file,$parse=CONF_PARSE) 加 ...

  10. shell command to replace UltraEdit

    cat abc.txt |hexdump -C cat abc.txt |hexdump -C