Cách Tắt Đăng Nhập Bằng Mật Khẩu SSH Để Tăng Cường Bảo Mật

Tại Sao Nên Tắt Đăng Nhập Bằng Mật Khẩu Trong SSH?

Bảo mật máy chủ luôn là vấn đề ưu tiên hàng đầu đối với mọi quản trị viên hệ thống. Một trong những phương pháp hiệu quả nhất để bảo vệ máy chủ Linux/Unix khỏi các cuộc tấn công brute-force là tắt chức năng đăng nhập bằng mật khẩu trong SSH (Secure Shell) và thay thế bằng xác thực khóa SSH. Phương pháp này không chỉ tăng cường bảo mật mà còn giúp quá trình đăng nhập trở nên thuận tiện hơn cho người dùng hợp pháp.

Khi sử dụng đăng nhập bằng mật khẩu, máy chủ của bạn dễ bị tấn công brute-force - kẻ tấn công có thể thử hàng nghìn mật khẩu khác nhau cho đến khi thành công. Ngược lại, xác thực khóa SSH sử dụng một cặp khóa mã hóa (khóa công khai và khóa riêng tư) khiến việc tấn công gần như không thể thực hiện được.

Thiết Lập Xác Thực Bằng Khóa SSH Trước Khi Tắt Đăng Nhập Bằng Mật Khẩu

Trước khi tắt đăng nhập bằng mật khẩu, bạn cần thiết lập xác thực bằng khóa SSH để đảm bảo bạn không bị khóa khỏi máy chủ của mình.

Bước 1: Tạo Cặp Khóa SSH

Trên máy tính cá nhân của bạn (không phải máy chủ), tạo một cặp khóa SSH bằng lệnh sau:

ssh-keygen -t ed25519 -C "email@example.com"
# Hoặc sử dụng RSA với độ dài khóa 4096 bit
ssh-keygen -t rsa -b 4096 -C "email@example.com"

Khi được nhắc, bạn có thể nhấn Enter để lưu khóa vào vị trí mặc định (~/.ssh/id_ed25519 hoặc ~/.ssh/id_rsa). Đặt một passphrase mạnh cho khóa là thực hành bảo mật tốt.

Bước 2: Sao Chép Khóa Công Khai Lên Máy Chủ

Sử dụng lệnh ssh-copy-id để sao chép khóa công khai lên máy chủ:

ssh-copy-id username@your_server_ip

Nếu ssh-copy-id không khả dụng trên hệ thống của bạn, bạn có thể sao chép khóa theo cách thủ công:

cat ~/.ssh/id_ed25519.pub | ssh username@your_server_ip "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Bước 3: Kiểm Tra Xác Thực Bằng Khóa

Trước khi tắt đăng nhập bằng mật khẩu, hãy kiểm tra xem bạn có thể đăng nhập bằng khóa SSH không:

ssh username@your_server_ip

Nếu bạn đã đặt passphrase cho khóa SSH, bạn sẽ được yêu cầu nhập passphrase này. Đây không phải là mật khẩu máy chủ, mà là passphrase bảo vệ khóa riêng tư của bạn.

Cấu Hình SSH Server Để Tắt Đăng Nhập Bằng Mật Khẩu

Sau khi đã thiết lập thành công xác thực bằng khóa, bạn có thể tắt đăng nhập bằng mật khẩu một cách an toàn.

Bước 1: Chỉnh Sửa Tệp Cấu Hình SSH

Sử dụng trình soạn thảo văn bản để mở tệp cấu hình SSH:

sudo nano /etc/ssh/sshd_config

Bước 2: Tìm và Sửa Các Cài Đặt

Tìm và sửa (hoặc thêm nếu không có) các dòng sau:

# Tắt đăng nhập bằng mật khẩu
PasswordAuthentication no

# Đảm bảo xác thực bằng khóa được bật
PubkeyAuthentication yes

# Tùy chọn: tắt đăng nhập root qua SSH
PermitRootLogin prohibit-password

Nếu bạn muốn tắt hoàn toàn khả năng đăng nhập dưới tài khoản root (khuyến nghị), hãy sử dụng:

PermitRootLogin no

Bước 3: Khởi Động Lại Dịch Vụ SSH

Để áp dụng các thay đổi, khởi động lại dịch vụ SSH:

# Trên các hệ thống sử dụng systemd
sudo systemctl restart sshd

# Trên các hệ thống Ubuntu/Debian cũ hơn
sudo service ssh restart

# Trên các hệ thống CentOS/RHEL cũ hơn
sudo service sshd restart

Khắc Phục Các Vấn Đề Thường Gặp

Bị Khóa Khỏi Máy Chủ

Nếu bạn bị khóa khỏi máy chủ sau khi tắt đăng nhập bằng mật khẩu, bạn sẽ cần truy cập vật lý vào máy chủ hoặc sử dụng bảng điều khiển KVM/VNC của nhà cung cấp dịch vụ lưu trữ để đăng nhập và khắc phục cấu hình SSH.

Nhiều Người Dùng Cần Truy Cập

Đối với môi trường nhiều người dùng, mỗi người dùng nên có cặp khóa SSH riêng và khóa công khai của họ nên được thêm vào tệp authorized_keys của tài khoản tương ứng trên máy chủ.

Truy Cập Từ Nhiều Máy Tính

Nếu bạn cần truy cập máy chủ từ nhiều máy tính, bạn có hai lựa chọn:

  • Tạo cặp khóa SSH riêng cho mỗi máy tính và thêm tất cả khóa công khai vào máy chủ.
  • Sao chép khóa riêng tư một cách an toàn giữa các máy tính (không khuyến nghị trừ khi thực sự cần thiết vì lý do bảo mật).

Cấu Hình SSH Nâng Cao Để Tăng Cường Bảo Mật

Để tăng cường bảo mật hơn nữa, bạn có thể thực hiện các cấu hình SSH bổ sung sau:

# Thay đổi cổng SSH mặc định
Port 2222

# Giới hạn người dùng có thể sử dụng SSH
AllowUsers user1 user2

# Giới hạn thời gian không hoạt động trước khi ngắt kết nối
ClientAliveInterval 300
ClientAliveCountMax 2

# Tắt các tính năng không sử dụng
X11Forwarding no

Sử Dụng Fail2ban Để Bảo Vệ SSH

Mặc dù đã tắt đăng nhập bằng mật khẩu, việc triển khai Fail2ban vẫn là một lớp bảo vệ bổ sung tốt. Fail2ban giám sát các lần đăng nhập thất bại và tự động chặn các địa chỉ IP đáng ngờ.

sudo apt-get install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Cấu hình phần [sshd] để bảo vệ dịch vụ SSH, sau đó khởi động lại Fail2ban:

sudo systemctl restart fail2ban

Kết Luận

Tắt đăng nhập bằng mật khẩu trong SSH và chuyển sang xác thực bằng khóa là một trong những biện pháp bảo mật hiệu quả nhất mà quản trị viên hệ thống có thể thực hiện. Mặc dù quá trình thiết lập ban đầu có thể phức tạp hơn một chút, nhưng lợi ích bảo mật dài hạn và sự tiện lợi cho người dùng hợp pháp là rất đáng giá.

Bằng cách làm theo hướng dẫn này, bạn không chỉ bảo vệ máy chủ của mình khỏi các cuộc tấn công brute-force mà còn tạo nền tảng vững chắc cho chiến lược bảo mật SSH toàn diện. Hãy nhớ rằng bảo mật là một quá trình liên tục, và việc thường xuyên cập nhật và xem xét các biện pháp bảo mật là điều cần thiết để duy trì một hệ thống an toàn.