ĐẶT VẤN ĐỀ 
 Công nghệ mạng Internet/Intranet đang phát triển mạnh mẽ và xu 
hướng tích hợp các mạng không đồng nhất để chia sẻ thông tin cũng xuất 
hiện ngày càng nhiều. Việc bảo đảm hệ thống mạng phức tạp, có quy mô lớn 
hoạt động tin cậy, hiệu năng cao, thông tin tin cậy đòi hỏi phải ph ải có hệ 
quản trị mạng để thu thập và phân tích một số lượng lớn dữ liệu một cách 
hiệu quả. Tuy nhiên, thông tin quản trị mạng lại phải truyền trên môi truờng 
Internet, có thể bị thất thoát, thay đổi hay giả mạo cần phải được bảo vệ. 
 Các phiên bản SNMPv1 và SNMPv2 mới chỉ đưa ra giải pháp xác thực yếu 
dựa trên cộng đồng (community). Chính vì vậy, việc nghiên cứu các giải 
pháp b ảo đảm tính xác thực, tính toàn vẹn, tính mật của các thông điệp 
quản trị mạng là hết sức cần thiết. Phiên bản SNMPv3 đã ra đời nhằm đáp 
ứng một phần yêu cầu cấp bách này. Tuy nhiên, việc lựa chọn mô hình thực 
thi vẫn còn nhiều vấn đề cần giải quyết. Tôi chọn hướng nghiên cứu này 
mong muốn đóng góp, xây dựng thử nghiệm vào một mô hình cụ thể và qua 
đó đánh giá khả năng triển khai trong thực tế hệ thống quản trị mạng có độ 
an ninh cao. 
Khuôn khổ luận văn bao gồm 3 chương: 
 Chương 1: Tổng quan về quản trị và an ninh thông tin trên Internet. 
 Chương 2: Nghiên cứu giải pháp an ninh mạng SNMP. 
 Chương 3: Xây dựng mô hình thử nghiệm. 
 Em xin chân thành cảm ơn sự nhiệt tình giúp đỡ của thầy giáo
                
              
                                            
                                
            
 
            
                
77 trang | 
Chia sẻ: maiphuongtl | Lượt xem: 2212 | Lượt tải: 1
              
            Bạn đang xem trước 20 trang tài liệu Luận văn Giải pháp an ninh trong kiến trúc quản trị mạng SNMP, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
 và agent, cả manager và agent đều 
được gọi chung là các thực thể SNMP. Mỗi một thực thể là một SNMP 
 36 
engine và sẽ có một hoặc nhiều ứng dụng chạy trên đó. Khái niệm mới này 
là quan trọng bởi vì chúng đã chỉ ra một cách đúng đắn nhất về kiến trúc 
tuyệt đối của một tập hợp các thông báo. Kiến trúc giúp tách rời các mẩu 
của hệ thống SNMP trong vấn đề thi hành việc bảo mật. SNMPv3 thêm vào 
các đặc điểm bảo mật so với SNMPv2 và SNMPv2c là: xác thực và mã hóa. 
 SNMPv3 sử dụng MD5 và SHA để tạo ra các giá trị hash cho từng 
thông điệp snmp. Thao tác này giúp cho phép xác thực các đầu cuối cũng 
như là ngăn ngừa thay đổi dữ liệu và các kiểu tấn công. Thêm vào đó, các 
phần mềm quản trị SNMPv3 và các agent có thể dùng DES để mã hóa gói 
tin, cho phép bảo mật tốt hơn. SNMPv3 đề nghị trong tương lai sẽ hỗ trợ 
Hình 2.4 : Tổng quan kiến trúc SNMPv3 
Document * 
Roadmap 
Applicability * 
Statement 
Coexistence * 
& Transition 
Message Handling 
Transport 
Mappings 
Message 
Processing and 
Dispatcher 
Security 
PDU Handling 
Protocols 
Operations 
Applications Access Control 
Information Model 
Structure of 
Management 
Information 
Textual 
Conventions 
Conformance 
Statements 
MIBs 
Standard v1 
RCF1157 
format 
Standard v1 
RCF1212 
format 
Draft v2 
RFC19xx 
format 
Historic 
RFC14xx 
format 
Document Set 
 37 
- Bảo mật trong SNMPv3 
 Trong một số môi trường đòi hỏi sự tác động của giao thức an ninh. 
Thông thường mức độ bảo mật ứng dụng ở hai giai đoạn khác nhau đó là: 
 - Trong quá trình truyền/nhận gói tin. 
 - Quá trình xử lý nội dung gói tin. 
Hình 2.5: Khuôn dạng Message của SNMPv3 
 Trong giao thức SNMP mức độ bảo mật được ứng dụng ở mức 
Security Model, giao thức sử dụng trong đó và nó được định nghĩa bởi 
modul MIB trong suốt quá trình sử lý và cho phép cấu hình remote message-
level thông qua mật khẩu. 
 Một phần mềm SNMP phải được hỗ trợ đồng thời bởi nhiều mô hình 
bảo mật. 
 Mô hình bảo mật xác định giao thức bảo mật sử dụng để cung cấp 
dịch vụ bảo mật như là xác thực và bảo mật. Giao thức bảo mật được định 
nghĩa bởi máy xử lý và MIB dữ liệu để cung cấp dịch vụ bảo mật. 
 38 
Hình 2.6: Thực thể SNMPv3 
 Mô hình bảo mật cơ bản tại các User (máy trạm) chủ yếu dựa trên vấn 
đề về cơ sở tên (name) truyền thống của User và các giao tiếp về lý thuyết 
USM cơ bản. Trong đó dịch vụ USM liên quan chủ yếu đến xác thực các 
MessageOutgoing và MessageIncoming 
Hình 2.7: Dịch vụ xác thức đối với Message Outgoing 
 Chức năng chính của USM là chạy modul riêng w/ thông qua key và 
scopedPDU. Modul này trả về các biến riêng và mã hóa các scopedPDU, 
sau đó USM gọi chức năng xử lý w/ xác thực khóa và không làm suy 
chuyển các mesage, cuối cùng sẽ trả về một message đầy đủ và đã được xác 
thực. 
 39 
Hình 2.8: Dịch vụ xác thực đối với Message Incoming 
 Quá trình xử lý đối với Message Incoming là hoàn toàn ngược với quá 
trình xử lý Message Outgoing, key cần xác thực bước đầu được đưa vào quá 
trình xử lý bởi chức năng xác thực kết hợp với việc giải mã thông qua modul 
riêng. 
Modul Privacy liên quan đến một số vấn đề sau: 
- Được sử dụng để mã hóa và giải mã trong phạm vi các PDU thông 
qua ID, name và PDU. 
- Giao thức mã hóa được sử dụng bằng cách chia ra thành các đoạn 
(CBC – Cipher Block Chaining) sau đó sử dụng thuật toán mã hóa DES. 
- Mã hóa khóa bí mật (user password) và giá trị đúng (timeliness). 
- Biến riêng đó chính là giá trị salt (giá trị độc nhất trong CBC-DES). 
 Ở đây khóa sử dụng để xác thực là khóa bí mật, có sử dụng thuật toán 
MD5 hoặc SHA-1 để cho ta khóa xác thực ở dạng digest2. Khóa degest2 thu 
được thông qua một số bước như sau: 
- Ban đầu digest0 được tạo ra bởi việc lặp lại password cho đến khi có 
dạng 220 octecs. 
- Tiếp theo digest1 tạo ra bởi việc sử dụng thuật toán MD5 hoặc 
SHA-1 đối với digest0. 
- Cuối cùng digest2 thu được từ sự kết hợp của SNMP engine ID và 
khóa digest1 thông qua hàm băm. 
 40 
2.1.3. Hoạt động của SNMP: 
Trong SNMP có 3 vấn đề cần quan tâm: máy quản lý, agent và MIB. 
MIB là cơ sở dữ liệu dùng phục vụ cho Manager và Agent. 
Máy quản lý là một server có chạy các chương trình có thể thực hiện 
một số chức năng quản lý mạng. Máy quản lý náy có thể xem như là NMS. 
NMS có khả năng thăm dò và thu thập các cảnh báo từ các agent trong 
mạng. Các cảnh báo của agent là cách mà agent báo với NMS khi có sự cố 
xảy ra. Cảnh báo của trạm được gửi một cách không đồng bộ, không nằm 
trong việc trả lời truy vấn của NMS. NMS dựa trên các thông tin trả lời của 
agent để có các phương án giúp mạng hoạt động hiệu quả hơn. Ví dụ khi 
đường dây kết nối tới Internet bị giảm băng thông nghiêm trọng, router sẽ 
gửi một thông tin cảnh báo tới NMS. NMS sẽ có một số hành động, ít nhất 
là lưu lại giúp ta có thể biết việc gì đã xảy ra. Các hành động này của NMS 
được cài đặt trước. 
Hình 2.9: SNMP manager truyền thống 
SNMP Entity 
NOTIFYCATION 
ORIGINATOR 
Applications 
NOTIFYCATION 
RECEIVER 
Applications 
COMMAND 
GENERATOR 
Applications 
Message Processing 
Subsystem 
v1MP * 
Security 
Subsystem 
Other 
security 
Model 
User-based 
Security 
Model 
PDU Dispatcher 
Message 
Dispatcher 
Transport 
Mapping 
(e.g RFC1906) 
Dispatcher 
v2cMP * 
v3MP * 
otherMP * 
UDP IPX other 
NETWORK 
 41 
