You are on page 1of 20

BÁO CÁO SNORT TUẦN 2

1.Giao thức OSPF


Giao thức định tuyến OSPF là giao thức định tuyến động thuộc nhóm Link State.
Trên mỗi Router đều có bản đồ mạng của cả vùng (bảng định tuyến) thông qua
việc đồng nhất bảng cơ sở dữ liệu trạng thái đường link (LSDP - Link State
Database). Từ bản đồ mạng này Router sẽ tự tính toán ra đường đi ngắn nhất và
xây dựng bảng định tuyến cho nó.
- Packet Header Format:
- Quá trình tìm đường đi tối ưu:
B1: thiết lập neighbor của nhau. Sau đó liệt kê các neighbor vào trong neighbor của mình. Lúc
này, mối quan hệ giữa các neighbor gọi là 2-way.
- Để làm neighbor của nhau thì 2 router phải có cùng irea_id, subnet và subnet mask.
- Khi cả 2 Router đã chạy OSPF thì chúng bắt đầu gửi gói tin Hello để thiết lập neighbor.
- Định dạng thông điệp bản tin hello:

- Hoạt động: Mỗi router gửi multicast gói hello để giữ liên lạc với các router láng giềng. Gói
hello mang thông tin vê ̀các mạng kết nối trực tiếp vào router.
Hoạt động của gói tin HELLO:
+Gửi gói tin multicast đến địa chỉ 224.0.0.5 trên tất cả các interfaces
+Gửi gói tin unicast trên các liên kết ảo
+Các gói tin HELLO có chu kỳ 10s trên LAN và 30s trên NBMA
+Sử dụng để thành lập quan hệ kết nối với các láng giềng liền kề
+Quan hệ láng giềng được lập khi 1 router thấy tên mình trong bản tin hello của láng
giềng

B2: Bắt đầu gửi thông tin trạng thái đường link để dựng lên 1 bảng database(bảng topology).

B3: Từ bảng topology nó bắt đầu dùng thuật toán Dijkstra để tìm ra đường đi tối ưu để
đưa ra bảng định tuyến.
B4: bảng LSDB chứa các LSA
LSDB là một tấm bản đồ mạng và router sẽ căn cứ vào đó để tính toán định tuyến. LSDB phải
hoàn toàn giống nhau giữa các router cùng vùng. Các router sẽ không trao đổi với nhau cả một
bảng LSDB mà sẽ trao đổi với nhau từng đơn vị thông tin gọi là LSA – Link State
Advertisement. Các đơn vị thông tin này lại được chứa trong các gói tin cụ thể gọi là LSU –
Link State Update mà các router thực sự trao đổi với nhau.
Để có LSA thì nó phải trải qua các giai đoạn sau :

