Cấu hình SSH chỉ đăng nhập bằng Public Keys trên CentOS 6
Bởi vì User Root có quyền tối cao trên hệ thống nên sẽ rất nguy hiểm nếu sử dụng thường xuyên tài khoản root, do đó, ta nên add thêm một User khác và đăng nhập SSH vào User này, thay cho root. Để an toàn hơn, chúng ta sẽ bỏ luôn việc đăng nhập SSH bằng mật khẩu mà chỉ cho đăng nhập bằng ssh public key của máy.
Bước 1 - Đăng nhập vào tài khoản root, Thêm một User mới
ssh root@ip_address
useradd viphat
Thay mật khẩu của User mới bằng lệnh
passwd viphat
#####Bước 2 - Mượn quyền Root cho User mới
Cấu hình để User mới có thể mượn quyền của Root khi cần bằng cách dùng “sudo” trước mỗi dòng lệnh. việc mượn quyền bằng lệnh sudo giúp hạn chế bớt các sai lầm có thể làm hỏng hệ thống. Ngoài ra, các thao tác thực hiện bằng lệnh sudo đều được lưu trong file log “/var/log/secure” để xem lại khi cần thiết
Cấu hình sudo bằng cách gõ lệnh
/usr/sbin/visudo
tìm đến dòng
root ALL=(ALL) ALL
thêm vào dưới đó dòng sau
viphat ALL=(ALL) ALL
#####Bước 3 - Cấu hình SSH không cho phép đăng nhập trực tiếp bằng tài khoản root
sudo vi /etc/ssh/sshd_config
Tìm dòng PermitRootLogin và sửa thành no
PermitRootLogin no
thêm dòng sau vào cuối file
AllowUsers viphat
Khởi động lại dịch vụ SSH
sudo service sshd reload
Thử nghiệm bằng việc ssh bằng tài khoản root và ssh bằng tài khoản mới tạo:
Bước 4 - Cấu hình SSH chỉ xác thực bằng Public Keys, không xác thực bằng mật khẩu
Việc đăng nhập bằng Keys giúp bạn tránh việc bị lộ mật khẩu hoặc tránh bị tấn công dò ra mật khẩu bằng kỹ thuật brute-force password guessing attack.
Trước tiên, bạn cần generate ssh key từ máy client (máy bạn đang sử dụng) và copy nó vào thư mục ~/.ssh/authorized_keys của User mới tạo ở bước trên.
scp ~/.ssh/id_rsa.pub viphat@ip_address:~/.ssh/authorized_keys
Mở File cấu hình dịch vụ SSH
sudo vi /etc/ssh/sshd_config
Tìm và thay các dòng sau thành:
MaxAuthTries 1
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
MaxAuthTries là số lần tối đa Server cho phép client thử đăng nhập trước khi đóng kết nối. Vì Đăng nhập bằng Key không bao giờ fail nên để 1 là hợp lý.
Khởi động lại dịch vụ SSH
sudo service sshd reload
Thử nghiệm (Như bạn thấy, lần SSH này, Server không còn đòi phải nhập mật khẩu như trước nữa
Nâng cao
Để cấu hình riêng cho từng User, hoặc từng Group, ta dùng lệnh như sau
(User A - B - C)
Match User A,B,C
PasswordAuthentication no
(Group)
Match Group sudoers
PasswordAuthentication no
(Tất cả các User không phải root)
Match User !root
PasswordAuthentication no
Tìm hiểu thêm về SSH, Mã hóa đối xứng và bất đối xứng