Agent là một phần trong các chương trình chạy trên các thiết bị mạng 
cần quản lý. Nó có thể là một chương trình độc lập như các deamon trong 
Unix, hoặc được tích hợp vào hệ điều hành như IOS của Cisco trên router. 
Ngày nay, đa số các thiết bị hoạt động tới lớp IP được cài đặt SMNP agent. 
Các nhà sản xuất ngày càng muốn phát triển các ứng dụng của agent trong 
các sản phẩm của họ công việc của người quản lý hệ thống hay quản trị 
mạng đơn giản hơn. Các agent cung cấp thông tin cho NMS bằng cách lưu 
trữ các hoạt động khác nhau của thiết bị. Một số thiết bị thường gửi một 
thông báo “tất cả đều bình thường” khi nó chuyển từ một trạng thái xấu sang 
một trạng thái tốt. Điều này giúp xác định khi nào một tình trạng có vấn đề 
được giải quyết. 
Hình 2.10: Mối quan hệ giữa NMS và agent 
Không có sự hạn chế nào khi NMS gửi một câu truy vấn đồng thời 
agent gửi một cảnh báo. MIB có thể xem như là một cơ sở dữ liệu của các 
đối tượng quản lý mà agent lưu trữ được. Bất kỳ thông tin nào mà NMS có 
thể truy cập được đều được định nghĩa trong MIB. Một agent có thể có 
nhiều MIB nhưng tất cả các agent đều có một loại MIB gọi là MIB-II được 
định nghĩa trong RFC 1213. MIB-I là bản gốc của MIB nhưng ít dùng khi 
MIB-II được đưa ra. Bất kỳ thiết bị nào hổ trợ SNMP đều phải hỗ trợ MIB-
II. MIB-II định nghĩa các tham số như tình trạng của interface (tốc độ của 
interface, MTU, các octet gửi, các octet nhận...) hoặc các tham số gắn liền 
với hệ thống (định vị hệ thống, thông tin liên lạc với hệ thống,...). Mục đích 
NMS 
Agent 
Cảnh báo tới NMS 
Trả lời truy vấn của Agent tới NMS 
Truy vấn tới Agent 
 42 
chính của MIB-II là cung cấp các thông tin quản lý theo TCP/IP. Có nhiều 
kiểu MIB giúp quản lý cho các mục đích khác nhau: 
• ATM MIB (RFC 2515) 
• Frame Relay DTE Interface Type MIB (RFC 2115) 
• BGP Version 4 MIB (RFC 1657) 
• RDBMS MIB (RFC 1697) 
• RADIUS Authentication Server MIB (RFC 2619) 
• Mail Monitoring MIB (RFC 2249) 
• DNS Server MIB (RFC 1611) 
Nhưng nhà sản xuất cũng như người dùng có thể định nghĩa các biến 
cơ sở dữ liệu riêng cho họ trong từng tình huống quản lý của họ. Quản lý tài 
nguyên Host cũng là một phần quan trọng của quản lý mạng. Trước đây, sự 
khác nhau giữa quản lý hệ thống kiểu cũ và quản lý mạng không được xác 
định, nhưng bây giờ đã được phân biệt rõ ràng. RFC 2790 đưa ra tài nguyên 
về Host với định nghĩa tập hợp cá đối tượng cần quản lý trong hệ thống 
Unix và Window. Một số đối tượng đó là: dung lượng đĩa, số user của hệ 
thống, số tiến trình đang chạy của hệ thống và các phần mềm đã cài vào hệ 
thống. Trong một thế giới thương mại điện tử, các dịch vụ như web ngày 
càng trở nên phổ biến nên việc đảm bảo cho các server hoạt động tốt là việc 
hết sức quan trọng RMON hay còn gọi là RMONv1 được định nghĩa trong 
RFC 2819. RMONv1 cung cấp cho NMS các thông tin dạng gói tin về các 
thực thể trong LAN hay WAN. RMONv2 được xây dựng trên RMONv1 bởi 
những nhà cung cấp mạng và cung cấp thông tin ở lớp ứng dụng. Thông tin 
có thể thu được bằng nhiều cách. Một cách trong đó là đặt một bộ phận thăm 
dò của RMON trên mỗi phân đoạn mạng muốn theo dõi. RMON MIB được 
thiết kế để các RMON có thể chạy khi không kết nối logic giữa NMS và 
agent, có thể lấy được thông tin mà không cần chờ truy vấn của NMS. Sau 
đó, khi NMS muốn truy vấn, RMON sẽ trả lời bằng các thông tin thu thập 
 43 
được. Một đặc tính khác là ta có thể đặt ngưỡng cho một loại lỗi nào đó, và 
khi lỗi vượt quá ngưỡng đặt ra, RMON gửi một cảnh báo cho NMS. 
- SMI: (SMI - The Structure of Management Information) cung cấp cho 
chúng ta cách định nghĩa, lưu trữ các đối tượng quản lý và các thuộc tính 
của chúng. SMI đơn giản gồm có 3 đặc tính sau: 
+ Name hay OID (object identifier): định nghĩa tên của đối tượng. 
Tên thường ở 2 dạng; số hay các chữ có ý nghĩa nào đó về đối tượng. Trong 
dạng này hay dạng kia, tên thường khó nhớ hay bất tiện. 
+ Kiểu và cú pháp: Kiểu dữ liệu của object cần quản lý được định 
nghĩa trong ASN.1 (Abstract Syntax Notation One). ASN.1 chỉ ra cách dữ 
liệu được biểu diễn và truyền đi giữa máy quản lý và agent. Các thông tin 
mà ASN.1 thông báo là độc lập với hệ điều hành. Điều này giúp một máy 
chạy WindowNT có thể liên lạc với một máy chạy Sun SPARC dễ dàng. 
+ Mã hóa: mã hóa các đối tượng quản lý thành các chuỗi dùng BER 
(Basic Encoding Rules). BER xây dựng cách mã hóa và giải mã để truyền 
các đối tượng qua các môi trường truyền như Ethernet. Tên hay OID được tổ 
chức theo dạng cây. Tên của một đối tượng được thành lập từ một dãy các 
số nguyên hay chữ dựa theo các nút trên cây, phân cách nhau bởi dấu chấm. 
Hình 2.11: Cây đối tượng nguồn 
 44 
theo mô hình cây trên ta có OID của nhánh internet: 
internet OBJECT IDENTIFIER ::= {iso org(3) dod(6) 1} 
directory OBJECT IDENTIFIER ::= {internet 1} 
mgmt OBJECT IDENTIFIER ::= {internet 2} 
experimental OBJECT IDENTIFIER ::= {internet 3} 
private OBJECT IDENTIFIER ::= {internet 4} 
Trong mô hình trên, MIB-II thuộc nhánh mgmt: 
Hình 2.12: Cây đối tượng kế thừa 
MIB-II có 10 nhánh con được định nghĩa trong RFC 1213, kế thừa từ 
MIB-I trong RFC 1066. Mỗi nhánh có một chức năng riêng: 
- system (1.3.6.1.2.1.1): Định nghĩa một danh sách các đối tượng gắn 
liền với hoạt động của hệ thống như: thời gian hệ thống khởi động tới bây 
giờ, thông tin liên lạc của hệ thống và tên của hệ thống. 
- interfaces (1.3.6.1.2.1.2): Lưu giữ trạng thái của các interface trên 
một thực thể quản lý. Theo dõi một interface “up” hoặc “down”, lưu lại các 
octet gửi và nhận, octet lỗi hay bị hủy bỏ. 
 45 
