[Tools] Log all Command of User in Linux

30/12/2020

Một trong những bài toán kiểm soát truy cập phổ biến đối với Linux Administrator đó là quản lý việc các User trên hệ thống đã thao tác những gì khi người dùng SSH vào. Lưu lại toàn bộ log thao tác của người dùng khi SSH vào hệ thống.

1. Phân tích cơ bản

  • Yêu cầu cơ bản log lại toàn bộ thao tác của người dùng khi SSH
  • Tools hỗ trợ chạy trên nhiều OS, chỉ một dòng lệnh hạn chế việc Admin phải cấu hình quá nhiều
  • Khi tạo mới user thì tự động cấu hình luôn phần xử lý đẩy log
  • Security file log

2. Tools cài đặt

Tools được cấu hình dựa trên tính năng của Rsyslog có sẵn trong các OS của linux (CentOS và Ubuntu). Hiện tại mình đã thực hiện xong việc viết tools xử lý các vấn đề trên bao gồm các tính năng cơ bản sau

  • Yêu cầu sudo permission cài đặt
  • Chỉ một thực hiện 1 câu lệnh duy nhất là cấu hình xong
  • Cài đặt được trên toàn bộ CentOS6,7,8, Ubuntu 14,16,18
  • Mỗi khi tạo mới user thì tự động cấu hình logging cmd của user đó lại
  • File log được phân quyền chỉ có mỗi superuser mới có thể xem được
  • Gom các lệnh giống nhau liên tục thành 1 hàng (CentOS8 chưa xử lý được tính năng này, các OS còn lại OK)

Thao tác cấu hình log vô cùng đơn giản bạn chỉ cần SSH vào server với superuser (root hoặc user có quyền sudo) thực thi câu lệnh sau (khuyến cáo dùng root)

curl -Lso- https://raw.githubusercontent.com/nhanhoadocs/ghichep-cmdlog/master/cmdlog.sh | bash

Sau khi setup xong bạn cần LOGOUT và LOGIN lại phiên SSH. Tiến hành kiểm tra cmdlog tại đường dẫn /var/log/cmdlog.log

Vậy là chúng ta đã hoàn thành cấu hình xong phần cmdlog. Bạn có thể thử tạo mới user và theo dõi xem khi user đó SSH vào thao tác thì log được lưu vào file /var/log/cmdlog.log như thế nào nhé <3.

Đầy đủ sourcecode của tools trên nằm tại đường dẫn GitHub của Sandclock tại https://github.com/nhanhoadocs/ghichep-cmdlog/

3. Chi tiết các bước xử lý tools

Chỗ này các bạn có thể đọc tham khảo để biết mình đã xử lý như thế nào.

Đầu tiên là phần kiểm tra sudo user, kiểm tra OS. Vì ý định của mình là detect OS và tự động cài đặt theo từng OS khác nhau.

# Check sudo user  if [[ "$EUID" -ne 0 ]]; then      echo "Please run as root or sudo"     exit 1; fi  # Check OS echo "Check Your OS" if cat /etc/*release | grep CentOS > /dev/null 2>&1; then #.... elif cat /etc/*release | grep ^NAME | grep Ubuntu > /dev/null 2>&1; then # .... fi 

Kiểm tra và cài đặt rsyslog

# Check install rsyslog echo "Check Rsyslog installed" if [[ $OS == "CentOS" ]]; then      if ! rpm -qa | grep rsyslog > /dev/null 2>&1; then         yum install -y install rsyslog      fi  elif [[ $OS == "Ubuntu" ]]; then      if ! dpkg --get-selections | grep rsyslog > /dev/null 2>&1; then         apt-get -y install rsyslog      fi  fi

Kiểm tra và exit nếu cmdlog đã cấu hình trước đó

# Check config cmdlog echo "Check old cmdlog config" if [[ -f "/var/log/cmdlog.log" ]]; then      echo "Server have been config CMD log before, Please check your config"     exit 1; fi 