Sau khi ở trạng thái 2-way thì nó bắt đầu gửi thông tin cho nhau để hình thành lên 1 bảng database gọi là
LSDB(Link-state database)
+ Router sẽ gửi thông tin trạng thái đường link của nó cho các neighbor gọi là LSA (Link state
Advertisement).
+ Trước khi gửi LSA nó sẽ gửi 1 bản tin DBD(Database Description) để mô tả những thông tin mà nó có
được cho router neighbor.
+ Khi neighbor nhận được DBD nếu nó thấy thông tin nào trong DBD mà nó không có thì nó sẽ
gửi LSR(link state request) để xin thông tin thiếu.
+ Khi router nhận được request LSR thì nó phải cho những thông tin thiếu cho router xin bằng LSA nằm
bên trong LSU(Link state update). LSU giống như là 1 phương tiện để chở LSA trả về cho.
+ Khi router xin nhận được LSU thì nó bỏ phần LSU lấy phần LSA. Khi nhận xong nó phải trả lời lại là đã
nhận được bằng LSACK(link state acknowledgment)
==>Sau khi có LSDB thì router có thể tự chọn được đường đi tốt nhất dựa vào thuật toán Dijkstra
1.PAYLOAD Hello Packet
Network Mask- Subnet mask of the advertising OSPF
interface. For unnumbered point-to-point interfaces and
virtual-links, it is set to 0.0.0.0 (4-bytes)
HelloInterval- Interval at which Hello packets are
advertised. By default, 10 seconds for point-to-point link
and 30 seconds for NBMA/Broadcast links (2-bytes)
Options- The local router advertises its capabilities in this
field. (1-byte)
Rtr Pri- The Priority of the local router. It is used for
DR/BDR election. If set to 0, the router is ineligible for the
election. (1-byte)
RouterDeadInterval- The Dead Interval as requested by
the advertising router. By default, 40 seconds for point-to-
point link and 120 seconds for NBMA/Broadcast links (4-
bytes)
Designated Router- The IP address of the current DR. Set
to 0.0.0.0 if no DR is elected yet. (4-bytes)
Backup Designated Router- The IP address of the current
BDR. Set to 0.0.0.0 if no BDR is elected yet. (4-bytes)
Neighbor- The Router IDs of all OSPF routers from whom
a valid Hello packet have been seen on the network.
2.PAYLOAD Database Descriptor packet
Interface MTU- Contains the MTU value of the outgoing interface. For virtual-links, this field is set to
0x0000. (2-bytes)
Options- Same as Options field in a Hello packet (1-byte)
I- Initial Bit. Indicates this is the first in the series of DBD packets (1-bit)
M- More bit. Indicates whether the DBD packet is the last in the series of packets. Last packet has a value of
0, while all previous packets have a value of 1. (1-bit)
MS- Master/ Slave bit. Master=1, Slave=0 (1-bit)
DD Sequence Number- Used to sequence the collection of DBD packets. The initial value should be unique.
The sequence number then increments by 1 until the complete database description has been sent.(4-bytes)
LSA Header- This field contains the LSA headers describing the local router's database. (variable length)
3.PAYLOAD Link State Request packet
LS Type- Type of LSA requested (4-bytes)
Link State ID- Depends upon the type of LSA (4-bytes)
Advertising Router- Router ID of the requesting router (4-bytes)
4.PAYLOAD Link State Update packet
5.PAYLOAD Link State Acknowledgment packet
2.Biên dịch chương trình C
I.ĐỊNH NGHĨA
Quy trình dịch là quá trình chuyển đổi từ ngôn ngữ bậc cao (NNBC) (C/C++, Pascal, Java, C#…) sang
ngôn ngữ đích (ngôn ngữ máy) để máy tính có thể hiểu và thực thi. Ngôn ngữ lập trình C là một ngôn
ngữ dạng biên dịch. Chương trình được viết bằng C muốn chạy được trên máy tính phải trải qua một quá
trình biên dịch để chuyển đổi từ dạng mã nguồn sang chương trình dạng mã thực thi. Quá trình được
chia ra làm 4 giai đoạn chính:
•Giai đoàn tiền xử lý (Pre-processor)
•Giai đoạn dịch NNBC sang Asembly (Compiler)
•Giai đoạn dịch asembly sang ngôn ngữ máy (Asember)
•Giai đoạn liên kết (Linker)
II. HOẠT ĐỘNG

1. Giai đoạn tiền xử lý – Preprocessor


Giai đoạn này sẽ thực hiện:
• Nhận mã nguồn
• Xóa bỏ tất cả chú thích, comments của chương trình
• Chỉ thị tiền xử lý (bắt đầu bằng #) cũng được xử lý
Ví dụ: chỉ thị #include cho phép ghép thêm mã chương trình của một tệp tiêu để vào mã nguồn cần dịch. Các hằng
số được định nghĩa bằng #define sẽ được thay thế bằng giá trị cụ thể tại mỗi nơi sử dụng trong chương trình.
2. Công đoạn dịch Ngôn Ngữ Bậc Cao sang Assembly
• Phân tích cú pháp (syntax) của mã nguồn NNBC
• Chuyển chúng sang dạng mã Assembly là một ngôn ngữ bậc thấp (hợp ngữ) gần với tập lệnh của bộ vi xử lý.
3. Công đoạn dịch Assembly
• Dịch chương trình => Sang mã máy 0 và 1
• Một tệp mã máy (.obj) sinh ra trong hệ thống sau đó.
4. Giai đoạn Linker
• Trong giai đoạn này mã máy của một chương trình dịch từ nhiều nguồn (file .c hoặc file thư viện .lib) được liên kết
lại với nhau để tạo thành chương trình đích duy nhất
• Mã máy của các hàm thư viện gọi trong chương trình cũng được đưa vào chương trình cuối trong giai đoạn này.
• Chính vì vậy mà các lỗi liên quan đến việc gọi hàm hay sử dụng biến tổng thể mà không tồn tại sẽ bị phát hiện. Kể
cả lỗi viết chương trình chính không có hàm main() cũng được phát hiện trong liên kết
Makefile là gì?
•Makefile là một file dạng script chứa các thông tin:
•Cấu trúc project (file, sự phụ thuộc)
•Các lệnh để tạo file
•Lệnh make sẽ đọc nội dung Makefile, hiểu kiến trúc của project và thực thi các lệnh

Một cấu trúc make file cơ bản sẽ có dạng cơ bản như sau

Rule: các rule cần thực hiện khi compile

Dependency: là các file cần thiết để tạo ra target

Action: là câu lệnh compile để tạo ra Target từ Dependency. Action được


thụt lùi vào 1 Tab (phím tab trên bàn phím) so với Target
Target : là file đích, nghĩa là file được hình thành sau khi quá trình
make được thực hiện.
Snort gồm 6 modules chính:
Tên Khái niệm
Các mô-đun bên trong không phải là plugins được gọi là "cơ bản". Chúng bao gồm cấu
Basic Modules hình cho core processing.Basic Modules tương ứng với các thư mục: Detection, Events,
host_tracker, latency, memory, network_inspectors, packet_io,…
Codec là viết tắt của coder / decoder. Các mô-đun này được sử dụng để giải mã giao thức
Codec Modules cơ bản, phát hiện bất thường và xây dựng phản hồi tích cực.Codec Modules tương ứng với
thư mục codecs
Các trình kết nối hỗ trợ liên kết giao tiếp Tính khả dụng cao. Connector Modules tương
Connector Modules
ứng với thư mục connectors
IPS action Modules cho phép bạn thực hiện các hành động tùy chỉnh khi các sự kiện được
tạo. Không giống như trình ghi nhật ký, chúng được gọi trước khi tạo ngưỡng và có thể
IPS action Modules được sử dụng để kiểm soát các tác nhân bên ngoài. Các hành động được xác định bên
ngoài phải được cấu hình để có sẵn cho trình phân tích cú pháp. Đối với quy tắc từ chối,
bạn có thể đặt từ chối = {} để get rule cho việc phân tích. Nó tương ứng với thư mục
actions
Những mô-đun này thực hiện một loạt các chức năng, bao gồm phân tích các giao thức
Inspector Modules
ngoài giải mã cơ bản. Inspector Modules tương ứng với thư mục network_inspectors
IPS option Modules
Là các khối tạo nên IPS Rules tương ứng với thư mục ips_options
Chức năng của Codecs Modules:
Snort Codecs giải mã các gói tin thô. Các Codec này bây giờ hoàn toàn có thể được thêm
vào; hầu hết mọi Snort Codec đều có thể được tạo động và được thay thế bằng một Codec
tùy chỉnh, thay thế. Bản chất có thể thêm các module đã giúp việc tạo Codec mới cho các
giao thức dễ dàng hơn mà không cần phải động đến Snort code base.
Template để viết 1 Codec mới cho Snort:
Sau khi xác định ExCodec, bước tiếp theo là thêm Codec’s decode. Hàm bên dưới thực hiện
điều này bằng cách triển khai một chức năng giải mã hợp lệ. Tham số đầu tiên, là cấu trúc
RawData, cung cấp một con trỏ trỏ đến dữ liệu thô đã đến từ wire và độ dài của dữ liệu thô đó.
Hàm lấy thông tin này và xác nhận rằng có đủ byte cho giao thức này. Nếu độ dài của dữ liệu
thô nhỏ hơn 14 byte, hàm trả về false và Snort loại bỏ gói tin; gói tin sẽ không được kiểm tra
hoặc xử lý. Nếu độ dài lớn hơn 14 byte, hàm sẽ điền vào hai trường trong cấu trúc CodecData,
next_prot_id và lyr_len. Trường lyr_len cho Snort biết số byte mà layer chứa. Trường
next_prot_id cung cấp cho Snort giá trị của EtherType hoặc IP protocol number.

You might also like