- at (1.3.6.1.2.1.3): Nhóm at (address translation) bị phản đối, nó chỉ 
cung cấp khả năng tương thích ngược. Nhóm này được bỏ từ MIB-III trở đi. 
- ip (1.3.6.1.2.1.4): Lưu giữ nhiều thông tin liên quan tới giao thức IP, 
trong đó có phần định tuyến IP. 
- icmp (1.3.6.1.2.1.5): Lưu các thông tin như gói ICMP lỗi, hủy. 
- tcp (1.3.6.1.2.1.6): Lưu các thông tin khác dành riêng cho trạng thái 
các kết nối TCP như: đóng, lắng nghe, báo gửi… 
- udp (1.3.6.1.2.1.7): Tập hợp các thông tin thống kê cho UDP, các 
đơn vị dữ liệu vào và ra, … 
- egp (1.3.6.1.2.1.8): Lưu các tham số về EGP và bảng EGP lân cận. 
- Transmission (1.3.6.1.2.1.10): Không có đối tượng nào trong nhóm 
này, nhưng nó định nghĩa các môi trường đặc biệt của MIB. 
- snmp (1.3.6.1.2.1.11): Đo lường sự thực thi của SNMP trên các thực 
thể quản lý và lưu các thông tin như số các gói SNMP nhận và gửi. 
Hoạt động của SNMP theo mô hình sau: 
Hình 2.13: Hoạt động của SNMP 
 46 
- get 
- get-next 
- get-bulk (cho SNMPv2 và SNMPv3) 
- set 
- get-response 
- trap (cảnh báo) 
- notification (cho SNMPv2 và SNMPv3) 
- inform (cho SNMPv2 và SNMPv3) 
- report (cho SNMPv2 và SNMPv3) 
- “get”: “get” được gửi từ NMS yêu cầu tới agent. Agent nhận yêu cầu và 
xử lý với khả năng tốt nhất có thể. Nếu một thiết bị nào đó đang bận tải 
nặng, như router, nó không có khả năng trả lời yêu cầu nên nó sẽ hủy lời yêu 
cầu này. Nếu agent tập hợp đủ thông tin cần thiết cho lời yêu cầu, nó gửi lại 
cho NMS một “get-response”: 
Hình 2.14: Hoạt động của lệnh “get” trong giao thức SNMP 
Để agent hiểu được NMS cần tìm thông tin gì, nó dựa vào một mục 
trong “get” là “variable binding” hay varbind. Varbind là một danh sách các 
đối tượng của MIB mà NMS muốn lấy từ agent. Agent hiểu câu hỏi theo 
dạng: OID=value để tìm thông tin trả lời. Câu hỏi truy vấn cho trường hợp 
trong hình vẽ trên: 
$ snmpget cisco.ora.com public .1.3.6.1.2.1.1.6.0 system.sysLocation.0 = "" 
Đây là một câu lệnh “snmpget” trên Unix. “cisco.ora.com” là tên của 
thiết bị, “public” là chuỗi chỉ đây là yêu cầu chỉ đọc (read-only), 
“.1.3.6.1.2.1.1.6.0” là OID. “.1.3.6.1.2.1.1” chỉ tới nhóm “system” trong 
 47 
MIB. “.6” chỉ tới một trường trong “system” là “sysLocation”. Trong câu 
lệnh này ta muốn hỏi Cisco router rằng việc định vị hệ thống đã được cài đặt 
chưa. Câu trả lời system.sysLocation.0 = "" tức là chưa cài đặt. Câu trả lời 
của “snmpget” theo dạng của varbind: OID=value. Còn phần cuối trong OID 
ở “snmpget”; ”.0” nằm trong quy ước của MIB. Khi hỏi một đối tượng trong 
MIB ta cần chỉ rõ 2 trường “x.y”, ở đây là “.6.0”. “x” là OID thực tế của đối 
tượng. Còn “.y” được dùng trong các đối tượng có hướng như một bảng để 
hiểu hàng nào của bảng, với trường hợp đối tượng vô hướng như trường hợp 
này “y”=“0”. Các hàng trong bảng được đánh số từ số 1 trở đi. 
Câu lệnh “get” hữu ích trong việc truy vấn một đối tượng riêng lẻ trong 
MIB. Khi muốn biết thông tin về nhiều đối tượng thì “get” tốn khá nhiều 
thời gian. Câu lệnh “get-next” giải quyết được vấn đề này. 
- “get-next”: “get-next” đưa ra một dãy các lệnh để lấy thông tin từ một 
nhóm trong MIB. Agent sẽ lần lượt trả lời tất cả các đối tượng có trong câu 
truy vấn của “get-next” tương tự như “get”, cho đến khi nào hết các đối 
tượng trong dãy. Ví dụ ta dùng lệnh “snmpwalk”. “snmpwalk’ tương tự như 
“snmpget’ nhưng không chỉ tới một đối tượng mà chỉ tới một nhánh nào đó: 
$snmpwalk cisco.ora.com public system system.sysDescr.0 = "Cisco 
Internetwork Operating System Software ..IOS (tm) 2500 Software (C2500-
I-L), Version 11.2(5), RELEASE SOFTWARE (fc1)..Copyright (c) 1986-
1997 by cisco Systems, Inc... 
Compiled Mon 31-Mar-97 19:53 by ckralik" 
system.sysObjectID.0 = OID: enterprises.9.1.19 
system.sysUpTime.0 = Timeticks: (27210723) 3 days, 3:35:07.23 
system.sysContact.0 = "" 
system.sysName.0 = "cisco.ora.com" 
system.sysLocation.0 = "" 
system.sysServices.0 = 6 
 48 
Ở đây ta muốn lấy thông tin của nhóm “system”, agent sẽ gửi trả toàn 
bộ thông tin của “system” theo yêu cầu. Quá trình tìm nhóm “system” trong 
MIB thực hiện theo cây từ gốc, đến một nút nếu có nhiều nhánh thì chọn 
nhánh tìm theo chỉ số của nhánh từ nhỏ đến lớn: 
Hình 2.15: Quá trình tìm kiếm trong cây 
- “get-bulk”: “get-bulk” được định nghĩa trong SNMPv2. Nó cho 
phép lấy thông tin quản lý từ nhiều phần trong bảng. Dùng “get” có thể làm 
được điều này. Tuy nhiên, kích thước của câu hỏi có thể bị giới hạn bởi 
agent. Khi đó nếu nó không thể trả lời toàn bộ yêu cầu, nó gửi trả một thông 
điệp lỗi mà không có dữ liệu. Với trường hợp dùng câu lệnh “get-bulk”, 
agent sẽ gửi càng nhiều trả lời nếu nó có thể. Do đó, việc trả lời một phần 
của yêu cầu là có thể xảy ra. Hai trường cần khai báo trong “get-bulk” là: 
“nonrepeaters” và “max-repetitions”. “nonrepeaters” báo cho agent biết N 
đối tượng đầu tiên có thể trả lời lại như một câu lệnh “get” đơn. “mã-
repeaters” báo cho agent biết cần cố gắng tăng lên tối đa M yêu cầu ”get-
next” cho các đối tượng còn lại: 
$ snmpbulkget -v2c -B 1 3 linux.ora.com public sysDescr ifInOctets 
ifOutOctets 
 49 
system.sysDescr.0 = "Linux linux 2.2.5-15 #3 Thu May 27 19:33:18 
EDT 1999 i686" 
interfaces.ifTable.ifEntry.ifInOctets.1 = 70840 
interfaces.ifTable.ifEntry.ifOutOctets.1 = 70840 
interfaces.ifTable.ifEntry.ifInOctets.2 = 143548020 
interfaces.ifTable.ifEntry.ifOutOctets.2 = 111725152 
interfaces.ifTable.ifEntry.ifInOctets.3 = 0 
interfaces.ifTable.ifEntry.ifOutOctets.3 = 0 
Ở đây, ta hỏi về 3 varbind: sysDescr, ifInOctets, và ifOutOctets. Tổng 
số varbind được tính theo công thức N + (M * R) N: nonrepeater, tức số các 
đối tượng vô hướng M: max-repeatition R: số các đối tượng có hướng trong 
yêu cầu chỉ có sysDescr là vô hướng và N = 1M có thể đặt cho là 3, tức là 3 
trường cho mỗi ifInOctets và ifOutOctets. Có 2 đối tượng có hướng là 
fInOctets và ifOutOctets ef R=2 Tổng số có 1+3*2 = 7 varbind Còn trường 
“–v2c” là do “get-bulk” là câu lệnh của SNMPv2 nên sử dụng “-v2c” để chỉ 
rằng sử dụng PDU của SNMPv2. “-B 1 3” là để đặt tham số N và M cho 
lệnh. 
- “set”: để thay đổi giá trị của một đối tượng hoặc thêm một hàng mới vào 
bảng. Đối tượng này cần phải được định nghĩa trong MIB là “read-write” 
hay “write-only”. NMS có thể dùng “set’ để đặt giá trị cho nhiều đối tượng 
cùng một lúc: 
Hình 2.16: Hoạt động của Set 
$ snmpget cisco.ora.com public system.sysLocation.0 
 50 
