linux利用PROMPT_COMMAND实现命令审计

网上查了实现命令审计大概有以下几种:

查不到了,改天再补充

以下环境基于CentOS 6

# history时间格式
sed -i ‘/^HISTSIZE/a HISTTIMEFORMAT="%F %T "‘ /etc/profile
# 命令审计
cat > /etc/profile.d/cmd_log.sh << ‘EOF‘
readonly PROMPT_COMMAND=‘{ cmd=$(history 1 | { read a b c d; echo "$d"; });msg=$(who am i |awk "{print \$2,\$5}");logger -i -p local1.notice "$msg $USER $PWD # $cmd"; }‘
EOF

# 修改rsyslog
sed -i ‘[email protected]*\.info.*@*.info;mail.none;authpriv.none;cron.none;local1.none    /var/log/[email protected]‘ /etc/rsyslog.conf
sed -i ‘/^local7/a local1.notice                                           /var/log/cmd.log‘ /etc/rsyslog.conf/etc/init.d/rsyslog restart

# cmd.log日志轮询
cat > /etc/logrotate.d/cmd_log << ‘EOF‘
/var/log/cmd.log {
    monthly
    missingok
    rotate 12
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}
EOF

以上没有用/etc/logrotate.d/syslog去轮替/var/log/cmd.log,因为syslog默认周期是采用/etc/logrotate.conf每周轮替一个文件,登录系统敲打的命令没有那么多,自定义一个月时间轮替一次。

[[email protected] ~]# cat /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    sharedscripts
    postrotate
    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}
[[email protected] ~]# head /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create  
时间: 2024-12-17 17:16:34

linux利用PROMPT_COMMAND实现命令审计的相关文章

Linux 利用 PROMPT_COMMAND 实现审计功能

命令审计,采用logger方式将信息记录到/tmp下面,目录也可以自己修改的 这个是根据用户来分类的,如果觉得不方便也可以用时间来分类也行 这个只是在root用户有记录,如果想所有用户都有记录,就得加到/etc/profile里面 echo "export PROMPT_COMMAND='{ msg=\$(history 1 | { read x cmd; echo \$cmd; });user=\$(whoami); echo \$(date \"+%Y-%m-%d %H:%M:%S

Linux 系统添加操作记录--命令审计功能

**Linux 系统添加操作记录审计 1.mkdir -p /usr/local/domob/records/ chmod 777 /usr/local/domob/records/ chmod +t /usr/local/domob/records/ 2.vi /etc/profile 在最后添加下面的代码 if [ ! -d /usr/local/domob/records/${LOGNAME} ] then mkdir -p /usr/local/domob/records/${LOGNA

linux之cp/scp命令+scp命令详解

linux之cp/scp命令+scp命令详解 名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... directory 说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录. 把计 -a 尽可能将档案状态.权限等资料都照原状予以复制. -r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地. -f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制. 范例: 将档案 aa

Linux查看系统状态命令

Linux查看系统状态命令     iostat iostat 命令详细地显示了存储子系统方面的情况.你通常用iostat来监控存储子系统总体上运行状况如何,并且在用户注意到服务器运行缓慢之前提早发现输入/输出缓慢的问题.相信我,你应该在用户发现这些问题之前先发现这些问题! meminfo和free meminfo为你详细显示了内存方面的情况.你通常可以使用另一个程序,比如cat和grep,来访问meminfo的信息.比如说,cat /proc/meminfo为你详细显示了服务器的内存在任何一个

linux利用sendmail发送邮件的方法

linux利用sendmail发送邮件, 方法1 安装sendmail即可使用, mail -s "test" [email protected] <content.txt bin/mail会默认使用本地sendmail发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的资源占用. 方法2.利用外部的smpt服务器 而通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的: 修改

linux 学习2 常用命令

1.显示日期的指令: date 2.   [Tab]按键---具有『命令补全』不『档案补齐』的功能 3:  su和 sudo  su用于用户之间的切换.  su在不加任何参数,默认为切换到root用户; su 加参数 - ,表示默认切换到root用户,并且改变到root用户的环境: sudo用于普通用户可以使用root权限来执行指定命令. sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码.不过有时间限制,Ubuntu默认为一次时长

【转】linux之cp/scp命令+scp命令详解

linux之cp/scp命令+scp命令详解 名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... directory 说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录. 把计 -a 尽可能将档案状态.权限等资料都照原状予以复制. -r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地. -f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制. 范例: 将档案 aa

Linux的经典shell命令整理

Linux的经典shell命令整理 1.删除0字节文件find -type f -size 0 -exec rm -rf {} \; 2.查看进程按内存从大到小排列ps -e -o “%C : %p : %z : %a”|sort -k5 -nr 3.按cpu利用率从大到小排列ps -e -o “%C : %p : %z : %a”|sort -nr 4.打印说cache里的URLgrep -r -a jpg /data/cache/* | strings | grep “http:” | aw

linux利用mail发送邮件设置

linux利用mail发送邮件 第一步检查的mail命令是否安装 第二步如果设置mailx smtp set [email protected] set smtp=smtp.163.com set smtp-auth-user=myname set smtp-auth-password=password (客户端授权密码) set smtp-auth=login 第三步163邮箱开启smtp pop3 注意:一般自己发送给自己.发送给其他账号可能出现问题. 在Linux系统下mail命令的测试