-
1
-
Luận văn
Nghiên cứu và xây dựng một vài
chương trình tấn công trên mạng
Internet qua giao thức Telnet
-
2
-
MỞ ĐẦU
Với sự phát triển mạnh mẽ của công nghệ thông tin, đặc biệt là sự
xuất hiện của mạng máy tính toàn cầu Internet đã làm thay đổi phương thức khai
thác máy tính cổ điển. Mạng và công nghệ mạng mặc dù ra đời cách đây không
lâu nhưng nó đã được triển khai ứng dụng ở hầu hết khắp mọi nơi trên thế giới.
Bên cạnh những thành tựu ấy, mạng máy tính lại nảy sinh những vấn
đề mang tính tiêu cực và trở thành mối lo ngại cho người sử dụng tham gia vào
mạng máy tính toàn cầu. Thế giới tội phạm cũng triệt để tận dụng những thành
tựu này, và một loại tội phạm mới xuất hiện: “tin tặc”, “tội phạm công nghệ
cao”. Ngày nay, các loại tội phạm máy tính càng ngày càng có xu hướng gia tăng
cả về số lượng và tính chất nguy hiểm. Ngay cả các cơ quan đặc biệt nước ngoài
cũng sử dụng Internet như là một phương tiện liên lạc để đa dạng hoá các thủ
đoạn hoạt động.
Trong lực lượng công an, việc ứng dụng những thành tựu công nghệ
thông tin vào hoạt động của các lực lượng đã nâng cao hiệu quả công vệc, góp
phần đấu tranh phòng chống các loại tội phạm, giữ vững trật tự an toàn xã hội.
Hiện nay, trong ngành có rất nhiều hệ thống máy tính được kết nối với mạng
Internet. Đó thực sự là những khó khăn với người quản trị hệ thống, nhất là đối
với trong lực lượng công an thì yêu cầu bảo mật thông tin luôn luôn được đặt lên
hàng đầu.
Tình hình hiện nay đòi hỏi lực lượng công an phải gấp rút ứng dụng
những công nghệ mới, nghiên cứu các biện pháp bảo mật thông tin và cả các
biện pháp nhằm “phá hoại” thông tin của các đối tượng trong một số trường hợp
cụ thể nhằm đáp ứng yêu cầu nghiệp vụ của ngành. Bên cạnh đó, phải nghiên
cứu một cách có hệ thống các phương thức tấn công trên mạng để giúp lực lượng
trinh sát kỹ thuật thu thập thông tin một cách bí mật.
-
3
-
Tôi xin đăng ký đề tài khóa luận tốt nghiệp là:
“Nghiên cứu và xây dựng một vài chương trình tấn công trên mạng
Internet qua giao thức Telnet.”
Xuất phát từ yêu cầu thực tiễn nói trên, nội dung cơ bản của khóa luận
giúp cho người sử dụng có kiến thức cơ bản về các phương thức tấn công trên
mạng, trên cơ sở đó xây dựng một số chương trình “tấn công” qua giao thức
Telnet(đây là giao thức được ứng dung trong khoá luận). Đồng thời, khoá luận
cũng đề xuất một số giải pháp bảo mật cho hệ thống tham gia mạng Internet.
Để đạt được mục đích nói trên, ngoài phần mục lục, lời nói đầu và kết
luận, khoá luận được chia làm 3 chương cơ bản như sau:
Chương I: Tổng quan về mạng Internet và giao thức Telnet.
Ở chương này, khoá luận tập trung trình bày về các giao thức cơ bản của
Internet, tập trung vào giao thức Telnet là giao thức được ứng dụng trong khoá
luận.
Chương II: Một số giải pháp bảo mật thông tin trên mạng.
Mục đích chương II nhằm nghiên cứu những nguy cơ gây có thể
gây mất an ninh trên mạng, trên cơ sở đó đề xuất một số giải pháp bảo
mật thông tin cho các hệ thống máy tính trên mạng.
Chương III: Xây dựng một số chương trình tấn công qua giao thức
Telnet.
Trên cơ sở những vấn đề đã nghiên cứu ở trên, khoá luận đưa ra
một số chương trình tấn công qua thư điện tử, xâm nhập Web, Crack
phần mềm và một số kỹ thuật quét tường lửa.
-
4
-
CHƯƠNG I
TỔNG QUAN VỀ MẠNG INTERNET VÀ GIAO THỨC TELNET
1.1 Giới thiệu về mạng máy tính toàn cầu Internet
1.1.1 Mạng máy tính
Mạng máy tính là hệ thống các máy tính độc lập được kết nối với nhau.
Hai máy tính được gọi là được kết nối với nhau nếu chúng có khả năng trao đổi
thông tin. Sự kết nối có thể thông qua dây dẫn, tia Laser, sóng điện từ hay vệ tinh
viễn thông Việc kết nối các máy tính có những ưu điểm sau đây:
- Sử dụng chung tài nguyên: Dữ liệu, chương trình và các thiết bị có thể
được dùng chung bởi người dùng từ các máy tính trên mạng.
- Tăng độ tin cậy của hệ thống thông tin: Nếu một máy tính hay một
đơn vị dữ liệu nào đó bị hỏng thì luôn có thể sử dụng một máy tính khác hay một
bản sao khác của dữ liệu, nhờ đó, khả năng mạng bị ngừng sử dụng được giảm
thiểu.
- Tạo ra môi trường truyền thông mạnh giữa nhiều người sử dụng trên
phạm vi địa lý rộng: Mục tiêu này ngày càng trở nên quan trọng nhất là khi mạng
máy tính đã phát triển trên phạm vi toàn cầu như ngày nay.
- Tiết kiệm chi phí: Do tài nguyên được dùng chung, hệ thống tin cậy hơn
nên chi phí thiết bị và bảo dưỡng của mạng máy tính thấp hơn so với trường hợp
máy tính riêng lẻ.
Liên mạng máy tính (Internetworking hay Internet) là một công nghệ
được đưa ra nhằm kết nối các mạng thành một thể thống nhất. Công nghệ
Internet che dấu đi kiến trúc vật lý của mạng và cho phép máy tính truyền thông
-
5
-
một cách độc lập với liên kết vật lý của mạng. Một liên mạng đã khá quen thuộc
với chúng ta là mạng Internet
1.1.2 Mạng Internet
Internet là một tổ hợp hàng triệu máy được kết nối với nhau thông qua
giao thức TCP/IP để có thể chia sẻ thông tin với nhau, trong đó có đủ loại máy
tính, và chúng sử dụng nhiều hệ điều hành khác nhau.Thông tin trên Internet
gồm đủ loại từ thư điện tử (Email), các File đồ hoạ đến Video và còn nhiều
thông tin khác được cung cấp bởi những người sử dụng Internet.
Những máy chủ (Host) mạnh thường sử dụng những hệ điều hành đa
nhiệm, ví dụ như UNIX, để người sử dụng kết nối vào. Những máy chủ được
định vị tại các điểm như thư viện, các trường đại học, các tổ chức, các đại lý, các
công ty trên toàn thế giới. Những máy chủ này được kết nối với nhau qua đường
điện thoại và chỉ mất khoảng 640/1000 giây để bắt đầu nhận thông báo từ Bắc
Mỹ tới Nam cực.
1.1.2.1 Các dịch vụ mức ứng dụng ban đầu trên Internet
- Thư điện tử (Electronic mail) Cho phép người dùng ngồi trước máy tính
tại nhà mình gửi E-mail tới bất cứ ai ở đâu trên thế giới nếu họ có địa chỉ E-mail.
Họ có thể tham gia các nhóm thảo luận (Discussion group) về những đề tài khác
nhau hay bắt đầu một nhóm mới về những chủ đề mà họ ưa thích.
- Truyền file (File Transfer) Nếu cần một chương trình phần mềm mới
như các tiện ích nén file, các chương trình diệt virus, một phần mềm trò chơi,
hình ảnh hay âm thanh, người dùng có thể tải xuống bất cứ lúc nào với File
Transfer.
-
6
-
- Truy nhập từ xa (Remote login) Có lẽ điều thú vị nhất trong các ứng
dụng của Internet là Remote login, nó cho phép người dùng kết nối vào một máy
tính ở xa như một trạm cuối để sử dụng máy tính đó.
1.1.2.2 Dịch vụ mức mạng của Internet
Một lập trình viên viết chương trình ứng dụng trên Internet cần có một
cái nhìn khác với người chỉ đơn giản sử dụng dịch vụ Internet. Ở tầng mạng,
Internet cung cấp 2 kiểu dịch vụ mà các ứng dụng của Internet thường dùng đó
là:
- Dịch vụ truyền không kết nối (Connectionless Paket Delivery Service)
là một phương thức truyền dữ liệu mà các mạng chuyển mạch gói cung cấp.
Điều này chỉ đơn giản là mạng Internet chuyển các gói tin từ máy này sang máy
khác dựa vào thông tin địa chỉ của gói đến đích của nó. Việc chia nhỏ gói tin
truyền này có một ưu điểm là nếu một đường đi bị bận hoặc bị đứt, thì các gói có
thể được truyền theo một đường khác.
- Dịch vụ truyền tin cậy (Reliable Stream Transport Service) Phần lớn
các ứng dụng đòi hỏi nhiều dịch vụ hơn chỉ truyền thông không kết nối bởi vì
chúng cần tự động sửa lỗi, kiểm tra tính toàn vẹn của thông tin truyền đi trên
mạng.
1.1.3 Giao thức truyền thông và mô hình tham chiếu OSI
1.1.3.1 Giao thức truyền thông
Các máy tính trên mạng có thể trao đổi thông tin với nhau thông qua một
bộ những phần mềm cùng làm việc theo một chuẩn nào đó. Giao thức truyền
thông (Protocol) là tập hợp các quy tắc quy định phương thức truyền nhận thông
tin giữa các máy tính trên mạng.
Các mạng máy tính hiện đại được thiết kế bằng cách phân chia cấu trúc ở
mức độ cao nhằm làm giảm sự phức tạp khi thiết kế. Các giao thức mạng thường
-
7
-
được chia làm các tầng (Layer), mỗi tầng được xây để dựng dựa trên dịch vụ của
tầng dưới nó và cung cấp dịch vụ cho tầng cao hơn.
1.1.3.2 Mô hình tham chiếu OSI(Open Systems Interconect Referent
model)
Mô hình mạng máy tính do tổ chức tiêu chuẩn hoá quốc tế (International
Standard Organization - ISO) đưa ra năm 1983 được gọi là mô hình tham chiếu
các hệ thống mở (Open Systems Interconect referent model - OSI). Mô hình
tham chiếu OSI chứa 7 tầng mô tả chức năng của giao thức truyền thông. Mỗi
tầng của mô hình OSI miêu tả một chức năng được thực hiện khi dữ liệu di
chuyển giữa các ứng dụng giữa các mạng.
Virtual Communication
Hình 1. Mô hình tham chiếu OSI
Session
Presentation
Physical
Data Link
Network
Transport
Application
Application
Session
Presentation
Physical
Data Link
Network
Transport
-
8
-
Các lớp giao thức được xếp chồng lớp nọ trên lớp kia. Chính sự xuất
hiện của nó, cấu trúc thường được gọi là Stack hoặc giao thức xếp chồng.
Hai hệ thống khác nhau có thể truyền thông với nhau nếu chúng bảo
đảm những nguyên tắc chung (cài đặt cùng một giao thức truyền thông). Các
chức năng được tổ chức thành một tập các tầng đồng mức cung cấp chức năng
như nhau. Các tầng đồng mức phải sử dụng một giao thức chung.
Một tầng không định nghĩa một giao thức đơn, nó định nghĩa một chức
năng truyền thông có thể được thi hành bởi một số giao thức. Do vậy, mỗi tầng
có thể chứa nhiều giao thức, mỗi giao thức cung cấp một dịch vụ phù hợp cho
chức năng của tầng. Ví dụ cả giao thức truyền file (File Transfer Protocol - FTP)
và giao thức thư điện tử (Simple Mail Transfer Protocol - SMTP) đều cung cấp
dịch vụ cho người dùng và cả hai đều thuộc tầng ứng dụng. Mỗi mức ngang hàng
giao thức truyền thông (sự bổ xung của các giao thức cùng mức tương đương
trên hệ thống khác). Mỗi mức phải được chuẩn hoá để giao tiếp với mức tương
đương với nó. Trên lý thuyết, giao thức chỉ biết đến những gì liên quan tới lớp
của nó mà không quan tâm tới mức trên hoặc dưới của nó. Tuy nhiên phải có sự
thoả thuận để chuyển dữ liệu giữa các tầng trên một máy tính, bởi mỗi tầng lại
liên quan tới việc gửi dữ liệu từ ứng dụng tới một ứng dụng tương đương trên
một máy khác. Tầng cao hơn dựa vào tầng thấp hơn để chuyển dữ liệu qua mạng
phía dưới. Dữ liệu chuyển xuống ngăn xếp từ tầng này xuống tầng thấp hơn cho
tới khi được truyền qua mạng nhờ giao thức của tầng vật lý. Ở đầu nhận, dữ liệu
đi lên ngăn xếp tới ứng dụng nhận. Những tầng riêng lẻ không cần biết các tầng
trên và dưới nó xử lý ra sao, nó chỉ cần biết cách chuyển nhận thông tin từ các
tầng đó. Sự cô lập các hàm truyền thông trên các tầng khác nhau giảm thiểu sự
tích hợp công nghệ của đầu vào mỗi bộ giao thức. Các ứng dụng mới có thể
thêm vào mà không cần thay đổi tầng vật lý của mạng, phần cứng có thể được bổ
sung mà không cần viết lại các phần mềm ứng dụng.
-
9
-
Tầng vật lý (Physical layer)
- Tầng vật lý liên quan tới việc truyền dòng bit giữa các máy bằng kênh
truyền thông vật lý, ở đây, cấu trúc của dữ liệu không được quan tâm đến.
- Việc thiết kế tầng vật lý cần quan tâm đến các vấn đề về ghép nối cơ khí,
điện tử, thủ tục và môi trường truyền tin bên dưới nó, ví dụ mức điện áp tương
ứng với bit 0 - 1, thời gian tồn tại của xung
Tầng liên kết dữ liệu (Data link layer)
- Liên kết, thiết lập, duy trì, huỷ bỏ các liên kết dữ liệu là nhiệm vụ của
tầng liên kết dữ liệu.
- Ngoài ra tầng liên kết dữ liệu còn kiểm soát lỗi đường truyền, thông
lượng. Tầng này thực hiện việc đóng gói thông tin gửi thành các frame, gửi các
frame một cách tuần tự đi trên mạng, xử lý các thông báo xác nhận
(Acknowledgement frame) do bên nhận gửi về. Xác định ranh giới giữa các
frame bằng cách ghi một số byte đặc biệt vào đầu và cuối frame. Giải quyết vấn
đề thông lượng truyền giữa bên gửi và bên nhận (Vấn đề này có thể được giải
quyết bởi một số lớp trên).
Tầng mạng (Network layer)
- Vấn đề chủ chốt của tầng mạng là routing (dẫn đường), định rõ các gói
tin (packet) được truyền theo những con đường nào từ nguồn đến đích. Các con
đường này có thể cố định, ít bị thay đổi, được thiết lập khi bắt đầu liên kết hay
động (dynamic) thay đổi tuỳ theo trạng thái tải của mạng.
- Nếu có nhiều gói tin truyền trên mạng có thể xảy ra tình trạng tắc
nghẽn, tầng mạng phải giải quyết vấn đề này.
- Thực hiện chức năng giao tiếp với các mạng bao gồm việc đánh lại địa
chỉ, cắt hợp gói tin cho phù hợp với các mạng.
-
10
-
Ngoài ra tầng mạng còn thực hiện một số chức năng kế toán, ví dụ, một
số Firewall (Packet Filtering) được cài đặt trên tầng này để thống kê số lượng
các gói tin truyền qua mạng hay ngăn cấm hoặc cho phép các gói tin của giao
thức nào đó.
Tầng giao vận (Transport layer)
- Kiểm soát việc truyền tin từ nút tới nút (end-to-end): Bắt đầu từ tầng
này, các thực thể đã có thể nói chuyện một cách logic với nhau.
- Thực hiên việc ghép kênh và phân kênh: Mỗi ứng dụng có thể gửi dữ
liệu đi theo nhiều con đường, một đường truyền lại có thể được nhiều ứng dụng
sử dụng, phân kênh/hợp kênh giải quyết vấn đề phân chia dữ liệu cho các ứng
dụng.
- Khắc phục sai sót trong quá trình truyền tin: Việc khắc phục sai sót
được thực hiện trên nhiều tầng khác nhau, nhưng hiệu quả nhất là ở các tầng cao,
việc khắc phục sai sót thực hiện ở tầng giao vận là hợp lý nhất.
Tầng phiên (Session layer)
- Tầng này cho phép người sử dụng trên các máy khác nhau thiết lập,
duy trì, huỷ bỏ, đồng bộ phiên truyền thông giữa họ. Cung cấp một số dịch vụ
hữu ích cho người sử dụng như cho phép người dùng logon vào hệ thống chia sẻ
thời gian, truyền tệp giữa các máy tính.
- Quản lý thẻ bài (Token): cơ chế thẻ bài được tầng phiên cung cấp để
tránh hiện tượng tranh chấp đường truyền trên mạng.
- Thực hiện đồng bộ (Synchronization): thực hiện đối với những dữ liệu
lớn bằng cách thêm vào các thông tin kiểm tra, sửa lỗi.
Tầng trình diễn (Presentation layer)
- Giải quyết vấn đề liên quan tới cú pháp và ngữ nghĩa của thông tin như
chuyển đổi thông tin theo một chuẩn nào đó được cả hai bên sử dụng (mã ASCII
- EDBCDIC).
-
11
-
- Nén/giãn dữ liệu để giảm số lượng bit truyền trên mạng.
- Mã hoá dữ liệu để thực hiện quyền truy cập.
Tầng ứng dụng (Application layer)
- Tầng ứng dụng cung cấp giao diện sử dụng cho người dùng và môi
trường truyền tin.
- Thực hiện chức năng chuyển file trong đó có giải quyết vấn đề không
tương thích như cách đặt tên file hay các mã điều khiển trong một tệp văn bản
- Cung cấp các dịch vụ Electronic mail, Remote login, Directory
lookup
1.1.4 Bộ giao thức TCP/IP
1.1.4.1 Giao thức chuyển địa chỉ ARP (Address Resolution Protocol) và
giao thức chuyển ngược địa chỉ RARP (Reverse Address Resolution
Protocol)
Mọi máy tính cùng nằm trên một mạng có cùng một net id và các máy
tính cùng trên một mạng vật lý có thể gửi frame vật lý trực tiếp cho nhau nên
việc truyền thông tin giữa hai máy tính trong cùng một mạng vật lý không cần sử
dụng Gateway. Việc dẫn đường trực tiếp chỉ sử dụng phần địa chỉ máy host id
trong địa chỉ IP. Trạm gửi chỉ việc kết khối dữ liệu vào frame, chuyển địa chỉ IP
của trạm đích thành địa chỉ vật lý và gửi trực tiếp frame tới máy nhận.
Một cơ chế sử dụng để chuyển địa chỉ IP thành địa chỉ vật lý là ARP
(Address Resolusion Protocol). Khi hai máy tính cùng nối vào một mạng vật lý,
chúng biết được địa chỉ IP của nhau nhưng để truyền thông giữa hai máy, chúng
phải biết được địa chỉ vật lý của nhau. ARP giải quyết vấn đề chuyển từ địa chỉ
-
12
-
IP 32 bit sang địa chỉ Ethernet 48 bit. Người ta sử dụng hai cơ chế chuyển địa chỉ
là:
- Chuyển giao trực tiếp.
- Chuyển giao gián tiếp.
Chuyển giao trực tiếp
Địa chỉ vật lý là một hàm của địa chỉ IP, ví dụ sử dụng trên mạng Token
ring proNET-10 là mạng cho phép đặt địa chỉ IP và địa chỉ vật lý tùy ý. Người ta
có thể đặt địa chỉ IP là 192.5.48.3 và địa chỉ vật lý là 3, khi đó ta có P
A
=f(I
A
).
Với P
A
là địa chỉ vật lý, I
A
là địa chỉ Internet và f là hàm chuyển đổi.
Chuyển giao địa chỉ động
Chuyển giao địa chỉ động được thực hiện bằng cách máy tính gửi thông
tin gửi một thông báo tới toàn bộ các máy tính trên mạng, trong thông báo đó có
chứa địa chỉ IP của máy tính nó cần liên lạc, mọi máy sẽ nhận được thông báo và
máy nào thấy địa chỉ IP của mình thì trả lại một thông báo chứa địa chỉ vật lý,
khi đó, hai máy tính có thể “nói chuyện” với nhau.
Host A Host D
Host C
Host B
ARP Request
Host A
Host D
Host C Host B
ARP Reply
-
13
-
1.1.4.2 Giao thức điều khiển truyền tin (Internet Control Message Protocol
- ICMP)
Việc dẫn đường qua các mạng sử dụng giao thức điều khiển truyền tin
(Internet Control Message Protocol - ICMP) được định nghĩa trong RFC 792.
ICMP sử dụng gói tin IP để chuyển thông báo của nó. ICMP gửi các thông báo
làm các công việc: Điều khiển, thông báo lỗi và chức năng thông tin cho
TCP/IP… Thông thường ICMP được gửi khi một gói tin không thể đi tới đích,
một gateway không còn đủ chỗ nhớ để nhận thêm gói tin hay một gateway
hướng dẫn máy tính sử dụng gateway khác để truyền thông tin theo một con
đường tối ưu hơn.
1.1.4.3 Giao thức không kết nối (User Datagram Protocol – UDP)
UDP cho phép chương trình ứng dụng truy cập trực tiếp đến gói tin của
dịch vụ chuyển giao giống như dịch vụ mà giao thức IP cung cấp. Nó cho phép
ứng dụng trao đổi thông tin qua mạng với ít thông tin điều khiển nhất. UDP là
giao thức không kết nối, kém tin cậy vì nó không có cơ chế kiểm tra tính đúng
đắn của dữ liệu truyền.
-
14
-
1.1.4.4 Giao thức điều khiển truyền tin (Transmission Control Protocol -
TCP)
Một số ứng dụng đòi hỏi giao thức giao vận cung cấp dịch vụ chuyển giao
thông tin tin cậy sử dụng TCP bởi nó cung cấp dịch vụ kiểm tra đúng đắn và dữ
liệu được truyền với một sự phối hợp thích hợp. Một số đặc điểm của dịch vụ tin
cậy mà TCP cung cấp là:
- Hướng dòng (Stream Orientation): TCP coi dữ liệu nó gửi đi là một dòng
byte không phải là gói tin. Do đó, TCP đảm bảo số thứ tự của các byte gửi nhận.
TCP chuẩn không bắt hệ thống phải sử dụng một số đặc biệt nào để đánh số
dòng byte, mỗi hệ thống tự chọn một số mà nó sẽ dùng làm điểm bắt đầu. Mỗi
trạm cuối phải biết số thứ tự mà trạm kia dùng.
- Chuyển giao bộ đệm (Buffered Transfer): Để giảm số lượng truyền
thông, giao thức cố gắng sử dụng số lượng tối thiểu các segment để truyền tải
thông tin, do vậy, giao thức sử dụng tối đa độ dài có thể của segment.
- Kết nối hai chiều (Full Duplex Connection): TCP/IP cung cấp kết nối
cho cả hai đầu của liên kết. Điều này có nghĩa là tầng phía dưới cung cấp khả
năng gửi trả thông báo từ trạm đích trở lại trạm nguồn. TCP là giao thức hướng
kết nối. Nó thiết lập quan hệ logic giữa 2 trạm tham gia liên kết.
TCP cung cấp dịch vụ tin cậy với một cơ chế gọi là "Positive
Ackowledgment with Retransmission" (PAR). Đơn giản là trạm nguồn tiếp tục
gửi thông tin đi cho tới khi nó nhận được thông báo dữ liệu đã được nhận chính
xác tại trạm đích. Đơn vị thông tin chuyển giao giữa các ứng dụng gọi là
segment, mỗi segment chứa checksum để đảm bảo rằng segment không bị phá
huỷ trên đường truyền, nếu segment không bị phá huỷ, trạm nhận gửi thông báo
xác nhận lại trạm gửi, nếu segment bị phá huỷ, trạm nhận huỷ bỏ nó và sau một
thời gian nào đó, trạm gửi sẽ gửi lại gói tin mà nó không nhận được thông báo
xác nhận.
-
15
-
Hình 2. Sơ đồ truyền tin của giao thức TCP.
1.1.4.5 Giao thức truyền tệp (File Transfer Protocol - FTP)
Đây là một phương pháp sao chép tệp từ một máy tính ở xa về máy tính
của người dùng ta có thể ngồi tại máy tính của mình truyền hoặc lấy File trên
một máy chủ nào đó
1.2 Giao thức Telnet
1.2.1 Giao thức Telnet
Một trong những kỹ thuật chủ yếu sử dụng trên mạng máy tính là khả
năng truy cập hệ thống từ xa. Đó là việc người sử dụng có thể thực hiện được
một ứng dụng trên một máy tính từ xa. Trong các giao thức cho phép truy cập từ
xa có hiệu quả, đáng chú ý nhất là giao thức Telnet. Bộ giao thức TCP/IP bao
gồm một giao thức trạm làm việc ở xa đơn giản, gọi là Telnet, để cho phép
người sử dụng login vào máy tính thông qua Internet. Telnet thiết lập một kết nối
TCP, sau đó gửi các tín hiệu của người sử dụng đến trực tiếp máy tính ở xa y
như chúng được nhập vào bàn phím trực tiếp với máy tính ở xa. Telnet cũng
Thông tin trên mạng
Tại trạm gửi
Tại trạm nhận
Receive ACK 1
Receive ACK 2
Send Paket 1
Send ACK 1
Send ACK 2
Send Paket 2
Receive Paket 1
Receive Paket 2
-
16
-
chuyển tải dữ liệu xuất từ máy tính ở xa ngược trở về màn hình của người sử
dụng. Dịch vụ này được gọi là “trong suốt” (transparent) vì nó cho ta cảm giác
như là bàn phím và màn hình của người sử dụng nối trực tiếp vào máy tính ở xa.
Thông thường, phần mềm Telnet ở Client cho phép người sử dụng xác
định một máy ở xa bằng cách chỉ ra tên miền hoặc địa chỉ IP của nó. Giao thức
Telnet cung cấp một giao diện chuẩn, thông qua một chương trình ở một máy
(Telnet Client) có thể khai thác tài nguyên ở một máy khác (Telnet Server). Ví
dụ, một người sử dụng máy trạm của mạng LAN có thể kết nối với một máy
trong mạng như thể là một máy trạm kết nối trực tiếp với máy đó.
Remote Local
Login Login
LAN
Hình 3. Sơ đồ làm việc của giao thức Telnet.
1.2.2 Các dịch vụ của giao thức Telnet
Telnet cung cấp ba dịch vụ cơ bản. Trước hết, nó định nghĩa một trạm
mạng ảo để cung cấp một giao tiếp chuẩn cho các hệ ở xa. Chương trình Client
Workstation Termianal
Host
-
17
-
không phải hiểu chi tiết tất cả các hệ ở xa; chúng được xây dựng để sử dụng giao
tiếp chuẩn. Thứ hai, Telnet bao gồm một cơ chế cho phép Client và Server
thương thảo các lựa chọn, nó cung cấp một tập hợp các lựa chọn chuẩn. Cuối
cùng, trong Telnet thì hai đầu của kết nối là đối xứng. Cụ thể, Telnet không bắt
buộc dữ liệu nhập của Client phải đến từ bàn phím, nó cũng không bắt buộc
Client phải thể hiện dữ liệu xuất ra màn hình. Như thế, Telnet cho phép một
chương trình bất kỳ có thể đóng vai trò Client và hai đầu của kết nối có thể
thương thảo về các lựa chọn.
Host A Host B
Negotiation
Hình 4. Mô hình đối xứng của Telnet.
Client reads Client sends Server
From Terminal to Server sends to
pseudo
terminal
Server receives
Operating System
Operating System
TCP/IP
TCP/IP
NVT
NVT
Operating
System
Operating
System
TCP/IP
Internet
User’s
keyboard
& display
Telnet
client
Telnet
client
-
18
-
From Client
Hình 5. Các chương trình ứng dụng cài đặt Telnet Client và Telnet Server
Qua hình này chúng ta thấy, khi người sử dụng gọi Telnet, thì một
chương trình ứng dụng trên máy của người sử dụng trở thành Client. Sau đó,
Client này thiết lập kết nối TCP đến Server mà chúng sẽ thông tin liên lạc. Một
khi kết nối đã được thiết lập, Client sẽ nhận các ký tự bàn phím của người sử
dụng và gửi chúng đến Server , trong khi đó nó cũng đồng thời nhận các ký tự
mà Server gửi ngược trở về và thể hiện nó lên màn hình của người sử dụng.
Server phải nhận một kết nối TCP từ Client và rồi chuyển dữ liệu đi giữa kết nối
TCP này và hệ điều hành cục bộ.Trong thực tế, Server phức tạp hơn nhiều so với
những gì trình bày trong hình này bởi vì nó phải xử lý đồng thời nhiều kết nối.
Thông thường, một tiến trình Server chủ đợi các kết nối mới và tạo ra Server phụ
mới để xử lý mỗi kết nối. Như thế “Telnet Server” như trong hình thể hiện cho
Server phụ để xử lý một kết nối cụ thể. Hình này không trình bày Server chủ - để
lắng nghe các yêu cầu mới, nó cũng không trình bày những Server phụ để xử lý
những kết nối khác.
Chúng ta sử dụng khái niệm trạm làm việc ảo để mô tả đầu vào của hệ
điều hành, nơi cho phép một chương trình chạy, giống như Telnet Server, truyền
các ký tự dến hệ điều hành giống như là chúng được nhập từ bàn phím. Nếu hệ
thống trạm làm việc ảo, thì Telnet Server có thể được cài đặt với các chương
trình ứng dụng. Mỗi Server phụ kết nối một dòng TCP từ một Client đến một
trạm làm việc ảo.
-
19
-
Việc bố trí để Telnet Server là một chương trình mức ứng dụng có cả ưu
điểm lẫn khuyết điểm. Ưu điểm lớn nhất là nó làm cho việc sửa đổi và kiểm soát
của Server dễ hơn so với trường hợp chúng được nhúng vào trong hệ điều hành.
Khuyết điểm hiển nhiên nhất là sự kém hiệu quả. Mỗi ký tự nhập từ bàn phím
của người sử dụng sẽ di chuyển qua hệ điều hành để đến chương trình Client, từ
chương trình Client ngược trở về hệ điều hành và đi qua Internet để đến được
máy chủ. Sau khi đến được máy chủ, dữ liệu lại phải di chuyển ngược lên hệ
điều hành của Server để đến chương trình ứng dụng của Server, và từ chương
trình ứng dụng Server ngược trở về hệ điều hành của Server tại điểm vào của
trạm làm việc ảo. Cuối cùng, hệ điều hành ở xa sẽ chuyển phát ký tự này đến
chương trình ứng dụng mà người sử dụng đang chạy. Trong khi đó, kết xuất di
chuyển ngược trở về từ Server đến Client theo cùng một con đường như vậy.
1.2.3 Hoạt động của giao thức Telnet trong những hệ không đồng nhất
Để cho Telnet hoạt động được trong càng nhiều hệ khác nhau càng tốt,
nó phải chấp nhận được các chi tiết của nhiều hệ điều hành khác nhau. Ví dụ,
một số hệ yêu cầu các dòng văn bản được kết thúc bởi ký tự ASCII carriage
control (CR), những hệ khác lại yêu cầu ký tự ASCII linefeed (LF). Lại có những
hệ yêu cầu chuỗi hai ký tự CR-LF. Thêm vào đó, hầu hết các hệ tương tác cung
cấp phương tiện để người sử dụng đưa vào từ bàn phím ký hiệu ngắt một chương
trình đang chạy. Tuy nhiên, ký hiệu đặc biệt được sử dụng để ngắt một chương
trình lại khác nhau tùy vào trong hệ thống (ví dụ, một số hệ sử dụng Control – C,
có hệ lại sử dụng ESCAPE). Để chấp nhận được nhiều hệ khác nhau, Telnet định
nghĩa cách dữ liệu và các lệnh được gửi qua Internet. Định nghĩa này được gọi là
Trạm ảo (Network Virtual Terminal). Trong hình dưới, phần mềm Client chuyển
đổi các ký hiệu các bàn phím và chuỗi lệnh từ trạm của người sử dụng thành
dạng NVT và gửi chúng tới Server. Phần mềm Server lại chuyển đổi dữ liệu và
các lệnh gửi đến từ dạng NVT thành dạng mà hệ ở xa yêu cầu. Đối với dữ liệu
-
20
-
trả về, Server chuyển đổi từ dạng của hệ ở xa thành NVT và phần mềm Client lại
chuyển từ dạng NVT thành dạng của máy cục bộ.
TCP connection across Inernet
Client System format used NVT format used Server System format
used
Hình 6. Sơ đồ kết nối TCP trên Internet
1.2.3.1 Trạm ảo (Network Virtual Terminal-NVT)
NVT gồm một màn hình và một bàn phím. Bàn phím thực hiện việc gửi
dữ liệu thông qua kết nối Telnet. Màn hình nhận dữ liệu gửi về. Đặc trưng cơ
bản của mỗi NVT, nếu nó không bị thay đổi bởi những thoả thuận chung là:
- Biểu diễn dữ liệu là tập hợp ký tự ASCII chuẩn 7 bit hoặc là tập hợp ký tự
8 bit.
- NVT là một thiết bị xử lý đồng thời.
- NVT cung cấp một bộ phận báo hiệu lại (Local echo function).
User’s
keyboard
& display
Client Server
Server’s
System
Keyboard
Local
Echo
Printer
Input
Remote
Echo
Output
A
-
21
-
Terminal(Client) Host(Server)
Hình 7. Sơ đồ truyền tín hiệu từ Client đến Server
Định nghĩa của dạng NVT tương đối đơn giản. Mọi thông tin liên lạc đều
sử dụng các byte - 8bit. Tập hợp ký tự ASCII chuẩn gồm 95 ký tự in được và 33
mã điều khiển. Chuẩn NVT định nghĩa ý nghĩa của các ký tự điều khiển như sau:
Command
ASCII
Action
Null (NUL)
0
No operation
Bell (BEL)
7
Sound audible/visible signal(no motion)
Backspace(BS)
8
Move left one character position
Horizontal (HT)
9
M
ove right to the next horizontal tab stop
Line Feed (LF)
10
Move down(vertically) to the next line
Vertical Tab(VT)
11
Move down to the next vertical tab stop
Form Feed (FF)
12
Move to the top of the next page
Carridge Return (CR)
13
Move to the left m
argin on the current line
Other control
-
No operation (has no effect on output)
Hình 8. Các ký tự điều khiển của NVT
1.2.3.2 Các lựa chọn Telnet
Telnet bao gồm một cơ chế cho phép Client và Server thương thảo các
lựa chọn, nó cung cấp một tập hợp lựa chọn chuẩn (ví dụ, một trong những lựa
A
Z
-
22
-
chọn này là để điều khiển việc truyền dữ liệu qua kết nối sẽ sử dụng tập hợp ký
tự ASCII chuẩn 7 bit hoặc là tập hợp kýtự 8 bit). Trong Telnet, ta có thể thương
thảo các chọn lựa, điều này giúp cho Client và Server có thể cấu hình lại kết nối
của chúng. Ví dụ, thông thường dòng dữ liệu chuyển đi dữ liệu 7 bit và sử dụng
các octet có bit thứ 8 được lập để gửi đi thông tin điều khiển như lệnh ngắt tiến
trình. Tuy nhiên, Telnet cũng cung cấp một lựa chọn để cho phép Client và
Server gửi đi dữ liệu 8 bit. Để thực hiện quá trình đó, Client và Server phải
thương thảo với nhau và cả hai cùng phải thống nhất truyền dữ liệu 8 bit trước
khi bắt đầu việc truyền dữ liệu. Telnet cung cấp rất nhiều lựa chọn cho người sử
dụng. Ví dụ, giao thức được thiết kế trong môi trường một chiều (half-duplex), là
nơi hệ thống cần thông báo cho đầu kia “bắt đầu tiến hành” trước khi có thể gửi
dữ liệu. Một trong lựa chọn là điều khiển hoạt động của Telnet trong chế độ half-
duplex hoặc full-duplex. Có lựa chọn khác cho phép Server trên máy ở xa xác
định kiểu trạm làm việc của người sử dụng.
Name Code
RFC Meaning
Transmit Binary
0 856 Change transmision to 8 bit binary
Echo 1 857 Allow one side to echo data it receives
Suppress - GA 3 858 Suppress Go-ahead signal after data
Status 5 859 Request for status of a Telnet option from remote site
Timing-Mark 6 860 Request timing mark be inserted in return stream to
Synchronize two ends of a connection
Terminal-Type 24 884 Exchange information about the make and model of a
Terminal being used
End-of-Record 25 885 Terminate data sent with EOR code
Linemode 34 1116 Use local editing and send complete lines instead of
Individual characters
-
23
-
Hình 9. Một số lựa chọn thông dụng của Telnet.
Việc thương thảo các lựa chọn trong Telnet
Trong một số lựa chọn cụ thể, Server thường là phía khởi động việc
thương thảo. Vì thế, các giao thức được thiết kế sao cho đầu nào cũng có thể
đưa ra yêu cầu. Giao thức này được gọi là đối xứng với tiến trình chọn lựa. Nơi
nhận có thể đáp ứng lại yêu cầu bằng việc chấp nhận hoặc từ chối. Trong thuật
ngữ của Telnet, yêu cầu là WILL X, có nghĩa là “bạn đồng ý để tôi sử dụng lựa
chọn X” và lời đáp có thể là DO X hay DON’T, có nghĩa là “tôi đồng ý để bạn sử
dụng lựa chọn X” hay là “tôi không đồng ý để bạn sử dụng lựa chọn X”.
Như vậy. chúng ta có thể tóm tắt như sau: Telnet sử dụng một cơ chế
thương thảo chọn lựa đối xứng để cho phép Client và Server cấu hình lại các
tham số điều khiển việc tương tác giứa chúng. Bới vì, tất cả các phần mềm Telnet
hiểu giao thức cơ bản của NVT, Client và Server có thể hợp tác với nhau ngay cả
khi một bên hiểu được sự lựa chọn còn bên kia thì không.
1.2.3.3 Cấu trúc lệnh Telnet
Việc giao tiếp giữa Client và Server được thực hiện bởi các lệnh bên trong
mà người sử dụng không thể truy cập. Tất cả các lệnh Telnet bao gồm 2-3 byte
liên tiếp, tuỳ theo loại lệnh.
Telnet NVT chấp nhận các chức năng điều khiển bằng việc định nghĩa
cách chúng được chuyển từ Client đến Server. Về mặt khái niệm chúng ta xem
như NVT nhập dữ liệu từ bàn phím, có thể phát sinh nhiều hơn 128 ký tự. Giả
định bàn phím của người sử dụng có những phím ảo tương ứng với những chức
năng được sử dụng cho việc điều khiển.
Trong thực tế, hầu hết các bàn phím không cung cấp thêm các phím để
thực hiện các lệnh. Thay vào đó, từng hệ điều hành hoặc trình biên dịch lệnh có
những cách khác nhau để tạo ra chúng. Một trong những kỹ thuật thông dụng
nhất : liên kết từng ký tự ASCII với chức năng điều khiển để khi người sử dụng
-
24
-
gõ một phím, hệ điều hành sẽ thực hiện thao tác thích hợp thay vì nhận ký tự đó
làm nhập dữ liệu. NVT được thiết kế để các lệnh tách rời khỏi tập ký tự ASCII
thông thường, vì hai lý do. Trước hết, việc định nghĩa các chức năng điều khiển
riêng biệt làm cho Telnet làm việc uyển chuyển hơn. Nó có thể truyền tất cả ký
tự ACSII giữa Client và Server, cũng như các chức năng điều khiển có thể có.
Thứ hai, bằng việc tách rời các tín hiệu khỏi dữ liệu thông thường, NVT cho
phép Client xác định các tín hiệu một cách chính xác rằng ký tự nhập vào là dữ
liệu hay chức năng điều khiển. Để gửi chức năng điều khiển qua kết nối TCP,
Telnet mã hoá chúng theo kiểu chuỗi escape. Chuỗi escape sử dụng octet ngược
để chỉ rằng tiếp theo sau là các octet mã điều khiển. Trong Telnet, octet ngược để
bắt đầu một chuỗi escape được gọi là octet IAC(interrupt as command)
Ví dụ: Byte 1 Byte 2 Byte 3
255 253 24
Terminal Type
WILL
IAC
Command
Code
Meaning
SB
249
Start of option sub
-
negotiation
SE
240
End of option sub
-
negotiation
Interrupt Command
Option
As code Negotiated
command
-
25
-
WILL
251
Agreement to perform specified option
WON’T
252
Refusal to perform specified option
D
O
253
Approval to allow specified option
DON’T
254
Denial of request to perform specified option
NOP
241
No operation
EOR
239
End of record
Hình 10. Cấu trúc lệnh của Telnet.
Để có thể thực hiện việc thương thảo các lựa chọn Telnet sử dụng các lệnh
bên trong. Các lựa chọn có thể được thương thảo bằng các mã lệnh: WILL, DO,
DON’T, WON’T. Ngoài ra, một số lựa chọn còn có các lựa chọn phụ: nếu cả hai
bên đồng ý với lựa chọn, chúng sử dụng lệnh SB và SE để quản lý lựa chọn phụ.
Một ví dụ đơn giản, việc thương thảo các lựa chọn được thực hiện như sau:
Send
Reply
Meaning
DO transmit binary
WILL transmit binary
DO window size
WILL window size
Can we negotiate window
size?
SB window size
Specify window size
DO terminal type
WILL terminal type
Can we n
egotiate terminal
type?
SB terminal type SE
SB terminal type
IBM=3278-2 SE
My terminal is a 3278
-
2
DO echo
WON’T echo