system.sysLocation.0 = "" 
$ snmpset cisco.ora.com private system.sysLocation.0 s "Atlanta, GA" 
system.sysLocation.0 = "Atlanta, GA" 
$ snmpget cisco.ora.com public system.sysLocation.0 
system.sysLocation.0 = "Atlanta, GA" 
Câu lệnh đầu là dùng “get” để lấy giá trị hiện tại của 
“system.sysLocation”. Trong câu lệnh “snmpset” các trường 
“cisco.ora.com” và “system.sysLocation.0” có ý nghĩa giống với “get”. 
“private” để chỉ đối tượng “read-write”, và đặt giá trị mới bằng: “s "Atlanta, 
GA"”. “s” tức là đặt giá trị của “system.sysLocation.0” thành string, và giá 
trị mới là "Atlanta, GA" . Varbind này được định nghĩa trong RFC 1213 là 
kiểu string tối đa 255 ký tự: 
sysLocation OBJECT-TYPE YNTAX DisplayString (SIZE (0..255)) 
ACCESS read-write TATUS mandatory ESCRIPTION The physical location 
of this node (e.g., 'telephone closet, 3rd floor')." ::= { system 6 } Có thể cài 
đặt nhiều đối tượng cùng lúc, tuy nhiên nếu có một hành động bị lỗi, toàn bộ 
sẽ bị hủy bỏ. 
- Error Response của “get”, “get-next”, “get-bulk” và “set”: Có nhiều 
loại lỗi báo lại từ agent: SNMPv1 Error Message ý nghĩa noError(0) Không 
có lỗi tooBig(1). Yêu cầu quá lớn để có thể dồn vào một câu 
trả lời noSuchName(2) OID yêu cầu không tìm thấy, tức không tồn 
tại ở agent badValue(3). Câu lệnh “set” dùng không đúng với các object 
“read-write” hay “write-only” readOnly(4) lỗi này ít dùng. Lỗi 
noSuchName” tương đương với lỗi này genErr(5) dùng cho tất cả các lỗi 
còn lại, không nằm trong các lỗi trên Các loại lỗi của SNMPv1 mang tính 
chất chung nhất, không rõ ràng. Do đó SNMPv2 đưa ra thêm một số loại lỗi 
như sau: 
 51 
SNMPv2 Error Message ý nghĩa noAccess(6) lỗi khi lệnh “set” cố 
gắng xâm nhập vào một biến cấm xâm nhập. Khi đó, biến đó có trường 
“ACCESS” là “not-accessible” wrongType(7) lỗi xảy ra khi lệnh “set” đặt 
một kiểu dữ liệu khác với kiểu định nghĩa sẵn của đối tượng. Ví dụ khi “set” 
đặt giá trị kiểu string cho một đối tượng kiểu số nguyên INTEGER 
wrongLength(8) lỗi khi lệnh “set” đưa vào một giá trị có chiều dài lớn hơn 
chiều dài tối đa của đối tượng wrongEncoding(9) lỗi khi lệnh “set” sử dụng 
cách mã hóa khác với cách đối tượng đã định nghĩa. wrongValue(10) Một 
biến được đặt một giá trị mà nó không hiểu. Khi một biến theo kiểu liệt kê 
“enumeration” được đặt một giá trị không theo kiểu liệt kê. noCreation(11) 
lỗi khi cố đặt một giá trị cho một biến không tồn tại hoặc tạo một biến 
không có trong MIB inconsistentValue Một biến MIB ở trạng thái không 
nhất quán, và nó không chấp nhận bất cứ câu lệnh “set” nào. 
resourceUnavailable(13) Không có tài nguyên hệ thống để thực hiện lệnh 
“set” commitFailed(14) Đại diện cho tất cả các lỗi khi lệnh “set” thất bại 
undoFailed(15) Một lệnh “set” không thành công và agent không thể phục 
hồi lại trạng thái trước khi lệnh “set” bắt đầu thất bại. authorizationError(16) 
Một lệnh SNMP không được xác thực, khi một người nào đó đưa ra mật mã 
không đúng. notWritable(17) Một biến không chấp nhận lệnh “set” 
inconsistentName(18) Cố gắng đặt một giá trị, nhưng việc cố gắng thất bại 
vì biến đó đang ở tình trạng không nhất quán. 
- SNMP Traps: Trap là cảnh báo của agent tự động gửi cho NMS để NMS 
biết có tình trạng xấu ở agent 
Hình 2.17: Hoạt động của SNMP Trap 
 52 
Khi nhận được một “trap” từ agent, NMS không trả lời lại bằng 
“ACK”. Do đó agent không thể nào biết được là lời cảnh báo của nó có tới 
được NMS hay không. Khi nhận được một “trap” từ agent, nó tìm xem “trap 
number” để hiểu ý nghĩa của “trap” đó: Số và tên kiểu trap định nghĩa 
coldStart (0) Thông báo agent vừa khởi động lại. Tất cả các biến quản lý sẽ 
được reset, các biến kiểu “Counters” và “Gauges” được đặt về 0. “coldStart” 
dùng để xác định một thiết bị mới gia nhập vào mạng. Khi một thiết bị khởi 
động xong, nó gửi một “trap” tới NMS. Nếu địa chỉ NMS là đúng, NMS có 
thể nhận được và xác định xem có quản lý thiết bị đó hay không. 
warmStart(1) thông báo agent vừa khởi tạo lại, không có biến nào bị reset. 
linkDown(2) gửi đi khi một interface trên thiết bị chuyển sang trạng thái 
“down”. linkUp(3) gửi đi khi một interface trở lại trạng thái “up”. 
authenticationFailure(4) cảnh báo khi một người nào đó cố truy cập vào 
agent đó mà không được xác thực. egpNeighborLoss(5) cảnh báo một EGP 
lân cận bị “down” enterpriseSpecific(6) đây là một “trap” riêng, chỉ được 
biết bởi agent và NMS tự định nghĩa riêng chúng. NMS sử dụng phương 
pháp giải mã đặc biệt để hiểu được thông điệp này. “trap” được đưa ra trong 
MIB qua “rdbmsOutOfSpace”: rdbmsOutOfSpace TRAP-TYPE 
ENTERPRISE rdbmsTraps VARIABLES { rdbmsSrvInfoDiskOutOfSpaces } 
DESCRIPTION "An rdbmsOutOfSpace trap signifies that one of the 
database servers managed by this agent has been unable to allocate space 
for one of the databases managed by this agent. Care should be taken to 
avoid flooding the network with these traps." ::= 2 
- SNMP Notification: Để chuẩn hóa định dạng PDU “trap” của SNMPv1 
do PDU của “get” và “set” khác nhau, SNMPv2 đưa ra NOTIFICATION-
TYPE”. Định dạng PDU của “NOTIFICATION-TYPE” là để nhận ra “get” 
và “set”. “NOTIFICATION-TYPE” được định nghĩa trong RFC 2863: 
linkDown NOTIFICATION-TYPE OBJECTS {ifIndex, ifAdminStatus, 
 53 
ifOperStatus} STATUS current DESCRIPTION 
"A linkDown trap signifies that the SNMPv2 entity, acting in an agent role, 
has detected that the ifOperStatus object for one of its communication links 
left the down state and transitioned into some other state (but not into the 
notPresent state). This other state is indicated by the included value of 
ifOperStatus." ::= { snmpTraps 3 } OID của “trap” này là 
1.3.6.1.6.3.1.1.5.3, tức 
iso.org.dod.internet.snmpV2.snmpModules.snmpMIB.sn 
mpMIBObjects.snmpTraps.linkDown. 
- SNMP inform: SNMPv2 cung cấp cơ chế truyền thông giữa những NMS 
với nhau, gọi là SNMP inform. Khi một NMS gửi một SNMP inform cho 
một NMS khác, NMS nhận được sẽ gửi trả một ACK xác nhận sự kiện. Việc 
này giống với cơ chế của “get” và “set”. 
- SNMP report: được định nghĩa trong bản nháp của SNMPv2 nhưng 
không được phát triển. Sau đó được đưa vào SNMPv3 và hy vọng dùng để 
truyền thông giữa các hệ thống SNMP với nhau 
2.2. Các giải pháp xác thực thông tin quản trị 
 Xác thực là một phần quan trọng trong cấu trúc an ninh quản trị mạng 
nói chung và của kiến trúc quản trị mạng SNMP nói riêng. Người sử dụng 
cần phải được xác thực để có thể truy cập vào tài nguyên của hệ thống. Sau 
đây là một số phương thức xác thực: 
 + PAP (Password Authentication Protocol): Là một giao thức xác 
thực đơn giản dựa trên mật khẩu, sử dụng các kết nối PPP. PAP không an 
toàn vì thông tin xác thực không được mã hóa, kẻ tấn công có thể chặn và 
đọc được mật khẩu và giả danh người sử dụng để truy nhập vào mạng. 
 + CHAP (Challenge Handshake Authentication Protocol): là giao 
