Thursday, November 21, 2024

Lưu lịch sử gõ command Linux vào Syslog

-

Tổng quan.

Bài này mình sẽ chia sẻ đoạn shell, nó sẽ giúp bạn kiểm tra và thêm chức năng ghi lại các lệnh đã thực thi vào file log hệ thống (syslog) Đoạn script này thường được dùng trong các hệ thống yêu cầu giám sát và audit (kiểm tra) lệnh để đảm bảo an ninh, theo dõi các thao tác của người dùng, đặc biệt là khi làm việc qua SSH hoặc sử dụng quyền sudo.

Hãy chạy đoạn shell dưới trực tiếp trên terminal của bạ, nếu nó chưa được thêm vào file /etc/bash.bashrh đoạn shell sẽ tự động thêm nó vào.

# Add audit command to bash.bashrc
if ! grep -q "BEGIN - AUDIT COMMAND" /etc/bash.bashrc; then
  cat <<EOF >> /etc/bash.bashrc
# BEGIN - AUDIT COMMAND
function log2syslog {
  declare COMMAND
  COMMAND=\$(fc -ln -0)
  logger -p local1.notice -t bash -i -- "\${USER}:\${SSH_CONNECTION}:\${SUDO_USER}:\${COMMAND}"
}
trap log2syslog DEBUG
# END - AUDIT COMMAND
EOF
fi

Nó thực hiện các bước sau:

  • Kiểm tra sự tồn tại:
    • Sử dụng lệnh grep để kiểm tra xem file /etc/bash.bashrc có chứa dòng BEGIN - AUDIT COMMAND hay không.
    • Nếu không tìm thấy (điều kiện !), thì đoạn shell tiếp theo sẽ được thực thi.
  • Thêm chức năng ghi log lệnh:
    • Nếu không tìm thấy BEGIN - AUDIT COMMAND, đoạn shell này sẽ thêm một đoạn script ngắn vào cuối file /etc/bash.bashrc.
    • Nội dung được thêm vào có chức năng ghi lại mọi lệnh mà người dùng thực hiện trong terminal (bash shell) vào hệ thống log (syslog), sử dụng hàm log2syslog.
    Cụ thể:
    • Hàm log2syslog: Lấy lệnh cuối cùng mà người dùng đã thực hiện (fc -ln -0) và ghi lại lệnh này kèm theo thông tin người dùng (USER), thông tin kết nối SSH (SSH_CONNECTION), thông tin của người dùng đã sử dụng sudo (SUDO_USER).
    • trap log2syslog DEBUG: Đặt bẫy (trap) trên sự kiện DEBUG, có nghĩa là sau mỗi lệnh mà người dùng thực thi, hàm log2syslog sẽ tự động được gọi để ghi lại lệnh đó vào log.

Khởi động lại shell hoặc đăng nhập lại.

Để kích hoạt đoạn shell trong /etc/bash.bashrc, bạn cần nạp lại file file này bằng lệnh dưới.

source /etc/bash.bashrc

Thực hiện một số lệnh để kiểm tra.

Sau khi nạp lại cấu hình, bạn có thể thử thực hiện một vài lệnh trong terminal, ví dụ:

whoami
touch /home/hoanghd/hoanghd.txt
tail -f /var/log/syslog

Kiểm tra file log (syslog).

Sau khi cấu hình này được thêm vào, mọi lệnh mà người dùng thực thi sẽ được ghi vào hệ thống log thông qua syslog, giúp theo dõi và kiểm tra hoạt động của người dùng trong hệ thống một cách chi tiết.

Mở file log hệ thống để xem liệu các lệnh bạn vừa thực hiện có được ghi lại không. Thông thường, log sẽ nằm trong file /var/log/syslog, bạn có thể kiểm tra bằng cách đọc file /var/log/syslog.

Trong file log, bạn sẽ thấy các dòng tương tự như sau mỗi khi một lệnh được thực thi:

shell> tail -f /var/log/syslog
Oct  3 09:50:37 node71 bash[9983]: root:10.237.7.250 32794 10.237.7.71 22::#011 whoami
Oct  3 09:50:43 node71 bash[9987]: root:10.237.7.250 32794 10.237.7.71 22::#011 tail -f /var/log/syslog
Oct  3 09:50:59 node71 bash[9996]: root:10.237.7.250 32794 10.237.7.71 22::#011 touch /home/hoanghd/hoanghd.txt
Oct  3 09:51:00 node71 bash[9999]: root:10.237.7.250 32794 10.237.7.71 22::#011 tail -f /var/log/syslog
  • user_name: Tên người dùng thực thi lệnh.
  • ssh_connection: Thông tin kết nối SSH (nếu qua SSH).
  • sudo_user: Tên người dùng đã dùng sudo (nếu có).
  • Lệnh: Chính là lệnh bạn vừa thực thi (như ls, whoami, …).

Hãy kiểm tra kỹ từng dòng log xem có đúng là các lệnh của bạn được ghi lại với thông tin về người dùng, kết nối SSH, và lệnh được thực hiện.

Nếu bạn thấy log hiển thị các lệnh đã chạy đúng cách, thì đoạn mã hoạt động bình thường.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories