
Using Open Ssh
trang này đã được đọc lần
Tài liệu tham khảo
- Using OpenSSH to Encrypt Network Traffic between Two Hosts
- Deutsch Unix/Linux Gruppen (DUG)
- Information Bibliothek Frei Universität Berlin (FU Berlin)
I Giới thiệu.
Open SSH là một chương trình mã nguồn mở (Open Source) được sử dụng để Encrypt (mã hoá) các giao
dịch giữa các Host với nhau bằng cách sử dụng Secure Shell (SSH). Nó là một sự thay thế an toàn cho
những chương trình được sử dụng để kết nối như: Telnet, rlogin, rsh...Bởi nó luôn luôn Encrypt tất cả các
giao dịch, ẩn đi, che dấu User và Password được sử dụng cho những phiên đăng nhập từ xa. Sau khi phiên
đăng nhập được thực hiện, nó sẽ tiếp tục Encrypt tất cả những dữ liệu giao dịch giữa 2 Host.
Dự án OpenSSH được phát triển dựa trên nền tảng của dự án Open BSD (một OS thuộc họ Unix). Nó được
thiết kế để sử dụng những thuật toán mã hoá mạnh để nâng cao tính an toàn và ngăn chặn sự phá hoại của
các Hacker. Mặc dù nó được xây dựng và phát triển bởi nền tảng OpenBSD. Nhưng nó cũng có khả năng
tương thích vag có thể hoạt động trên hầu hết các OS thuộc dòng họ Unix: Linux, HP-UX, AIX, Irix, SCO,
MacOS X, Cygwin, Digital Unix/Tru64/OSF, SNI/Reliant Unix, NeXT, Solaris...
OpenSSH không phải là một chương trình. Nó là một bộ các chương trình kết nối an toàn:
- OpenSSH Client (ssh): Chương trình được sử dụng cho các đăng nhập từ xa. Với sự an toàn và Encrypt
trong mỗi phiên đăng nhập ở mức độ cao. Nó là sự thay thế an toàn cho: rlogin và telnet đã tỏ ra lỗi thời và
kém an toàn.
- Secure Copy Program (scp): Được sử dụng cho việc Copy file từ xa, Copy các file từ các Host khác nhau
trên Internet. Nó hỗ trợ User và Password.
- Secure File Transfer Program (sftp): Được sử dụng để phục các yêu cầu FTP một cách an toàn.
- OpenSSH Deadmon (shhd): Đặc OpenSSH chạy ở chế độ Deadmon trên các hệ thống Unix.
....
Trên đây là những Tools chính không thể thiếu trong bộ OpenSSH. Ngoài ra còn rất nhiều Tools, Plugin,
Addin nữa...
II Cài đặt
Để lấy OpenSSH bạn lên Homepage chính của nó:
http://www.openssh.org/
Down một Version phù hợp với hệ thống của mình. Tôi dùng Linux lên tôi sẽ Down gói *.rpm. Sau đó phát
lệnh

root@domain.com#: rpm -Uvh *.rpm
Nếu bạn sử dụng các hệ thống khác thì việc cài đặt nó cũng tương tự. Bạn Down gói phù hợp với hệ thống
của mình. Nó có thể là *.tar, *.tar.gz, *.gz...etc. Bung nén nó vào một thư mục.
root@domain.com #: ./configure
root@domain.com #: make
root@domain.com #: make install
Tiếp đó theo làm theo các chỉ dẫn của Script. Công việc cài đặt không mấy khó khăn. Chúng ta hãy dành
thời gian và công sức cho công việc cấu hình.
IV Các tính nổI bật của Open SSH
Open SSH cung cấp khá nhiều tính năng để giúp cho việc truyền thông giữa 2 Host trở lên an toàn. Dưới
đây là một số tính nổi bật:
1) Khả năng mã hoá mạnh bởi việc sử dụng chuẩn mã hoá 3 DES và Blowfish: Cả 2 chuẩn mã hoá trên đều
đuợc cung cấp miễn phí và sử dụng rộng rãi ở nhiều nước trên thế giới. 3DES cung cấp khả năng mã hoá
chứng thực thời gian. Blowfish cung cấp khả năng mã hoá nhanh hơn. Cũng như những chuẩn mã hoá khác
cả 2 chuẩn nêu trên đều cung cấp khả năng mã hoá các dữ trước khi nó được đưa vào đường truyền một
cách an toàn.
2) Khả năng chứng thực mạnh bởi việc sử dụng các cơ chế Public Key, OPTs (One Time Password),
Keberos: Có tác dụng bảo vệ chống lại tính dễ tổn thương trong quá trình chứng thực bởi việc khai thác và
sử dụng các kỹ thuật như: IP Spoof, DNS Spoof, Fake Router…Có 4 phương pháp chứng thực được Open
SSH sử dụng :
- Chỉ chứng thực Public Key
- Sự chứng thực Host bởi việc sử dụng Public Key kết hợp với .rhost
- Sự chứng thực dựa trên OPTs kết hợp với s/key
- Sự chứng thực dựa trên cơ chế Keberos
3) Mã hoá giao thức X11 cho việc sử dụng X Windows: Mã hoá dữ liệu trong quá trình sử dụng X Windows
giữa 2 Host. Được sử dụng để chống lại những cuộc tấn công từ xa nhằm vào xterm như Snooping,
Hjacking…
4) Mã hoá cho quá trình chuyển đổi cổng (Port Forwarding): Cho phép quá trình chuyển đổi các Port TCP/IP
tới một hệ thống khác thông qua một kênh được mã hoá. Nó được sử dụng cho những giao thức Internet
chuẩn không cung cấp khả năng mã hoá dữ liệu trên đường truyền như: SMTP, POP, FTP, Telnet…
5) Đại diện chuyển tiếp cho những đăng nhập vào các mạng đơn: Một Key chứng thực của người dùng có
thể và thường được lưu giữ trên PC của họ, nó có thể trở thành một trạm đại diện chứng thực. Khi người sử
dụng hệ thống truy cập từ một hệ thống mạng khác. Kết nối của họ sẽ được chuyển tới cho trạm đại diện
chứng thực này. Nó có tác dụng cho phép người sử dụng truy cập đến hệ thống của bạn một cách an toàn từ
bất kỳ hệ thống nào.

