Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "CNTT" các nội dung bạn quan tâm.

8. Thiết lập SSH an toàn (port, key, user, sudo)

ICT

1. Vì sao SSH là điểm bảo mật quan trọng nhất?

Với một Web Server, SSH là cánh cửa quản trị duy nhất.
Nếu cánh cửa này không được bảo vệ tốt:

  • Hacker không cần khai thác web

  • Không cần tấn công database

  • Chỉ cần brute-force SSH là đủ gây sự cố nghiêm trọng

Trong rất nhiều hệ thống bị xâm nhập, SSH là điểm vào đầu tiên.

Vì vậy:

Bảo mật SSH không phải là tuỳ chọn, mà là bắt buộc.


2. Nguyên tắc thiết lập SSH cho production

Trong loạt bài này, cấu hình SSH tuân theo các nguyên tắc:

  1. Không đăng nhập trực tiếp bằng root

  2. Không dùng mật khẩu cho SSH

  3. Chỉ cho phép user cần thiết

  4. Giảm bề mặt tấn công (port, rule)

  5. Tránh cấu hình “quá tay” gây tự khóa


3. Tạo user quản trị riêng

3.1. Vì sao không dùng root?

  • Root có toàn quyền

  • Dễ bị tấn công brute-force

  • Khó kiểm soát lịch sử thao tác

Nguyên tắc:

Root chỉ dùng thông qua sudo. Khó chịu, nhưng ráng cũng quen ACE nhé.


3.2. Tạo user quản trị

Ví dụ tạo user nickname

Bạn sử dụng tên user quen thuộc của bạn, hoặc của phòng ban.
 
sudo adduser nickname
  • Đặt mật khẩu mạnh

  • Lưu thông tin user cẩn thận


3.3. Cấp quyền sudo

 
sudo usermod -aG sudonickname

Kiểm tra:

su - nicknamesudo -l

Nếu user không có quyền sudo, không tiếp tục các bước sau.


4. Thiết lập SSH key (bắt buộc)

4.1. Vì sao dùng SSH key?

So với mật khẩu:

  • SSH key an toàn hơn rất nhiều

  • Không thể brute-force theo cách thông thường

  • Dễ quản lý, dễ thu hồi

Nguyên tắc:

Production không dùng SSH password.


4.2. Tạo SSH key trên máy quản trị

Ví dụ mình đang dùng MacOS nhé. Mình không rõ trên Windows

Trên máy cá nhân:

ssh-keygen -t ed25519
  • Không đặt passphrase cũng được (tuỳ chính sách)

  • File mặc định: ~/.ssh/id_ed25519


4.3. Copy public key lên server

ssh-copy-id nickname@IP_SERVER 

Hoặc copy thủ công vào:

/home/nickname/.ssh/authorized_keys

Kiểm tra quyền:

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

5. Kiểm tra đăng nhập bằng key

Trước khi chỉnh SSH config:

  • Mở một session SSH khác

  • Đăng nhập bằng key

Nếu chưa đăng nhập được bằng key: KHÔNG được chỉnh file cấu hình SSH.


6. Cấu hình SSH daemon an toàn

6.1. Mở file cấu hình

 
sudo nano /etc/ssh/sshd_config

6.2. Các cấu hình khuyến nghị

 
Port 2222
Protocol 2
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers nickname
ClientAliveInterval 300
ClientAliveCountMax 2

Giải thích ngắn gọn:

  • Đổi port: giảm scan tự động

  • Cấm root login

  • Cấm password

  • Chỉ cho phép user xác định

  • Tự ngắt kết nối idle


6.3. Kiểm tra cú pháp trước khi restart

sudo sshd -t

Nếu không có lỗi, tiếp tục.


6.4. Restart SSH service

sudo systemctl restart ssh

7. Kiểm tra lại sau khi cấu hình

  • Mở session SSH mới:

    ssh -p 2222 nickname@IP_SERVER 
  • Không đóng session cũ cho đến khi xác nhận đăng nhập thành công

Nguyên tắc:

Không bao giờ chỉnh SSH chỉ với một cửa sổ đang mở.

Tham khảo để truy cập ssh nhanh hơn nữa: Truy cập ssh nhanh bằng ssh tenmaychu thay vì nhập đủ thông tin đăng nhập


8. Thiết lập firewall cho SSH (chuẩn bị)

Sau khi đổi port:

  • Mở port mới trong firewall

  • Đóng port 22 mặc định

(Bước này sẽ được thực hiện chi tiết trong bài cấu hình UFW.)


9. Những sai lầm phổ biến khi cấu hình SSH

  • Tắt password trước khi cài key

  • Đổi port nhưng quên mở firewall

  • Không test SSH key

  • Chỉnh AllowUsers sai username

Những lỗi này thường dẫn đến:

Tự khóa chính mình khỏi server.


10. Checklist SSH cho production

  •  User quản trị riêng

  •  User có quyền sudo

  •  SSH key hoạt động

  •  Root login bị vô hiệu

  •  Password authentication tắt

  •  Port SSH không mặc định


11. Bài tiếp theo

Trong Bài 9, chúng ta sẽ tiếp tục hoàn thiện nền bảo mật:

Cấu hình timezone, locale, hostname

Những cấu hình này tuy nhỏ, nhưng ảnh hưởng trực tiếp đến:

  • Log

  • Cron

  • Giám sát hệ thống