Công cụ
đượ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). Công cụ bao gồm các tính năng cơ bản sau:
-
Yêu cầu sudo permission cài đặt
-
Chỉ 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ộ CentOS 6,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 bình thường)
Thao tác
cấu hình log vô cùng đơn giả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
Quá trình cấu
hình log nó sẽ thực hiện các việc sau:
Ø Check
sudo user quá trình này sẽ được bỏ qua nếu đang ở quyền root or sudo
if [[
"$EUID" -ne 0 ]]; then
echo "Please run as root or sudo"
exit 1;
fi
Ø Check OS
quá trình này sẽ kiểm tra phiên bản hệ thống đang dùng là gì
echo "Check Your
OS"
if cat /etc/*release |
grep CentOS > /dev/null 2>&1; then
OS="CentOS"
if [ $(rpm --eval '%{centos_ver}') == '6' ]
;then
OS_VER="CentOS6"
elif [ $(rpm --eval '%{centos_ver}') == '7'
] ;then
OS_VER="CentOS7"
elif [ $(rpm --eval '%{centos_ver}') == '8'
] ;then
OS_VER="CentOS8"
fi
elif cat /etc/*release
| grep ^NAME | grep Ubuntu > /dev/null 2>&1; then
OS="Ubuntu"
if [ $(lsb_release -c | grep Codename | awk
'{print $2}') == 'trusty' ] ;then
OS_VER="Ubuntu14"
elif [ $(lsb_release -c | grep Codename |
awk '{print $2}') == 'xenial' ] ;then
OS_VER="Ubuntu16"
elif [ $(lsb_release -c | grep Codename |
awk '{print $2}') == 'bionic' ] ;then
OS_VER="Ubuntu18"
fi
else
echo "Script doesn't support or verify
this OS type/version"
exit 1;
fi
Ø Kiểm tra
và cài đặt 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
cấu hình cmdlog và exit nếu cmdlog đã cấu hình trước đó
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
Ø Bổ sung cấu hình
để đẩy cmdlog cho user đang thao tác (thường là root), ở đây nó sẽ cấp quyền
600 cho /var/log/cmdlog.log và sẽ chạy file bashrc ở HOME nếu ở HOME không chạy
được nó sẽ truy cập tới đường dẫn: https://raw.githubusercontent.com/nhanhoadocs/ghichep-cmdlog/master/config/ để chạy
file bashrc trên đó
echo "Config
cmdlog for current user"
touch
/var/log/cmdlog.log
chmod 600
/var/log/cmdlog.log
if [[ -d
"$HOME" ]] && [[ -f "$HOME/.bashrc" ]]; then
echo "# Command log" >>
~/.bashrc
echo
"export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug
\"[\$(echo \$SSH_CLIENT | cut -d\" \" -f1)] # \$(history 1 | sed
\"s/^[ ]*[0-9]\+[ ]*//\" )\"'" >> ~/.bashrc
echo 'export HISTTIMEFORMAT="%d/%m/%y
%T "' >> ~/.bashrc
source ~/.bashrc
elif [[ -d
"$HOME" ]] && [[ ! -f "$HOME/.bashrc" ]]; then
curl -o ~/.bashrc
https://raw.githubusercontent.com/nhanhoadocs/ghichep-cmdlog/master/config/"$OS".bashrc
> /dev/null 2>&1
else
echo "Please check config \$HOME for
this account"
fi
Sau khi setup xong 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