thức xác thực có kiểm tra, cũng được sử dụng trong các kết nối PPP. Quá 
trình thực hiện phương thức xác thực CHAP bao gồm 3 bước 
 54 
 - Bên xác thực gửi thông điệp yêu cầu tới đầu bên kia (user). 
 - Đầu bên kia tính toán một giá trị bằng cách sử dụng hàm băm một 
chiều và gửi trả lại cho bên xác thực. 
 - Bên xác thực có thể chấp nhận xác thực nếu giá trị đó phù hợp. 
Sau khi thoả thận giao thức xác thực CHAP trên liên kết PPP giữa các 
đầu cuối, máy chủ truy cập gửi một “chanllenge” tới người dùng từ xa. 
Người dùng từ xa phúc đáp lại một giá trị được tính toán sử dụng tiến trình 
xử lý một chiều (hash), máy chủ truy cập kiểm tra và so sánh thông tin phúc 
đáp với giá trị hash mà nó vừa tính được. Nếu gía trị bằng nhau, xác thực 
thành công, ngược lại kết nối sẽ bị huỷ bỏ. 
Chap cung cấp cơ chế an toàn thông qua việc sử dụng giá trị 
chanllenge thay đổi, duy nhất và không thể đoán được 
Nhược điểm của phương pháp xác thực này là tính khả mở kém vì nó 
yêu cầu quản lý một lượng lớn các thuộc tính sử dụng cho hàm băm, đặc 
biệt trong các mạng lớn. 
 + TACACS (Terminal Access Controller Access-Control System): 
Hệ thống điều khiển truy nhập từ xa trong mô hình khách/chủ. 
- User quay số tới máy chủ truy nhập từ xa. 
- RAS(Remote Access Service) sử dụng giao thức 
TACACS/RADIUS gửi yêu cầu tới máy chủ xác thực (Authentication 
server). 
- Máy chủ xác thực kiểm tra yêu cầu dựa vào cơ sở dữ liệu tài khoản 
người sử dụng. 
+ RADIUS (Remote Authentication Dial-In User Service): Là dịch vụ 
xác thực truy nhập từ xa, hỗ trợ nhiều máy chủ và số lượng lớn kết nối. Mô 
hình khách/chủ RADIUS sử dụng một máy chủ điều khiển truy nhập (NAS 
– Network Access Service) để quản lý kết nối, nó cũng có chức năng như 
máy khách của RADIUS. Truyền thông giữa máy khách và máy chủ 
 55 
RADIUS là được bảo mật, sử dụng mật khóa chia sẻ cho xác thực và mã hóa 
để truyền mật khẩu của người sử dụng. 
+ CA (Certificate Authentication): Chứng thực điện tử - là một tổ 
chức cấp chứng chỉ số. 
2.3. Giải pháp đảm bảo toàn vẹn thông tin quản trị 
Các bước bảo vệ: 
 + Điều khiển truy nhập (Access Control): cấp quyền truy nhập và sử 
dụng tài nguyên, xác thực, giám sát truy nhập. 
 + Giám sát hoạt động mạng. 
 + Bảo mật thông tin trên mạng (mã DES, mã công khai RSA …) 
 + Bảo vệ vật lý: ngăn cản truy nhập vật lý bất hợp pháp (gate keeper) 
 + Kiểm soát phần mềm đưa vào mạng 
 + Bức tường lửa (Firewall) ngăn các mạng nội bộ với thế giới Internet 
bên ngoài. 
Hình 2.18: Mô hình an ninh mạng 
Người gửi Bản tin 
Kênh truyền tin 
Bản tin 
Người nhận 
Trọng tài, phân phối thông tin mật 
Kẻ tấn công, Hacker, Virus, Worm, … 
Mật mã 
Giải mã 
 56 
2.4. Giải pháp mã mật thông tin quản trị 
Thuật toán Cryptography đề cập tới ngành khoa học nghiên cứu về 
mã hoá và giải mã thông tin. Cụ thể hơn là nghiên cứu các cách thức chuyển 
đổi thông tin từ dạng rõ (clear text) sang dạng mờ (cipher text) và ngược lại. 
Đây là một phương pháp hỗ trợ rất tốt cho trong việc chống lại những truy 
cập bất hợp pháp tới dữ liệu được truyền đi trên mạng, áp dụng mã hoá sẽ 
khiến cho nội dung thông tin được truyền đi dưới dạng mờ và không thể đọc 
được đối với bất kỳ ai cố tình muốn lấy thông tin đó. 
Hình 2.19: Quá trình mã mật thông tin 
Không phải ai hay bất kỳ ứng dụng nào cũng phải sử dụng mã hoá. 
Nhu cầu về sử dụng mã hoá xuất hiện khi các bên tham gia trao đổi thông 
tin muốn bảo vệ các tài liệu quan trọng hay gửi chúng đi một cách an toàn. 
Các tài liệu quan trọng có thể là: tài liệu quân sự, tài chính, kinh doanh hoặc 
đơn giản là một thông tin nào đó mang tính riêng tư,... 
Như chúng ta đã biết, Internet hình thành và phát triển từ yêu cầu của 
chính phủ Mỹ nhằm phục vụ cho mục đích quân sự. Khi chúng ta tham gia 
trao đổi thông tin, thì Internet là môi trường không an toàn, đầy rủi ro và 
nguy hiểm, không có gì đảm bảo rằng thông tin mà chúng ta truyền đi không 
bị đọc trộm trên đường truyền. Do đó, mã hoá được áp dụng như một biện 
pháp nhằm giúp chúng ta tự bảo vệ chính mình cũng như những thông tin 
mà chúng ta gửi đi. Bên cạnh đó, mã hoá còn có những ứng dụng khác như 
là bảo đảm tính toàn vẹn của dữ liệu. 
Theo một số tài liệu thì trước đây tính an toàn, bí mật của một thuật 
toán phụ thuộc vào phương thức làm việc của thuật toán đó. Nếu như tính an 
toàn của một thuật toán chỉ dựa vào sự bí mật của thuật toán đó thì thuật 
Plaintext Bản rõ Mật mã Bản mã 
Ciplaintext 
Giải mã 
Khóa K 
Bản rõ 
ban đầu 
Khóa K 
 57 
toán đó là một thuật toán hạn chế (Restricted Algrorithm). Thuật toán này có 
tầm quan trọng trong lịch sử nhưng không còn phù hợp trong thời đại ngày 
nay. Giờ đây, nó không còn được mọi người sử dụng do mặt hạn chế của nó: 
mỗi khi một user rời khỏi một nhóm thì toàn bộ nhóm đó phải chuyển sang 
sử dụng thuật toán khác hoặc nếu người đó người trong nhóm đó tiết lộ 
thông tin về thuật toán hay có kẻ phát hiện ra tính bí mật của thuật toán thì 
coi như thuật toán đó đã bị phá vỡ, tất cả những user còn lại trong nhóm 
buộc phải thay đổi lại thuật toán dẫn đến mất thời gian và công sức. 
Hệ thống mã hoá hiện nay đã giải quyết vấn đề trên thông qua khoá là 
một yếu tố có liên quan nhưng tách rời ra khỏi thuật toán mã hoá. Do các 
thuật toán hầu như được công khai cho nên tính an toàn của mã hoá giờ đây 
phụ thuộc vào khoá. Khoá này có thể là bất kì một giá trị chữ hoặc số nào. 
Phạm vi không gian các giá trị có thể có của khoá được gọi là Keyspace. Hai 
quá trình mã hoá và giải mã đều dùng đến khoá. Hiện nay, người ta phân 
loại thuật toán dựa trên số lượng và đặc tính của khoá được sử dụng. 
Nói đến mã hoá tức là nói đến việc che dấu thông tin bằng cách sử 
dụng thuật toán. Che dấu ở đây không phải là làm cho thông tin biến mất mà 
là cách thức chuyển từ dạng tỏ sang dạng mờ. Một thuật toán là một tập hợp 
của các câu lệnh mà theo đó chương trình sẽ biết phải làm thế nào để xáo 
trộn hay phục hồi lại dữ liệu. 
 Giải pháp mã mật thông tin quản trị thường sử dụng là hệ mã cổ điển 
DES (Data Encryption Standard): DES là tổ hợp của các phương pháp thay 
thế, đổi chỗ. Nó chia bản tin thành các block có độ dài cố định (64 bít) và 
lặp lại các phép mã hóa thay thế và đổi chỗ nhiều lần cho mỗi khối. 
 - Các phát triển tiếp của DES là: 
 + IDEA (International Data Encryption Algorithm): khóa 128 
bít, khối dữ liệu 64 bít. 
 + RC5: khối dữ liệu và khóa sử dụng có độ dài thay đổi. 
 58 
 + RC6: nâng cấp của RC5 để tăng tính bảo mật và hiệu quả. 
 + AES (Advanced Encryption Standard): khối dữ liệu 128 bít, 