6) Nén dữ liệu: Cung cấp khả năng nén dữ liệu một cách an toàn. Nó rất có ý nghĩa trên những hệ thống
mạng không được nhanh.
7) Chứng thực chung cho Keberos và Andrew File System bằng cách sử dụng Ticket: Những người sử dụng
Keberos và AFS sẽ được cung cấp một Password chung để sử dụng và truy cập 2 dịch vụ trên trong một
thời gian nhất định.
V Nguyên lý hoạt động của Open SSH
Trước hết chúng ta cùng tìm hiểu về cơ chế chứng thực cho các lệnh *r (rlogin, rsh, rcp). Khi sử dụng rlogin,
điều kiện đầu tiên là người dùng đó phải có một Acc trên hệ thống mà họ muốn đăng nhập từ xa đó. Chẳng
hạn trên hệ thống của tôi có Acc binhnx2000. Nếu tôi Log vào trên hệ thống cục bộ khi tôi kết nối tới một
Host từ xa. Sẽ không có bất cứ yêu cầu hỏi Password nào khi tôi truy nhập vào hệ thống từ xa. Đơn giản bởi
Acc binhnx2000 của tôi đã được xác nhận bởi file .rhost đươc đặt trong thư mục /home/binhnx2000 trên hệ
thống từ xa.
File .rhost chứa đựng Hostname và Username yêu cầu cho các Acc cần để sử dụng đăng nhập tới hệ thống.
Chẳng hạn Hostname của tôi là vnzone.net và Username của tôi là binhnx2000. Để truy cập đến hệ thống
không cần Passowd thì các thông tin về tôi trong file .rhost có dạng như sau:
Hostname Username
Đối với Hostname phải là Hostname đầy đủ của hệ thống. Đối với User phải là các User hợp lệ đang tồn tại
trên hệ thống mà bạn muốn định nghĩa.
Một ví dụ cụ thể: nếu tôi muốn sử dụng rlogin. Thì Admin phải tạo một file .rhost trong /home/binhnx2000 với
nội dung:
domain.com binhnx2000
Mọi việc xong xuôi! Bây giờ khi tôi muốn đăng nhập vào hệ thống tôi chỉ việc phát lệnh:
binhnx2000@domain.com$: rlogin -l binhnx2000 vnzone.net
Hạn chế của giao thức này là các dữ liệu thông tin đi đến Host không hề được mã hoá. Nó rất có thể bị đánh
hơi được bởi các Sniffer. Đặc biệt là rất dễ bị tổn thương bởi các cuộc tấn công: IP Spoof, DNS Spoof,
Router Spoof…
Vì những tính dễ tổn thương trên các Security khuyến cáo bạn nên vô hiệu hoá các r Service (rlogin, rsh…).
Thông thường thì trên các hệ thống Linux cấu hình tổng thể hoạt động chung cho các Service được cấu hình
trong file /etc/xinet.d , để vô hiệu hoá các r Service:
- Bạn dùng vi, emacs…hay bất cứ trình soạn thảo văn bản nào mà bạn muốn để mở /etc/init.d/xinet.d
- Tìm đoạn “service login“ xoá chúng đi. Ghi lại mọi sự thay đổi và thoát trình soạn thảo.
- Khởi động lại xinetd.d Deadmon : /etc/init.d/xinet.d restart
- Nếu có thể bạn hãy vô hiệu hoá luôn Telnet Service bằng cách trên. Sau đó thay thế chúng bằng Open
SSH.
Chúng ta đã tìm hiểu qua nguyên lý hoạt động của r Service. Bây giờ chúng ta sẽ tìm hiểu về nguyên lý hoạt

