首页 > 系统相关 >自定义Linux操作日志配置

自定义Linux操作日志配置

时间:2024-07-26 14:55:41浏览次数:19  
标签:自定义 etc user Linux var acct 日志 security history

方案一:使用acct工具记录

步骤 1    通过设置日志文件可以对每个用户的每一条命令进行纪录,这一功能默认是不开放的,为了打开它,我们要确认已经安装了acct工具:

# Debian、Ubuntu、SUSE下叫acct

apt-get install acct
zypper install acct

# CentOS、RHEL、Fedora上叫psacct

yum -y install psacct

步骤 2    需要执行accton命令打开或关闭进程记帐,如:

#/usr/lib/acct/accton  /var/adm/pact
或
#systemctl start acct  或
#systemctl start psacct

步骤 3    acct服务开机自启动:

#chkconfig acct on
或
#systemctl enable acct  或
#systemctl enable psacct

步骤 4    执行读取命令

#lastcomm  [user name]

方案二:通过PROMPT_COMMAND环境变量设置(推荐)

1、配置PROMPT_COMMAND到/etc/profile

export PROMPT_COMMAND='user=$(whoami);user_id=$(id -ur $user);login=$(who -m | awk "{print $ 2\" \"$ NF}");msg=$(history 1 | { read x y; echo "$y"; });result_str="return code=[$?]";logger -t "[${SHELL}]" "[${msg}]" "${result_str}" "by [${user}(uid=$user_id)] from [$login]"' 
readonly PROMPT_COMMAND

2、source /etc/profile令其生效

(上述会有一个问题,空行回车会一直记录最后一次执行的命令到日志中)

方案三:创建/etc/profile.d/zzz-history.sh 并将以下内容拷贝进去,然后重新登录系统或source /etc/profile.d/zzz-history.sh 

 vi /etc/profile.d/zzz-history.sh 

function OpLog_history{
    typeset result=$?
    typeset result_str=""
    if [ ${result} -eq 0 ];then
        result_str="return code=[0], execute success"
    else
        result_str="return code=[${result}], execute failed"
    fi
    history -a
    typeset user=$(whoami)
    typeset user_id=$(id -ur $user)
    typeset login=$(who -m | awk '{print $2" "$NF}')
    typeset msg=$(history 1 | { read x y; echo "$y"; })
    typeset num=$(history 1 | { read x y; echo "$x"; })
    if [ "${num}" != "${LastComandNum_for_history}" ] && [ "${LastComandNum_for_history}" != "" -o "${num}" == "1" ];then
        logger -t "[${SHELL}]" "[${msg}]" "${result_str}" "by [${user}(uid=$user_id)] from [$login]"
    fi
    LastComandNum_for_history=${num}
}
function OpLog_variable_readonly{
    typeset var="$1"
    typeset val="$2"
    typeset ret=$(readonly -p | grep -w "${var}" | awk -F "${var}=" '{print $NF}')
    if [ "${ret}" = "\"${val}\"" ]
    then
        return
    else
        export "${var}"="${val}"
        readonly "${var}"
    fi
}

export HISTCONTROL=''
#OpLog_variable_readonly HISTTIMEFORMAT ""
OpLog_variable_readonly PROMPT_COMMAND OpLog_history

扩展信息-EulerOS上的实现

华为EulerOS上就是通过方案三进行实现的,该系统上安装了一个叫security-tool的RPM包。

  • 在bash环境下主要是通过/etc/profile.d/zzz_euleros_history.sh进行的设置
  • 在csh/tcsh环境下通过/etc/profile.d/zzz_euleros_history.csh 进行设置

/etc/csh.precmd
/etc/euleros_security
/etc/euleros_security/security
/etc/euleros_security/security.conf
/etc/euleros_security/usr-security.conf
/etc/pam.d/password-auth-crond
/etc/pam.d/password-auth-local
/etc/pam.d/su-local
/etc/pam.d/system-auth-local
/etc/profile.d/zzz_euleros_history.csh
/etc/profile.d/zzz_euleros_history.sh
/usr/lib/systemd/system/euleros-security.service
/usr/sbin/security-tool.sh

扩展信息-关于acct记账工具包

# Debian、Ubuntu、SUSE下叫acct
apt-get install acct
zypper install acct

# CentOS、RHEL、Fedora上叫psacct
yum -y install psacct

描述:psacct package包含几个用于监控进程活动的实用程序,包括ac, lastcomm, accton和sa。ac命令显示用户登录时间的统计信息。lastcomm命令用来显示以前执行过的命令的信息。accton命令打开或关闭进程记帐。sa命令用来汇总以前执行过的命令的信息。

#讲真,记录的并不详细

ac   #显示登录账号的简要信息
accton    #打开或关闭进程记录功能
last      #显示曾经登录过的用户
lastcomm  #显示已执行过的命令
sa        #进程用户记录信息的摘要
dump-utmp   #输出utmp文件内容
dump-acct   #输出acct或pacct文件内容