khóa 128/192/256. 
Hình 2.20: Mô hình DES 
2.4.1. Sơ lược mật mã đối xứng DES 
Năm 1972, Viện tiêu chuẩn và công nghệ quốc gia Hoa kỳ (National 
Institute of Standards and Technology-NIST) đặt ra yêu cầu xây dựng một 
thuật toán mã hoá bảo mật thông tin với yêu cầu là dễ thực hiện, sử dụng 
được rộng rãi trong nhiều lĩnh vực và mức độ bảo mật cao. Năm 1974, IBM 
giới thiệu thuật toán Lucifer, thuật toán này đáp ứng hầu hết các yêu cầu 
của NIST. Sau một số sửa đổi, năm 1976, Lucifer được NIST công nhận là 
chuẩn quốc gia Hoa kỳ và được đổi tên thành Data Encryption Standard - 
DES. 
DES là thuật toán mã hoá bảo mật được sử dụng rộng rãi nhất trên thế 
giới, thậm chí, đối với nhiều người DES và mã hoá bảo mật là đồng nghĩa 
với nhau. ở thời điểm DES ra đời người ta đã tính toán rằng việc phá được 
khoá mã DES là rất khó khăn. Cùng với sự phát triển của các loại máy tính 
và mạng máy tính có tốc độ tính toán rất cao, khoá mã DES có thể bị phá 
trong khoảng thời gian ngày càng ngắn với chi phí ngày càng thấp. Dù vậy 
việc này vẫn vượt xa khả năng của các hacker thông thường và mã hoá DES 
vẫn tiếp tục tồn tại trong nhiều lĩnh vực như ngân hàng, thương mại, thông 
 59 
tin... nhiều năm nữa đặc biệt với sự ra đời của thế hệ DES mới-"Triple 
DES". 
Kể từ khi DES ra đời, nhiều thuật toán mã hoá bảo mật khác cũng 
được phát triển tương tự DES hoặc dựa trên DES, một khi nắm được các 
nguyên tắc của DES bạn sẽ dễ dàng hiểu các thuật toán này. 
Yêu cầu đặt ra nếu muốn bảo mật tốt hơn là phải tìm được một thuật 
toán sao cho việc thực hiện không quá phức tạp nhưng xác suất tìm ra chìa 
khoá bằng cách thử tất cả các trường hợp (brute-force) là rất nhỏ (số lần thử 
phải rất lớn). 
2.4.2. Thuật toán bảo mật DES. 
Về mặt khái niệm, thông thường thuật toán mã hoá DES là thuật toán 
mở, nghĩa là mọi người đều biết thuật toán này. Điều quan trọng nhất là chìa 
khoá của DES có độ dài tới 56 bit, nghĩa là số lần thử tối đa để tìm được 
chìa khoá lên đến 2^56, trung bình là 2^55 = 36.028.797.018.963.968 lần, 
một con số rất lớn. 
DES được thực hiện nhờ các phép dịch, hoán vị và các phép toán 
logic trên các bit. Mỗi ký tự trong bức thư hay bản tin cần mã hoá được biểu 
diễn bởi 2 số hexa hay 8 bít. DES mã hoá từng khối 64 bít tương đương 16 
số hexa. Để thực hiện việc mã hoá DES sử dụng một chìa khoá cũng dưới 
dạng 16 số hexa hay 64 bít tức 8 byte, nhưng các bít thứ 8 trong các byte 
này bị bỏ qua trong khi mã hoá vì vậy độ lớn thực tế của chìa khoá là 56 bit. 
Ví dụ, ta mã hoá một bản tin hexa "0123456789ABCDEF" với chìa khoá là 
"5A5A5A5A5A5A5A5A" thì kết quả là "72AAE3B3D6916E92". Nếu kết 
quả này được giải mã với cùng chìa khoá "5A5A5A5A5A5A5A5A" thì ta sẽ 
thu lại được đúng bản tin "0123456789ABCDEF". DES bao gồm 16 vòng, 
nghĩa là thuật toán chính được lặp lại 16 lần để tạo ra bản tin được mã hoá. 
Sau đây tôi sẽ trình bày quy trình của thuật toán DES. 
 60 
2.4.2.1. Chuẩn bị chìa khoá: 
Bước đầu tiên là chuyển 64 bit chìa khoá qua một bảng hoán vị gọi là 
Permuted Choice hay PC-1 để thu được chìa khoá mới có 56 bit. 
Sau khi vệc chuẩn bị chìa khoá và dữ liệu mã hoá hoàn thành, thực 
hiện mã hoá bằng thuật toán DES. Đầu tiên, khối dữ liệu đầu vào 64 bit 
được chia thành hai nửa, L và R. L gồm 32 bit bên trái và R gồm 32 bit bên 
phải. Quá trình sau đây được lặp lại 16 lần tạo thành 16 vòng của DES gồm 
16 cặp L[0]-L[15] và R[0]-R[15]: 
Bước 1: R[r-1]- ở đây r là số vòng, bắt đầu từ 1- được lấy và cho qua 
bảng E (E-bit Selection Table), bảng này giống như một bảng hoán vị, có 
điều là một số bit được dùng hơn một lần do vậy nó sẽ mở rộng R[r-1] từ 32 
bit lên 48 bit để chuẩn bị cho bước tiếp theo. 
Bước 2: 48 bit R[r-1] được XOR với K[r] và được lưu trong bộ nhớ 
đệm, vì vậy R[r-1] không thay đổi. 
Bước 3: Kết quả của bước trước lại được chia thành 8 đoạn, mỗi đoạn 
6 bit, từ B[1] đến B[8]. Những đoạn này tạo thành chỉ số cho các bảng S 
(Substitution) được sử dụng ở bước tiếp theo. Các bảng S, là một bộ 8 bảng 
(S[1]-S[8]) 4 hàng, 16 cột. Các số trong bảng có độ dài 4 bit vì vậy có giá trị 
từ 0 đến 15. 
Bước 4: Bắt đầu từ B[1], bit đầu và cuối của khối 6 bit được lấy ra và 
sử dụng làm chỉ số hàng của bảng S[1], nó có giá trị từ 0 đến 3, và 4 bit giữa 
được dùng làm chỉ số cột, từ 0 đến 15. Giá trị được chỉ đến trong bảng S 
được lấy ra và lưu lại. Việc này được lặp lại đối với B[2] và S[2] cho đến 
B[8] và S[8]. Lúc này bạn có 8 số 4 bit, khi nối lại với nhau theo thứ tự thu 
được sẽ tạo ra một chuỗi 32 bit. 
Bước 5: Kết quả của bước trước được hoán vị bit bằng bảng hoán vị P 
(Permutation). 
Bước 6: Kết quả thu được sau khi hoán vị được XOR với L[r-1] và 
chuyển vào R[r]. R[r-1] được chuyển vào L[r]. 
 61 
Bước 7: Lúc này bạn có L[r] và R[r] mới. Bạn tiếp tục tăng r và lặp 
lại các bước trên cho đến khi r= 17, đIều đó có nghĩa là 16 vòng đã được 
thực hiện và các chìa khoá phụ K[1]-K[16] đã được sử dụng. 
Khi đã có L[16] và R[16], chúng được ghép lại với nhau theo cách 
chúng bị tách ra (L[16] ở bên trái và R[16] ở bên phải) thành 64 bit. 64 bit 
này được hoán vị để tạo ra kết quả cuối cùng là dữ liệu 64 bit đã được mã 
hoá. 
2.4.2.2. Giải mã: 
Việc giải mã dùng cùng một thuật toán như việc mã hoá. Để giải mã 
dữ liệu đã được mã hoá, quá trình như giống như mã hoá được lăp lại nhưng 
các chìa khoá phụ được dùng theo thứ tự ngược lại từ K[16] đến K[1], nghĩa 
là trong bước 2 của quá trình mã hoá dữ liệu đầu vào ở trên R[r-1] sẽ được 
XOR với K[17-r] chứ không phải với K[r]. 
- Các chế độ của DES: 
Thuật toán DES mã hoá đoạn tin 64 bit thành đoạn tin mã hoá 64 bit. 
Nếu mỗi khối 64 bit được mã hoá một cách độc lập thì ta có chế độ mã hoá 
ECB (Electronic Code Book). Có hai chế độ khác của mã hoá DES là CBC 
(Chain Block Coding) và CFB (Cipher Feedback), nó làm cho mỗi đoạn tin 
mã hoá 64 bit phụ thuộc vào các đoạn tin trước đó thông qua phép toán 
XOR. 
- Triple DES: 
 Triple-DES chính là DES với hai chìa khoá 56 bit. Cho một bản tin 
