Thứ năm, 21/04/2016 | 00:00 GMT+7

Cài đặt đăng nhập với ssh và key authentication trên Ubuntu 16.4

Khi bạn cài đặt một Server Ubuntu 16.04 mới, có một số bước cấu hình mà bạn nên thực hiện sớm như một phần của thiết lập cơ bản. Điều này sẽ tăng tính bảo mật và khả năng sử dụng cho Server, tạo cho bạn một nền tảng vững chắc cho các bước tiếp theo.

Bước một - Đăng nhập bằng tài khoản root

Để đăng nhập vào Server, bạn cần biết địa chỉ IP public của Server. Bạn cũng sẽ cần mật khẩu hoặc, nếu bạn đã cài đặt SSH key để xác thực, thì private key cho tài khoản của "root".

Đăng nhập với tư cách là user root bằng lệnh sau (thay thế từ được đánh dấu bằng địa chỉ IP public của Server):

  • ssh root@your_server_ip

Hoàn tất quá trình đăng nhập bằng cách chấp nhận cảnh báo về tính xác thực của Server, nếu nó xuất hiện, sau đó cung cấp xác thực gốc của bạn (mật khẩu hoặc private key). Nếu đây là lần đầu tiên bạn đăng nhập vào Server bằng mật khẩu, cũng sẽ được nhắc thay đổi mật khẩu của user root.

Tài khoản Root

User root là user quản trị trong môi trường Linux có các quyền rất rộng. Không nên dùng tài khoản root thường xuyên, vì nó có quyền cao nhất, có thể gây ra rủi ro nếu nhầm lẫn, hoặc lộ mật khẩu root...

Tiếp theo thiết lập một tài khoản user khác với quyền hạn chế hơn, và có thể mở rộng quyền khi cần thiết.

Bước hai - Tạo user mới

Khi đã đăng nhập bằng quyền root , ta tạo thêm tài khoản user mới đăng nhập và sử dụng

Ví dụ này tạo một user mới có tên là “sammy”, bạn có thể thay thế nó bằng một tên user mà bạn thích:

  • adduser sammy

Nhập một mật khẩu mạnh và có thể điền vào thông tin bổ sung nào nếu bạn muốn. Điều này không bắt buộc và bạn có thể nhấn ENTER trong bất kỳ trường nào bạn muốn bỏ qua.

Bước ba - Root Privileges

Bây giờ, bạn vừa tạo một tài khoản user mới với các quyền thông thường. Tuy nhiên đôi khi ta cần thực hiện với quyền cao nhất.

Để tránh phải đăng xuất khỏi user thường và đăng nhập lại bằng tài khoản root, ta có thể thiết lập “superuser” hoặc root privileges cho user. Điều này sẽ cho phép user thường chạy các lệnh có quyền root bằng cách đặt từ sudo trước lệnh.

Để thêm các quyền này cho user mới, ta cần thêm user mới vào nhóm “sudo”. Theo mặc định, trên Ubuntu 16.04, user thuộc nhóm “sudo” được phép sử dụng sudo .

Đứng trên user root , chạy lệnh này để user mới của bạn vào nhóm sudo 

  • usermod -aG sudo sammy

Bây giờ user của bạn có thể chạy các lệnh với các quyền của superuser! Để biết thêm thông tin về cách thức hoạt động, hãy xem hướng dẫn sudoers này .

Nếu bạn muốn tăng cường bảo mật cho Server của mình, hãy làm theo các bước còn lại trong hướng dẫn này.

Bước bốn - Add Public Key Authentication (Khuyến nghị)

Bước tiếp theo trong việc bảo mật Server là thiết lập xác thực public key cho user. Thiết lập này sẽ tăng tính bảo mật cho Server bằng cách yêu cầu private SSH để đăng nhập.

Tạo một cặp khóa

Nếu bạn chưa có cặp SSH key, bao gồmpublic and private key, cần tạo một cặp khóa. Nếu bạn đã có khóa muốn sử dụng, hãy chuyển sang bước Sao chép  Public Key .

Để tạo một cặp khóa mới, hãy nhập lệnh sau trên terminal  (nhập trên shell putty):

  • ssh-keygen

Giả sử user local của bạn được gọi là “localuser”, bạn sẽ thấy đầu ra giống như sau:

ssh-keygen output
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):

Nhấn quay lại để chấp nhận tên và đường dẫn file này (hoặc nhập tên mới).

Tiếp theo, bạn sẽ được nhắc nhập mật khẩu để bảo mật khóa. Bạn có thể nhập mật khẩu hoặc để trống cụm mật khẩu.

