Thứ Hai, 8 tháng 10, 2012

[8-10-2012] SSH

Một số thuật ngữ mạng
Local computer : là cái máy tính bạn đăng nhập vào và chạy chương trình ssh client
Remote computer (remote host, remote mechine): là cái máy thứ hai, bạn liên lạc với máy này từ máy local. Các máy remote chạy ssh server và liên hệ với local qua SSH. Các máy local và remote có thể là các máy giống nhau.
Local user: người dùng login vào máy local computer.
Remote user: người dùng login vào máy remote computer.
Server: Là một chương trình SSH server.
Server mechine: Là một máy tính chạy chương trình SSH server
Client: một chương trình SSH client.
Client: một máy tính chạy SSH client.

Khi bạn login client để ssh đến remote thì client sẽ xác thực bạn với kết nối được mã hóa, có nghĩa là username, password bạn type sẽ được mã hóa trước khi bạn rời khỏi máy local. SSH server sau đó cho bạn đi vào, toàn bộ phần sau của phiên giao dịch này sẽ được mã hóa khi nó đi giữa client và server. Bởi việc mã hóa hầu như là "trong suốt" nên bạn sẽ không nhận thấy quá nhiều sự khác biệt giữa telnet và ssh.

1.4.2 Secure File Transfer

Giả sử bạn có 2 tài khoản trên 2 máy trong môi trường internet, me@firstaccount.com và metoo@secondaccount.com, bạn muốn truyền một file đi từ tài khoản thứ nhất đến tài khoản thứ hai (me-->metoo). File đó chứa những thông tin quan trọng, tuy nhiên nó  không tránh khỏi những con mắt rình mò!!! Những phương tiện truyền file truyền thống, ví dụ như ftp, rcp, và mail nữa, không cung cấp một giải pháp an toàn. Người thứ ba có thể nghe lén và đọc các gói tin đi qua mạng. Để giải quyết vấn đề này, bạn có thể mã hóa file trên firstaccount.com với chương trình Pretty Good Privacy (PGP), thực hiện truyền file đã mã hóa và giải mã file trên secondaccount.com, nhưng nó như là một công việc buồn tẻ và không trong suốt với người dùng.

Với việc sử dụng SSH, file có thể được truyền một cách an toàn giữa các máy với chỉ một lệnh. Nếu file đó có tên là myfile , command thực thi trên firstacount.com là
$ scp myfile metoo@secondaccount.com

Khi truyền file sử dụng scp, file tự động được mã hóa và rời firstaccount.com và được mã hóa khi đến secondaccount.com.

1.4.3 Secure Remote Command Excution

Giả sử bạn là một người quản trị hệ thống, bạn cần chạy một command trên nhiều máy. Bạn muốn nhìn các active processes của 4 users trên 4 máy khác nhau - grape, lemon, kiwi melon - chúng nằm chung mạng lan và sử dụng command /usr/ucb/w . Bạn có thể sử dụng rsh, cụ thể là rsh daemon, rshd  được cấu hình trên các máy remote

  #!bin/bash                                                    Đây là shell script
 for machine in grape lemon kiwi melon           Duyệt các máy
do
rsh $machine /usr/ucb/w                             Yêu cầu chương trình /usr/ucb/w để liệt kê processes đang chạy
done

Cách thức trên vẫn hoạt động nhưng nó không an toàn. Kết quả cảu /usr/ucb/w  được truyền qua mạng dưới dạng plain text. Trong trường hợp những thông tin trên nhạy cảm thì đây là điều không chấp nhận được. Tồi tệ hơn rằng cơ chế mã hóa rsh  là cực kì kém an toàn và dễ dàng bị phá hoại. Ta sử dụng ssh để thay thế
#!/bin/sh
for machine in grape lemon kiwi melon
do
ssh $machine /usr/ucb/w            Note “ssh” instead of “rsh”
done

