Ra mắt hai series mới cực hot Trí tuệ nhân tạo A đến ZPython công cụ không thể thiếu khi nghiên cứu Data science, Machine learning.

SSH là gì, sử dụng SSH bảo mật kết nối máy chủ Linux

Một vấn đề đặt ra khi chúng ta kết nối đến một máy chủ là các kết nối không mã hóa có thể truyền đi thông tin tài khoản ở dạng văn bản đọc được, khi các gói tin truyền qua Internet rất có khả năng bị hacker nghe lén. Hacker biết được thông tin tài khoản trên máy chủ và vấn đề lớn xảy ra, hacker có thể khai thác nội dung hoặc phá hoại máy chủ. Giải pháp nào cho vấn đề này?, cần phải mã hóa khi kết nối đến các máy chủ và SSH ra đời để làm việc đó.

Giới thiệu SSH

SSH (Secure Shell) là một giao thức mạng mã hóa, khi dữ liệu được truyền trên mạng máy tính, SSH tự động mã hóa chúng và giải mã khi dữ liệu đến được đích cần đến. Người dùng có thể làm việc bình thường mà không cần quan tâm đến vấn đề mã hóa do SSH sử dụng các thuật toán mã hóa mới và bảo mật cao. SSH có mô hình máy chủ/máy khách, máy chủ khi được cài đặt SSH có thể chấp nhận hoặc từ chối một kết nối đến từ máy khách. Mặc dù SSH được viết tắt là Secure Shell nhưng nó không phải là một shell (chương trình thông dịch) mà SSH tạo ra một kênh để trên đó có thể chạy một shell trên một máy tính từ xa. Do đó, SSH không phải giải pháp bảo mật toàn vẹn mà cần kết hợp nhiều giải pháp khác, SSH không chống được DoS, virus, trojan... SSH sử dụng các thuật toán mã hóa công khai để mã hóa nội dung truyền đi, do đó SSH có thành phần chính như sau:

  • Khóa công khai (public key): có dạng file thường có tên id_rsa.pub hoặc một chuỗi ký tự chính là nội dung của file id_rsa.pub, file này thường được đưa vào thư mục ~/.ssh/authorized_keys trên máy chủ.
  • Khóa bí mật (private key): dạng file thường có tên id_rsa, lưu trên máy tính của bạn sử dụng để thiết lập kết nối khi dùng các phần mềm như ZOC, PuTTY, SecureCRT...
  • Mật khẩu (Keypharse): là một chuỗi ký tự để mỗi lần bạn sử dụng các key ở trên, nó sẽ hỏi mật khẩu này.

SSH trong Linux

Khi kết nối đến các máy chủ chạy Linux, có thể là máy chủ vật lý hoặc VPS (Virtual Private Server - Máy chủ ảo), chúng ta cần sử dụng SSH để bảo mật các thông tin như tài khoản đăng nhập, dữ liệu truyền nhận trong kết nối... Thông tin thiết lập SSH bao gồm: - Địa chỉ IP máy chủ

  • Tên đăng nhập/ Mật khẩu đăng nhập
  • Cổng của giao thức SSH mặc định là 22.

Cách tạo key sử dụng trong kết nối SSH

SSH sử dụng hai khóa là khóa bí mật và khóa công khai do đó, trước khi thiết lập một kết nối SSH chúng ta cần tạo ra các khóa này. Việc tạo khóa SSH khá đơn giản và tùy thuộc bạn đang sử dụng môi trường hệ điều hành nào.

Tạo key SSH trong Windows:

Trong Windows, bạn phải cài đặt phần mềm để kết nối SSH và các phần mềm này cũng cho phép tạo key. Các phần mềm SSH Client trên Windows có rất nhiều có thể kể đến như PuTTY (mã nguồn mở, miễn phí), ZOC (80$), SecureCRT(99$), tôi thường hay sử dụng bản trial ZOC 6.5.1 hết hạn sau 30 ngày nhưng vẫn dùng bình thường vì ZOC dùng rất tiện. Chúng ta sẽ tạo key SSH bằng ZOC. Vào File chọn Create SSH Key files

Taoj SSH key bằng ZOC

Chú ý ghi nhớ đường dẫn mà các khóa được tạo ra, mở thư mục này ra chúng ta sẽ thấy có hai file là id_rsa (chứa private key) và id_rsa.pub (chứa public key).

Key SSH được tạo ra trong thư mục SSH

Nội dung các file này chứa khóa để mã hóa, giải mã

Nội dung public key trong id_rsa.pub

Để thiết lập khóa bí mật private key cho SSH client trong ZOC chọn File -> Host Directory (hoặc ấn Alt + D), trong profile kết nối đến máy chủ click vào Edit và chọn đến tab Login.

Chọn profile trong thiết lập private key cho SSH client

Trong trường SSH Key File chọn đến file id_rsa chứa private key đã được tạo ra trong bước đầu.

