intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

SSH cơ bản - Phạm Công Lý

Chia sẻ: Nguyễn Thị Ngọc Lựu | Ngày: | Loại File: PDF | Số trang:36

179
lượt xem
48
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Cuốn sách SSH cơ bản gồm có 4 chương: lý thuyết an toàn mạng, giới thiệu SSH, bên trong giao thức SSH12, tìm hiểu và nhận xét về một số ứng dụng SSH. Tài liệu cung cấp các kiến thức tổng quan về giao thức SSH và ứng dụng của nó trong lĩnh vực bảo mật.

Chủ đề:
Lưu

Nội dung Text: SSH cơ bản - Phạm Công Lý

  1. Chương 1: LÝ THUY T AN TOÀN M NG 1.1. Các r i ro i v i m t h th ng m ng M t h th ng m ng ư c k t n i v i Internet s có r t nhi u nguy cơ b t n công. Khi d li u ư c truy n i trên m ng, nhi u kh năng s b Hacker( là nh ng ngư i có hi u bi t sâu v tin h c và có nh ng k năng t t nhưng l i có nh ng hành vi làm t n h i ngư i khác) c tr m d li u. Khi m t h th ng liên l c v i nhau thông qua a ch truy n nh n d li u cũng d b Hacker gi danh l yd li u ho c nh ng v n v Virus,…có còn nhi u nguy cơ khác n a khi n cho m t h th ng m ng c a chúng ta tr nên không an toàn nghĩa là h th ng c a chúng ta có th b t n công b ng nhi u hình th c khác nhau.Sau ây là m t s hình th c t n công thư ng g p: Gi a ch - là m t ki u t n công mà k t n công óng vai m t h th ng h p pháp b ng cách ánh c p a ch sau ó gi làm n n nhân ã b ánh c p l y d li u mà nh ng u liên l c phía bên kia g i t i. Adware – ph n m m tích h p trong qu ng cáo. Nó có th không có h i, mà cũng có th thu th p d li u c a ngư i s d ng hay máy tính c a ngư i s d ng và chuy n nó v cho ngư i qu ng cáo nó. S xác nh n – hành ng b o m r ng m t ngư i hay m t h th ng ang c g ng truy c p m t h th ng ư c xác nh n úng quy n. Cracker – m t ngư i nào ó thâm nh p vào máy tính, thư ng là do thích thú hay ý chính tr và ôi khi vì lý do tài chính. Cracking là hành ng thâm nh p vào máy tính. M t mã hóa – ti n trình chuy n i thông tin sang m t mã bí m t, g i là cipher text, b ng m t gi i thu t mã hóa. D ch v m t mã hóa có th cung c p tính b o m t, toàn v n, xác th c và không th t ch i. Cybercrime – m t thu t ng t ng h p ư c dùng mô t m t dãy t n công ư c t o ra ch ng l i m t t ch c b ng các phương ti n i n t . T ch i d ch v - ti n trình mà qua ó các ngư i s d ng h p pháp, các khách hàng, client hay các máy tính khác b ngăn ch n kh i vi c truy c p tài nguyên trên m t máy tính do m t thành ph n th 3 không ư c xác nh n. i u này ư c th c hi n b ng cách làm tràn ng p máy tính do các yêu c u gi , hay gi các yêu c u h p pháp.( Ví d như DDoS) Hacker – ngu n g c là mô t m t ngư i nào ó có hi u bi t r t sâu v máy tính và k năng t t và kh năng l p trình. Mã c – là thu t ng cho m t virus, các applet hostile ho c o n mã ư c t i v t web server hay g i tr c ti p t m t h th ng này n m t h th ng khác. Spyware – ph n m m giám sát m t máy tính ư c s d ng như th nào và g i báo cáo n m t máy tính khác qua internet. Các chương trình spyware ư c t o ra ghi l i s th tín d ng hay toàn b username và password. Spyware cũng ư c dùng kh i ng m t cu c t n công t ch i d ch v . Trojan – là m t d ng virus, các chương trình ch y âm th m xóa file hay làm xáo tr n n i dung c a chúng. Hơn n a chúng còn cho phép máy tính b i u khi n t xa, b ng vi c cung c p cho ai ó truy c p file hay ng d ng. Worm – là virus thu n túy v m ng. Chúng ư c thi t k khám phá và phát hi n các i m y u trong m t m ng máy tính lan truy n chính chúng t máy này sang máy khác.
  2. 1.2. Các bư c t n công vào m t h th ng m ng Thông thư ng, m t quá trình t n công vào m t h th ng m ng tr i qua 4 bư c: Thu th p thông tin Truy c p ban u Th c hi n leo quy n Phi tang d u v t 1.2.1. Ti n trình thu th p thông tin: Bư c u tiên trong thu th p thông tin là ki m ư c m t ích t n công. M t hacker có th ch n m t ngư i hay công ty t n công, ho c tìm ki m m t i tư ng không ư c b o v trên internet mà d dàng t n công. S lư ng thông tin có giá tr c a ngư i s d ng internet có liên quan n m c ta s d ng internet. Nghĩa là lư t web càng nhi u càng d b t n công. N u ta có m t tên mi n hay m t web site, hay m t a ch mail cho m c ích công c ng. N u không tìm ư c m t ích rõ ràng thì hacker cũng có r t nhi u công c h tr cho vi c quét các ích ng m có th có trên internet. Các ơn gi n nh t làm s d ng l nh ping, quét r t nhanh hàng ngàn máy tính. u này cho bi t m t máy tính có t n t i trên m ng không. Port Scan thì nâng cao hơn và thư ng ư c th c hi n trên máy tính riêng l . M t Port Scan có th cho hacker bi t r ng d ch v nào ang ho t ng, HTTP hay FTP. M i m t d ch v ang ho t ng cung c p m t i m i vào ti m n cho hacker. Trên các máy tính không ư c b o v , các port không ư c dùng áp ng r ng chúng ã b óng, i u này cũng cho hacker bi t r ng máy tính v n ang t n t i. 1.2.2. Ti n trình truy c p ban u Các hacker khai thác t i a các sơ h tìm th y trong giai o n thu th p thông tin và thi t l p m t i m “ i vào” vào trong máy tính 1.2.3. Leo thang phân quy n M t khi ã k t n i ư c n m t máy tính, bư c k ti p là t ư c i u khi n càng nhi u càng t t Các hacker c g ng t ư c quy n qu n tr n máy tính. i m m u ch t là thu th p ư c quy n qu n tr - thư ng là m t kh u. Hacker c g ng t i v file ch a m t kh u và gi i mã nó. M t cách khác là t m t trojan horse vào máy tính ó. N u m t hacker có th t m t chương trình như Back Orifice, Subseven, hay NetBus trên m t máy tính và ch y nó. Các trojan horse khác có th ghi l i các keystroke b t các m t kh u và d li u nh y c m. NPF cung c p2m cb ov ch ng l i trojan horse. 1.2.4. Ti n trình che y d u v t: Khi hacker chi m ư c i u khi n m t máy tính m t m c nào ó, nhi m v là che d u m i d u v t. N u ta chưa phát hi n m t hacker ã th a hi p m i máy tính r i, thì ta không th t ng bư c ng ng các hành ng này. Trên các máy s d ng h i u hành Windows 2000/XP, các haker c t t vi c ki m tra và thay i ho c xóa i các log file ghi s ki n. Trên các h i u hành, các hacker có th n i các file truy c p l n sau. Trong trư ng h p c c oan, các hacker có th format ĩa c ng tránh b nh n d ng.
  3. 1.3. Các nguy cơ b t n công khi s d ng TELNET Ngày nay r t nhi u ngư i có nhi u tài kho n máy tính. N u cũng b n hi u bi t v user, b n ph i có m t tài kho n cá nhân v i m t nhà cung c p d ch v Internet (ISP), m t tài kho n làm vi c trên m ng n i b ch , và m t ho c nhi u máy tính cá nhân t i nhà. B n cũng ph i ư c cho phép s d ng nh ng tài kho n khác c a chính gia ình ho c b n bè c a b n. N u b n có nhi u tài kho n, t nhiên b n s mu n k t n i gi a chúng. Ví d như b n mu n chép file gi a nhi u máy tính thông qua m ng, ăng nh p vào m t tài kho n r t xa t m t máy khác, ho c truy n dòng l nh n m t máy tính xa th c hi n. Có nhi u chương trình khác nhau ã t n t i ph c v cho nh ng m c ích ó như là FTP và RCP truy n file, TELNET và RLOGIN ăng nh p t xa, và RSH th c hi n l nh t xa. TELNET là m t giao th c m ng (network protocol) ư c dùng trên các k t n i v i Internet ho c các k t n i t i m ng máy tính c c b LAN. TELNET thư ng ư c dùng cung c p nh ng phiên giao d ch ăng nh p, gi a các máy trên m ng Internet, dùng dòng l nh có tính nh hư ng ngư i dùng. Tên c a nó có ngu n g c t hai ch ti ng Anh "telephone network" (m ng i n tho i), vì chương trình ph n m m ư c thi t k , t o c m giác như m t thi t b cu i ư c g n vào m t máy tính khác. i v i s m r ng c a giao th c, ch "telnet" còn ám ch n m t chương trình ng d ng, ph n ngư i dùng c a giao th c - hay còn g i là trình khách (clients). Trong bao nhiêu năm qua, TELNET v n ư c cài t s n trong h u h t các h i u hành Unix và c trên Window. Trên r t nhi u h th ng, chương trình ng d ng "telnet" còn ư c dùng trong nh ng phiên giao d ch tương tác TCP d ng sơ ng (interactive raw-TCP sessions), và còn ư c dùng thông n i v i nh ng d ch v trên các máy ch POP3, mà không c n n nh ng trình khách chuyên d ng. C m t ti ng Anh "to telnet" còn ư c dùng như là m t ng t , có nghĩa là "thành l p" ho c "s d ng", m t k t n i dùng giao th c TELNET. N u b n truy n m t file nh y c m thông qua Internet, có kh năng m t k x u có th ch n l i và c d li u. Th m chí, n u b n ăng nh p vào m t máy tính t xa khác b ng vi c s d ng m t chương trình như TELNET, username và password c a b n có th b l khi chúng ư c truy n trên m ng. Làm sao ngăn ch n nh ng v n nghiêm tr ng ó?. B n có th cài m t firewall, ho c b n có th dùng nhi u gi i pháp khác nhau v i ph c t p và giá thành khác nhau nhưng có l phương pháp hi u qu và an toàn nh t là B n có th dùng m t chương trình mã hoá chuy n d li u thành m t o n code bí m t mà không ai có th c ư c. SSH ã ra i th c hi n công vi c ó.
  4. Chương 2: GI I THI U SSH 2.1. Giao th c SSH là gì? SSH (ti ng Anh: Secure Shell) là m t giao th c m ng dùng thi t l p k t n i m ng m t cách b o m t. SSH ho t ng l p trên trong mô hình phân l p TCP/IP. Các công c SSH (như là OpenSSH, PuTTy,...) cung c p cho ngư i dùng cách th c thi t l p k t n i m ng ư c mã hoá t o m t kênh k t n i riêng tư. Hơn n a tính năng tunneling (ho c còn g i là port forwarding) c a các công c này cho phép chuy n t i các giao v n theo các giao th c khác. Do v y có th th y khi xây d ng m t h th ng m ng d a trên SSH, chúng ta s có m t h th ng m ng riêng o VPN ơn gi n. M i khi d li u ư c g i b i m t máy tính vào m ng, SSH t ng mã hoá nó. Khi d li u ư c nh n vào, SSH t ng gi i mã nó. K t qu là vi c mã hoá ư c th c hi n trong su t: ngư i dùng có th làm vi c bình thư ng, không bi t r ng vi c truy n thông c a h ã ư c mã hoá an toàn trên m ng. 2.2. L ch s phát tri n các phiên b n SSH SSH1 và giao th c SSH-1 ư c trình bày năm 1995 b i Tatu Ylõnen, m t nhà nghiên c u trư ng i h c kĩ thu t Helsinki c a Ph n Lan. Sau khi m ng trư ng i h c c a ông ta là n n nhân c a m t cu c t n công ánh c p password vào u năm ó. Tháng 7 năm 1995, SSH1 ư c phát hành r ng rãi dư i d ng m t ph n m m mi n phí có source code, cho phép m i ngư i sao chép và s d ng mà không thu phí. Vào cu i năm ó, ư c tính có kho ng 20.000 ngư i dùng trên 50 qu c gia ã s d ng SSH1, và m i ngày Ylõnen nh n 150 mail yêu c u h tr . áp l i, Ylõnen ã thành l p SSH Communications Security (SCS, http://www.ssh.com) vào tháng 12 năm 1995 duy trì, thương nghi p hoá và ti p t c phát tri n SSH. Cũng trong năm 1995, Ylõnen so n th o giao th c SSH-1 còn g i là Internet Engineering Task Force (IETF), nó di n t ho t ng cơ b n c a ph n m m SSH1 trên th c t . Nó là m t giao th c có ph n qu ng cáo nhưng còn m t s l i và gi i h n nhưng r t ph bi n. Năm 1996, SCS gi i thi u m t phiên b n m i ó là phiên b n chính c a giao th c, SSH 2.0 hay SSH-2, phiên b n này ư c k t h p ch t ch nh ng thu t toán m i và không h p v i SSH-1. Trong lúc ó, IETF thành l p m t nhóm làm vi c g i là SECSH (Secure Shell) chu n hoá giao th c và ch o s phát tri n c a nó trên l i ích chung. Nhóm làm vi c SECSH ã trình bày b n phác th o Internet u tiên i v i giao th c SSH-2 vào tháng 2 năm 1997. Năm 1998, SCS phát hành s n ph m ph n m m “SSH Secure Shell” (SSH2), d a trên giao th c SSH-2. Tuy nhiên, SSH2 không thay th SSH1 trong m t s lĩnh v c, có 2 lí do. Th nh t, SSH2 không có m t s ti n ích, các c i m có ích và c u hình tuỳ ch n như SSH1. Th hai, SSH2 có nhi u gi i h n v vi c ăng kí. B n chính SSH1 ã có s n mi n phí t Ylõnen và trư ng i h c kĩ thu t Helsinki. Phiên b n m i hơn c a SSH1 t SCS v n có s n mi n phí cho h u h t ngư i dùng, th m chí c c u hình thương m i cũng mi n phí ch c n ph n m m ó không ư c tr c ti p bán cho vi c thu l i nhu n ho c ư c t ng như là m t d ch v cho khách hàng. Vì th , tuy SSH2 ã xu t hi n, nhưng h u h t nh ng ngư i ang s d ng SSH1 u nh n ra vài ưu i m c a SSH1 so v i SSH2 và ti p t c s d ng SSH1, ba năm sau khi SSH2 ra i thì SSH1 v n là phiên b n ư c s d ng ph bi n trên Internet và vư t qua c SSH2 là giao th c t t hơn và b o m t hơn.
  5. Tuy nhiên, SSH2 cũng có hai s phát tri n hưa h n, ó là m t b n n i l ng c a SSH2 b n quy n và s xu t hi n SSH-2 b sung. Năm 2000, SCS m r ng SSH2 b n quy n cho phép s d ng khi làm vi c riêng l i v i các t ch c ho t ng phi l i nhu n. Nó cũng ư c m r ng cho phép dùng mi n phí i v i Linux, NetBSD, FreeBSD và h i u hành OpenBSD. Cùng th i gian ó, OpenSSH (http://www.openssh.com) ã ư c phát tri n n i b t như là m t SSH b sung, ư c phát tri n dư i ho t ng c a d án OpenBSD (http://www.openbsd.org) và mi n phí s n bên dư i OpenBSD có ăng kí. OpenSH h tr c SSH-1 và SSH-2 trong m t chương trình. Tuy OpenSSH ư c phát tri n trên n n OpenBSD nhưng nó cũng ho t ng ư c trên Linux, Solais, AIX và nh ng h i u hành khác. M c dù OpenSSH tương i m i và không có vài c i m có trong SSH1 và SSH2 nhưng nó ang trên à phát tri n nhanh chóng và h a h n tr thành b n SSH chính trong tương lai không xa.
  6. Chương 3: BÊN TRONG GIAO TH C SSH 3.1. T ng quan v các c i m c a SSH Các c i m chính c a giao th c SSH là: - Tính bí m t (Privacy) c a d li u thông qua vi c mã hoá m nh m - Tính toàn v n (integrity) c a thông tin truy n, m b o chúng không b bi n i. - Ch ng minh xác th c (authentication) nghĩa là b ng ch ng nh n d ng bên g i và bên nh n - Gi y phép (authorization) :dùng i u khi n truy c p n tài kho n. - Chuy n ti p (forwarding) ho c t o ư ng h m (tunneling) mã hoá nh ng phiên khác d a trên giao th c TCP/IP 3.1.1. Tính bí m t (Privacy) Tính bí m t có nghĩa là b o v d li u không b phơi bày. M ng máy tính bình thư ng không b o m tính bí m t, b t c ai truy c p n ph n c ng c a m ng ho c n nh ng host k t n i v i m ng u có th s c ư c t t c d li u i qua m ng. M c dù m ng chuy n m ch hi n i ã gi m nh ng v n này trong m ng vùng c c b nhưng nó v n còn m t v n nghiêm tr ng ó là m t kh u d b nh ng k x u ánh c p. SSH cung c p tính bí m t b ng vi c mã hoá d li u i qua m ng. ó là vi c mã hoá hai u d a trên khoá ng u nhiên (sinh ra ph c v cho m t phiên k t n i và ư c hu i khi phiên k t n i thành công). SSH h tr nhi u thu t toán mã hoá i v i phiên d li u, ó là nh ng thu t toán mã hoá chu n như: AES, ARCFOUR, Blowfish, Twofish, IDEA, DES và triple-DES (3DES) 3.1.2. Tính toàn v n (Integrity) Tính toàn v n nghĩa là b o m d li u ư c truy n t m t u này n u kia c a m ng không b thay i. Giao th c SSH s d ng phương pháp ki m tra toàn v n m t mã, phương pháp này ki m tra c vi c d li u có b bi n i hay không và d li u n có úng là do u kia g i hay không. Nó s d ng thu t toán băm khoá là MD5 và SHA-1. 3.1.3. Ch ng minh xác th c (authentication) Ch ng minh xác th c là ki m tra nh danh c a ai ó xác nh chính xác úng là ngư i ó hay không. M i k t n i SSH bao g m hai vi c xác th c: client ki m tra nh danh c a SSH server (server authentication) và server ki m tra nh danh c a ngư i sr d ng yêu c u truy c p (user authentication). Server authentication ch c ch n r ng SSH server là chính xác và không ph i là k l a o phòng k t n công l i g i k t n i m ng n m t máy khác. Server authentication cũng b o v vi c b k x u ng i gi a hai bên, l a g t c hai bên nghĩa là k x u s nói v i server nó là client và nói v i client nó là server c ư c d li u trao i gi a hai bên. User authentication theo truy n th ng là làm vi c v i m t kh u. xác th c nh danh c a b n, b n ph i ưa ra m t kh u, và d b l y c p. Thêm n a, d nh m t m t kh u, ngư i ta thư ng t nó ng n và có ý nghĩa nào ó nên d b k x u oán ra. i v i m t kh u dài hơn thì ngư i ta thư ng ch n nh ng t ho c câu trong ngôn ng b m sinh nên cũng d b b khoá.
  7. SSH h tr xác th c b ng m t kh u, mã hoá m t kh u khi nó truy n i trên m ng. ây là s c i thi n r t l n so v i nh ng giao th c truy c p t xa thông thư ng khác (Telnet, FTP) mà chúng g i m t kh u qua m ng dư i d ng clear text. Tuy nhiên, vi c ch ng th c như th v n ch là ch ng th c m t kh u ơn gi n vì th SSH cung c p cơ ch m nh hơn và d s d ng hơn: m i user có nhi u ch kí khoá công c ng (per-user public-key signature) và m t c i ti n rlogin-style xác th c v i nh danh host ư c ki m tra b ng khoá công khai. Hơn n a, nh ng b n b sung khác nhau c a SSH h tr vài h th ng khác bao g m Kerberos, RSA, m t kh u S/Key one-time và PAM. M t SSH client và SSH server àm phán v i nhau xác nh cơ ch xác th c s s d ng d a trên c u hình c a chúng và m t server th m chí có th yêu c u nhi u ki u xác th c. 3.1.4. Vi c c p gi y phép Vi c c p gi y phép có tác d ng quy t nh ai ó có th ho c không th làm gì ó. Nó di n ra sau khi xác th c, b i vì b n không th ch p nh n m t ai ó có quy n gì khi chưa bi t ó là ai. SSH server có nhi u cách khác nhau gi i h n hành ng c a client. Truy c p n phiên ăng nh p tác ng l n nhau như TCP port và X Window forwarding, key agent forwarding, … có th t t c u ư c i u khi n m c dù không ph i t t các c i m u có s n trên t t c các b n b sung SSH,và chúng không luôn luôn t ng quát ho c linh ho t như b n ý mu n. Gi y phép có th ư c i u khi n t i m t m c server r ng (ví d : /etc/ssh/sshd_config file i v i OpenSH) ho c theo tài kho n ph thu c vào phương th c xác th c s d ng. 3.1.5. Chuy n ti p (forwarding) ho c t o ư ng h m (tunneling) Chuy n ti p ho c t o ư ng h m là tóm lư c d ch v d a trên TCP khác như là Telnet ho c IMAP trong m t phiên SSH mang l i hi u qu b o m t c a SSH n v i các d ch v d a trên TCP khác. Ví d , m t k t n i Telnet bình thư ng truy n username, password c a b n và phiên ăng nh p c a b n d ng clear text. B ng cách chuy n ti p telnet thông qua SSH, t t c d li u s t ng ư c mã hoá và ki m tra nh danh và b n có th xác nh n dùng SSH tin c y. SSH h tr 3 ki u chuy n ti p: TCP port forwarding: SSH dùng TCP/IP làm cơ ch truy n, thư ng dùng port 22 trên máy server khi nó mã hoá và gi i mã lưu lư ng i trên m ng. ây chúng ta nói n m t c i m mã hoá và gi i mã lưu l ong TCP/IP thu c v ng d ng khác, trên c ng TCP khác dùng SSH. Ti n trình này g i là port forwarding, nó có tính trong su t cao va khá m nh. Telnet, SMTP, NNTP, IMAP và nh ng giao th c không an toàn khác ch y TCP có th ư c b o m b ng vi c chuy n ti p k t n i thông qua SSH. Port forwarding ôi khi ư c g i là tunneling b i vì k t n i SSH cung c p m t “ ư ng h m” xuyên qua k t n i TCP khác có th i qua. Gi s b n có m t máy H nhà ang ch y IMAP và b n mu n k t n i n m t IMAP server trên máy S c và g i mail. Bình thư ng thì vi c k t n i này không m b o an toàn, tài kho n và m t kh u mail c a b n ư c truy n i dư i d ng clear text gi a chương trình mail c a b n và server. iv i SSH port forwarding, b n có th nh tuy n l i trong su t k t n i IMAP ( tìm c ng TCP 143 trên server S) truy n i thông qua SSH, mã hoá b o m d li u truy n i trên k t n i. Máy IMAP server ph i ch y m t SSH server cho port forwarding cung c p vi c b o m ó.
  8. Tuy nhiên, SSH port forwarding ch ho t ng trên giao th c TCP và không làm vi c ư c trên các giao th c khác như UDP hay AppleTalk X forwarding X là m t h th ng window ph bi n i v i các tr m làm vi c Unix, m t trong nh ng c i m t t nh t c a nó là tính trong su t. S d ng X b n có th ch y ng d ng X t xa m các c a s c a chúng trên màn hình hi n th c c b c a b n Agent forwarding SSH client có th làm vi c v i m t SSH agent trên cùng m t máy. S d ng m t c trưng g i là agent forwarding, client cũng có th liên l c v i các agent trên nh ng máy t xa. i u thu n l i là nó cho phép client trên nhi u máy làm vi c v i m t agent và có th tránh v n liên quan n tư ng l a. 3.2. Ki n trúc chung c a m t h th ng SSH SSH có kho ng m t b 12 thu c tính riêng l , các thành ph n tác ng l n nhau cho ra các nét c trưng riêng. Hình 3-1. Ki n trúc SSH SSH cũng có khoá (keys), phiên (sessions) và nh ng th ng nghĩnh khác. ây chúng ta qui nh m t b n tóm t t t ng quan c a t t c các thành ph n, ví th b n có th b t u th y ư c b c tranh l n v SSH như sau: Server M t chương trình cho phép i vào k t n i SSH v i m t b máy, trình bày xác th c, c p phép, … Trong h u h t SSH b sung c a Unix thì server thư ng là sshd. Client M t chương trình k t n i n SSH server và ưa ra yêu c u như là “log me in” ho c “copy this file”. Trong SSH1, SSH2 và OpenSSH, client ch y u là ssh và scp. Session
  9. M t phiên k t n i gi a m t client và m t server. Nó b t u sau khi client xác th c thành công n m t server và k t thúc khi k t n i ch m d t. Session có th ư c tương tác v i nhau ho c có th là m t chuy n riêng. Key M t lư ng d li u tương i nh , thông thư ng t mư i n m t ho c hai ngàn bit. Tính h u ích c a vi c s d ng thu t toán ràng bu c khoá ho t ng trong vài cách gi khoá: trong mã hoá, nó ch c ch n r ng ch ngư i nào ó gi khoá (ho c m t ai có liên quan) có th gi i mã thông i p, trong xác th c, nó cho phép b n ki m tra tr r ng ngư i gi khoá th c s ã kí hi u vào thông i p. Có hai lo i khóa: khoá i x ng ho c khoá bí m t và khoá b t i x ng ho c khóa công khai. M t khoá b t i x ng ho c khoá công khai có hai ph n: thành ph n công khai và thàn ph n bí m t. SSH c p n 4 ki u c a khoá như ph n tóm t t trong b ng 3-1 và di n t dư i ây. Name Lifetime Created by Type Purpose User key Persistent User Public Identify a user to the server Session key One session Client (and server) Secret Protect communications Host key Persistent Administrator Public Identify a server/machine Server key One hour Server Public Encrypt the session key (SSH1 only) B ng 3-1. Các lo i khoá thành ph n User key Là m t th c th t n t i lâu dài, là khoá b t i x ng s d ng b i client như m t s ch ng minh nh n d ng c a user ( m t ngư i dùng ơn l có th có nhi u khoá) Host key Là m t th c th t n t i lâu dài, là khoá b t i x ng s d ng b i server như s ch ng minh nh n d ng c a nó, cũng như ư c dùng b i client khi ch ng minh nh n d ng host c a nó như m t ph n xác th c áng tin. N u m t b máy ch y m t SSH server ơn, host key cũng là cái duy nh t nh n d ng b máy ó. N u b máy ch y nhi u SSH server, m i cái có th có m t host key khác nhau ho c có th dùng chung. Chúng thư ng b l n v i server key. Server key T n t i t m th i, là khoá b t i x ng dùng trong giao th c SSH-1. Nó c tái t o b i server theo chu kỳ thư ng xuyên ( m c nh là m i gi ) và b o v session key. Thư ng b l n v i host key. Khoá này thì không bao gi ư c lưu trên ĩa và thành ph n bí m t c a nó không bao gi ư c truy n qua k t n i b t c d ng nào, nó cung c p “perfect forward secrecy” cho phiên SSH-1 Session key
  10. Là m t giá tr phát sinh ng u nhiên, là khoá i x ng cho vi c mã hoá truy n thông gi a m t SSH client và SSH server. Nó ư c chia ra làm 2 thành ph n cho client và server trong m t lo i b o b t trong su t quá trình thi t l p k t n i SSH k x u không phát hi n ư c nó. Key generator M t chương trình t o ra nh ng lo i khoá lâu dài( user key và host key) cho SSH. SSH1, SSH2 và OpenSSH có chương trình ssh-keygen Known hosts database Là m t ch ng host key. Client và server d a vào cơ s d li u này xác th c l n nhau. Agent A program that caches user keys in memory, so users needn't keep retyping their passphrases. The agent responds to requests for key-related operations, such as signing an authenticator, but it doesn't disclose the keys themselves. It is a convenience feature. SSH1, SSH2, and OpenSSH have the agent ssh-agent, and the program ssh-add loads and unloads the key cache. M t chương trình lưu user key trong b nh . Agent tr l i cho yêu c u i v i khoá quan h ho t ng như là kí hi u m t gi y xác th c nhưng nó không t phơi bày khoá c a chúng. Nó là m t c i m r t có ích. SSH1, SSH2 và OpenSSH có agent ssh-agent và chương trình ssh-add x p vào và l y ra khoá ư c lưu. Signer M t chương trình kí hi u gói ch ng th c hostbased. Random seed A pool of random data used by SSH components to initialize software pseudo-random number generators. M t dãy d li u ng u nhiên oc dùng b i các thành ph n SSH kh i ch y ph n m m sinh s ng u nhiên Configuration file M t ch ng thi t l p bi n i hành vi c a m t SSH client ho c SSH server. Không ph i t t c thành ph n u ư c òi h i trong m t b n b sung c a SSH. Dĩ nhiên nh ng server, client và khoá là b t bu c nhưng nhi u b n b sung không có agent và th m chí vài b n không có b sinh khoá. 3.3. Bên trong SSH-2 : Giao th c SSH-2 ư c chia làm 4 b ph n chính, ư c di n t như 4 giao th c riêng r trong nhi u tài li u IETF khác nhau. Theo thông thư ng, chúng ư c s p x p cùng v i nhau cung c p thi t l p các d ch v mà h u h t ngư i dùng k t h p chúng thành m t SSH-2 y . - Giao th c l p v n chuy n SSH (SSH-TRANS) - Giao th c xác th c SSH (SSH-AUTH) - Giao th c k t n i SSH (SSH-CONN) - Giao th c truy n file SSH (SSH-SFTP)
  11. Hình 3-2 phác th o vi c phân chia công vi c gi a các giao th c, và chúng quan h v i nhau như th nào, nh ng chương trình ng d ng và m ng. Nh ng ch nghiêng là ph n m r ng giao th c. Hình 3-2 c i m giao th c SSH-2 SSH-2 ươc thi t k m r ng và modul hoá. T t c các giao th c lõi nh nghĩa miêu t các d ch v mà chúng cung c p và chúng ph i phù h p nhưng cho phép nhi u cơ ch có th làm vi c, cũng như là m t cach d dàng thêm vào m t cơ ch m i. T t c nh ng tham s ch y u c a k t n i SSH u có th ư c thương lư ng, bao g m nh ng thu t toán và phương th c s d ng trong: Trao i khoá phiên Xác th c server B o toàn và bí m t d li u Xác th c ngư i dùng Nén d li u Client và server thương lư ng vi c s d ng m t thi t l p ph bi n, cho phép thao tác r ng gi a các ph n b sung khác nhau. Trong h u h t các lo i, giao th c nh nghĩa ít nh t m t phương th c y m nh thao tác gi a các ph n xa hơn. Nên nh r ng i u này ch có nghĩa m t vi c tuân theo ư c th c hi n òi h i h tr phương th c trong o n mã c a nó ; b t c m t phương th c ngo i l nào cũng có th b tăt b i ngư i qu n tr trong m t i u ki n c bi t nào ó. Vì th , trên th c t vi c ch ng th c khoá công khai òi ư c h i b i SSH-AUTH không có nghĩa là nó luôn luôn có s n cho client t b t c máy nào ch y SSH server, nó ch có nghĩa là nó ph i có s n và có th ư c b t lên n u c n.
  12. 3.3.1. Tóm tăt cơ ch ho t ng c a SSH-2 M t phiên làm vi c c a SSH-2 tr i qua 4 bư c ch y u như sau: Thi t l p k t n i ban u (SSH-TRANS) Ti n hành xác th c l n nhau (SSH-AUTH) M phiên k t n i th c hi n các d ch v (SSH-CONN) Ch y các d ch v ng d ng SSH ( có th là SSH-SFTP) SSH-TRANS là kh i xây d ng cơ b n cung c p k t n i ban u, ghi chép giao th c, xác th c server, mã hoá cơ b n và các d ch v b o toàn. Sau khi thi t l p m t k t n i SSH-TRANS, client có m t k t n i ơn, m b o, lu ng truy n byte full-duplex n m t xác nh n tương ương. K n, client có th dùng SSH-AUTH thông qua k t n i SSH-TRANS n xác th c c a chính nó v i server. SSH-AUTH nh nghĩa m t cái khung i v i vi c nhi u cơ ch xác th c có th ư c s d ng, s a ch a m i th như là nh d ng và nh ng yêu c u khác c a xác th c,nh ng i u ki n thành công ho c có th b l i và làm th nào client h c ư c nh ng phương th c có s n. Có th là m t phương th c b t kỳ nào ó ư c thi hành, và giao th c cho phép trao i tuỳ ý m t ph n c a b t kỳ cơ ch riêng nào ph n m r ng giao th c d nh nghĩa k t h p ch t ch v i b t c phương th c xác th c mong mu n nào trong tương lai. SSH-AUTH ch yêu c u m t phương th c: khoá công c ng v i thu t toán DSS. Xa hơn n a, nó nh nghĩa hai phương th c: m t kh u và d a trên host. M t s phương th c ã ư c nh nghĩa trong nhi u b n th o Internet khác nhau và vài b n ã ư c ch p nh n r ng rãi. Sau khi xác th c, SSH client yêu c u giao th c SSH-CONN cung c p m t s a d ng c a các d ch v thông qua m t kênh ơn cung c p b i SSH-TRANS. i u này bao g m m i th c n h tr nhi u phiên tương tác và phiên không tương tác: nh ng lu ng a thành ph n khác nhau (ho c channel) ngang qua k t n i bên dư i, qu n lý X, TCP và agent forwarding, truy n tín hi u thông qua k t n i, nén d li u và th c thi chương trình t xa. Cu i cùng, m t ng d ng có th s d ng SSH-SFTP qua m t kênh SSH-CONN cung c p truy n file và các ch c năng thao tác h th ng t p tin t xa. 3.3.2. Giao th c l p v n chuy n SSH (SSH-TRANS) 3.3.2.1. Ti n trình t o k t n i minh ho , chúng ta l y m t ví d m t Client SSH ch y trên m t máy Macintosh s c c u hình file c a nó và sau ó t o m t k t n i TCP n phía bên u xa ( ví d n host.foo.net) như sau: $ ssh -vv host.foo.net OpenSSH_3.6.1p1+CAN-2003-0693, SSH protocols 1.5/2.0, OpenSSL 0x0090702f debug1: Reading configuration data /Users/res/.ssh/config debug1: Applying options for com
  13. debug1: Applying options for * debug1: Reading configuration data /etc/ssh/ssh_config debug1: Connecting to host.foo.net [10.1.1.1] port 22. debug1: Connection established. 3.3.2.2. Ti n trình ch n l a phiên b n giao th c Càng s m càng t t khi server ch p nh n k t n i, giao th c SSH b t u. Server thông báo phiên b n giao th c c a nó b ng m t chu i văn b n: Debug1: Remote protocol version 2.0, remote software version 4.1.0.34 SSH Secure Shell B n có th th y chu i này trong k t n i ơn gi n c a b n n server như telnet: $ telnet host.foo.net 22 Trying 10.1.1.1... Connected to host.foo.net Escape character is '^]'. SSH-2.0-4.1.0.34 SSH Secure Shell ^] telnet> quit Connection closed. nh d ng c a thông báo là: SSH-- Trong trư ng h p này, server dùng giao th c SSH-2 và ph n m m 4.1.0.34 c a SSH t công ty b o m t truy n thông (SSH Communication Security). M c dù trư ng chú thích có th bao g m m i th nhưng SSH server thư ng ch ưa vào ó tên và phiên b n s n ph m. i u này r t có ích client thư ng nh n bi t chính xác server dùng s n ph m và phiên b n gì làm vi c cho úng và tránh l i ho c không tương thích v i nhau. Phiên b n giao th c s “1.99” có ý nghĩa c biêt: nó h tr c hai giao th c SSH-1 và SSH-2. Ti p theo, OpenSH phân tích l i chú thích: debug1: no match: 4.1.0.34 SSH Secure Shell
  14. debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_3.6.1p1+CAN-2003-0693 nhưng không tìm th y m t cái h p v i danh sách c a nó thì nó bi t là có v n . Nó ch n SSH-2 (ch ch n trong ví d này) và g i chu i phiên b n c a nó n server gi ng như cách mà server ã g i. N u client và server ng ý phiên b n c a chúng ã tương thích thì ti n trình k t n i ti p t c, n u không thì c hai có th k t thúc k t n i. 3.3.2.3. Ti n trình thương lư ng tham s ã thi t l p k t n i và ng ý trên m t phiên b n, nhi m v u tiên c a SSH-TRANS là chu n b các thu c tính b o m t cơ b n c a SSH: o Tính bí m t (privacy) o Tính toàn v n (integrity) o Xác th c server o Nén d li u Nhưng u tiên, hai bên ph i ng ý các thông s phiên, bao g m các phương th c t ư c các thu c tính. Ti n trình di n ra trong gian o n này g i là ti n trình trao i khoá. Debug1: SSH2_MSG_KEXINIT sent Debug1: SSH2_MSG_KEXINIT receive Client g i thông báo KEXINIT (kh i t o tao i khoá) c a nó và nh n m t cái t server. ây có s ch n l a nó ưa cho server: debug2: kex_parse_kexinit: gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==, gss-group1-sha1-A/vxljAEU54gt9a48EiANQ==, diffie-hellman-group-exchange-sha1, diffie-hellman-group1-sha1 Thu t toán trao i khoá mà client h tr là: diffie-hellman-group1-sha1 Thu t toán này ư c nh nghĩa và yêu c u b i SSH-TRANS, ch rõ cho bi t là dùng th t c Diffie- Hellman tho thu n khoá cùng v i nh ng tham s c th khác (Oakley Group 2 và thu t toán băm SHA-1) diffie-hellman-group-exchange-sha1 Tương t , nhưng cho phép client ch n t m t danh sách các nhóm tham s , a ch liên quan v nh ng kh năng có th b t n công d a trên m t nhóm ư c b trí trư c, nh nghĩa trong tài li u phác th o IETF “secsh-dh-group-exchange” gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g== gss-group1-sha1-A/vxljAEU54gt9a48EiANQ==
  15. Nh ng các tên trông kỳ qu c là ư c mã hóa Base64 - chúng hi n th hai giá tr khác nhau c a xác th c Kerberos, trao i Diffe-Hellman. M t cơ s h t ng Kerberos có s n cung c p xác th c server t ng và linh ho t mà không c n xác nh n SSH host key và file known-host riêng. Xác th c Kerberos ư c cung c p b i GSSAPI và nh ng tên phía sau là mã hóa Base64 c a hàm băm MD5. Trong i u ki n tóm t t c a th a thu n, m t thu t toán trao i khoá SSH có hai u ra : o M t share secret, K o M t “exchange hash”, H K là tham s bí m t chính i v i phiên: SSH-TRANS nh nghĩa m t phương th c i v i secret K t nh ng ngu n g c khoá khác nhau và nh ng tham s mã hoá khác c n thi t cho vi c mã hoá c th và thu t toán toàn v n d li u ư c s d ng trong k t n i SSH. Exchange hash H thì không bí m t, m c dù nó không c n thi t l ra và nó là duy nh t trong m i phiên . Trao i khoá cũng di n ra trên xác th c server phòng vi c gi m o và t n công man-in-the- middle và có th ư c l p l i trong m t k t n i thay th m t cái cũ ho c xác th c l i server. Ti p theo, client cung c p m t ki u SSH host key mà nó có th cháp nh n : debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,null Trong trư ng h p này, nó cung c p RSA, DSA và null i v i trư ng h p không có khoá. Nó bao g m c null b i vì nó h tr Kerberos cho xác th c host. N u dùng trao i khoá Kerberos thì không có SSH host key nào c n thi t i v i vi c xác th c server. Sau ó, client li t kê nh ng thu t toán mã hoá d li u mà nó h tr : debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128- cbc,arcfour, aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se D li u chính thì không bao gi ư c mã hoá tr c ti p v i phương th c khoá công khai như RSA ho c DSA b i vì chúng làm qua ch m. Thay vào ó, chúng ta s d ng m t thu t toán khoá i x ng như trong danh sách phia trên b o v khoá phiên i v i vi c mã hoá b ng phương th c khoá công khai n u thích h p. K n, client hi n th danh sách các thu t toán toàn v n d li u mà nó có s n: debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160, hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 Thu t toán toàn v n ư c ng d ng m i thông i p ư c g i b i giao th c h sơ SSH cùng v i m t chu i s và m t khoá phiên to ra m t mã xác nh n thông i p (MAC:message authentication code) ư c thêm vào m i thông i p. Bên nh n có th dùngg MAC và b n sao chép khoá phiên c a nó ki m tra thông i p không b bi n i trên ư ng truy n, không b truy n l p l i và không ph i là do m t phiên khác g i t i, ó là nh ng thu c tính c a toàn v n d li u. Cu i cùng, client cho bi t k thu t nén d li u mà nó h tr :
  16. debug2: kex_parse_kexinit: none,zlib Sau khi g i thông i p tho thu n c a nó, client cũng nh n t server danh sách các tham s mà server h tr : debug2: kex_parse_kexinit: diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-dss,x509v3-sign-rsa debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,twofish128- cbc,cast128-cbc, twofish-cbc, blowfish-cbc,aes192-cbc,aes256-cbc, twofish192-cbc,twofish256-cbc,arcfour debug2: kex_parse_kexinit: hmac-sha1,hmac-sha1-96,hmac-md5,hmac-md5- 96 debug2: kex_parse_kexinit: none,zlib K n, m i bên ch n các thu t toán tương ng t các thu t toán hõ tr c a bên kia: debug1: kex: server->client aes128-cbc hmac-md5 none debug1: kex: client->server aes128-cbc hmac-md5 none Trong trư ng h p này, vi c ch n l a trên c hai bên là gi ng nhau. Tuy nhiên, chúng không c n thi t ph i gi ng. Vi c m i bên ch n l a m t thu t toán hay m t khoá c l p v i nhau cũng không có h i gì. 3.3.2.4. Ti n trình trao i khoá và xác th c server T i th i i m này, chúng s n sàng ưa ra danh sách trao i khoá: debug2: dh_gen_key: priv key bits set: 131/256 debug2: bits set: 510/1024 debug1: sending SSH2_MSG_KEXDH_INIT Client ch n m t thu t toán trao i khoá t b thông báo c a server, trong trư ng h p này thì server ch ưa ra có m t cái. Nó sinh ra m t khoá t m th i như m t ph n c a thu t toán Diffe-Hellman và g i thông i p kh i t o c a trao i diffie-hellman-group1-sha1, cùng lúc ó server bi t ư c phương th c mà hai bên s d ng và b t u trao i. Ti p theo, client i và server g i thông i p KEXDH_INIT c a chúng: debug1: expecting SSH2_MSG_KEXDH_REPLY debug1: Host 'host.foo.net' is known and matches the DSA host key. debug1: Found key in /Users/res/.ssh/known_hosts:169 debug2: bits set: 526/1024 debug1: ssh_dss_verify: signature correct
  17. Bao g m trong ph n tr l i c a server là khoá công khai SSH c a nó, cùng v i m t ch kí cung c p khoá bí m t tương ng mà nó gi . Dĩ nhiên c kí s ư c ki m tra nhưng không có ý nghĩa quan tr ng, bư c quan tr ng ây là ki m tra nh danh khoá công khai c a server. Trong ví d này, client tìm m t b n k t h p tên foo.host.net v i khoá ư c cung c p b i server. SSH-2 h tr h th ng PKI (Public Key Infrastructure) ki m tra khoá công khai, nh nghĩa m t s ki u khoá bao g m g n v i gi y xác th c : ssh-rsa Plain RSA key ssh-dss Plain DSS key x509v3-sign-rsa X.509 certifivates (RSA key) x509v3-sign-dss X.509 certificates (DSS key) spki-sign-rsa SPKI certificates (RSA key) spki-sign-dss SPKI certificates (DSS key) pgp-sign-rsa OpenPGP certificates (RSA key) pgp-sign-dss OpenPGP certificates (DSS key) 3.3.3. Giao th c ch ng th c SSH (SSH_AUTH) 3.3.3.1. Ti n trình yêu c u ch ng th c Quá trình ch ng th c ư c client b t u b ng yêu c u ch ng th c và server h i áp l i. M t yêu c u ch ng th c bao g m nh ng ph n như sau: Username U: là nh danh gi y phép c a client. Tên d ch v S: nh ng vi c mà client yêu c u ư c truy c p, b t u ho t ng thông qua k t n i SSH-TRANS sau khi ch ng th c thành công. Có th có nhi u d ch v có s n nhưng thông thư ng ch có m t “ssh-connection” yêu c u truy c p n nh ng d ch v cung c p khác nhau thông qua giao th c SSH-CONN: ăng nh p, thi hành l nh t xa, chuy n ti p c ng và t t c nh ng th khác mà ngư i s d ng mu n làm v i SSH. Tên phương th c M, và phương th c d li u c th D : phương th c xác th c c th ư c dùng trong yêu c u là “pasword” ho c “publickey” và phương th c d li u c th truy n b t c th gì c n thi t b t u trao i ch ng th c rõ ràng, ví d , m t m t kh u ư c ki m tra b i server. Như là tên khoá trao i trong SSH-TRANS thì tên có cú pháp “@domain” có th ư c dùng b i b t c ai th c hi n phương th c c c b , trong khi nh ng tên không có @ ph i ư c ăng kí tên toàn b các phương th c ch ng th c SSH. M i khi phương th c ch ng th c b t u, nó có th bao g m b t kỳ m t s ki u thông i p chi ti t nào khác mà nó c n. Ho c trong trư ng h p ơn gi n, d li u mang b i yêu c u ban u cũng ã và server có th h i áp úng như th . Trong b t c trư ng h p nào, sau khi yêu c u và sau vài phương th c thông i p theo sau ó thì server c p phát m t h i áp ch ng th c.
  18. 3.3.3.2. Ti n trình h i áp ch ng th c M t h i áp ch ng th c có hai tr ng thái: Thành công và th t b i. M t thông báo thành công không mang d li u nào khác ngoài thông báo là xác th c ã thành công và d ch v yêu c u ã ư c b t u. Thêm n a, thông báo SSH-TRANS ư c client g i ư c nh nghĩa cùng v i giao th c c a d ch v và SSH-AUTH ư c ch y . M t thông báo l i có s có c u trúc hư sau: M t danh sách các phương th c ch ng th c có th ti p t c M t c “ partial success” N u c partial success không b t lên thì thông báo ó có nghĩa là nh ng phương th c ch ng th c trư c ó ã b l i. N u c partical ư c b t lên thì thông báo có nghĩa là phương th c ã thành công, tuy nhiên, server yêu c u ph i b sung nh ng phương th c còn b l i khác cho thành công trươc khi ng ý cho truy c p. 3.3.3.3. Ch ng th c khoá công khai M t yêu c u ch ng th c khoá công khai mang phương th c có tên là “publickey” và có th có nhi u d ng khác nhau ph thu c vào m t c ư c thi t l p. M t d ng c a phương th c này là: flag = FALSE Tên thu t toán D li u khoá Thu t toán khoá công khai có th dùng là nh ng thu t toán thi t l p trong SSH-TRANS và nh d ng d li u khoá ph thu c vào ki u khoá như ssh-dss hay ssh-rsa. V i c thi t l p là FALSE, thông báo này ch ơn thu n là ki m tra xác th c: nó yêu c u server ki m tra khoá này có ư c xác th c truy c p như mong mu n c a tài kho n hay không, n u ư c thì g i l i m t thông báo cho bi t. N u khoá không ư c xác th c, h i áp có giá tr FALSE ơn gi n. Sau khi xác nh n khoá và g i thông báo thành công, server cho bi t ã ch p nh n truy c p và k t thúc phiên SSH-AUTH. 3.3.3.4. Xác th c password Phương th c m t kh u thì r t ơn gi n: nó tên là “password”. Phương th c này ch có trong m t s b n b sung c a SSH2. Sau khi ki m tra các tham s thích h p, server s g i thông báo ch p nh n truy c p c a client và n u có giao th c này thì server s g i k t h p password v i thông báo ó xác th c v i client. 3.3.3.5. Xác th c d a trên host (hostbased) Cũng là m t phương th c c a m t s b n b sung. Phương th c này dùng server xác th c client mà nó ã nh n yêu c u có úng hay không d a trên tên máy. Gi s r ng b n máy A g i yêu c u n server nhưng không i tr c ti p n server mà trên ư ng truy n ph i i qua máy B thì server không ki m tra máy B mà s ki m tra xem có ph i bên g i yêu c u truy c p n nó có ph i là máy A hay không. 3.3.4. Giao th c k t n i SSH-CONN
  19. Khi yêu c u xác th c thành công, client se có m t d ch v tên “ssh-con” nhưng nó không hi n th trên client mà hi n th trên server như sau: debug1: userauth-request for user res service ssh-connection method publickey Server b t u ch y d ch v và hai bên i n giao th c k t n i SSH 3.3.4.1. Kênh (channels) D ch v cơ b n SSH-CONN cung c p là multilexing. SSH-CONN i u khi n m t kênh ơn, b o m, lu ng byte ôi ư c cung c p b i SSH-TRANS và cho phép client t o nh ng kênh lu n lý SSH- CONN khác ch y qua nó. Kênh ư c nh n d ng b ng s kênh và có th ư c t o ho c hu b b i client ho c server. Kênh là m t i u khi n lưu lư ng riêng l và m i kênh có m t ki u kênh ư c nh nghĩa theo m c ích s d ng. Ki u ư c nh nghĩa như sau: session: ơn thu n ch là m m t kênh phiên ch không b t u ch y m t chuơng trình.M t phiên SSH-CONN có th có nhi u kênh phiên, h tr ng th i, ví d cùng ch y giao th c truy n file và th c thi chương trình trên m t phiên SSH-CONN. x11: m t k t n i X11 client. orward-tcpip: m t k t n i bên trong chuy n ti p m t c ng xa. Khi m t k t n i n trên m t c ng TCP chuy n ti p xa, server s m kênh này tr l i client mang k t n i. direct-tcpip: m t k t n i TCP bên ngoài. K t n i tr c ti p này n m m t k t n i TCP m t socket nh s n và thêm kênh n k t n i ó. Socket có th dùng m t tên mi n ho c a ch IP 3.3.4.2. Yêu c u (request) Thêm vào m t dãy kênh ho t ng- m , óng, g i d li u, g i d li u kh n c p,…SSH-CONN nh nghĩa m t thi t l p cho yêu c u v i tính y ho c ch là m t kênh b ph n. M t yêu c u y nh hư ng n toàn b tr ng thái c a k t n i trong khi m t yêu c u kênh (b ph n) ch ư c m m t kênh c th . Yêu c u d y là: tcpip-forward: yêu c u m t c ng chuy n ti p TCP ng xa cancel-tcpip-forward: hu b m t chuy n ti p t xa pty-req: ch nh m t pty, bao g m kích c c a s và ki u thi t b u cu i. x11-req: cài t chuy n ti p x11 env: thi t l p m t bi n i u ki n. shell, exec, subsystem: ch y ti n ích tài m c nh c a tài kho n, m t chương trình tuỳ ý, ho c m t d ch v ơn gi n. window-change: thay i kích thư c c a s thi t b u cu i xon-xoff: dùng i u khi n bên client signal: g i m t tín hi u c bi t n m t ti n trình xa. exit-signal: tr v m t tín hi u k t thúc chương trình. Khi SSH-CONN ch y, client g i yêu c u và m m t kênh phiên. Sau ó g i m t s yêu c u mu n th c hi n thông qua các kênh… Bây gi thì client ã ăng nh p thành công vào máy ch SHH t xa.
  20. 3.4. Bên trong SSH-1 SSH-1 cũng tương t như SSH-2 nhưng có m t s i m khác,chúng ta s so sánh nh ng c i m ó v i SSH-2 hình dung SSH-1: non-modular: SSH-1 ư c nh nghĩa như m t giao th c nguyên ơn, còn SSH-2 ư c thi t k modul hoá. less negotiation: SSH-1 có nhi u tham s c nh, th c ra, ch có kích thư c mã hoá là ư c thương lư ng. Thu t toán nh n d ng, ki u khoá host, phương th c trao i khoá,…t t c uc nh. ad hoc naming: SSH-1 không có cú pháp nh nghĩa tên linh ho t như SSH-2 và không có ph n m r ng b sung rõ ràng. Single authentication: Quá trình xác th c user c a SSH-1 ch cho phép m t phương th c ho t ng thành công, Server không th yêu c u nhi u phương th c. RhostsRSA authentication: Xác th c RhostsRSA c a SSH-1 tương t như xác th c d a trên host v cơ b n là có gi i h n khi s d ng a ch m ng làm nh danh máy client. Less flexible remote forwarding: SSH-1 ch rõ chuy n ti p t xa ch trên m t c ng, vì th không th ưa nhi u a ch khác nhau n m t server. weaker integrity checking: SSH-1 s d ng phương th c ki m tra toàn v n không m nh l m, ó là thu t toán CRC-32. erver keys: Ti n trình trao i khoá c nh c a SSH-1 giao cho m t khoá b t i x ng g i là server key, server key là m t c p khoá public/private t m th i, sau m t gi l i ư c ph c h i và s d ng cung c p tính kín áo chuy n ti p cho khoá phiên. Kín áo chuy n ti p nghĩa là th m chí vi c b o m t th i gian dài như khoá bí m t host ho c user ư c tho hi p tr , không dùng mã hoá phiên SSH trong các bư c trư c ó, s d ng m t khoá này thì nó không bao gi ư c ghi lên ĩa. Thu t toán Diffe-Hellman dùng trong t t c ua trình trao i khoá c a SSH-2 cung c p tính bí m t chuy n ti p b i chính nó vì th không c n server key. weak key exchange: Ti n trình trao i khoá SSH-1 b o m t không cao vì ch m t mình client ch n khoá phiên và g i n server. 3.5. Gi i thi u các thu t toán s d ng trong SSH 3.5.1. Nh ng thu t toán khoá công khai 3.5.1.1Rivest-Shamir-Adleman (RSA) Thu t toán khóa public RSA là ki u tính toán không i x ng ư c s d ng r ng rãi nh t. Nó b t ngu n t s phân tích thành th a s c a nhi u s nguyên là tích c a 2 s nguyên t g n b ng nhau. S phân tích thành th a s ư c tin dùng r ng rãi vì s ph c t p, m c dù chưa ư c ch ng minh. RSA có th ư c dùng c cho vi c mã hóa và ch ký. n tháng 9 năm 2000, RSA ư c yêu c u c p b ng sáng ch t i M b i Public Key Partners Inc (PKP) , 1 công ty mà RSA Security Inc là 1 i tác. Khi b ng sáng ch có hi u l c, PKP mu n ki m soát vi c s d ng thu t toán RAS M , và vi c s d ng trái phép là ph m lu t. n gi a nh ng năm 1990, RSA Security cung c p mi n phí RSAref, v i b n quy n cho phép ngành giáo d c và thương m i s d ng (cũng như ph n m m ư c bán ra phi l i nhu n). T ó RSA tr nên ph bi n, RSAref không còn t n t i.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2