Giao thức SSH ra đời đã giải quyết nhu cầu kiểm soát và chỉnh sửa Server một cách tối ưu cho đa số người dùng. Tuy nhiên, mặc dù nghe đến SSH đã nhiều, nhưng không phải ai cũng hiểu rõ SSH là gì và cách thức mà giao thức này hoạt động. Nếu vậy, hãy cùng Wiki.Lanit tìm hiểu về SSH qua bài viết được chia sẻ dưới đây!
Giao thức SSH là gì?
SSH (hay Secure/Socket Shell) là một giao thức mạng phổ biến cung cấp cho người dùng giải pháp an toàn nhất khi truy cập vào một máy tính thông qua mạng không được bảo mật. Không chỉ thế, SSH còn được tích hợp với nhiều bộ tiện ích để người dùng có thể triển khai giao thức SSH một cách dễ dàng.
SSH cung cấp khả năng xác thực mật khẩu mạnh mẽ bằng việc sử dụng cùng lúc một cặp khóa, trong đó có một khóa công khai (public key) và một khóa riêng (private key). Khóa công khai có thể được chia sẻ với các máy tính khác còn khóa riêng tư lại được bảo mật và không tiết lộ cho bất kỳ ai.
Sau khi xác thực mật khẩu thành công, SSH tiếp tục thiết lập phiên làm việc an toàn giữa hai máy tính bằng cách mã hóa dữ liệu được truyền qua kết nối SSH để đảm bảo tính bảo mật và ngăn chặn các hành vi tấn công trái phép trên mạng mở như Internet.
Ngoài ra, SSH cũng được nhiều quản trị viên mạng sử dụng để quản lý hệ thống và ứng dụng từ xa, từ đó cho phép người dùng đăng nhập vào những máy tính khác qua mạng và thực hiện một số tác vụ cơ bản như di chuyển file, thực thi lệnh…
SSH cung cấp giao thức mạng cùng bộ tiện ích để triển khai giao thức mạng đó trên hệ thống. Cụ thể, SSH sẽ sử dụng mô hình client server để kết nối ứng dụng Secure Shell client với SSH server. Việc triển khai SSH thường đi kèm với các giao thức ứng dụng để sử dụng cho quá trình truyền file hay giả lập terminal. Bên cạnh đó, giao thức này còn được ứng dụng trong việc tạo tunnel bảo mật cho một số giao thức ứng dụng như chạy phiên đồ họa X Windows System từ xa. Thông thường, ở thể mặc định, một SSH server sẽ được nghe trên cổng TCP 22.
Giao thức SSH hoạt động như thế nào?
Sau khi tìm hiểu SSH là gì, chúng ta sẽ đến với cách thức hoạt động của giao thức này. Giao thức SSH được sử dụng để thay thế các chương trình đăng nhập không an toàn (rsh, telnet, rlogin…) hay chương trình giả lập terminal. Ngoài ra, giao thức này còn đóng vai trò quan trọng trong việc hỗ trợ chức năng tương tự như đăng nhập, chạy terminal session từ xa hay thay thế các chương trình truyền file như rcp, FTP.
Trong đó, kết nối đến host ở xa trong một phiên terminal là chức năng cơ bản nhất của SSH. Lệnh thực thi sẽ là:
ssh server.example.org
Sau khi thực thi lệnh trên, client sẽ tiến hành kết nối đến server server.example.com thông qua user ID là UserName. Trong lần kết nối đầu tiên giữa host với server, bạn sẽ nhận được public key fingerprint từ host và một lời nhắc:
The authenticity of host 'sample.ssh.com' cannot be established. DSA key fingerprint is 01:23:45:67:89:ab:cd:ef:ff:fe:dc:ba:98:76:54:32:10. Are you sure you want to continue connecting (yes/no)?
Bằng cách chọn yes, phiên làm việc sẽ tiếp tục diễn ra và lúc này, host key sẽ được lưu trữ trong file known_hosts thuộc danh mục ẩn là /.ssh/known_hosts trong home directory của người dùng. Lúc này, client đã có thể kết nối đến server mà không cần phê duyệt thông qua xác thực kết nối từ host key.
Chức năng của giao thức SSH là gì?
Các chức năng của SSH là:
- Cho phép truy cập từ xa vào hệ thống hoặc thiết bị mạng có hỗ trợ SSH một cách an toàn.
- Phiên chuyển file, truyền file tự động một cách an toàn, đảm bảo tính bảo mật.
- Cho phép thực thi các lệnh an toàn trên hệ thống từ xa.
- Hỗ trợ người dùng quản lý các thành phần cơ sở hạ tầng của mạng với cách thức an toàn, tối ưu nhất.
- SSH có khả năng thay thế các chương trình Telnet có độ bảo mật kém.
- Cho phép chương trình, hệ thống truy cập từ xa vào các tài nguyên với cách thức an toàn nhất.
Sử dụng SSH trong những trường hợp nào?
Được biết, SSH hoạt động tại tầng thứ 4 trong mô hình TCP/IP với nhiệm vụ duy trì kết nối giữa client với server. Đặc biệt, giao thức này sẽ đảm bảo quá trình truyền dữ liệu luôn được an toàn thông qua cơ chế mã hóa riêng biệt.
Dưới đây là một số trường hợp bạn nên sử dụng SSH:
#1. Sử dụng trong mọi datacenter
SSH có trong mọi datacenter và thường đi kèm với server Linux, Mac, Unix. Phương thức kết nối SSH được ứng dụng phổ biến trong việc xây dựng giao thức bảo mật mạnh mẽ cho hệ thống máy cục bộ và máy từ xa.
#2. Kết nối hệ thống server
SSH kết nối hệ thống server và cho phép thực hiện các thay đổi, nâng cấp thông qua terminal hoặc một số công cụ nhất định. Trong đó, SSH Key được sử dụng để tạo quy trình đăng nhập tự động vào server, thường thấy trong các backup, script hay công cụ quản lý cấu hình.
#3. Ứng dụng cho hệ thống đăng nhập chỉ một lần duy nhất
SSH mang đến sự thuận tiện và loại bỏ ranh giới trong quá trình làm việc với các tổ chức khác. Cụ thể, SSH key sẽ cung cấp SSO – đăng nhập một lần để hỗ trợ cho việc chuyển đổi qua lại giữa các tài khoản và tối ưu hóa quy trình làm việc.
#4. Mã hóa dữ liệu
Mọi SSH traffic đều được mã hóa để đảm bảo bảo mật tuyệt đối. Điều này mang đến sự an toàn tối đa trong quá trình chuyển file, nhập lệnh, duyệt web… của người dùng.
#5. Xác thực thông tin
Mặc dù người dùng vẫn có thể sử dụng SSH với user ID và password để làm thông tin xác thực, nhưng các máy cục bộ và máy từ xa sẽ có một cách thức xác thực riêng biệt với nhau thông qua public key pair. Cụ thể. mỗi session cần có hai public key pair để xác thực kết nối qua lại giữa máy cục bộ – máy từ xa.
Đánh giá ưu và nhược điểm của SSH là gì?
Ưu điểm
Vậy, ưu điểm của SSH là gì? Ưu điểm nổi bật của SSH là khả năng mã hóa dữ liệu để phòng tránh rủi ro liên quan đến bảo mật trong quá trình truyền dữ liệu qua mạng mở như Internet. Như vậy, những kẻ tấn công không thể hiểu và đánh cắp được thông tin đăng nhập của bạn. Đồng thời, giao thức này cũng được ứng dụng rộng rãi khi cho phép người dùng tạo nên các giao thức truyền dữ liệu khác như FTP.
Cụ thể, SSH sẽ bảo vệ người dùng trước những rủi ro đến từ:
- IP source routing
- DNS giả mạo
- Nghe lén dữ liệu truyền đi
- Giả mạo địa chỉ IP
- Thao túng dữ liệu tại routers
Nhược điểm của SSH là gì?
Bên cạnh ưu điểm trên, SSH vẫn còn tồn tại một số nhược điểm như:
- Các key được lưu trữ có thể tích tụ và tăng dần theo thời gian. Vì vậy, doanh nghiệp cần xây dựng được quy trình, cách thức quản lý host key hiệu quả.
- Việc đưa ra lệnh SSH có chứa user ID và Password để xác thực có thể mang lại một số lợi ích nhất định, tuy nhiên nó lại vô tình tiềm ẩn nguy cơ lộ thông tin khiến những kẻ tấn công có cơ hội truy cập vào mã nguồn của bạn.
- Mối đe dọa lớn nhất của SSH là khả năng quản lý key còn nhiều điểm hạn chế. Điều này có thể khiến tổ chức mất quyền kiểm soát người truy cập vào tài nguyên nếu không xây dựng được phương pháp quản lý phù hợp, nhất là trong quy trình app-to-app tự động.
Các kỹ thuật mã hóa khác
Khả năng mã hóa giúp quá trình truyền tải dữ liệu giữa host với client diễn ra nhanh chóng, an toàn và hiệu quả hơn:
Symmetrical encryption
Symmetrical encryption là kỹ thuật mã hóa mà trong đó chỉ sử dụng duy nhất một secret key. Secret key này sẽ đảm nhận nhiệm vụ mã hóa thông tin và cũng đồng thời giải mã thông tin ở trên host lẫn client. Các thực thể muốn giao tiếp qua Symmetrical encryption phải trao đổi secret key để sử dụng trong quá trình giải mã.
Hiện nay, có 2 thuật toán Symmetrical encryption phổ biến là Block algorithms và Stream algorithms.
Asymmetrical encryption
Asymmetrical encryption (hay public-key cryptography) là quá trình sử dụng 2 khóa, gồm một public key (khóa công khai) và một private key (khóa riêng tư) để mã hóa và giải mã dữ liệu, từ đó giúp cho quá trình truyền dữ liệu được diễn ra một cách an toàn, tránh được các truy cập hoặc sử dụng đáng ngờ.
Public key được cung cấp cho mọi người và bất kỳ ai cũng có thể sử dụng. Tuy nhiên, dữ liệu đã mã hóa chỉ có thể được giải mã bởi người nhận bằng private key. Như vậy, Asymmetrical encryption sẽ thiết lập nên kết nối an toàn nhất khi giao tiếp qua không gian mạng không an toàn như internet.
Hashing
Nếu như asymmetrical encryption cung cấp quy trình 2 bước để mã hóa – giải mã tin nhắn, thì Hashing sẽ đảm nhận nhiệm vụ cô đọng tin nhắn thành giá trị có độ dài nhất định không thay đổi được – hay còn được gọi là hàm băm. Trong hashing có 2 thuật toán phổ biến nhất là MD5 và SHA-1.
Hash sẽ kiểm tra tính toàn vẹn của dữ liệu – tức là dữ liệu không bị thay đổi bởi tác nhân khác, từ đó xác minh tính xác thực trong quá trình giao tiếp, truyền dữ liệu.
Các bản phân phối của SSH
Phần mềm SSH thường đi kèm với hầu hết các bản phân phối Macintosh OS X, Linux, Sun Solaris, OpenBSD và những hệ điều hành phát triển dựa trên nền tảng Unix. Hiện nay, Microsoft Windows cung cấp rất nhiều client, server SSH và bạn có thể tìm thấy nó ở phần lớn các nền tảng hiện nay như Commodore Amiga, PalmOS…
Các client SSH lấy từ Unix cũ thường được biết đến với tên gọi là r-commands r: rlogin (đăng nhập từ xa), Rv (remote shell), RCp (sao chép từ xa),… Tuy nhiên, trên thực tế, client SSH được xem như sự thay thế hoàn hảo cho r-commands cũ nên bạn hãy chuyển sang dùng SSH thay vì nền tảng cũ này để đảm bảo an toàn tối đa.
PuTTY được viết dựa trên mã nguồn mở SSH với mục đích ban đầu là khởi chạy trên hệ điều hành Windows. Thế nhưng, PuTTY đã được ứng dụng trên nhiều hệ điều hành khác và được xem như một trong những sự lựa chọn tuyệt vời để người dùng có thể triển khai SSH hiện nay.
Nhìn chung, các triển khai SSH thường sẽ đi kèm với 3 tiện ích là SSH, SCP và Slogin. Những tiện ích này được đánh giá cao hơn so với các công cụ tiền nhiệm của Unix như rlogin, rsh, rcp…
So sánh giữa giao thức SSH với giao thức SSL/TLS & Telnet
Tiêu chí | SSH | SSL/TLS | Telnet |
Vị trí chạy Port | Port 22 | Port 22 | Port 23 |
Độ an toàn | Rất an toàn | Kém an toàn | Kém an toàn |
Cơ chế mã hóa | Public Key | Public Key | Truyền văn bản |
Hệ thống phù hợp | Public Network | Public Network | Private Network |
Khả năng tương thích | Tất cả hệ điều hành | Tất cả hệ điều hành | Linux và Windows |
Chức năng | Kiểm soát, điều khiển Server từ xa, liên kết host với client | Kiểm soát, điều khiển Server từ xa | Kiểm soát, điều khiển Server từ xa |
Một số câu lệnh SSH
Một số câu lệnh SSH cơ bản là:
Lệnh gọi chương trình và tên host hay địa chỉ IP:
ssh server.example.org
Lệnh này có khả năng kết nối với host đích server.example.org, sau đó host đích sẽ yêu cầu nhập password tương ứng cho user ID của client đang chạy. Tuy nhiên, trong một số trường hợp, user ID cho host từ xa khác và người dùng phải gửi lệnh như sau:
ssh [email protected]
Bên cạnh đó, SSH còn được sử dụng trong command line để gửi lệnh đến host từ xa rồi thoát với lệnh:
ssh example.org ls
Sau khi nhập lệnh trên, lệnh Is sẽ được thực thi trên Unix để liệt kê nội dung trong thư mục hiện tại của host từ xa. Như vậy, SSH có thể thực hiện nhiều lệnh khác nhau cùng lúc trên một host từ xa như lệnh khởi tạo server instance, cho phép truy cập của máy từ xa vào tài nguyên, terminate server sau khi truy cập…
Ngoài ra, còn có một số lệnh khác được sử dụng với chức năng bổ sung như:
- sshd: Khởi tạo SSH server để đợi yêu cầu kết nối SSH, đồng thời cho phép những hệ thống được cấp quyền kết nối đến localhost.
- ssh-keygen: Chương trình tạo key pair, được sử dụng trong việc tạo quy trình tự động hóa trong đăng nhập, xác thực host hay triển khai SSO.
- ssh-copy-id: Được sử dụng để copy, cài đặt cũng như cấu hình SSH key trên server để tạo quy trình đăng nhập tự động mà không cần password, SSO.
- ssh-agent: Được sử dụng để theo dõi các key nhận dạng cùng passphrases của chúng. Thông qua đó, người dùng có thể sử dụng identity key để đăng nhập và bỏ qua password hay passphrase.
- ssh-add: Được dùng để thêm key vào SSH authentication agent và thường kết hợp với ssh-add để hỗ trợ cho quá trình triển khai SSO.
- scp: Đây là phiên bản an toàn hơn so với rcp và nó cho phép sao chép file giữa các máy tính khác nhau.
- sftp: Chương trình sao chép file an toàn hơn so với ftp.
SSH Tunneling
SSH Tunneling (hay SSH port forwarding – chuyển tiếp cổng SSH) là một kỹ thuật mà người dùng có thể mở một tunnel an toàn giữa localhost với remote host. Kỹ thuật này sử dụng trong quá trình chuyển lưu mạng đến cổng hoặc một địa chỉ IP khác để các ứng dụng nằm trên localhost có thể truy cập đến remote host một cách tối ưu nhất.
Mặc dù đây được xem như công cụ hỗ trợ mạnh mẽ của các admin IT, nhưng những kẻ tấn công vẫn có thể lợi dụng kỹ thuật này để chuyển firewall. Vì thế, bạn nên kết hợp sử dụng thêm công cụ ngăn chặn SSH tunnel trái phép qua firewall.
FAQS( Câu Hỏi Thường Gặp)
SSH có thể được sử dụng trên hệ điều hành nào?
SSH có thể được sử dụng trên hầu hết các hệ điều hành, bao gồm Linux, macOS, và Windows. Trên Windows, bạn có thể sử dụng các phần mềm như PuTTY để kết nối bằng SSH.
Có cách nào để kiểm tra độ bảo mật của kết nối SSH?
Để kiểm tra tính an toàn của kết nối SSH, bạn có thể sử dụng các công cụ như ssh-audit hoặc sslyze để kiểm tra cài đặt SSH trên máy chủ. Điều này giúp bạn xác định các cài đặt không an toàn và khắc phục chúng.
Làm cách nào để đổi mật khẩu đăng nhập SSH trên máy chủ?
Để đổi mật khẩu đăng nhập SSH, bạn có thể sử dụng lệnh passwd trên máy chủ. Lệnh này cho phép bạn đặt lại mật khẩu của người dùng SSH.
Làm cách nào để thay đổi cổng SSH mặc định?
Cổng SSH mặc định là 22. Tuy nhiên, để tăng cường bảo mật, bạn có thể thay đổi cổng này trong tệp cấu hình SSH (sshd_config) trên máy chủ và sau đó khai báo cổng mới trong tường lửa để cho phép kết nối vào cổng đó.
Lời kết
Như vậy, bài viết trên đã giúp bạn nắm rõ SSH là gì. Có thể nói rằng, SSH là một trong những giao thức bảo mật an toàn và tốt nhất hiện nay. Vậy nên, các doanh nghiệp có thể nghiên cứu và triển khai cho hệ thống nếu như có đủ điều kiện.
Comments are closed.