找回密码
 注册
查看: 42|回复: 2

liux登录日志 环境配置,实现监控所有登录用户的操作历史

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2024-10-23 15:56:05 | 显示全部楼层 |阅读模式
liux登录日志 环境配置,实现监控所有登录用户的操作历史* ~5 X7 f" K2 l+ j
( b$ S( V: A% e/ o2 H; {
8 b, I% f' ?- C4 T
作为系统管理员,不可能实时去盯着谁登陆了系统,做了一些什么操作,下面主要通过一个脚本来生成所有登录用户的操作历史,从而更好的管理linux系统,看是不是有一些违规操作。/ x. O; c. n2 X

" `+ `# V8 \5 V7 \: C, c2 C6 u* N一、查看日志文件
( L/ {) L# o% F7 }" [   1、查看/var/log/wtmp文件看是否有可以IP地址登录
; p# ^1 j+ t# B& j& u' J  C; X; F; ~0 j
[root@it-elassearch tmp]# last -f /var/log/wtmp
/ |  T8 f" C) x& r, A8 \devops   pts/0        172.24.21.7      Wed Oct 23 15:06   still logged in   
9 e. U, Q5 f+ O: [# Y6 Sdevops   pts/0        172.24.21.7      Wed Oct  9 13:59 - 16:33  (02:33)   
" H' i& m: r- j0 ~: O2 P5 Y1 idevops   pts/0        172.24.21.7      Wed Oct  9 10:15 - 11:40  (01:24)   
' s" S/ D" }9 a% P7 \devops   pts/0        172.24.21.7      Tue Sep 17 10:09 - 10:44  (00:34)    - ?' ?% h/ e/ T& H
devops   pts/0        172.24.21.7      Tue Sep  3 11:00 - 11:01  (00:00)   
/ T; ?, g7 a( h& v" T( E( `reboot   system boot  3.10.0-1160.24.1 Mon Jul  8 18:54 - 15:42 (106+20:48)
/ p2 Q0 c# R7 P5 O- |4 h* T1 edevops   pts/0        172.24.21.6      Mon Jul  8 18:53 - 18:53  (00:00)   
' A5 u& a' W3 U4 B2 x& \$ K$ V0 p8 @devops   pts/1        172.24.21.6      Mon Jul  8 17:05 - 17:10  (00:04)   
7 B1 v7 p4 b! }. u8 {devops   pts/0        172.24.21.6      Mon Jul  8 16:24 - 18:14  (01:50)   
1 ^0 v5 _' w& }  C2 }root     tty1                          Mon Jun 11 18:31 - 10:17  (15:45)    ! E: u4 p$ r- v# Y% x6 i
reboot   system boot  3.10.0-693.el7.x Mon Jun 11 18:31 - 10:44  (16:13)   
* Z+ N( v7 i) h5 A2 w! i0 S1 l' Yreboot   system boot  3.10.0-693.el7.x Mon Jun 11 18:30 - 10:44  (16:14)    ) z$ Z2 H) S, {$ N  T3 \8 ?2 ~- N
reboot   system boot  3.10.0-693.el7.x Mon Jun 11 18:21 - 10:44  (16:23)    1 y2 A8 u) S  _

* t8 ^4 }" D0 c- ^2 P7 cwtmp begins Mon Jun 11 18:21:20 2018
) ?9 F1 c. E" q. m( l  j. ]+ v$ [! G* V6 a& l, B# J
# ~# J0 |' I- a: S' i- d) V! B. k
; a: a- |( C  }( U
( p$ z, W2 c; h
该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行时间的增加,该文件的大小也会越来越大,
0 j$ Z" ]( ?4 R5 q& o! Y1 |( |; K" D
增加的速度取决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,
( K  k; J  \, d, l( f5 M
: H- H+ f) Z3 s8 Ylast命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户、终端tty或时间显示相应的记录。+ m2 |7 I" G/ u, Q

1 [& D( `; ^% M+ a5 w$ Z1 s: p& L# S) `( \  H  y
' Z- M' ]$ Z: t7 @
2、查看/var/log/secure文件寻找可疑IP登陆次数4 H& O0 a8 P- X: ?+ S5 |

% o2 |- J6 |1 C) _/ R: N, ?3 H  o+ i1 ycat /var/log/secure
* {" }% ~' D# d' [4 s) F2 ]% x1 c  s
5 _1 r6 r/ I+ g+ T6 z  f( C# f' b' t, B2 e6 a- @

6 x) E/ L1 }) g: POct 23 15:42:01 it-elassearch crond[19394]: pam_limits(crond:session): unknown limit item 'noproc'
0 O& i5 L* _- h/ ?2 ~Oct 23 15:42:01 it-elassearch crond[19394]: pam_limits(crond:session): unknown limit item 'noproc'
, ]! W( G8 b! _# tOct 23 15:42:01 it-elassearch crond[19394]: pam_limits(crond:session): unknown limit item 'noproc'
3 J: f7 G, m: O6 C) p( o5 \Oct 23 15:42:01 it-elassearch crond[19394]: pam_limits(crond:session): unknown limit item 'noproc'' i1 T) U% ?# ?/ q4 Q9 x, {" x9 F
Oct 23 15:43:01 it-elassearch crond[19404]: pam_limits(crond:session): unknown limit item 'noproc'. n: M+ `; p" O3 k3 }
Oct 23 15:43:01 it-elassearch crond[19404]: pam_limits(crond:session): unknown limit item 'noproc'& m7 g4 V& |2 z3 z
Oct 23 15:43:01 it-elassearch crond[19404]: pam_limits(crond:session): unknown limit item 'noproc'2 H( ?6 O6 B* U% |
Oct 23 15:43:01 it-elassearch crond[19404]: pam_limits(crond:session): unknown limit item 'noproc'
2 s& ~" q- f& u: `- {: z* MOct 23 15:44:01 it-elassearch crond[19412]: pam_limits(crond:session): unknown limit item 'noproc'
0 G/ m( u  G- ~' [2 Z$ {1 T  ^Oct 23 15:44:01 it-elassearch crond[19412]: pam_limits(crond:session): unknown limit item 'noproc'
' N2 \  c$ H2 v) a  F& C( O( \) Z1 rOct 23 15:44:01 it-elassearch crond[19412]: pam_limits(crond:session): unknown limit item 'noproc'+ O* k+ k* E& p
Oct 23 15:44:01 it-elassearch crond[19412]: pam_limits(crond:session): unknown limit item 'noproc'( x7 T8 o  ^. [/ |- `- Q' n
You have mail in /var/spool/mail/root4 k5 z6 B2 x; h) h
  O4 |/ C3 B7 l2 {
7 }! C$ g5 p9 I/ ?- {, `+ C2 s# Z
二、 脚本生成所有登录用户的操作历史

需求:记录登陆后的IP地址和某用户名所操作的历史记录

实现:

1、配置/etc/profile.d/

vim ahistory.sh

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`

if [ "$USER_IP" = "" ];then

   USER_IP=`hostname -s`

fi

if [ ! -d /tmp/.login ];then

    mkdir /tmp/.login

    chmod -R 777 /tmp/.login

   fi

if [ ! -d /tmp/.login/${LOGNAME} ];then

    mkdir /tmp/.login/${LOGNAME}

     chmod 400 /tmp/.login/${LOGNAME}

   fi

export HISTSIZE=40960

DT=`date "+%Y-%m-%d_%H-%M-%S"`

export HISTFILE="/tmp/.login/${LOGNAME}/${USER_IP}-dbasky.$DT"

chmod 600 /tmp/.login/${LOGNAME}/*dbasky* 2>/dev/null


( Y4 p) I  r8 k1 q

* b( j8 {' @4 z2 r. K( f2 R  o3 x

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`

if [ "$USER_IP" = "" ];then

   USER_IP=`hostname -s`

   fi

if [ ! -d /tmp/.login ];then

    sudo mkdir /tmp/.login 2>/dev/null

    sudo chmod -R 777 /tmp/.login 2>/dev/null

   fi

if [ ! -d /tmp/.login/${LOGNAME} ];then

    sudo  mkdir /tmp/.login/${LOGNAME} 2>/dev/null

    sudo  chmod 300 /tmp/.login/${LOGNAME} 2>/dev/null

   fi

export HISTSIZE=4096

export HISTTIMEFORMAT="%F %T - $(whoami) "

DT=`date "+%Y-%m-%d_%H-%M-%S"`

export HISTFILE="/tmp/.login/${LOGNAME}/${USER_IP}-dbasky.$DT"

chmod 600 /tmp/.login/${LOGNAME}/*dbasky* 2>/dev/null

#clear 20days ago file

CLEAR=`date -d "20 days ago" +%F`

historyDIR=/tmp/.login

#cd $historyDIR

ls $historyDIR | grep $CLEAR |xargs rm -f

#cd ~

保存

2、生效环境变量


( x9 M( _% w& k7 @1 V' ?

4 n% n% a  o/ h6 E: T- R, E* J( z

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-10-23 17:32:01 | 显示全部楼层
二、 脚本生成所有登录用户的操作历史
4 {. r, z& F+ ]
- n1 I& w$ R" @) @% r2 w在linux系统的环境下,不管是root用户还是其它的用户只有登陆系统后用进入操作我们都可以通过命令history来查看历史记录,可是假如一台服务器多人登陆,一天因为某人误操作了删除了重要的数据。这时候通过查看历史记录(命令:history)是没有什么意义了(因为history只针对登录用户下执行有效,即使root用户也无法得到其它用户histotry历史)。那有没有什么办法实现通过记录登陆后的IP地址和某用户名所操作的历史记录呢?答案:有的。% K6 y5 r* _& @% C

5 J. M) N7 E( a, F& S0 K7 _3 `& j通过在/etc/profile里面加入以下代码就可以实现:% e( T/ S) G1 P. Z7 Q9 m& i

" i& J) y6 Y. v5 Y: mPS1="`whoami`@`hostname`:"'[$PWD]'
. C( V0 M/ }! x% E8 B6 x# QUSER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
' D4 _9 E+ @8 x" jif [ "$USER_IP" = "" ]
- }1 k: l3 O" i1 k$ P8 \then
' `7 h6 g) |4 U  Z% mUSER_IP=`hostname`3 ^" u7 U+ _3 N( Q) O: B5 Y) g
fi$ X* N7 h) a* }# f1 [
if [ ! -d /tmp/dbasky ]
. W* m. s; V4 O6 t2 J1 @then
$ h+ |5 I2 d& y- m! [. Xmkdir /tmp/dbasky
/ F7 S6 W% }& ^6 O/ r9 x9 {chmod 777 /tmp/dbasky
7 l" u4 v4 K) ?fi5 {/ i; V/ t- i' C+ u* ?5 Q! ]
if [ ! -d /tmp/dbasky/${LOGNAME} ]
& X2 X9 u3 _4 k4 J6 \' ^  uthen$ n' A. J. V1 [" r" o$ R
mkdir /tmp/dbasky/${LOGNAME}% q( C- x5 Z& Y9 }
chmod 300 /tmp/dbasky/${LOGNAME}
3 v' l# n. K) @4 Hfi# O; z2 @. K" x/ S
export HISTSIZE=4096. v, }" ~7 Q8 m/ W5 E) L8 h
DT=`date "+%Y-%m-%d_%H:%M:%S"`
1 g! O& X* w5 U9 m6 o3 C/ z$ [export HISTFILE="/tmp/dbasky/${LOGNAME}/${USER_IP}-dbasky.$DT"
( I! M& u9 u. U& m! {chmod 600 /tmp/dbasky/${LOGNAME}/*dbasky* 2>/dev/null
& t, |* y6 K' o, l2 Y6 \6 Q* ~( D/ y0 p% y/ W$ W
——————————————————————————————————————————————————————————————————————
; F4 a. C4 p( O% [/ t3 \
" N1 j+ U' y4 k3 o 6 r0 G4 O$ J% J1 B: D" Y  k

4 n8 }5 C) x5 e  h' z* ~& \source /etc/profile 使用脚本生效
- g9 q5 @) }8 R
' c3 Z8 Z) ~3 n/ b* x退出用户,重新登录
$ n. B2 N5 N! f# R+ R
* z3 T, W7 z* g/ ?1 B" r?面脚本在系统的/tmp新建个dbasky目录,记录所有登陆过系统的用户和IP地址(文件名),每当用户登录/退出会创建相应的文件,该文件保存这段用户登录时期内操作历史,可以用这个方法来监测系统的安全性。
* E9 |+ v/ R, |
8 M2 r1 f5 `" o: _( j' f- b    root@zsc6:[/tmp/dbasky/root]ls  Q# P$ ~/ G# T( {
    10.1.80.47 dbasky.2013-10-24_12:53:08- {2 q$ W1 z6 @
    root@zsc6:[/tmp/dbasky/root]cat 10.1.80.47 dbasky.2013-10-24_12:53:08

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-10-24 09:38:02 | 显示全部楼层
使用source /etc/profile 生效。
4 G$ {7 s! \% \8 a: ]# u4 b$ Z2 C9 p' V. R
但有个问题就是每次登录的时候历史命令只有五个了。或者被清空了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 00:32 , Processed in 0.017014 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表