Tiếp đến bổ sung cấu hình để đẩy cmdlog cho user đang thao tác (thường là root)

# Config for current user  echo "Config cmdlog for current user" touch /var/log/cmdlog.log chmod 600 /var/log/cmdlog.log  if [[ -d "$HOME" ]] && [[ -f "$HOME/.bashrc" ]]; then  # ... fi 

Tiếp đến tự làm khó bản thân với việc xử lý sao cho tạo mới user tự động nhận phần cấu hình cmdlog

# Config for user add  echo "Config auto cmdlog for new useradd" if [[ $OS == "CentOS" ]]; then  # ... elif [[ $OS == "Ubuntu" ]]; then  # ... fi 

Ở phần này mình xử lý phần chỉnh sửa lại cấu hình của /etc/default/useradd và bổ sung, cấu hình các file .bash* trong /etc/skel để mỗi khi create user mới sẽ tự động có file .bashrc đã được config cmdlog

Tiếp đến cấu hình cho rsyslog để xử lý phần lưu file ra log. Ở đây để rút ngắn xử lý cho script mình đã tách các file cấu hình của từng OS khác nhau và thực hiện thao tác cập nhật file config tương ứng.

# Config rsyslog  echo "Config rsyslog" mv /etc/rsyslog.{conf,conf.bk} curl -o /etc/rsyslog.conf https://raw.githubusercontent.com/nhanhoadocs/ghichep-cmdlog/master/config/"$OS_VER"_rsyslog.cnf > /dev/null 2>&1 systemctl restart rsyslog.service > /dev/null 2>&1 || service rsyslog restart > /dev/null 2>&1 source ~/.bashrc

Ok việc cuối cùng cần làm của bạn là LOGOUT và LOGIN lại phiên SSH và tận hưởng thành quả

4. Hướng áp dụng và phát triển

File log này có thể đẩy về log center để tiện monitor theo dõi các thao tác của user trên hệ thống.

  • Tools tạm thời chỉ hỗ trợ Ubuntu14,16,18 và CentOS6,7,8 chưa thử nghiệm và phát triển trên các OS khác.
  • Toosl chưa có action với các user đã tồn tại, không có $HOME folder
  • Tools tạm thời phù hợp với các máy mới cài đặt

Mong nhận được sự đóng góp bổ sung từ các SystemAdmin đồng nghiệp để tools được hoàn thiện hơn.

Các bạn có thể truy cập repo chính của tools này https://github.com/nhanhoadocs/ghichep-cmdlog/ –> Fork repo về github cá nhân bạn –> Bổ sung thêm cấu hình cho các OS khác (Debian, SUSE, …) –> Contribute ngược lại cho cộng đồng (WHY NOT?)

Sandclock IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, Sandclock IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

Thiết lập cơ bản cho CentOS7

Sau khi cài đặt xong hệ điều hành nói chung và CentOS7 nói riêng, chúng ta cần phải thực hiện...
30/12/2020

Hướng dẫn cài đặt PHP 7.x trên CentOS7

Vì phiên bản PHP5.x đã sắp đến thời gian ngừng hỗ trợ, do vậy một số ứng cần yêu cầu PHP...
28/12/2020

Hướng dẫn cảnh báo qua mail khi sử dụng nagios

Chúng ta không phải lúc nào cũng có thể ngồi nhìn xem khi nào có host hay service nào đó có đang hoạt...
30/12/2020
Bài Viết

Bài Viết Mới Cập Nhật

Hướng dẫn chuyển đổi windows server windows evaluation to standard và active windows server 2008 + 2012 + 2016 + 2019
26/10/2021

How to Update Ubuntu Linux
24/10/2021

Squid Proxy Manager cài đặt và quản lý Proxy Squid tự động trên ubuntu
20/10/2021

Hướng dẫn cài đặt Apache CloudStack 4.15.2.0
19/10/2021

Hướng dẫn ký file PDF bằng chữ ký số (chữ ký điện tử) và sửa lỗi mới nhất 2021 foxit reader
19/10/2021