安全审计这块我能想到的有两种方案可以解决,一种是在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. 引入scss(@import)和其中易错点

    1.引入文件方式 @import 'url'; ./ :当前目录 ../ :上级目录 src/api/styles: 绝对路径 2.一般在main.js中引用当做全局样式 import 'styles ...

  2. Django框架(十一)—— 常用字段、参数、元信息、多对多关联关系

    目录 常用字段和参数 一.ORM字段 二.ORM参数 三.关系字段 1.ForeignKey 2.OneToOneFiled 3.ManyToManyField 四.元信息 五.多对多关联关系的三种方 ...

  3. hdu6290奢侈的旅行

    高玩小Q不仅喜欢玩寻宝游戏,还喜欢一款升级养成类游戏.在这个游戏的世界地图中一共有n个城镇,编号依次为1到n. 这些城镇之间有m条单向道路,第i 条单项道路包含四个参数ui,vi,ai,bi,表示一条 ...

  4. SDL系列之 - 字体显示测试

    例9.7:设计一个程序,初始化视频子系统,设置显示模式为640*480,表面的色深为16位,使用SDL_ttf库在屏幕上显示“Linux下TrueType字体显示示例”,字体大小为38,颜色为红色.设 ...

  5. 编写Storm程序

  6. 标准 IO 测试 标准输出,输入,出错缓冲大小;全缓冲文本流大小

    例子:测试缓冲区大小 #include <stdio.h> int main(int argc, const char *argv[]) { //标准输入大小,没有输入内容时,标准输入缓冲 ...

  7. Ubuntu 16.04 PHP5.6

    Cannot add PPA: 'ppa:ondrej/php5-5.6' Ubuntu 16.04 PHP5.6 安装 Apache + PHP 5.6 + mysql 5.5 系统: Ubuntu ...

  8. python编程学习day04

    1.函数名是变量名 “=”是内存指向,等号赋值操作,内存指向操作 变量——可赋值,可作为列表元素 函数名可以作为返回值返回 函数名可作为参数传递 2.闭包 内层函数使用了外层函数的变量 作用:可以让一 ...

  9. 《DNS攻击防范科普系列1》—你的DNS服务器真的安全么?

    DNS服务器,即域名服务器,它作为域名和IP地址之间的桥梁,在互联网访问中,起到至关重要的作用.每一个互联网上的域名,背后都至少有一个对应的DNS.对于一个企业来说,如果你的DNS服务器因为攻击而无法 ...

  10. 前端 -- javas-基本语法/引用等

    javas-基本语法/引用等 JavaScript介绍 JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互. JavaScri ...