Lưu ý: Nếu bạn để trống mật khẩu, bạn sẽ có thể sử dụng private key để xác thực mà không cần nhập mật khẩu. Nếu bạn nhập mật khẩu, bạn sẽ cần cả Public key của bạn và mật khẩu để đăng nhập. Bảo mật khóa của bạn bằng mật khẩu an toàn hơn, nhưng cả hai phương pháp đều có công dụng và an toàn hơn so với xác thực bằng mật khẩu cơ bản.

Điều này tạo ra một khóa riêng, id_rsa , và một public key, id_rsa.pub , trong .ssh thư mục của localuser ‘s thư mục home. Lưu ý private key không được chia sẻ với bất kỳ ai không được phép truy cập vào Server của bạn!

Sao chép  Public Key

Sau khi tạo cặp SSH key, bạn cần sao chép public key của mình vào Server mới. Bằng cách sử dụng các tùy chọn sau:

Tùy chọn 1: Sử dụng ssh-copy-id

Nếu máy local đã cài đặt tập lệnh ssh-copy-id , bạn có thể sử dụng nó để cài đặt public key của mình cho bất kỳ user nào mà bạn có thông tin đăng nhập.

Chạy tập lệnh ssh-copy-id bằng cách chỉ định user và địa chỉ IP của Server mà bạn muốn cài đặt khóa, như sau:

  • ssh-copy-id sammy@your_server_ip

Nhập mật khẩu của bạn khi được nhắc, public key sẽ được thêm vào file .ssh/authorized_keys của user từ xa. Public key bây giờ có thể sử dụng để đăng nhập vào Server.

Tùy chọn 2: Cài đặt khóa theo cách thủ công

Giả sử bạn đã tạo cặp SSH key ở bước trước, hãy sử dụng lệnh sau tại terminal của máy local để hiển thị public key( id_rsa.pub ):

  • cat ~/.ssh/id_rsa.pub

Thao tác này sẽ đưa ra SSH Public key của bạn, trông giống như sau:

id_rsa.pub contents
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf localuser@machine.local

Chọn public key và copy nó vào cliboard của bạn.

Để cho phép sử dụng SSH key xác thực là user từ xa mới, bạn phải thêm public key vào một file trong thư mục chính của user.

Trên Server , với tư cách là user root , hãy nhập lệnh sau để tạm thời chuyển sang user mới (thay thế tên user của chính bạn):

  • su - sammy

Bây giờ bạn sẽ ở trong thư mục chính của user mới của bạn.

Tạo một thư .ssh mới có tên .ssh và hạn chế quyền của nó bằng các lệnh sau:

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh

Bây giờ mở một file trong .ssh gọi authorized_keys với nano:

  • nano ~/.ssh/authorized_keys

Paste public key của bạn (khóa này phải có trong cliboard của bạn) file trên.

Nhấn CTRL-x để thoát khỏi file, sau đó nhấn y để lưu các thay đổi bạn đã thực hiện, sau đó ENTER để xác nhận tên file.

Bây giờ, hạn chế quyền truy cập file với lệnh:

  • chmod 600 ~/.ssh/authorized_keys

Trở lại user root :

  • exit

Vậy public key đã được cài đặt và bạn có thể sử dụng SSH key để đăng nhập với tư cách user của mình.

Để đọc thêm về cách xác thực key hoạt động, có thể xem hướng dẫn này: Cách định cấu hình xác thực dựa trên SSH key trên Server Linux .

Tiếp theo, sẽ hướng dẫn bạn cách tăng cường bảo mật cho Server bằng cách tắt xác thực mật khẩu.

Giờ đây, user mới của bạn có thể sử dụng SSH key để đăng nhập, bạn có thể tăng cường bảo mật cho Server của mình bằng cách tắt xác thực bằng mật khẩu. Làm như vậy sẽ hạn chế quyền truy cập SSH vào Server của bạn chỉ với xác thực public key. Đó là, cách duy nhất để đăng nhập vào Server của bạn (ngoài bảng điều khiển) là sở hữu Public key của bạn ghép nối với public key đã được cài đặt.

Lưu ý: Chỉ vô hiệu hóa xác thực mật khẩu nếu bạn đã cài đặt public key cho user của mình theo khuyến nghị trong phần trước, bước bốn. Nếu không, bạn sẽ không thể đăng nhập Server qua ssh!

Để tắt xác thực mật khẩu trên Server, làm theo các bước sau.

Như là Root hoặc user sudo mới, mở cấu hình SSH daemon:

  • sudo nano /etc/ssh/sshd_config

Tìm dòng chỉ định PasswordAuthentication , bỏ ghi chú bằng cách xóa # đứng trước, sau đó thay đổi giá trị của nó thành “no”:

