Centos
記錄管理員在生產伺服器上執行的所有命令
管理員通過個人使用者名登錄伺服器,然後執行
sudo -i
成為 root 是公司的政策。執行後sudo -i
,sudo 將創建一個名為 的環境變數SUDO_USER
,其中包含原始使用者的使用者名。有沒有一種方法可以使用類似於以下語法的方式在 syslog中記錄所有命令:
${TIME/DATE STAMP}: [${REAL_USER}|${SUDO_USER}]: ${CMD}
一個範例條目是:
Sat Jan 19 22:28:46 CST 2013: [root|ksoviero]: yum install random-pkg
顯然它不必完全是上面的語法,它只需要包含最少的真實使用者(例如 root)、sudo 使用者(例如 ksoviero)和執行的完整命令(例如 yum安裝隨機-pkg)。
我已經嘗試過了
snoopy
,但它沒有包含SUDO_USER
變數。
更新:評論和後續問題中又出現了 2 件事:
- 使用
auditd
這種方式會顯著增加您的日誌量,尤其是當系統通過命令行大量使用時。調整您的日誌保留策略。Auditd
創建它們的主機上的日誌與同一盒子上的其他文件一樣安全。將您的日誌轉發到遠端日誌收集伺服器,如 ELK 或 Graylog,以保持日誌的完整性。另外,除了上面的一點,它允許更積極地刪除舊日誌。正如邁克爾漢普頓所建議的那樣,
auditd
這裡的工作是正確的工具。我在 Ubuntu 12.10 安裝上對此進行了測試,因此您的里程在其他系統上可能會有所不同。
- 安裝
auditd
:
apt-get install auditd
- 將這兩行添加到
/etc/audit/audit.rules
:-a 退出,總是 -F arch=b64 -F euid=0 -S execve -a 退出,總是 -F arch=b32 -F euid=0 -S execve
這些將跟踪由 root (
euid=0
) 執行的所有命令。為什麼有兩條規則?execve
必須以 32 位和 64 位程式碼跟踪系統呼叫。
- 要刪除
auid=4294967295
日誌中的消息,請添加audit=1
到核心的 cmdline(通過編輯/etc/default/grub
)- 放置線
session required pam_loginuid.so
在與 login ( ) 相關的所有 PAM 配置文件中
/etc/pam.d/{login,kdm,sshd}
,但不在與su
or相關的文件中sudo
。這將允許在呼叫or時正確auditd
獲取呼叫使用者的資訊。uid``sudo``su
- 現在重新啟動您的系統。
- 讓我們登錄並執行一些命令:
$ id -u 1000 $ sudo ls / bin boot data dev etc home initrd.img initrd.img.old lib lib32 lib64 lost+found media mnt opt proc root run sbin scratch selinux srv sys tmp usr var vmlinuz vmlinuz.old $須藤蘇- #ls /等 [...]
這將在
/var/log/audit/auditd.log
:---- time->Mon Feb 4 09:57:06 2013 type=PATH msg=audit(1359968226.239:576): item=1 name=(null) inode=668682 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 type=PATH msg=audit(1359968226.239:576): item=0 name="/bin/ls" inode=2117 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 type=CWD msg=audit(1359968226.239:576): cwd="/home/user" type=EXECVE msg=audit(1359968226.239:576): argc=2 a0="ls" a1="/" type=SYSCALL msg=audit(1359968226.239:576): arch=c000003e syscall=59 success=yes exit=0 a0=10cfc48 a1=10d07c8 a2=10d5750 a3=7fff2eb2d1f0 items=2 ppid=26569 pid=26570 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key=(null) ---- time->Mon Feb 4 09:57:06 2013 type=PATH msg=audit(1359968226.231:575): item=1 name=(null) inode=668682 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 type=PATH msg=audit(1359968226.231:575): item=0 name="/usr/bin/sudo" inode=530900 dev=08:01 mode=0104755 ouid=0 ogid=0 rdev=00:00 type=CWD msg=audit(1359968226.231:575): cwd="/home/user" type=BPRM_FCAPS msg=audit(1359968226.231:575): fver=0 fp=0000000000000000 fi=0000000000000000 fe=0 old_pp=0000000000000000 old_pi=0000000000000000 old_pe=0000000000000000 new_pp=ffffffffffffffff new_pi=0000000000000000 new_pe=ffffffffffffffff type=EXECVE msg=audit(1359968226.231:575): argc=3 a0="sudo" a1="ls" a2="/" type=SYSCALL msg=audit(1359968226.231:575): arch=c000003e syscall=59 success=yes exit=0 a0=7fff327ecab0 a1=7fd330e1b958 a2=17cc8d0 a3=7fff327ec670 items=2 ppid=3933 pid=26569 auid=1000 uid=1000 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=1 comm="sudo" exe="/usr/bin/sudo" key=(null) ---- time->Mon Feb 4 09:57:09 2013 type=PATH msg=audit(1359968229.523:578): item=1 name=(null) inode=668682 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 type=PATH msg=audit(1359968229.523:578): item=0 name="/bin/su" inode=44 dev=08:01 mode=0104755 ouid=0 ogid=0 rdev=00:00 type=CWD msg=audit(1359968229.523:578): cwd="/home/user" type=EXECVE msg=audit(1359968229.523:578): argc=2 a0="su" a1="-" type=SYSCALL msg=audit(1359968229.523:578): arch=c000003e syscall=59 success=yes exit=0 a0=1ceec48 a1=1cef7c8 a2=1cf4750 a3=7fff083bd920 items=2 ppid=26611 pid=26612 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="su" exe="/bin/su" key=(null) ---- time->Mon Feb 4 09:57:09 2013 type=PATH msg=audit(1359968229.519:577): item=1 name=(null) inode=668682 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 type=PATH msg=audit(1359968229.519:577): item=0 name="/usr/bin/sudo" inode=530900 dev=08:01 mode=0104755 ouid=0 ogid=0 rdev=00:00 type=CWD msg=audit(1359968229.519:577): cwd="/home/user" type=BPRM_FCAPS msg=audit(1359968229.519:577): fver=0 fp=0000000000000000 fi=0000000000000000 fe=0 old_pp=0000000000000000 old_pi=0000000000000000 old_pe=0000000000000000 new_pp=ffffffffffffffff new_pi=0000000000000000 new_pe=ffffffffffffffff type=EXECVE msg=audit(1359968229.519:577): argc=3 a0="sudo" a1="su" a2="-" type=SYSCALL msg=audit(1359968229.519:577): arch=c000003e syscall=59 success=yes exit=0 a0=7fff327ecab0 a1=7fd330e1b958 a2=17cc8d0 a3=7fff327ec670 items=2 ppid=3933 pid=26611 auid=1000 uid=1000 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=1 comm="sudo" exe="/usr/bin/sudo" key=(null) ---- time->Mon Feb 4 09:57:09 2013 type=PATH msg=audit(1359968229.543:585): item=1 name=(null) inode=668682 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 type=PATH msg=audit(1359968229.543:585): item=0 name="/bin/bash" inode=6941 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 type=CWD msg=audit(1359968229.543:585): cwd="/root" type=EXECVE msg=audit(1359968229.543:585): argc=1 a0="-su" type=SYSCALL msg=audit(1359968229.543:585): arch=c000003e syscall=59 success=yes exit=0 a0=13695a0 a1=7fffce08a3e0 a2=135a030 a3=7fffce08c200 items=2 ppid=26612 pid=26622 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="bash" exe="/bin/bash" key=(null) ---- time->Mon Feb 4 09:57:11 2013 type=PATH msg=audit(1359968231.663:594): item=1 name=(null) inode=668682 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 type=PATH msg=audit(1359968231.663:594): item=0 name="/bin/ls" inode=2117 dev=08:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 type=CWD msg=audit(1359968231.663:594): cwd="/root" type=EXECVE msg=audit(1359968231.663:594): argc=3 a0="ls" a1="--color=auto" a2="/etc" type=SYSCALL msg=audit(1359968231.663:594): arch=c000003e syscall=59 success=yes exit=0 a0=7fff8c709950 a1=7f91a12149d8 a2=1194c50 a3=7fff8c709510 items=2 ppid=26622 pid=26661 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key=(null)
該
auid
列包含呼叫使用者的uid
,它允許您過濾此使用者執行的命令ausearch -ua 1000
這甚至會列出使用者以 root 身份執行的命令。
資料來源: