1. 程式人生 > >配置ssh登陸賬號及其操作命令的日誌記錄

配置ssh登陸賬號及其操作命令的日誌記錄

一.問題描述

某些開發機,給多個人使用,經常出現誤操作,問是哪個人乾的,沒人承認。出現這種情況,除了要規範、引導、加強大家的日常安全操作意識及流程來避免誤操作發生,還要記錄對應日誌做審計。如果公司規模大,業務需要,比如上市公司404審計等,那麼需要用rsa+token+跳板機建立一套完整的登入訪問伺服器方案。本文的方案只會記錄client ip+時間+操作命令。

二.問題解決

通過/etc/profile,再利用 變數 PROMPT_COMMAND。來記錄操作日誌。直接在/etc/profile追加以下內容。

hostip=`ifconfig  | grep 'inet addr' | grep -v '127.0.0.1' | awk '{print $2;}' | awk -F ':'  '{print $2}'`

#PS1="`whoami`@`hostname`#"
history
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
PS1="`whoami`@$hostip#"
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /tmp/.history ]
then
mkdir /tmp/.history
chmod 777 /tmp/.history
fi
if [ ! -d /tmp/.history/${LOGNAME} ]
then
mkdir /tmp/.history/${LOGNAME}
chmod 300 /tmp/.history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H%M%S"`
export HISTFILE="/tmp/.history/${LOGNAME}/${USER_IP}history.$DT"
chmod 600 /tmp/.history/${LOGNAME}/*history* 2>/dev/null
readonly PROMPT_COMMAND='{ date "+%y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(pwd) #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >> $HISTFILE' 2>/dev/null