Chọn khóa bí mật trong thiết lập private key cho SSH client

Tạo key SSH trong Linux, MacOS

Trong Linux sử dụng lệnh sau để tạo key SSH:

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
c4:6e:de:ec:0a:38:58:c9:65:ca:ff:c7:c7:08:d9:13 root@allaravel.com
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|       .         |
|      o o        |
|   o = o  E      |
|    *   So .     |
|   o o oooo      |
|  . o o .oo+     |
|     . o .+ o    |
|        oo..     |
+-----------------+
# ls
id_rsa id_rsa.pub

Câu lệnh trên Linux cũng tạo ra hai file id_rsa và id_rsa.pub, chú ý nếu sử dụng thư mục mặc định nhớ kiểm tra root/.ssh trước khi tạo key vì nếu đã tạo cần backup key cũ trước. Để xem nội dung khóa công khai trong id_rsa.pub chúng ta có thể dùng cat, vim, nano

# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EBBBBDAQABAAABAQCpOpoYpvzvxwFv2jsFZWwooJbhrTLQ52SBHFiqzW+4eLf8dLO/WvCoUolKm1oPemQUainBnTVz+psJ+keIl6AvO62U2otIfKps5j5rRihod5G4wG/iJ/fHD4n5yYEDuKNRCKlXok9fybjSNzO/9Xt/6PPzoKp77Rt9cOdIbJfg6IWcqRGrIekQJo+57Fcs1VB7ZpwBEzsw0IM7kWK1i4T4c4agsiHSK/mXXBOhAb2bz9LIRipsfM9NN4OwvGthckjpsAzVU3DkWSNfZnSPxel+1DrrPxilDW2dFqlqmWFh1C7tVJMiOnMNkpSKN6a09dAzNHhrJGVuxgkAR0Njv6Ct root@allaravel.com

Thêm key SSH vào máy chủ Linux

Để có thể kết nối SSH đến máy chủ Linux, chúng ta phải đưa khóa công khai vào. Có hai cách để thêm key SSH vào máy chủ.

Thêm key SSH khi tạo VPS

Các máy chủ ảo khi được tạo ra đều có phần Add SSH Key, ví dụ dưới đây là thêm key SSH khi tạo một máy chủ ảo ở Vultr:

Nhập key SSH khi tạo VPS trên Vultr

Thêm key SSH trực tiếp vào máy chủ Linux

Đăng nhập vào máy chủ Linux (VPS hoặc máy chủ vật lý) với user root, nếu trên máy chủ có nhiều user khác thì bạn cần thêm key SSH cho các user đó. Sau đó chúng ta tạo thư mục ~\.ssh và tạo file authorized_keys.

#mkdir -p ~/.ssh
#nano ~/.ssh/authorized_keys

Copy nội dung public key vào file authorized_keys, Ctrl + O để save file và Ctrl + X để thoát khỏi nano.

Kiểm tra kết nối SSH đến máy chủ Linux

Thiết lập xong khóa public key cho máy chủ và private key cho SSH client, chúng ta thử kết nối xem sao. Ngay khi kết nối nó sẽ hỏi mật khẩu mà bạn đã đặt ở bước tạo key SSH.

Hỏi mật khẩu khi kết nối SSH đến máy chủ Linux

Ok, như vậy là chúng ta đã kết nối an toàn bằng SSH đến máy chủ Linux. ### Thiết lập chỉ cho kết nối bằng SSH qua user root

Trước hết, bạn phải chắc chắn đã kết nối được đến máy chủ Linux qua SSH, chúng ta sẽ hạn chế đăng nhập bằng root và chỉ cho đăng nhập qua SSH. Thực hiện qua file cấu hình SSH:

#nano /etc/ssh/sshd_config
...
# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
PermitRootLogin without-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

Tìm đến dòng #PermitRootLogin yes và đổi thành PermitRootLogin without-password như ở trên, sau đó thực hiện restart ssh

#systemctl restart  sshd.service

Bạn thoát khỏi kết nối và thử thực hiện kết nối thường không thông qua SSH, sẽ báo lỗi ngay:

[SSH] Server Version OpenSSH_6.6.1
[SSH] Permission denied (password)
[SSH] FAIL: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

[SSH] INFO: DISCONNECT

nhưng thực hiện kết nối bằng SSH thì vẫn được, như vậy kết nối đến máy chủ Linux đã hoàn toàn được bảo mật.


CÁC BÀI VIẾT KHÁC

FirebirD

Đam mê Toán học, Lập trình. Sở thích chia sẻ kiến thức, Phim hài, Bóng đá, Cà phê sáng với bạn bè.

Xử lý thư điện tử với Laravel Mail

Cài đặt Laravel trên Heroku miễn phí

0 Bình luận trong "SSH là gì, sử dụng SSH bảo mật kết nối máy chủ Linux"

Thêm bình luận