扩展信息-关于 logger命令

logger -t 
 -t, --tag <tag>          向每一行添加指定标记
 -p, --priority priority_level
        指定输入消息的优先级,优先级可以是数字或者指定为 "facility.level" 的格式。比如:"-p local3.info " local3 这个设备的消息级别为info。默认级别是 "user.notice"

logger输出日志发送给哪个文件是通过/etc/rsyslog.conf中*.开头的行决定的,默认情况下是任何日志日志发送给/var/log/messages里,也可以指定发送给其他文件里。

表面上,上述说法并无问题,其实质是有-p 参数决定的,默认输出级别为"user.notice",由于rsyslog.conf中默认并没有配置此级别的日志输出,故,只能输出到*.开头的日志文件中;假如在rsyslog.conf做如下配置:
# operation log
user.notice                                             /var/log/operation.log
& stop
……
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

则logger的输出只会记录到 /var/log/operation.log。

标签:自定义,etc,user,Linux,var,acct,日志,security,history
From: https://blog.csdn.net/avatar_2009/article/details/140708390

相关文章

  • 用Python解析邮件日志
    我的任务有点困难。我有一个邮件日志,如:Oct315:30:18mail1postfix/lmtp[5369]:DB10242054:to=<XXXXX>,orig_to=<XXXXXX>,relay=ip[ip]:port,delay=1.4,delays=0.04/0/0.01/1.4,dsn=2.0.0,status=sent(2502.0.0fromMTA(smtp:[iP]:port):2502.0.0Ok:queueda......
  • forms.ModelMultipleChoiceField 与 widget=FilteredSelectMultiple 不适用于自定义新
    我试图在自定义的新管理表单页面上显示forms.ModelMultipleChoiceField但它似乎没有像在已经制作的Django页面上显示的方式显示,例如模型产品Django管理页面。我的forms.ModelMultipleChoiceField看起来像这样:显示我的forms.ModelMultipleChoiceField是什么样子......
  • Linux 查找命令
    目录1.查看二进制文件which 2.查看指定文件find​2.1文件名查找2.2文件大小查找前面学习过的Linux命令,其实质是一个个的二进制可执行程序,与Windows系统中的.exe文件是一个意思。1.查看二进制文件which 语法: which 命令可以查看使用的一系列命......
  • ElasticSearch第1讲(4万字详解 Linux下安装、原生调用、API调用超全总结、Painless、IK
    ElasticSearch官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html非官方中文文档:https://learnku.com/docs/elasticsearch73/7.3极简概括:基于ApacheLucene构建开源的分布式搜索引擎。解决问题:MySQLlike中文全文搜索不走索引......
  • 如何在 Folium colorbar 中自定义标题文本?我想增加颜色图标题文本的字体大小
    我正在尝试在Folium中使用颜色条作为输出变量圆形图colormap=cm.LinearColormap(colors=['green','red'],index=[min(df['output']),max(df['output'])],vmin=min(df['output']),vmax=max(df['output']),caption='out......
  • Linux-管理文件间的链接
    目录什么是链接?链接有哪些类型?硬链接如何理解硬链接?如何创建硬链接?硬链接的局限性符号链接(软连接)如何理解符号链接?符号链接相比硬链接的优势如何创建符号链接?什么是链接?链接:指向同一文件的多个文件名。这些文件名称为链接。链接有哪些类型?你可以创建两种类型......
  • 日志备份管理
    日志备份管理作为历史数据的最终保存地,备份系统自身的可用性及数据存储策略显得格外重要。如果实现本地数据双备份和重要数据跨机房复制后,那么在任何情况下均能保留一份可用副本。关键要素备份策略过期时间离线归档恢复验证数据分类生产环境中备份数据可以归类为日志文......
  • 在Linux环境配置多版本jdk,这里以8和17为例
    步骤1:下载Java17JDK访问Oracle官网下载Java17JDK:打开浏览器,访问OracleJDK17下载页面。登录并接受许可协议:如果你是Oracle用户,登录你的账户。如果不是,你可能需要创建一个账户或接受Oracle的许可协议才能下载。选择Java17下载:在下载页面上,选择适合你的......
  • Linux下使用NFS实现多设备文件同步
    使用NFS实现不同设备上的文件同步,以下使用三台虚拟机简述实现流程。虚拟机目录及规划如下:主机用途系统版本192.168.186.130nfs_serverdebian12192.168.186.131nfs_clientdebian12192.168.186.132nfs_clientdebian12NFS-Server在192.168.186.130上安......
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版实现Word多文件合并
    国产linux系统(银河麒麟,统信uos)使用PageOffice国产版在线打开pdf文件PageOffice国产版:支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)芯片架构。本示例关键代码的编写位置Vue+Springboot注意本文中展示的代码均为关键代码,复......