Ssh proxy là gì

Hướng dẫn cấu hình SSH Proxy kiểm soát logsession an toàn và hiệu quả.

Giới thiệu về SSH Proxy

Xin chào tất cả các bạn đã quay trở lại với huongdan.azdigi.com. Mình là Quân đây, ở bài viết ngày hôm nay AZDIGI sẽ giới thiệu đến bạn về SSH Proxy, để bạn có thể xây dựng trên chính máy chủ của bạn cho việc giám sát lịch sử làm việc của nhân viên, log các lệnh đã được thực hiện và kết quả trả về.

Các chức năng SSH Proxy

  • Log được thông tin SSH của nhân viên như thời gian login, user login, IP máy chủ …
  • Log được lệnh khi gõ qua SSH, output của lệnh.
  • Người quản trị có thể kiểm rta log trong trường hợp cần thiết.

Mô hình hoạt động SSH Proxy

Ví dụ đơn vị bạn là một hệ thống lớn, mỗi sáng nhân viên đi làm sẽ sử dụng thiết bị cá nhân với user được cấp sẽ truy cập vào hệ thống để làm việc. Do đó toàn bộ nhân viên phải SSH qua SSH proxy mới vào được vào bên trong và các biện pháp log thông tin trên server SSH proxy cụ thể là:

  • Những server/VPS cần log phải thực hiện giới hạn IP cho phép login, và chỉ được phép login từ IP của SSH Proxy
  • Trên SSH Proxy cấp cho nhân viên user để SSH vào server Proxy trước khi SSH vào server khác
  • Trên Server SSH proxy triển khai các biện pháp log thông tin SSH, lệnh và output…

Ví dụ:

  • Server SSH Proxy có IP là: 123.123.123.1
  • Server cần SSH vào làm việc: 123.123.123.2

Các bước cài đặt server SSH Proxy

Bước 1: Cấu hình SSH chỉ cho phép chứng thực bằng SSH key

Để cấu hình cho phép chứng thực bằng SSH Key và không sử dụng passwd root bạn cần mở file sshd_config và sửa lại như sau.

vi /etc/ssh/sshd_config

Sau khi đã sửa xong bạn khởi động lại dịch vụ sshd bằng lệnh sau

systemctl restart sshd

Bước 2: Cấu hình Firewall

Bạn hãy cài đặt CSF firewall lên server SSH Proxy. Nếu bạn chưa thực hiện cài đặt hãy tham khảo tải liệu sau nhé.

Sau đó bạn mở file /etc/csf/csf.conf và sửa lại như sau.

vi /etc/csf/csf.conf

# Allow incoming TCP ports TCP_IN = "" # Allow outgoing TCP por ts TCP_OUT = "53" # Allow incoming UDP ports UDP_IN = "53" # Allow outgoing UDP ports UDP_OUT = "53"

Tiếp theo bạn hãy cấu hình chỉ cho phép người dùng SSH có IP là IP VPN tại /etc/csf/csf.allow

tcp | in | d=22 | s=123.123.123.123 # VPN IP [Thay IP này bằng IP VPN của bạn]

Lưu ý: Bạn cũng có thể tạo một file file-name.allow sau đó include vào /etc/csf/csf.allow

Để cấu hình để không tracking các IP VPN này tại file /etc/csf/csf.ignore

Lưu ý: Bạn cũng có thể tạo một file file-name.ignore sau đó include vào /etc/csf/csf.ignore

Bước 3: Cài đặt các script để log SSH session.

1. log-session

  • Bạn hãy tạo một file /usr/local/sbin/log-session và dán nội dung như sau vào nhé.

vi /usr/local/sbin/log-session

  • Nội dung file log-session
!/bin/sh # NOW=date +%Y -%m -%d.%H%M%S IP=echo $SSH_CLIENT | sed 's/ .*//' USER=whoami LOGDIR="/log -session" LOGFILE=$LOGDIR/$USER/$USER.log echo ======================================== >> $LOGFILE echo Starting interactive shell session by user $USER - IP: $IP - $NOW >> $LOGFILE echo ======================================== >> $LOGFILE exec script -a -f -q
  • Phân quyền cho file /usr/local/sbin/log-session

chmod 755 /usr/local/sbin/log-session

Script này khi chạy sẽ lấy thông tin về user đang ssh vào qua lệnh whoami và lấy thời điểm ssh bằng lệnh date. Lệnh script sẽ copy một bản SSH terminate vào file log.

Script log-session này được gọi đầu tiên khi người dùng SSH vào thông qua chỉ định command tại file public key [$HOME/.ssh/.authorized_keys]

2. Script adduser

Tạo script vi /root/adduser.sh script này dùng để tạo user cho thành viên kỹ thuật, nội dung như sau.

vi /root/adduser.sh

