Bài 09: SSH và quản lý truy cập server

Bài 09: SSH và quản lý truy cập server

SSH là cửa ngõ quản trị server từ xa. Bài này đi sâu vào cách đăng nhập, dùng SSH key, kiểm tra log và cấu hình an toàn hơn.

Sau bài này anh sẽ biết:

  • SSH hoạt động để làm gì.
  • Đăng nhập bằng password và SSH key.
  • Tạo key, copy key và kiểm tra quyền key.
  • Đọc log đăng nhập, giảm rủi ro brute force.

Chốt ý nhanh

Chủ đề Điểm cần nhớ
SSH Là cửa ngõ quản trị từ xa quan trọng nhất của server Linux.
Ưu tiên bảo mật Dùng SSH key, hạn chế password login, cẩn thận khi sửa sshd_config.
Phản xạ đúng Luôn test key và giữ một phiên SSH cũ trước khi reload cấu hình.

1. SSH là gì?

SSH cho phép anh điều khiển server từ xa qua kết nối mã hóa. Hầu hết server Linux production đều quản trị qua SSH.

2. Đăng nhập SSH cơ bản

ssh user@server_ip
ssh -p 2222 user@server_ip
ssh -i ~/.ssh/id_ed25519 user@server_ip

-p dùng khi SSH chạy port khác 22. -i chỉ định private key.

3. Lab: tạo SSH key

Mục tiêu: tạo key pair và hiểu public/private key.
ssh-keygen -t ed25519 -C "admin-laptop"
ls -la ~/.ssh
cat ~/.ssh/id_ed25519.pub

id_ed25519 là private key, giữ kín. id_ed25519.pub là public key, có thể đặt lên server.

4. Copy key lên server

ssh-copy-id user@server_ip
# hoặc copy thủ công public key vào:
~/.ssh/authorized_keys

Trên server, thư mục/file key cần quyền đúng:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

5. Cấu hình SSH an toàn hơn

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_config
sudo sshd -t
sudo systemctl reload ssh || sudo systemctl reload sshd

Các dòng thường kiểm tra:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Quan trọng: Trước khi tắt password login, hãy mở một terminal khác và chắc chắn SSH key đăng nhập được. Đừng tự khóa khỏi server.

6. Đọc log SSH

journalctl -u ssh --since "24 hours ago" || journalctl -u sshd --since "24 hours ago"
sudo grep -i "failed" /var/log/auth.log | tail
last
lastb

7. Tình huống thực tế

Server có nhiều login failed từ Internet. Anh cần kiểm tra auth log, đổi sang SSH key, tắt root login, giới hạn firewall theo IP quản trị hoặc đặt VPN.

8. Checklist production

  • Dùng SSH key thay vì password.
  • Tắt root login trực tiếp.
  • Backup config trước khi sửa.
  • Chạy sshd -t trước khi reload.
  • Luôn giữ session cũ khi thay đổi SSH.

9. Bài tập

  1. Tạo SSH key mới trên máy lab.
  2. Copy public key vào server test.
  3. Kiểm tra log SSH trong 24 giờ.
  4. Viết checklist 5 bước harden SSH.

Phần thực hành mở rộng: SSH theo góc nhìn vận hành thật

SSH là thứ gần như sysadmin dùng mỗi ngày. Vì vậy bài này không nên dừng ở mức “biết đăng nhập”, mà phải giúp người học hiểu rõ cách harden, cách tránh tự khóa mình khỏi server và cách đọc dấu hiệu tấn công.

Lab 1: Tạo và quản lý nhiều SSH key

mkdir -p ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/lab-admin-ed25519 -C "lab-admin"
ssh-keygen -t ed25519 -f ~/.ssh/lab-backup-ed25519 -C "lab-backup"
ls -lah ~/.ssh

Mục tiêu là hiểu mỗi máy, mỗi mục đích truy cập có thể nên dùng key riêng thay vì dồn tất cả vào một key duy nhất.

Lab 2: Dùng file config để SSH gọn hơn

cat <<'EOF' >> ~/.ssh/config
Host lab-web
    HostName 192.168.56.10
    User wyatt
    Port 22
    IdentityFile ~/.ssh/lab-admin-ed25519
EOF
chmod 600 ~/.ssh/config
ssh lab-web

Khi quản lý nhiều server, file ~/.ssh/config giúp giảm lỗi gõ nhầm user, port hoặc key.

Lab 3: Kiểm tra quyền file SSH trên server

ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Rất nhiều ca “SSH key không chạy” thật ra chỉ do permission sai.

Lab 4: Sửa cấu hình SSH an toàn

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F-%H%M)
sudo nano /etc/ssh/sshd_config
sudo sshd -t
sudo systemctl reload ssh || sudo systemctl reload sshd

Khi sửa, hãy tập trung vào vài dòng cốt lõi:

  • PermitRootLogin no
  • PasswordAuthentication no chỉ sau khi xác nhận key hoạt động
  • PubkeyAuthentication yes
  • AllowUsers hoặc AllowGroups nếu cần giới hạn

Lab 5: Đọc log đăng nhập thất bại

sudo journalctl -u ssh --since "24 hours ago" --no-pager || sudo journalctl -u sshd --since "24 hours ago" --no-pager
sudo grep -i "failed" /var/log/auth.log | tail -30
last
lastb

Hãy tự phân biệt:

  • đăng nhập thành công
  • sai mật khẩu
  • invalid user
  • nguồn IP đang thử brute force

Tình huống thực tế

Một VPS public thường bị quét SSH chỉ sau vài phút mở Internet. Người vận hành tốt sẽ không coi đó là chuyện lạ, mà sẽ có phản xạ rõ ràng: dùng key, tắt root login, giới hạn IP quản trị nếu có thể, và theo dõi log đều đặn.

Lỗi phổ biến

  • Tắt password login trước khi test SSH key thành công.
  • Sửa sshd_config rồi reload mà không chạy sshd -t.
  • Dùng chung một private key cho quá nhiều máy và người.
  • Không backup config cũ trước khi thay đổi.

Kết bài

Nếu bài này ngấm, anh sẽ không còn xem SSH chỉ là lệnh để vào server, mà là lớp truy cập quản trị quan trọng cần được kiểm soát rất kỹ. Nắm chắc SSH giúp anh làm chủ bước đầu của mọi công việc vận hành: vào đúng máy, bằng đúng quyền, theo cách an toàn. Sang bài tiếp theo, anh sẽ siết chặt thêm một lớp nữa: firewall và quản lý port Linux.

Tác giả: Mạnh Hoàng

Tôi là Hoàng Mạnh, người sáng lập blog SysadminSkills.com. Tôi viết về quản trị hệ thống, bảo mật máy chủ, DevOps và cách ứng dụng AI để tự động hóa công việc IT. Blog này là nơi tôi chia sẻ những gì đã học được từ thực tế – đơn giản, ngắn gọn và áp dụng được ngay.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *