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.