sshd_config - Tắt xác thực mật khẩu
PasswordAuthentication no

Đây là hai cài đặt khác quan trọng đối với xác thực chỉ bằng khóa và được đặt theo mặc định. Nếu bạn chưa sửa đổi file này trước đây, bạn không cần phải thay đổi các cài đặt sau:

sshd_config - Các giá trị mặc định quan trọng
PubkeyAuthentication yes
ChallengeResponseAuthentication no

Khi bạn thực hiện xong các thay đổi của mình, hãy lưu và đóng file bằng cách ( CTRL-X , rồi Y , rồi ENTER ).

Chạy lệnh sau để reload daemon SSH:

  • sudo systemctl reload sshd

Xác thực mật khẩu hiện đã bị vô hiệu hóa. Server của bạn hiện chỉ có thể truy cập được với xác thực SSH key.

Bước sáu - Đăng nhập kiểm tra

Bây giờ, trước khi đăng xuất khỏi Server, bạn nên kiểm tra cấu hình mới của mình. Không ngắt kết nối cho đến khi bạn xác nhận rằng bạn có thể đăng nhập thành công qua SSH.

Trên máy local của bạn, hãy đăng nhập vào Server bằng tài khoản mới đã tạo. Để làm như vậy, hãy sử dụng lệnh này (thay thế tên user và địa chỉ IP Server):

  • ssh sammy@your_server_ip

Nếu bạn đã thêm xác thực public key cho user, như trong các bước bốn và năm, Public key sẽ được sử dụng làm xác thực. Nếu không, bạn sẽ được nhắc nhập mật khẩu của user của mình.

Lưu ý về key authentication: Nếu bạn đã tạo cặp khóa bằng mật khẩu, bạn sẽ được nhắc nhập mật khẩu cho khóa. Ngược lại, nếu cặp khóa không có mật khẩu, bạn phải đăng nhập vào Server của mình mà không cần mật khẩu.

Khi xác thực được cung cấp cho Server, bạn sẽ đăng nhập với tư cách là user mới.

Lưu ý, nếu cần chạy một lệnh có quyền root, hãy nhập “sudo” trước nó như sau:

  • sudo command_to_run

Bước 7 - Thiết lập Firewall

Server Ubuntu 16.04 có thể sử dụng Firewall UFW để đảm bảo chỉ cho phép các kết nối đến một số dịch vụ nhất định. Ta có thể thiết lập Firewall cơ bản dễ dàng bằng UFW.

Các ứng dụng khác nhau có thể đăng ký với UFW khi cài đặt. Các cấu hình này cho phép UFW quản lý các ứng dụng này theo tên. OpenSSH, dịch vụ cho phép ta kết nối với Server

Bạn có thể thấy điều này bằng lệnh:

  • sudo ufw app list
Output
Available applications:
  OpenSSH

Ta cần đảm bảo rằng Firewall cho phép kết nối SSH để có thể đăng nhập lại vào lần sau, có thể cho phép các kết nối này bằng lệnh:

  • sudo ufw allow OpenSSH

Sau đó, kích hoạt Firewall bằng lệnh:

  • sudo ufw enable

Gõ “y” và nhấn ENTER để tiếp tục. Bạn có thể thấy các kết nối SSH vẫn được cho phép bằng lệnh:

  • sudo ufw status
Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Nếu cài đặt và định cấu hình các dịch vụ bổ sung, ta sẽ cần điều chỉnh cài đặt Firewall để cho phép truy cập. Có thể tìm hiểu một số thao tác UFW phổ biến trong hướng dẫn này .

Tiếp theo?

Tại thời điểm này, bạn đã cấu hình cài đặt tài khoản cho user với quyền sudo để có thể cài đặt bất kỳ phần mềm nào trên server. 


Tags:

Các tin trước

Cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Ubuntu 16.04 2016-04-21
Sử dụng UFW căn bản, các luật firewall phổ biến 2015-08-20
Nâng cấp lên Mysql 5.7 2015-04-20
Cấu hình xác thực bằng ssh-key trên server Linux 2014-10-20
Toàn tập làm việc với Openssl và chứng chỉ số 2014-09-12
Cài đặt Nginx trên CentOS 7 2014-07-22
Cài đặt Linux Apache MySQL PHP (LAMP) On CentOS 7 2014-07-21
Cài đặt Bảo mật cơ bản cho CentOS 7 2014-07-21
Cấu hình firewall IP V6 trên Linux VPS 2014-04-01
Cài đặt và sử dụng yum repositories trên Centos-6 vps 2013-10-01