động của Open SSH. Điều đầu tiên mà tôi có thể khẳng định với bạn là : Open SSH cung cấp một cơ chế
chứng thực khá an toàn bởi việc sử dụng những Public Key.
Các Public Key lại tiếp tục sử dụng các Public Key hay Private Key cho sự chứng thực an toàn. Các Private
Key chỉ được sử dụng bởi người dung, còn Public Key có thể được sử dụng bởi mọi người .
Muốn Open SSH tạo ra các DSA Private/Public Key bạn dùng lệnh:
shh-keygen -d
Các DSA Private Key thường được lưu trữ ở /root/.ssh/id_dsa file. Còn các DSA Public Key thường được lưu
trữ ở /root/.ssh/id_dsa.pub … Các Public Key cần phải được đổi tên và Copy đến thư mục thích hợp trên hệ
thống ở xa muốn sử dụng Open SSH.
Dưới đây liệt kê vị trí cũng những Public Key mà Open SSH sử dụng trong quá trình chứng thực:
SSH Version 2 Keys Local System Default Location Remote Host Location
Private Key $HOME/.ssh/id_dsa
Public Key $HOME/.ssh/id_dsa.pub $HOME/.ssh/authorized_keys2
SSH Version 1 Key Local System Default Location Remote Host Location
Private Key $HOME/.ssh/identity
Public Key $HOME/.ssh/identity.pub $HOME/.ssh/authorized_keys
Dưới đây là những file quan trọng được Open SSH sử dụng để xác định những Public Key:
- $HOME/.ssh/known_hosts: Danh sách các Public Key cho tất cả các Host có User đăng nhập. Thường thì
các danh sách các Host Public Key được liệt kê ở /etc/ssh_known_hosts
- /etc/ssh_known_hosts: Chứa danh sách các RSA Generated Public Key cho tất cả các Host mà hệ thống
được biết. Bất cứ Host nào muốn đăng nhập đến hệ thống đều phải có Public Key được liệt kê trong file này.
Admin trên hệ thống của bạn cần phải liệt kê các Public Key của những người sử dụng trong hệ thống mạng
đó
- /etc/ssh_known_hosts2: Cũng như ssh_know_host nó chứa danh sách các DSA Generated Public Key cho
tất cả các Host mà hệ thống biết.
- $HOME/.ssh/config: File cấu hình cho mỗi người sử dụng. Trong một số hệ thống lớn, mỗi người sử dụng
sẽ có một file cấu hình đặc biệt. Nó sẽ được sử dụng bởi SSH Client.
- /etc/ssh/ssh_config: File cấu hình cho toàn bộ hệ thống. Nó cũng có thể được sử dụng cho những người sử
dụng không có File cấu hình hay tạm thời chưa có file cấu hình. Nó tự động được khởi tạo khi cài đặt Open
SSH lần đầu và được gọi để sử dụng mỗi khi Open SSH Daemon chạy.
- $HOME/.ssh/rc: Liệt kê những lệnh đã được thực thi trong suốt quá trình người dùng đăng nhập, những
lệnh này được thực thi trước khi Shell của người dùng được mở.

- /etc/sshrc: Tương tự như /.ssh/rc nó được dùng trên những hệ thống lớn.
VI Sử dụng Open SSH để đảm bảo an toàn dữ liệu trên một hệ thống mạng không an toàn
Trước khi sử dụng Open SSH bạn phải chắc chắn rằng hệ thống cục bộ của bạn và hệ thống ở xa có cài đặt
Open SSH.
Lệnh ssh-keygen được sử dụng để tạo và quản lý sự chứng thực các SSH Key. Để sử dụng Open SSH trước
hết bạn phải tạo các DSA hay RSA Private Key, Public Key…Tiếp đến bạn thực hiện theo các chỉ dẫn dưới
đây. Bản thân tôi sử dụng hệ thống Debian Linux v 2.5.2
- Đầu tiên bạn hãy tạo một User trên hệ thống
root@domain.com#: useradd binhnx2000
- Đừng quên thiết lập Password cho User này
root@domain.com#: passwd binhnx2000
Changing password for user binhnx2000
New UNIX password: *****
Retype new UNIX password: *****
passwd: all authentication tokens updated successfully
- Đăng nhập vào Acc binhnx2000 mà tôi vừa tạo:
- Bây giờ tôi sẽ tiếp tục tạo các Private Key và Public Key.
Lưu ý: Từ Open SSH v 2.0 trở đi khi bạn yêu cầu tạo Key mới. Mặc định nó sẽ tạo cho bạn các Key RSA.
Nếu muốn tạo Key DSA bạn phải sử dụng tuỳ chọn -d
binhnx2000@domain.com$: ssh-keygen -d
Generating DSA parameter and key.
Enter file in which to save the key (/home/binhnx2000/.ssh/id_dsa):
Nhấn Enter nếu bạn muốn lưu Key vào thư mục mặc định của nó:
Created directory '/home/binhnx2000/.ssh'.
Enter passphrase (empty for no passphrase):
Bạn nhập vào passphrase (đây là Password sẽ được mã hoá bằng thuật toán 3 DES để kiểm soát Private
Key).
Lưu ý: pasphrase không thể phục hồi. Nếu bạn quên, bạn sẽ phải tạo và phân phối lại các Key. Điều này rất
phiển phức.