cần mã hoá, chìa khoá đầu tiên được dùng để mã hoá DES bản tin đó, kết 
quả thu được lại được cho qua quá trình giải mã DES nhưng với chìa khoá là 
chìa khoá thứ hai, bản tin sau qua đã được biến đổi bằng thuật toán DES hai 
lần như vậy lại được mã hoá DES với một lần nữa với chìa khoá đầu tiên để 
ra được bản tin mã hoá cuối cùng. Quá trình mã hoá DES ba bước này được 
gọi là Triple-DES. 
 62 
- Ứng dụng của DES 
 DES thường được dùng để mã hoá bảo mật các thông tin trong quá 
trình truyền tin cũng như lưu trữ thông tin. Một ứng dụng quan trọng khác 
của DES là kiểm tra tính xác thực của mật khẩu truy nhập vào một hệ thống 
(hệ thống quản lý bán hàng, quản lý thiết bị viễn thông…), hay tạo và kiểm 
tính hợp lệ của một mã số bí mật (thẻ internet, thẻ điện thoại di động trả 
trước), hoặc của một thẻ thông minh (thẻ tín dụng, thẻ payphone…). 
- Phá khóa DES 
 Năm 1998, một nhóm nghiên cứu đã chi phí 220.000USD để chế tạo 
một thiết bị có thể thử toàn bộ số chìa khoá DES 56 bit trong trung bình 4,5 
ngày. Tháng 7 năm 1998 họ thông báo đã phá chìa khoá DES trong 56 giờ. 
Thiết bị này gọi là Deep Crack gồm 27 board mạch, mỗi board chứa 64 
chip và có khả năng thử 90 tỷ chìa khoá trong một giây. 
Tuy nhiên, việc phá khóa Triple DES là điều rất khó khăn, một 
chuyên gia về bảo mật đã cho rằng "Không có đủ silic trong giải ngân hà (để 
chế tạo chip-TG) cũng như không đủ thời gian trước khi mặt trời bị phá huỷ 
để phá khoá Triple DES". 
 63 
Chương 3: MÔ HÌNH THỬ NGHIỆM 
3.1. Lựa chọn mô hình thử nghiệm 
 Có thể nói trên thế giới hiện nay có rất nhiều phần mềm SNMP sử 
dụng cho version 1, version 2 và version 3. Mỗi phần mềm có thể phục vụ 
cho một hay nhiều hệ điều hành và có nhiều phiên bản với những ưu và 
nhược điểm khác nhau, có thể sử dụng cấu hình trên thiết bị phần cứng hỗ 
trợ giao thức SNMP như Router, Pix, Modem…. Do đó, để lựa chọn một 
phần mềm nhằm thực hiện thử nghiệm mô hình quản trị mạng SNMP là rất 
khó khăn. Sau thời gian nghiên cứu và tìm hiểu tôi đã chọn phần mềm 
PRTG Traffic Grapher là một ứng dụng trên Windows để minh họa cho giao 
thức SNMP - PRTG Traffic Grapher dùng để theo dõi và phân loại cách 
dùng băng thông. 
Có thể nói với bất cứ một mạng nào thì việc giao tiếp với mạng bên 
ngoài đều phải thông qua một thiết bị đó chính là Modem. Với công cụ 
PRTG Traffic Grapher này người quản trị mạng có thể theo dõi băng thông 
của router ADSL thông qua giao thức SNMP. Trong khi các chương trình 
theo dõi băng thông dựa vào các traffic thông qua cổng card mạng của 1 
máy tính trên mạng thì PRTG Traffic Grapher sẽ theo dõi traffic trực tiếp tại 
cổng PPP của router ADSL nên theo dõi được toàn bộ traffic IN, OUT của 
toàn mạng. 
PRTG Traffic Grapher có phiên bản miễn phí, bản thương mại. Phiên 
bản PRTG Traffic Grapher miễn phí (15MB) được download theo link sau: 
- Xác lập SNMP trên router ADSL 
Với bất cứ loại Modem nào, việc cấu hình router cung cấp dữ liệu 
SNMP theo các bước sau: 
 64 
Trên Modem ZoomADSL mở trang web cấu hình router, tìm tab 
Administration -> Management. Trong Management, tìm mục SNMP (hình 
dưới): 
Hình 3.1: Enable SNMP trên Router ADSL ZoomX5, X6 
Trong mục SNMP, lựa chọn Enable. Lưu ý xem Modem router của 
bạn hỗ trợ SNMP version nào và giá trị Community. Trong ví dụ này, 
Modem router hỗ trợ SNMP V1 và V2, giá trị Get Community là "public" 
Trên Modem Dlink-520T (ADSL Router) sau khi login vào cấu hình 
web, chọn tab Advanced trên menu bên trái chọn mục SNMP. 
Hình 3.2: Cài đặt SNMP trên ADSL Dlink-D520T 
 65 
3.2. Phân tích quá trình hoạt động 
3.2.1 Cài đặt chương trình 
Sử dụng PRTG Traffic Grapher để theo dõi băng thông. Sau khi 
download PRTG Traffic Grapher, tiến hành cài đặt. Việc cài đặt thực hiện 
khá dễ dàng. Để chạy chương trình, trên Windows nhắp Start -> Programs -
> PRTG Traffic Grapher -> PRTG Traffic Grapher. Xuất hiện hộp thoại 
Welcome to PRTG Traffic Grapher. 
Hình 3.3: Hộp thoại Welcome to PRTG Traffic Grapher 
Trên hộp thoại Welcome to PRTG Traffic Grapher, lựa chọn "Use the 
Freeware Edition", sau đó nhắp Next để tiếp tục. Sẽ xuất hiện giao diện 
chính của PRTG Traffic Grapher. 
 66 
Hình 3.4: Giao diện PRTG Traffic Grapher 
Trên giao diện của PRTG Traffic Grapher, kích chuột vào lựa chọn 
"Click here to create your first sensor" để tạo các sensor theo dõi. 
Khi đó PRTG Traffic Grapher sẽ chạy các bước cấu hình để thêm một 
sensor mới. Dưới đây là các bước cấu hình chính: 
Hình 3.5: Chọn giao thức SNMP 
PRTG Traffic Grapher có hỗ trợ các loại sensor: SNMP, Packet 
Sniffing, NetFlow, Latency. Phiên bản miễn phí chỉ hỗ trợ SNMP và Packet 
Sniffing. SNMP sensor được sử dụng để theo dõi các traffic IN và OUT của 
cổng trên Modem router. Packet Sniffing được sử dụng để theo dõi các 
traffic của card mạng tại máy sử dụng. 
 67 
Trên hộp thoại Data Acquisition Type, lựa chọn SNMP. 
Hình 3.6: Chọn chuẩn Sensor 
Trên hộp thoại SNMP Sensor Type Selection, lựa chọn "Standard 
Traffic Sensor". Các lựa chọn khác tùy thuộc vào thiết bị hỗ trợ SNMP. 
Hình 3.7: Lựa chọn IP và version SNMP 
 68 
Trên hộp thoại Device Selection, xác định các giá trị: 
- Device Name/Alias: Nhập tên router do bạn tự quy định. Có thể chọn IP 
của thiết bị đó cho dễ nhớ. 
- IP Address/DNS Name: Địa chỉ IP của router. 
- SNMP Version: Phiên bản của SNMP trên router hỗ trợ. Trong ví dụ này 
router hỗ trợ SNMP V1/V2 nên có thể chọn V2c. Có thể chọn lần lượt từng 
phiên bản để thử. 
- SNMP port: Để giá trị ngầm định của cổng SNMP là 161. 
- SNMP Community String: Ngầm định là public. Giá trị này có thể kiểm tra 
ở phần cấu hình SNMP trên router. 
Nếu sử dụng SNMP V3, cần phải xác định SNMP User, 
Authentication Mode và Password, có thêm lựa chọn là Data Encryption 
key. 
Hình 3.8: Chọn Sensor 
 69 
Trên hộp thoại Sensor Selection sẽ xuất hiện các cổng mà router đó 
hỗ trợ. Lựa chọn cổng theo dõi ADSL là ppp0. Lưu ý các ký hiệu: ppp: 
Point-to-Point Protocol; eth: Ethernet; br: Bridge; wlan: Wireless. 
Sau khi lựa chọn cổng theo dõi, xuất hiện giao diện đồ họa theo dõi 
băng thông của cổng tương ứng. 
Hình 3.9: Giao diện Sensor Monitoring 
Việc hiển thị được chia thành các loại biểu đồ hỗ trợ người quản trị 
theo dõi thuận tiện: Live Graph 60 Minutes, Graph 24 Hours, Graph 30 
days, Graph 365 days với các mức thời gian và giá trị trung bình khi hiển thị 
khác nhau. 
Lưu ý đường mầu xanh là Bandwith Traffic OUT, đường mầu đỏ nâu 
là Bandwith Traffic IN. Trên đây là một tính năng của PRTG Traffic 
Grapher hỗ trợ người quản trị theo dõi băng thông của router ADSL. Các 
tính năng khác. 
 70 
