5. Ý nghĩa thực tiễn của đề tài
1.6 Giao thức SSH
1.6.1 Tổng quan về giao thức SSH
SSH (Secure Shell) là một giao thức mạng dùng trong việc giao tiếp an tồn, đăng nhập từ xa qua dịng lệnh, và các dịch vụ mạng an toàn khác giữa hai máy tính được kết nối với nhau thơng qua SSH Client và SSH Server.
SSH phiên bản đầu tiên được phát triển và đưa vào sử dụng từ năm 1995 nhằm thay thế giao thức các giao thức khơng an tồn khác của UNIX như rlogin, rsh, rcp. Phiên bản tiếp theo, SSH2 được đưa ra vào năm 1997 nhằm khắc phục các lỗi ở phiên bản SSH1 và cải thiện tính năng gửi file.
Các chức năng chính mà SSH mang lại là: Dịng lệnh an tồn (Secure command-shell) Truyền tải file an toàn (Secure file transfer) Chuyển tiếp cổng (Port forwarding)
Trong đó, chức năng được sử dụng nhiều nhất chính là áp dụng vào việc xác hỗ trợ đăng nhập từ xa và thực thi dịng lệnh an tồn. Nhờ sự thuận tiện cũng như khả năng bảo mật của SSH mà ngày nay nó được sử dụng rợng rãi trong công việc quản trị hệ thống Linux, Unix.
Về loại xác thực của SSH có thể chia làm hai loại như sau:
Xác thực người dùng: Định danh người dùng đăng nhập. Hệ thống sẽ xác nhận truy cập chỉ được áp dụng cho người dùng xác định trước và chặn những truy cập bất hợp pháp. SSH cung cấp 2 phương thức xác thực người dùng gồm
- Xác thực sử dụng mật khẩu: Trong phương thức xác thực này, phía server sẽ yêu cầu người dùng cung cấp thông tin về tên tài khoản và mật khẩu tương ứng để có thể xác định quyền truy cập.
- Xác thực sử dụng public key: Đây là mợt trong những phương thức xác thực an tồn nhất hiện nay bằng việc sử dụng cặp khóa đã được tạo ra trước đó – mợt khóa cơng khai và mợt khóa riêng. Mỗi khóa cơng khai thường được tạo ra với độ dài khoản từ 1024 đến 2048 bits và được sao chép lên SSH server khi tạo ra. Khi một người dùng sử dụng SSH client để kết nối tới SSH server, SSH client sẽ sử dụng khóa riêng của mình để được SSH server xác thực.
Xác thực “Host”: Đây là q trình định danh 1 host hay cịn gọi là 1 máy chủ SSH với người dùng bằng việc sử dụng “host key” để mơ tả định danh của mình (cách hoạt đợng cũng tương tự như việc sử dụng khóa cơng khai đã mơ tả ở trên). Mục đích của việc xác thức này là để chắc chắn rằng, SSH client đang kết nối tới một SSH server đã được biết trước (tin tưởng). Kiểu xác thức này chống lại tấn công Man-in-the- Middle.
1.6.2 Sử dụng SSH trong việc quản trị hệ thống Linux
Với sự đơn giản nhưng vơ cùng mạnh mẽ về đợ an tồn, ngày nay giao thức SSH là mợt trong những phương thức chính mà chúng ta sử dụng để quản trị các hệ thống máy chủ Linux, Unix. Một trong những ứng dụng SSH server phổ biến nhất hiện nay đó chính là OpenSSH-Server có mặt hầu hết trên các hệ điều hành Linux như RedHat, CentOS, Debian, Ubuntu,...Về SSH client thì khá đa dạng, các phần mềm SSH client phổ biến hay được người quản trị sử dụng là Putty, SecureCRT, Salt,...
Giao thức SSH ngoài việc áp dụng cho việc quản trị máy chủ từ xa mợt cách thuận tiện. Nó có là giải pháp được nhiều người quản trị hệ thống áp dụng cho việc xác thực tài khoản các ứng dụng như autossh, rsync,...Các công cụ này hoạt động một cách tự động sau khi đã được cấu hình xong, vì thế đợ an toàn khi giao tiếp giữa các host là vấn đề được đặt lên hàng đầu và được giải quyết tốt khi sử dụng SSH.
1.6.3 Thư viện nguồn mở fabric
Fabric là một thư viện nguồn mở được viết bằng ngôn ngữ Python nhằm hỗ trợ cho việc tinh giản cách sử dụng của giao thức SSH trong các ứng dụng mạng. Thông thường để thao tác từ xa qua SSH bằng các đoạn script, chúng ta cần phải viết rất nhiều đoạn xử lý về kết nối, xử lý sau đăng nhập, xử lý ngoại lệ,...Với Fabric các công việc này được tinh giản đi rất nhiều. Fabric cung cấp cách thực thi dịng lệnh dễ dàng với hai chế đợ là “local” thực hiện trên máy nguồn và “run” thực hiện trên máy chủ SSH ở xa.
Chính vì những ưu điểm của Fabric, ngày nay thư viện này là một trong những công cụ đắc lực cho người quản trị hệ thống. Fabric thường được sử dụng trong việc tự đợng hóa q trình deploy mợt hệ thống, hay mợt ứng dụng nào đó mà cần thực thi từ xa, với nhiều điểm đích đến.
Về cách thức lập trình, Farbic có thể được tích hợp dưới dạng module mở rợng, chúng ta có thể áp dụng vào ứng dụng của mình mợt cách dễ dàng như sau:
from fabric.api import run def get_host_type():
Đoạn mã trên là mợt ví dụ về cách thức lấy thơng tin OS đơn giản của máy tính cục bợ hoặc từ xa. Để thực thi đoạn script này chúng ta sẽ sử dụng lệnh fab :
$ fab -H localhost,my.remotehost get_host_type [localhost] run: uname -s
[localhost] out: Example [linuxbox] run: uname -s [linuxbox] out: Linux Done.
Disconnecting from localhost... done. Disconnecting from my.remotehost... done.
Bên trên là mợt ví dụ đơn giản nhất nhằm giới thiệu về Fabric. Để tìm hiểu chi tiết hơn về thư viên này chúng ta có thể xem tại link http://docs.fabfile.org/en/1.8/
CHƯƠNG 2 NGÔN NGỮ PHP, PYTHON VÀ PHƯƠNG PHÁP LẬP TRÌNH HỆ THỐNG