Về cơ bản cú pháp nó là giống nhau, kết quả cũng vậy. Nhưng command và kết quả của nó đã được mã hóa và truyền qua mạng, đay là một phương thức xác thực mạnh mẽ khi kết nối với remote.

1.4.4 Key and Agents

Giả sử bạn có các tài khoản trên nhiều máy tính khác nhau trên mạng. Với lí do an toàn, bạn muốn có các tài khoản thì có các mật khẩu khác nhau, nhưng việc nhớ mật khẩu cũng là điều khó khăn. Chắc hẳn bạn đã nhiều lần đánh sai password hay bạn đã từng password thay cho việc nhập username, trên nhiều hệ thống những lỗi đó của bạn có thể lưu lại trong log file và password sẽ bị lộ dưới dạng plaintext. Vậy có cơ chế nhận dạng được chính chúng ta và truy cập đến các tài khoản một cách an toàn mà không cần tiếp tục gõ passwords.

SSH có các cơ chế xác thực phong phú, và an toàn nhất là dựa trên keys hơn là passwords. keys để nhận dạng người dùng SSH, key được giữ mã hóa, nó chỉ có thể sử dụng sau khi nhập pass-phrase để giải mã nó.

Sử dụng các keys đi  cùng với chương trình gọi là authentication agent, SSH có thể xác thực bạn đến tất cả các tài khoản máy tính của bạn một cách an toàn mà không cần yêu cầu bạn nhớ passwords và enter chúng. Nó làm việc như sau
  1. Đặt các file đặc biệt thường được gọi là public key files vào trong các tài khoản ở các máy remote. Enable các SSH clients (ssh, scp) để truy nhập đến remote.
  2. Trên máy local, gọi chương trình ssh-agent, chương trình này chạy trong background.
  3. Chọn key hoặc các key bạn sẽ cần trong quá trình login.
  4. Nạp các keys vào bên trong agent với ssh-add. Nó yêu cầu sự hiểu biết về passphrase.
Yeah! Bạn có một ssh-agent  chạy trên máy local của bạn, và giữ các keys bí mật trong bộ nhớ. Say goodbye với việc nhớ và nhập passwords.

1.4.5 Access Control

Giả sử bạn cho phép một người khác sử dụng máy của bạn nhưng với mục đich rõ ràng. Ví dụ khi bạn đi công tác, bạn muốn cô thư kí check mail của bạn nhưng không được làm bất cứ gì khác trên tài khoản của bạn. Với SSH, bạn có thể cho phép cô thư kí truy cập tài khoản của bạn nhưng không được tiết lộ hay thay đổi password của bạn và chỉ có quyền chạy mail.

1.4.6 Port Forwarding

SSH có thể gia tăng tính bảo một cho một số chương trình ứng dụng dựa trên TCP/IP ví dụ như telnet, ftp và hệ thống X-Window. Một kĩ thuật được gọi là port forwarding hay tunneling tái định tuyến lại kết nối TCP/IP đi qua kết nối SSH mã hóa 2 đầu. Port forwarding có thể cho các ứng dụng qua các firewalls mạng.
Giả sử bạn login vào một máy ở xa nơi làm việc và muốn truy nhập server tin tức nội bộ của công tin bạn , news.yoyodyne.com. Mạng Yoyodyne được kết nối với internet, nhưng firewall mạng blocks các kết nối đến các cổng quan trọng, ví dụ port 119, port tin tức. Firewall cho phép kết nối SSH. SSH có thể thiết lập một secure tunnel trên một port tùy ý, ví dụ port 3002 nằm trên máy local đến port tin tức trên remote host, command có thể : 
$ ssh -L 3002:localhost:119 news.yoyodyne.com

Có thể phát biểu như sau "SSH làm ơn thiết lâp một kết nối an toàn từ TCP port 3002 trên máy local đên TCP port 19, port tin tức trên news.yoyodyne.com". Việc còn lại cấu hình các chương trình tiện ích để đọc tin tức. Các tin tức được đi trên tunnel hoàn toàn được mã hóa.


Không có nhận xét nào:

Đăng nhận xét