linux network ssh - It costs 2 mins to read

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:

i1

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

i2

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