3.2.2 Phân tích quá trình hoạt động 
 Kiến trúc PRTG Network Monitor bao gồm hai phần chính đó là: 
PRTG Core Server và PRTG Probe. Vấn đề chính trong quá trình cài đặt 
PRTG đó là Core Server bao gồm quá trình lưu trữ dữ liệu, web server, các 
báo cáo và hệ thống lưu trữ. Còn Probe thi hành quá trình giám sát, nó nhận 
các cấu hình từ Core Server và thực thi quá trình xử lý sau đó báo kết quả về 
cho Core Server. Một Core Server có thể quản lí không giới hạn các Probe 
để tăng khả năng giám sát. 
 Hai phần Core và Probe là hai dịch vụ trong windows chúng chạy bởi 
hệ điều hành window, không yêu cầu login vào user. 
- Core Server: là bộ phận quan trọng trong PRTG dùng để xử lí các quá 
trình 
 + Cấu hình quản lí monitor 
 + Quản lí và cấu hình kết nối với các Probe 
 + Lưu các dòng kết quả của monitor 
 + Người quản trị khai báo Mail Server cho quá trình gửi qua Email 
 + Lập biểu và báo cáo 
 + Quản lí các account 
 + Thanh lọc dữ liệu (dữ liệu quá 365 ngày) 
- Probe: là giao diện PRTG có thể chạy trên một hay nhiều máy tính. Ở quá 
trình cài đặt được gọi là “Local Probe” tự động được tạo bởi hệ thống. Sau 
khi nhận được cấu hình từ Core hệ thống tất cả các Probe có thể hoạt động 
độc lập. Chúng có nhiệm vụ giám sát và thông báo tình trạng hệ thống máy 
tính. 
Hình 3.10: Cấu trúc một Probe 
 71 
- Trên thẹc tế PRTG Network Monitor thi hành bởi các sensor, mỗi một 
sensor đại diện cho một thiết bị mạng, có thể là: 
 + Một dịch vụ mạng: SMTP, FTP, HTTP… 
 + Quá trình giao tiếp trên một cổng của Switch 
 + Quá trình hoạt động của CPU hay bộ nhớ 
 + Quá trình giao tiếp trên card mạng 
 + Một thiết bị NetFlow… 
- Các Sensor này cho phép User tạo thành các nhóm, mỗi nhóm là tập hợp 
của một số các thiết bị, mỗi thiết bị lại có tập các Sensor và cuối cùng mỗi 
sensor có một hoặc nhiều kênh “chanels” (có thể là kênh IN hay OUT) 
Hình 3.11: Quá trình gom nhóm các Probe 
3.3. Đánh giá hiệu quả mô hình 
 Với thực trạng về nhu cầu an ninh trên Internet như hiện nay thì với 
những tính năng như trên, có thể nói phần mềm giám sát giao tiếp mạng 
PRTG sử dụng giao thức SNMP đem lại hiệu quả và độ an ninh cao trong 
quản trị mạng. Việc sử dụng phần mềm PRTG Traffic Grapher có thể áp 
dụng cài đặt trong một số mô hình mạng cụ thể. 
 72 
CÀI ĐẶT CẤU HÌNH HỆ THỐNG 
1. Cài đặt cấu hình trên Windows 
Cài đặt dịch vụ SNMP 
 Mặc định hệ điều hành Windows không cài dịch vụ hỗ trợ cho giao 
thức SNMP, để cài thêm ta vào Control Panel, double click vào Add 
Remove Program  Add Remove Windows Component. Chọn Management 
and Monitoring Tools. 
 73 
Khi cài, ta sẽ có thêm 2 dịch vụ hỗ trợ SNMP đó là SNMP Service và 
SNMP Trap Service: 
Cấu hình community trên các dịch vụ của SNMP: 
Mở dịch vụ SNMP Service: vào tab Security, tab này cho phép thiết 
lập community có ý nghĩa giống như mật khẩu giữa thiết bị quản lý và thiết 
bị cần quản lý. Đối với mỗi community sẽ đi kèm với quyền (rights) khác 
nhau: 
READ-ONLY: Chỉ cho phép đọc, không thiết lập lại thông số được, 
READ-WRITE: Cho phép thiết lập lại thông số. 
READ-CREATE: Cho phép tạo ra thông số. 
NOTIFY: Dùng cơ chế Trap 
NONE: Community không có quyền gì hết. 
Đó là thiết lập quyền phía người dùng, bản thân mỗi tham biến cũng 
có quyền của riêng nó. Ví dụ với tham biến về thời gian UpTime của hệ 
thống thì ta không set giá trị lại được. Mặt khác, đối với tham biến 
system.sysContact thì ta có thể đặt lại giá trị được. 
 74 
Sau khi cấu hình dịch vụ xong cần restart lại dịch vụ: Chọn SNMP Service 
sau đó kích chuột vào Restart. Làm tương tự đối với SNMP Trap. 
2. Cài đặt trên Linux: 
 Có thể sử dụng gói cài thêm hoặc dùng công cụ Net-SNMP 
có sẵn trong một số distro Linux. 
Sử dụng gói cài: giải nén tạo liên kết mềm với Net-SNMP 
#cd 
#tar-xvzf net-snmp-5.0.2.tar.gz 
#ln –s net-snmp-5.0.2 net-snmp 
#cd ~/net-snmp 
#./configure 
…. Biên dịch 
#make 
…. Cài đặt 
#make install 
Thiết lập biến môi trường 
PATH=$PATH:/usr/local/bin:/usr/loacl/sbin 
 75 
MIBS=ALL 
Export PATH MIBS 
Sử dụng dịch vụ SNMP và công cụ Net-SNMP có sẵn của Linux: 
Mặc định thì dịch vụ SNMP không được cài trên Linux nên phải cài thêm 
vào. Đối với distro Fedora Core 4 thì cài thêm trong mục System 
Tools/snmpd. Sau khi cài thì sẽ có thêm hai dịch vụ là snmpd và snmptrapd. 
 Khác với trong windows, nếu ta muốn thiết lập community cho dịch 
vụ SNMP thì phải sửa lại file cấu hình /etc/snmp/snmpd.conf như sau: 
Sau mỗi lần chỉnh sửa file cấu hình thì gõ lệnh service snmpd restart để 
khởi động lại dịch cụ SNMP ứng với lần chỉnh sửa mới. 
Khi cấu hình xong thì dùng dòng lệnh để quản lý. Phần này giống như 
trong windows. 
 76 
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 
Kết luận 
Sau một thời gian thực hiện, em đã hoàn thành luận văn và đạt được 
một số kết quả nhất định. Trong luận văn này, em đã cố gắng trình bày 
những kiến thức cơ bản về an ninh trong kiến trúc quản trị mạng SNMP. 
Luận văn tập trung chủ yếu vào vấn đề: Tổng quan về quản trị và an 
ninh thông tin trên Internet, nghiên cứu giải pháp an ninh trong kiến trúc 
mạng SNMP. 
Kết quả đạt được: đã hoàn thành luận văn với các nội dung nêu trên. 
Hướng phát triển 
Hoàn thành luận văn với kết quả đạt được tương đối theo yêu cầu của 
đề tài đưa ra. Tuy nhiên trong quá trình thực hiện đề tài, em nhận thấy vẫn 
còn nhiều vấn đề liên quan cần được tìm hiểu nghiên cứu. Em xin đưa ra 
một số vấn đề cần tìm hiểu và nghiên cứu phát triển đề tài như sau: 
- Dựa vào kết quả nghiên cứu trên có thể xây dựng phần mềm quản trị 
hệ thống mạng thông qua giao thức SNMP. 
- Kết hợp với việc nghiên cứu một số giải pháp an ninh cả về phần 
cứng và phần mềm khác để có thể xây dựng một hệ thống mạng với an toàn 
về dữ liệu và an ninh cao. 
 77 
TÀI LIỆU THAM KHẢO 
1. Giáo trình hệ thống mạng máy tính CCNA, Nhà xuất bản LĐXH, 2004. 
2. Hướng dẫn thiết lập và quản trị mạng, Nhà xuất bản Thống Kê, 2002. 
3. Giáo trình Curicurlum CCNA1 của Cisco System. 
4. Internetworking với TCP/IP, Nhà xuất bản Giáo dục, 2001. 
5. Computer Security Art And Science, By Matt Bishop, Publisher: Addition 
Wesley, 2002. 
6. Essential SNMP, 2nd Edition, By Douglas Mauro, Kevin Schmidt, 
Publisher: O'Reilly, Pub Date: September 2005. 
7. IETF: RFC2021, RFC1213, RFC1757, RFC2271. 
8.  
 configuration/guide/snmp.html 
9.  
10.  
            Các file đính kèm theo tài liệu này:
doc_3981.pdf