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.
- 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
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
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ế
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 -ttrước khi reload. - Luôn giữ session cũ khi thay đổi SSH.
9. Bài tập
- Tạo SSH key mới trên máy lab.
- Copy public key vào server test.
- Kiểm tra log SSH trong 24 giờ.
- 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 noPasswordAuthentication nochỉ sau khi xác nhận key hoạt độngPubkeyAuthentication yesAllowUsershoặcAllowGroupsnế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_configrồi reload mà không chạysshd -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.