/bin/bash Script add user to log ssh session LOG_DIR="/log-session" PASSWORD=< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12;echo USER=$1 KEY_TYPE=$2 SSH_KEY=$3 if [ -z "$USER" ] || [ -z "$KEY_TYPE" ] || [ -z "$SSH_KEY" ]; then echo Error. User or SSH key is not empty exit 0 fi useradd $USER -p $PASSWORD && echo Success create user $USER || echo Fail create user $USER mkdir -p /log-session/$USER touch $LOG_DIR/$USER/$USER.log && chmod 200 $LOG_DIR/$USER/$USER.log && chown $USER. $LOG_DIR/$USER/$USER.log && chattr +a $LOG_DIR/$USER/$USER.log && echo Success create and change permission log file || echo Fail create and change permission log file mkdir /home/$USER/.ssh && chown $USER. /home/$USER/.ssh && chmod 700 /home/$USER/.ssh && echo Success create /home/$USER/.ssh directory || echo Fail create /home/$USER/.ssh directory echo command=\"/usr/local/sbin/log-session\" $KEY_TYPE $SSH_KEY > /home/$USER/.ssh/authorized_keys && chmod 400 /home/$USER/.ssh/authorized_keys && chown -R $USER. /home/$USER/.ssh && chattr +i /home/$USER/.ssh/authorized_keys && echo Success create /home/$USER/.ssh/authorized_keys file || echo Fail create /home/$USER/.ssh/authorized_keys file echo Done!

Script này được dùng để thêm user khi cần cấp user cho người dùng proxy, đồng thời thực hiện thêm public key, tạo file log, phân quyền cho file log để ngăn người dùng xem, sửa file log. Cụ thể là:

  • Đọc thông tin user, public key nhập vào bằng lệnh read
  • Thực hiện thêm user thông tin qua useradd
  • Tạo thư mục chứa log file cho từng user qua lệnh mkdir -p /log-session/$USER
  • Tạo file log cho user đó thông qua lệnh touch

Phân quyền:

  • 200 với logfile
  • thay đổi owner user/group là chính user đó
  • chattr +a file log để user chỉ thêm nội dung vào mà không có quyền chỉnh sửa hay xóa nội dung
  • Tạo thư mục /home/$USER/.ssh, phân quyền 700 cho thư mục này.
  • Tạo file /home/$USER/.ssh/authorized_keys, chown user/group là root.$USER với permission là 750. Phân quyền như trên sẽ giúp user chỉ đọc được các file trong thư mục /home/$USER/.ssh và không thể tạo thêm được file trong thư mục này. Thêm nội dung public key của user vào với định dạng : command = “/usr/local/sbin/log-session” ssh-rsa AAAQE…… user@
  • chattr +i /home/$USER/.ssh/authorized_keys để user không chỉnh sửa được file này

3. Tạo script log_rotate.sh

  • Tạo script rotate log tại /root/log_rotate.sh, nội dung như sau

vi /root/log_rotate.sh

!/bin/bash TIMESTAMP=date +%d-%m-%Y LOGDIR=/log-session/ MAX_SIZE=100M find $LOGDIR -name '*.log' -type f -size +$MAX_SIZE | while read LOGFILE do done
  • Phân quyền cho script /root/log_rotate.sh

chmod 755 /root/log_rotate.sh

  • Thêm cronjob tự động rotate log

Script dùng để rotate file log, các file log có dung lượng lớn hơn biến $MAX_SIZE sẽ được rotate

0 2 * * * /root/log_rotate.sh > /dev/null

Bước 4: Cài đặt trên server/VPS cần log SSH session

Trên server/VPS cần log SSH, cần thực hiện việc giới hạn login SSH, chỉ cho phép IP của SSH Proxy được phép đi vào. Thực hiện như sau :

Trên server/VPS cần log SSH, vào /etc/ssh/sshd_config, thêm giá trị sau vào cuối file.

vi /etc/ssh/sshd_config

Match Address PasswordAuthentication no PermitRootLogin yes

Bước 5: Tạo user

Để tạo user bạn hãy SSH vào con proxy để làm việc nhé và để tạo user bạn thực hiện với cú pháp lệnh sau:

Trong đó

  • username: Là user của người dùng
  • ssh-dss AAAAB3…: Chính là public_key của người dùng đó

./root/adduser.sh username ssh-dss AAAAB3...

Sau khi tạo hoàn tất, người dùng có thể sử dụng privakey và user để ssh vào Proxy. Và tải lên Private key để ssh đến những server khác

Tổng kết

Qua bài hướng dẫn cấu hình SSH Proxy hy vọng bài viết này sẽ giúp bạn thiết lập được một hệ thống proxy. Từ đó có thể kiểm soát tốt các hoạt động của nhân viên khi đăng nhập vào phiên làm việc.

Nếu các bạn cần hỗ trợ các bạn có thể liên hệ bộ phận hỗ trợ theo các cách bên dưới:

Video liên quan

Chủ Đề