184
VIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC ỨNG DỤNG MÃ NGUỒN MỞ VÀO BẢO MẬT HỆ THỐNG CỦA BỘ KẾ HOẠCH VÀ ĐẦU TƯ Chuyên ngành: TIN HỌC ỨNG DỤNG Giáo viên hướng dẫn: TS Thái Thanh Tùng Sinh viên thực hiện: Trần Quang Minh Lớp: 07B3

Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

VIỆN ĐẠI HỌC MỞ HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

ỨNG DỤNG MÃ NGUỒN MỞ VÀO BẢO MẬT HỆ THỐNG CỦA BỘ KẾ HOẠCH VÀ ĐẦU TƯ

Chuyên ngành: TIN HỌC ỨNG DỤNG

Giáo viên hướng dẫn: TS Thái Thanh Tùng Sinh viên thực hiện: Trần Quang Minh

Lớp: 07B3

Hà Nội, năm 2011

Page 2: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

1. M C L CỤ Ụ

DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT 5

DANH MỤC HÌNH VẼ 6

CHƯƠNG 1 – MỞ ĐẦU 7

1.1. Giới thiệu.......................................................................................................7

1.1.1. Giới thiệu chung..................................................................................7

1.1.2. Lý do lựa chọn đề tài...........................................................................7

CHƯƠNG 2 – PHÂN TÍCH TÌNH HÌNH ỨNG DỤNG VÀ PHÁT TRIỂN 11

2.1. Tình hình ứng dụng và phát triển của Quốc tế............................................11

2.1.1. Trình duyệt web................................................................................11

2.1.2. Máy chủ web.....................................................................................12

2.2. Tình hình ứng dụng và phát triển của Việt Nam.........................................13

2.2.1. Về cơ chế chính sách.........................................................................13

2.2.2. Về đào tạo và hướng dẫn sử dụng.....................................................14

2.2.3. Về tuyên truyền nâng cao nhận thức.................................................14

2.2.4. Về triển khai lại một số nơi cụ thể....................................................14

2.2.5. Khó khăn vướng mắc........................................................................15

CHƯƠNG 3 – PHÂN TÍCH HỆ THỐNG MÃ NGUỒN MỞ ĐỂ TĂNG CƯỜNG

BẢO MẬT CHO CỔNG THÔNG TIN ĐIỆN TỬ 16

3.1. Giới thiệu chung..........................................................................................16

3.2. Netfilter/Iptables..........................................................................................16

3.2.1. Giới thiệu Netfilter/Iptables..............................................................16

3.2.2. Giới thiệu kỹ thuật NAT...................................................................17

3.2.3. Cấu trúc của Iptables.........................................................................19

3.2.4. Xử lý gói của iptables........................................................................20

3.2.5. Target................................................................................................23

3.2.6. Các tham số chuyển mạch quan trọng iptables:................................25

3.2.7. Sử dụng user defined chains..............................................................29

3.2.8. Lưu lại những đoạn mã iptables........................................................30

Sinh viên thực hiện: Trần Quang Minh – 07B3 2

Page 3: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

3.2.9. Những Module Kernel cần thiết........................................................31

3.2.10. Những đoạn Iptables mẫu.................................................................32

3.2.11. Sửa lỗi bảng iptables.........................................................................43

3.3. Webserver Apache......................................................................................44

3.3.1. Mô tả cụ thể của lõi Apache..............................................................45

3.3.2. Các module chuẩn:............................................................................45

3.3.3. Tối ưu Apache...................................................................................47

3.4. IDS và hệ thống phát hiện xâm nhập Snort.................................................54

3.4.1. Tổng quát về phát hiện xâm nhập (IDS)...........................................54

3.4.2. Chức năng của IDS...........................................................................54

3.4.3. Kiến trúc hệ thống IDS......................................................................56

3.4.4. Phân loại IDS....................................................................................59

3.4.5. Công cụ hỗ trợ của IDS.....................................................................64

3.4.7. Phân loại các dấu hiệu trong hệ thống IDS.......................................69

3.4.8. Một số kiến thức cơ bản về Snort......................................................73

3.5. Tường lửa cho ứng dụng Mod_Security...................................................107

3.5.1. Các khả năng của mod_security......................................................108

3.5.2. Cấu hình cơ bản...............................................................................109

3.5.3. Rules................................................................................................110

3.5.4. Logging...........................................................................................118

CHƯƠNG 4: XÂY DỰNG MÔ HÌNH THỬ NGHIỆM ÁP DỤNG MÃ NGUỒN

MỞ VÀO TĂNG CƯỜNG BẢO MẬT HỆ THỐNG 121

4.1. Thực tế tại Bộ Kế hoạch và Đầu tư...........................................................121

4.2. Yêu cầu khi cài đặt hệ thống.....................................................................121

4.2.1. Sử dụng chương trình máy ảo VMWare.........................................121

4.2.2. Sử dụng hệ điều hành mã nguồn mở Centos...................................121

4.2.3. Sử dụng Snort..................................................................................121

4.2.4. Sử dụng Iptables..............................................................................122

4.2.5. Sử dụng Mod_security....................................................................122

Sinh viên thực hiện: Trần Quang Minh – 07B3 3

Page 4: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

CHƯƠNG 5: KẾT LUẬN 123

5.1. Mở đầu.......................................................................................................123

5.2. Hướng phát triển của hệ thống..................................................................123

5.3. Kết Luận....................................................................................................123

Sinh viên thực hiện: Trần Quang Minh – 07B3 4

Page 5: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

LỜI CẢM ƠN

Trước tiên, em xin gửi lời cảm ơn chân thành tới các thầy giáo, cô giáo của

Viện Đại Học Mở Hà Nội nói chung và các thầy giáo, cô giáo trong khoa Công

nghệ Thông Tin nói riêng đã tận tình giảng dạy, truyền đạt cho em những kiến thức,

kinh nghiệm quý báu trong suốt bốn năm học qua.

Đặc biệt em xin gửi lời cảm ơn chân thành đến thầy Thái Thanh Tùng. Thầy

đã tận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm đồ án

tốt nghiệp. Trong thời gian làm việc với thầy, em không những tiếp thu thêm nhiều

kiến thức bổ ích mà còn học tập được tinh thần làm việc, thái độ nghiên cứu khoa

học nghiêm túc, hiệu quả của thầy. Đây là những điều rất cần thiết cho em trong quá

trình học tập và công tác sau này.

Đồng thời em xin gửi lời cảm ơn chân thành tới các anh, các chị thuộc Trung

Tâm Tin Học – Bộ Kế Hoạch và Đầu Tư đã tạo mọi điều kiện về cơ sở vật chất và

tài liệu nghiên cứu để giúp em có một môi trường tốt để thực hiện đề tài.

Sau cùng, em xin gửi lời cảm ơn chân thành tới gia đình và bạn bè đã động

viên, đóng góp ý kiến và giúp đỡ em trong quá trình học tập, nghiên cứu và hoàn

thành đồ án tốt nghiệp.

Trần Quang Minh

Lớp: Tin học ứng dụng – 07B3

Khoa: Công Nghệ Thông Tin

Trường: Viện Đại Học Mở Hà Nội

Sinh viên thực hiện: Trần Quang Minh – 07B3 5

Page 6: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

2. DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT

STT Tên viết tắt Tên đầy đủ Dịch ra tiếng việt1 PMNM Phần mềm nguồn mở2 IP Internet Protocol Địa chỉ mạng

3 TCP/IPTransmission Control Protocol/Internet Protocol

Bộ giao thức liên mạng

4 MACMedium Access Control address

Địa chỉ truy cập của thiết bị mạng

5 NAT Network Address Translate Phiên dịch từ địa chỉ mạng IP

6 DNATDestination Network Address Translate

Phiên dịch từ địa chỉ mạng IP đích

7 SNATSource Network Address Translate

Phiên dịch từ địa chỉ mạng IP nguồn

8 FTP File Transfer Protocol Giao thức truyền tập tin9 DNS Domain Name System Hệ thống tên miền10 WWW World Wide Web Mạng lưới toàn cầu

11 DHCPDynamic Host Configuration Protocol

Giao thức cấu hình động máy chủ

12 DSL Digital Subcriber Line Kênh thuê bao số

13 HTTP HyperText Transfer ProtocolGiao Thức Truyền Siêu Văn Bản

14 IDS Intrusion Detection System Hệ thống phát hiện xâm nhập

15 HIDSHost Based Intrusion Detection System

Hệ thống IDS được cài đặt trên toàn mạng.

16 NIDSNetwork Intrusion Detection System

Hệ thống mạng giám sát giao dịch giữa các thiết bị

17 UDP User Datagram Protocol Giao thức không liên kết

Sinh viên thực hiện: Trần Quang Minh – 07B3 6

Page 7: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

3. DANH MỤC HÌNH VẼ

STT Số thứ tự Nội dungSố

trang

1 Hình 2.1Bảng thống kê số lượng người sử dụng các trình duyệt 10/2010

12

2 Hình 2.2 Thị phần người sử dụng trên trình duyệt 10/2010 133 Hình 2.3 Thị phần máy chủ trên thế giới 134 Hình 2.4 Biểu đồ thể hiện thị phần máy chủ trên thế giới 145 Hình 3.1 Hình minh họa về Iptables 176 Hình 3.2 Bảng NAT động 197 Hình 3.3 Bảng NAT (Masquerade) 198 Hình 3.4 Cấu trúc của Iptables 209 Hình 3.5 Cấu trúc của Chain 2010 Hình 3.6 Các loại queues và chain cùng chức năng của nó 2211 Hình 3.7 Sơ đồ mô tả đường đi của gói dữ liệu 2312 Hình 3.8 Bảng miêu tả các target mà iptables thường dùng nhất. 26

13 Hình 3.9Các tham số chuyển mạch (switching) quan trọng của Iptables

26

14 Hình 3.10 Bảng các điều kiện TCP và UDP thông dụng 2715 Hình 3.11 Bảng điều kiện ICMP 2716 Hình 3.12 Bảng các điều kiện mở rộng thông dụng 2917 Hình 3.13 Danh sách các lệnh (Queue) 3118 Hình 3.14 Minh họa mô tả lõi Apache 3619 Hình 3.15 Bảng Mod_Core 4820 Hình 3.16 Hình minh họa hệ thống bảo vệ IDS 5621 Hình 3.17 Kiến trúc của hệ thống IDS 5722 Hình 3.18 Hệ thống bảo vệ của IDS 5823 Hình 3.19 Hình minh họa bộ cảm biến 5924 Hình 3.20 Hệ thống Network Base IDS 6125 Hình 3.21 Hệ thống HIDS 6326 Hình 3.22 Hình minh họa các thành phần của Snort 7527 Hình 3.23 Hình minh họa tường lửa Mod_security 108

28 Hình 3.24Quy trình xử lý các request của Apache và Mod_Security

109

Sinh viên thực hiện: Trần Quang Minh – 07B3 7

Page 8: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

1. CHƯƠNG 1 – MỞ ĐẦU

1.1. Giới thiệu1.1.1. Giới thiệu chungHiện nay mạng Internet ngày một phát triển và xuất hiện nhiều nguy cơ tiềm

ẩn gây mất an toàn thông tin dữ liệu. Ngày càng có nhiều tổ chức, đơn vị, doanh

nghiệp hoạt động lệ thuộc gần như hoàn toàn vào hệ thống mạng, máy tính, và cơ sở

dữ liệu. Khi hệ thống công nghệ thông tin và cơ sở dữ liệu bị tấn công, xâm nhập,

phá hoại hay gặp các sự cố thì hoạt động của các đơn vị này bị ảnh hưởng nặng nề

thậm chí có thể bị tê liệt hoàn toàn gây ra những hậu quả nghiêm trọng cả về kinh tế

lẫn uy tín của đơn vị, tổ chức đó.

Hiện tại Cổng thông tin điện tử Bộ Kế hoạch và Đầu tư đã dần đáp ứng nhu

cầu cung cấp thông tin, văn bản quy phạm pháp luật về thủ tục hành chính (Đề án

30), chiến lược, quy hoạch, kế hoạch phát triển kinh tế xã hội chung của cả nước, về

cơ chế chính sách quản lý kinh tế chung và một số lĩnh vực cụ thể, về đầu tư trong

nước, nước ngoài, khu công nghiệp, khu chế xuất, khu công nghệ cao, về nguồn hỗ

trợ phát triển chính thức, đấu thầu, doanh nghiệp, đăng kí kinh doanh trong phạm vi

cả nước, cung cấp các dịch vụ công phục vụ trong các lĩnh vực thuộc phạm vi quản

lý của Bộ Kế hoạch và Đầu tư. Trong tương lai sẽ có thêm nhiều thông tin và dịch

vụ công được tích hợp vào Cổng thông tin điện tử và nhu cầu khai thác thông tin

cũng như sử dụng các dịch vụ công của người dân, doanh nghiệp các tổ chức trong

và người nước cũng ngày một tăng cao.

1.1.2. Lý do lựa chọn đề tàiĐể đáp ứng phát triển ngoài việc phát triển cơ sở hạ tầng, việc tăng cường

công tác an toàn, bảo mật thông tin cho Cổng thông tin điện tử là vô cùng cấp thiết

và không thể thiếu để đảm bảo cho hệ thông luôn cung cấp thông tin kịp thời, đầy

đủ và chính xác, giảm thiểu đến mức tối đa các nguy cơ khách quan cũng như chủ

quan trong quá trình hoạt động có thể gặp phải. Mỗi một hệ thống cụ thể, sẽ có một

hệ thống bảo mật được thiết kế theo một giải pháp riêng và mỗi một hệ thống ứng

dụng cụ thể như Cổng thông tin điện tử. thư điện tử… được thiết kế một giải pháp

Sinh viên thực hiện: Trần Quang Minh – 07B3 8

Page 9: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

bảo mật chuyên dụng… và việc ứng dụng phần mềm nguồn mở vào việc bảo mật

các ứng dụng này là rất cần thiết vì nhiều lý do khác nhau như:

Chi phí thấp: PMNM được dùng miễn phí về bản quyền, nếu có chi phí thì

chỉ là chi phí cho đóng gói và dịch vụ cho sản phẩm. Vi vậy chi phí rất thấp so với

các phần mềm thương mại. Ví dụ: Chi phí cho Hệ điều hành Windows 7 và các ứng

dụng văn phòng của Microsoft vào khoảng 500USD, trong khi đó nếu sử dụng Hệ

điều hành Linux và phần mềm văn phòng là PMNM thì không phải chi trả phí bản

quyền. Nhiều PMNM cho quản trị cơ sở dữ liệu, trang chủ Web, quản lý thư tín

điện tử… tuy hơi khó dùng hơn phần mềm thương mại (chủ yếu do thói quen của

người dùng đã sử dụng những phần mềm thương mại như Hệ điều hành Windows)

nhưng được tải miễn phí từ Internet về sử dụng, trong khi đó những phần mềm

thương mại như vậy có giá từ hàng nghìn đến hàng chục nghìn USD.

Độc lập: PMNM không bị lệ thuộc vào bất kỳ một nhà cung cấp nào. Sự độc

lập này là rất quan trọng vì các cơ quan nhà nước đều cần có những giải pháp

chung, chuẩn hóa và không phu thuộc vào các sản phẩm sở hữu riêng của một nhà

cung cấp.

Làm chủ công nghệ, đảm bảo an toàn và riêng tư: Hiểu rõ hệ thống làm việc

như thế nào là yêu cầu cơ bản của các cơ quan nhà nước nhằm có được một sự bảo

mật nhất định. PMNM không có các cửa hậu (Backdoor), không có giản điệp điện

tử (Spyware) lẩn ở đâu đó trong phần mềm, có khả năng thay đổi, bổ sung và phát

triển các ứng dụng theo yêu cầu riêng của mình (điều mà phần mềm thương mại

không cho phép).

Tinh thích ứng và sáng tạo: Thực tế cho thấy rất ít chương trình phần mềm

có thể tồn tại mà không thay đổi trong một thời gian dài, vì thế khả năng cho phép

lập trình viên xác định và sửa đổi các lỗi cũng như thay đổi phần mềm thích ứng với

các yêu cầu mới là rất quan trọng. Với mã nguồn sẵn có và quyền được thay đổi

chúng tùy ý giúp cho công việc này dễ dàng hơn. Việc có được mã nguồn cũng giúp

các nhà lập trình sáng tạo ra phần mềm riêng của mình, đặc biệt là đối với thể hệ trẻ

và các doanh nghiệp, các đơn vị cần phục vụ các yêu cầu đa dạng của khách hàng.

Sinh viên thực hiện: Trần Quang Minh – 07B3 9

Page 10: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Chất lượng: PMNM khi đã hoàn thành thông thường sẽ được thử nghiệm,

đánh giá, phát hiện lỗi và hoàn thiện bổ sung bởi rất nhiều nhà phát triển khác nhau

trên thế giới và công việc này không bị áp lực về thời gian. Trong khi đó, các nhà

sản xuất phần mềm thương mại lại thường công bố thời điểm ra đời của một phiên

bản nào đó rồi sau đó buộc phải tung ra thị trường những sản phẩm nhiều khi vẫn

còn có lỗi để giữ đúng thời hạn đã công bố.

Tuân thủ các chuẩn: PMNM tuân thủ các chuẩn tốt hơn. Đó là vì lợi ích của

tất cả các nhà phát triển tự do là thực hiện được những sản phẩm có tính liên tác tốt

nhất. Trong xây dựng, phát triển các PMNM họ không sử dụng các chuẩn sở hữu

riêng mà liên tục tìm kiếm các chuẩn dùng chung, làm cho các PMNM có khả năng

liên tác lâu dài.

Không bị hạn chế về quyền sử dụng: Quyền được dùng PMNM dưới bất kỳ

hình thức nào làm yên tâm mọi nhà phát triển, nhà quản trị và người dùng. Do

PMNM không bị giới hạn cho người dùng nên các cơ quan nhà nước có thể yên tâm

cung cấp cho số lượng người sử dụng không giới hạn theo mục đích riêng của mình.

Tính lâu dài: PMNM không có một chủ sở hữu duy nhất là lý do bảo đảm để

không ai có thể làm ngừng hoặc giêt chết sản phẩm này. Việc sản phẩm bị ngững

hay bị “giết chết” dễ dàng xẩy ra đối với phần mềm thương mại trong các trường

hợp: Công ty bị phá sản, hoặc sát nhập, hoặc bán lại cho một công ty khác, hoặc

thay đổi chiến lược, phương hướng kinh doanh. Do đó, người dùng PMNM sẽ

không lo xảy ra trường hơp bị bắt buộc chuyển sang giải pháp khác như đối với

phần mềm thương mại khi nhà cung cấp phần mềm thương mại quyết định ngừng

hỗ trợ kỹ thuật.

Phát triển dễ dàng: Những dự án về phát triển mới được thực hiện không cần

xin phép ai. Việc này phù hợp các kỹ thuật phát triển mới: tạo ra giải pháp bằng

cách tập hợp nhiều đối tượng đã có mà không sợ rủi ro bị ngừng giữa chừng vì

những hạn chế pháp lý và những quy định về sở hữu trí tuệ đối với phần mềm.

Tuy nhiên, cùng với những ưu điểm trên, PMNM cũng còn một số hạn chế

sau:

Sinh viên thực hiện: Trần Quang Minh – 07B3 10

Page 11: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Các ứng dụng chuyên nghiệp trên PMNM còn ít: Số các ứng dụng chuyên

ghiệp sẵn sàng sử dụng trên nền PMNM còn ít so với các ứng dụng trên Windows

hoặc trên Unix sở hữu riêng.

Thiếu các hướng dẫn sử dụng: Nếu không có các tư vấn chuyên nghiệp hoặc

các chuyên gia hệ thống, người dùng (và ngay cả người quản trị Công nghệ thông

tin) sẽ khó tìm kiếm giải pháp tối ưu trong số hàng ngàn giải pháp PMNM đã có sẵn

để phục vụ cho mục đích cụ thể của mình.

1.2. Phạm vi đề tài

Đề tài thực tế dựa trên những ứng dụng thực tế đã được triển khai ở Bộ Kế

Hoạch Đầu Tư. Tuy nhiên với cá nhân là một sinh viên, nên việc triển khai hệ thống

dựa trên mô hình thực sự là điều rất khó vì không thể tiếp cận được với hệ thống

thực. Do đó em xin được triển khai hệ thống sử dụng trên máy tính cá nhân. Về cơ

bản, hệ thống này cũng tương tự như hệ thống thật hiện đang triển khai ở Bộ Kế

Hoạch và Đầu Tư. Đồng thời mô hình này hoàn toàn có thể áp dụng cho tất cả các

hệ thống khác.

Nội dung đề tài gồm các phần chính sau:

Chương II: Phân tích tình hình ứng dụng và phát triển.

Chương III: Phân tích hệ thống mã nguồn mở áp dụng để tăng cường bảo

mật cho cổng thông tin điện tử Bộ Kế Hoạch và Đầu Tư.

Chương IV: Xây dựng Mô hình thử nghiệm áp dụng Mã Nguồn Mở vào tăng

cường bảo mật cho cổng thông tin điện tử Bộ Kế Hoạch và Đầu Tư.

Chương V: Kết luận.

Sinh viên thực hiện: Trần Quang Minh – 07B3 11

Page 12: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

2. CHƯƠNG 2 – PHÂN TÍCH TÌNH HÌNH ỨNG DỤNG VÀ PHÁT TRIỂN

2.1. Tình hình ứng dụng và phát triển của Quốc tếTheo thống kê của SourceForge.net đến 10/2010 có 270.018 dự án ứng dụng

PMNM sẵn có trên mạng (Nguồn http://sourceforge.net).

Các ứng dụng PMNM hiện đang phát triển, dễ sử dụng và được dùng phổ

biến trên thế giới, rất đa dạng:

Cho máy chủ (hệ điều hành và các ứng dụng)

Cho hệ quản trị cơ sở dữ liệu.

Cho máy tính để bàn (hệ điều hành và các ứng dụng)

Cho Internet.

Trong tất cả các lĩnh vực của kinh tế xã hội

Thị phần toàn cầu của một PMNM điển hình trên thế giới

2.1.1. Trình duyệt webFirefox (nguồn mở): Q4 2008 chiếm 20,06% (2007 chiếm 15,84%)

IE (Microsoft): Q4 2009 chiếm 71,11% (2007 chiếm 77,37%)

Tuy nhiên đến thời điểm hiện tại (xem Hình 2.1)

Thống kê số lượng người sử dụng các trình duyệt 10/2010

Source IE Firefox Chrome Safari Opera browser

Clicky 47.74% 29.67% 12.69% 8.46% 1.26%  

Stat Counter 49.21% 31.24% 12.39% 4.56% 2.00% 3.81%

W3Counter 41.6% 29.9% 11.9% 5.5% 1.9%  

Wikimedia 44.72% 29.67% 9.71% 5.57% 3.48% 4.70%

Median 46.23% 29.79% 12.15% 5.54% 1.95% 4.26%

Hình 2.1. Bảng thống kê số lượng người sử dụng các trình duyệt 10/2010

(nguồn http://en.wikipedia.org/wiki/Usage_share_of_web_browsers)

Sinh viên thực hiện: Trần Quang Minh – 07B3 12

Page 13: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Hình 2.2. Thị phần người sử dụng trên trình duyệt 10/2010

2.1.2. Máy chủ webApache (nguồn mở): 10/2008 chiếm 50,43%

Microsoft: 10/2008 chiếm 34,41%

Thống kê thị phần máy chủ trên thế giới từ 8/1995 đến 11/2010

Developer October 2010 Percent November 2010 Percent Change

Apache 135,209,162 58.07% 148,085,963 59.36% 1.29

Microsoft 53,525,841 22.99% 56,637,980 22.70% -0.28

nginx 14,130,907 6.07% 15,058,114 6.04% -0.03

Google 14,971,028 6.43% 14,827,157 5.94% -0.49

lighttpd 1,380,160 0.59% 2,070,300 0.83% 0.24

Hình 2.3. Thị phần máy chủ trên thế giới

(nguồn http://news.netcraft.com/archives/web_server_survey.html)

Sinh viên thực hiện: Trần Quang Minh – 07B3 13

Page 14: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Hình 2.4. Biểu đồ thể hiện thị phần máy chủ trên thế giới.

Chính phủ nhiều nước trên thế giới đã ứng dụng PMNM: Mỹ, EU, Pháp,

Đức, Hà Lan, Nga, Thổ Nhĩ Kỳ, Ý, Tây Ban Nha, Thụy Sĩ, Macedonia, Trung

Quốc, Ấn Độ, Nhật, Hàn, Malaysia, Thailand, Brazil, Venezuela, Ecuador, Nam

Phi, Úc, Iran… Nhiều hãng máy tiính hàng đầu đã cài sẵn các ứng dụng PMNM

trên máy tính để bàn: Dell, HP, Lenovo, Acer, Toshiba, Asus, Samsung… Khoảng

50% trong 500 doanh nghiệp hàng đầu thế giới đã dùng PMNM điển hình:

Amazon.com, eBay.com, Google, Yahoo …

2.2. Tình hình ứng dụng và phát triển của Việt Nam2.2.1. Về cơ chế chính sáchĐảng và Nhà nước ta đã xác đinh thúc đẩy ứng dụng và phát triển phần mềm

nguồn mở (PMNM) là một trong những nhiệm vụ trọng tâm cần thực hiện nhằm

góp phần thực thi Luật sở hữu trí tuệ và giảm chi phí mua sắm phần mềm, thúc đẩy

phát triển công nghiệp công nghệ thông tin nói chung và công nghiệp phần mềm

Việt Nam nói riêng để thúc đẩy phát triển kinh tế xã hội. Điều này đã được khẳng

định trong văn bản mà Đảng và Nhà nước đã ban hành.

Trong thời gian qua Thủ tướng Chính phủ ban hành các Quyết định như

Quyết đinh số 169/QĐ-TTg và 223/QĐ-TTg; Quyết định 51/2007/QĐ-TTg , trong

Sinh viên thực hiện: Trần Quang Minh – 07B3 14

Page 15: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

các Quyết đinh trên có lồng ghép các quy đinh về ưu tiên mua sắm PMNM. Ngoài

ra, Bộ Thông tin và truyền thông cũng đã ban hành Thông tư 02/2007/TT-BBCVT

hướng dẫn chi tiết một số nội dung của Quyết đinh số 169/2006/QĐ-TTg, Quyết

định số 223/2006/QĐ-TTg; Quyết định số 08/2007/QĐ-BTTTT ban hành danh mục

sản phẩm PMNM được ưu tiên mua sắm, sử dụng làm cơ sở để các cơ quan nhà

nước ưu tiên mua sắm khi thực hiện mua sắm sản phẩn mềm và Chỉ thị

07/2008/CT-BTTTT về việc đẩy mạnh sử dụng phần mềm mã nguồn mở trong hoạt

động của cơ quan, tổ chức nhà nước.

2.2.2. Về đào tạo và hướng dẫn sử dụngBộ Giáo dục và Đào tạo đã ban hành văn bản chỉ đạo điều hành các Sở và

trường đại học trong việc đưa PMMN vào chương trình giảng dạy và sử dụng. Một

số trường đại học đã áp dụng (Cần Thơ); Bộ Khoa học và Công nghệ tổ chức tập

huấn cho tất cả các Bộ ngành và địa phương về sử dụng Open Office, Firefox,

Unikey; Bộ Thông tin và truyền thông có công văn gửi Bộ Nội vụ, Bộ Lao động và

Thương Binh Xã Hội đưa vào nội dung đào tạo và cấp chứng chỉ (CVC); Các Bộ

Kế hoạch và Đầu tư, Công an, Quốc phòng thành phố Hà Nội, Hồ Chí Minh.. đã tổ

chức các khóa đào tạo PMNM phục vụ công tác triển khai; HaNoiLug, SaigonLug ..

đào tạo cho cộng đồng ngay tai các trường đại học.

2.2.3. Về tuyên truyền nâng cao nhận thứcTriển khai cung cấp thông tin, xây dưng các phóng sự, buổi tọa đàm trên

truyền hình như trên VTV, VTC và một số đài truyền hình địa phương; Tạp chí

chuyên ngành về CNTT, Báo Điện Tử VnExpress, báo giấy, trang thông tin điện tử,

diễn đàn.. đã đưa nội dung về PMNM. Tổ chức và tham gia tổ chức các kiện để

cung cấp thông tin, nâng cao nhận thức, giới thiệu và cung cấp giải pháp về PMNM

(Hội thảo quốc gia, IT Week, Thi Olympic Tin học…); Xây dựng tài liệu, sách, đĩa

chương trình để tuyên truyền và phổ biến.

2.2.4. Về triển khai lại một số nơi cụ thểHệ thống thông tin các cơ quan Đảng, gần như toàn bộ hệ thống máy chủ

dùng PMNM (~2000 máy). Khoảng 14.000 PCs đã dùng OpenOffice/Windows

Sinh viên thực hiện: Trần Quang Minh – 07B3 15

Page 16: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

(Tỉnh Ủy Khánh Hòa, 50% máy PCs đã dùng Ubuntu); Hệ thống thông tin trên máy

chủ của nhiều tỉnh, bộ ngành sử dụng các giải pháp nguồn mở chạy trên HĐH Red

Hat; Hệ thống thông tin trên máy chủ của nhiều tỉnh, bộ, ngành sử dụng các giải

pháp nguồn mở chạy trên Hệ diều hành Red Hat; Khoảng 70 trường Đại học, Cao

đăng đã dùng Moodle, Cổng thông tin và diễn đàn giáo dục của Bộ GDĐT được

xây dựng trên nguồn mở; Hệ thống tường lửa và Hội nghị truyền hình trên nền

nguồn mở đã được ứng dụng tại 55 cơ quan Công an Địa phương. Hệ thống giám

sát xâm nhập trái phép, kiểm soát nội dung Internet; Tỉnh Bắc Giang, tỉnh Hải

Dương, Tổng cục Du lịch, một số đơn vị thuộc Bộ Khoa học và Công Nghệ, Sở

Thương Mại Hồ Chí Minh, Hà Nội (Portal), Tp HCM (Openlab)..

2.2.5. Khó khăn vướng mắcNhận thức chưa đúng “miễn phí là không giá trị” hoặc lại là “cứu cánh”, là

“duy nhất”; Vấn đề về vi phạm bản quyền phần mềm còn phổ biến; thiếu động lực

cho chuyển đổi, lợi ích của chủ thể chưa được quan tâm (cần một cơ chế theo hướng

tự chủ, giảm bản quyền và tăng triển khai, dữ liệu); Sự e ngại và thói quen của

người dùng; Mô hình kinh doanh? Dịch vụ chưa được coi trọng; Việc chỉ đạo chưa

thống nhất; Việc triển khai thực hiện mới ở mức văn bản là chủ yếu, thiếu cơ chế

giám sát, thực thi; Các sản phẩm phù hợp với đặc thù của Việt Nam chưa nhiều.

Sinh viên thực hiện: Trần Quang Minh – 07B3 16

Page 17: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

3. CHƯƠNG 3 – PHÂN TÍCH HỆ THỐNG MÃ NGUỒN MỞ ĐỂ TĂNG

CƯỜNG BẢO MẬT CHO CỔNG THÔNG TIN ĐIỆN TỬ

3.1. Giới thiệu chungĐể áp dụng mã nguồn mở cho việc bảo mật cho hệ thống ta cần đến những

phần mềm và các tiện ích sau:

Netfilter/Iptables

Webserver Apache

IDS và hệ thống phát hiện xâm nhập Snort

Tường lửa cho ứng dụng Mod_Security

Và để hiểu rõ hơn về những phần mềm trên ta sẽ từng bước tìm hiểu hiểu rõ

hơn về khái niệm những như những tính năng nổi bật của chúng.

3.2. Netfilter/Iptables3.2.1. Giới thiệu Netfilter/IptablesIptables là một tường lửa ứng dụng lọc gói dữ liệu rất mạnh, miễn phí và có

sẵn trên Linux ...Netfilter/Iptables gồm hai phần là Netfilter ở trong nhân Linux và

Iptables nằm ngoài nhân. Iptables chịu trách nhiệm giao tiếp giữa người dùng và

Netfilter để đưa mã lệnh của người dùng vào trong Netfilter xử lý. Netfilter tiến

hành lọc các gói dữ liệu ở mức IP. Netfilter làm việc trực tiếp trong nhân, nhanh và

không làm giảm tốc độ của hệ thống.

Hình 3.1. Hình minh họa về Iptables

Sinh viên thực hiện: Trần Quang Minh – 07B3 17

Page 18: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Iptables do Netfilter Organization viết ra để tăng tính bảo mật của hệ thống

Linux. Iptable cung cấp các tính năng sau:

Tích hợp tốt với Kernel của Linux.

Có khả năng phân tích package hiệu quả.

Lọc packgae dựa vào MAC và một số cờ trong TCP Header.

Cung cấp chi tiết các tùy chọn để ghi nhận sự kiện hệ thống.

Cung cấp kỹ thuật NAT (xem phần b)

Có khả năng ngăn chặn một số cơ chế tấn công từ chối dịch vụ.

3.2.2. Giới thiệu kỹ thuật NATTrước khi đi vào phần chính, chúng tôi muốn giới thiệu về công nghệ đổi địa

chỉ NAT động và đóng giả IP Masquerade. Hai thuật ngữ này được dùng rất nhiều

trong Iptables.

Cách đổi địa chỉ IP động – dynamic NAT

NAT (Network Address Translation) động là một trong những kĩ thuật

chuyển đổi IP. Các địa chỉ IP nội bộ được chuyển sang IP NAT như sau:

NAT Router đảm nhận việc chuyển dãy IP nội bộ 169.169.0.x sang dãy IP

mới 203.162.2.x. Khi có gói liệu với IP nguồn là 192.168.0.200 đến router, router sẽ

đổi IP nguồn thành 203.162.2.200 sau đó mới gửi ra ngoài. Quá trình này gọi là

SNAT (Source-NAT, NAT nguồn). Router lưu dữ liệu trong một bảng gọi là bảng

NAT động. Ngược lại, khi có một gói dữ liệu gửi từ ngoài vào với IP đích là

203.162.2.200, router sẽ căn cứ vào bảng NAT động hiện tại để đổi địa chỉ đích

203.162.2.200 thành địa chỉ đích mới là 192.168.0.200. Quá trình này gọi là DNAT

(Destination-NAT, NAT đích). Liên lạc giữa 192.168.0.200 và 203.162.2.200 là

hoàn toàn trong suốt (transparent) qua NAT router. NAT router tiến hành chuyển

tiếp (forward) gói dữ liệu từ 192.168.0.200 đến 203.162.2.200 và ngược lại.

Sinh viên thực hiện: Trần Quang Minh – 07B3 18

Page 19: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Hình 3.2. Bảng NAT động

Cách đóng giả địa chỉ IP (masquerade)

Đây là một kỹ thuật khác trong NAT. NAT Router chuyển dãy IP nội bộ

192.168.0.x sang một IP duy nhất là 203.162.2.4 bằng cách dùng các số hiệu cổng

(port-number) khác nhau. Chẳng hạn khi có gói dữ liệu IP với nguồn

192.168.0.168:1204, đích 211.200.51.15:80 đến router, router sẽ đổi nguồn thành

203.162.2.4:26314 và lưu dữ liệu này vào một bảng gọi là bảng masquerade động.

Khi có một gói dữ liệu từ ngoài vào với nguồn là 221.200.51.15:80, đích

203.162.2.4:26314 đến router, router sẽ cắn cứ vào bảng masquerade động hiện tại

để đổi đích từ 203.162.2.4:26314 thành 192.168.0.164:1204. Liên lạc giữa các máy

nội với máy bên ngoài qua router

Hình 3.3. Bảng NAT (Masquerade)

Sinh viên thực hiện: Trần Quang Minh – 07B3 19

Page 20: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

3.2.3. Cấu trúc của IptablesIptables được chia thành các bảng (tables); bảng filter dùng để lọc gói dữ

liệu, bảng NAT dùng để thao tác với các gói dữ liệu được NAT nguồn và NAT

đích, bảng Mangle dùng để thay đổi các thông số trong gói IP và bảng conntrack

dùng để theo dõi các kết nối. Mỗi table gồm nhiều mắt xích (chain). Chain gồm

nhiều luật (rule) để thác tác với các gói dữ liệu. Rule có thể là ACCEPT (chấp nhận

gói dữ liệu), DROP (thả gói), REJECT (loại bỏ gói) hoặc tham chiếu (reference)

đến một chain khác.

Hình 3.4. Cấu trúc của Iptables

Hình 3.5. Cấu trúc của Chain

Sinh viên thực hiện: Trần Quang Minh – 07B3 20

Page 21: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

3.2.4. Xử lý gói của iptablesTất cả mọi gói dữ liệu đều được kiểm tra bởi iptables bằng cách dùng các

bảng tuần tự xây dựng (queues):

Mangle: chịu trách nhiệm thay đổi các bit chất lượng dịch vụ trong TCP

header như TOS (type of service), TTL (time to live).

Filter: chịu trách nhiệm lọc gói dữ liệu. Gồm có ba quy tắc nhỏ (chain) để

giúp ta thiết lập các nguyên tắc lọc gói, gồm:

Forward chain: lọc gói khi đi đến các server khác.

Input chain: lọc gói khi đi vào trong server.

Output chain: lọc gói khi ra khỏi server.

NAT: gồm hai loại:

Pre-routing chain: thay đổi địa chỉ đến của gói dữ liệu khi cần thiết.

Post-routing chain: thay đổi địa chỉ nguồn của gói dữ liệu khi càn thiết.

Sinh viên thực hiện: Trần Quang Minh – 07B3 21

Page 22: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Các loại queues và chain cùng chức năng của nó:

Loại queues

Chức năng queues

Quy tắc xử lý gói (chain)

Chức năng của Chain

Filter Lọc gói

FORWARDLọc gói dữ liệu đi đến các server khác kết nối trên các NIC khác của firewall.

INPUT Lọc gói đi đến firewall.

OUTPUT Lọc gói đi ra khỏi firewall.a

NAT

Network Address

Translation (Biên dịch

địa chỉ mạng)

PREROUTING

Việc thay đổi địa chỉ diễn ra trước khi dẫn đường. Thay đổi địa chỉ đích sẽ giúp gói dữ liệu phù hợp với bảng chỉ đường của firewall. Sử dụng estination NAT or DNAT.

POSTROUTINGViệc thay đổi địa chỉ diễn ra sau khi dẫn đường .Sử dụng source NAT, or SNAT.

OUTPUT

NAT sử dụng cho các gói dữ liệu xuất phát từ firewall. Hiếm khi dùng trong môi trường SOHO (small office - home office).

MangleChỉnh sửa

TCP header

PREROUTING POSTROUTING

OUTPUTINPUT

FORWARD

Điều chỉnh các bit quy địch chất lượng dịch vụ trước khi dẫn đường. Hiếm khi dùng trong môi trường SOHO (small office-home office).

Hình 3.6. Các loại queues và chain cùng chức năng của nó

Sinh viên thực hiện: Trần Quang Minh – 07B3 22

Page 23: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Để làm rõ hơn việc lọc và xử lý gói trong iptables , ta cùng xem (hình 3.7) về

ví dụ mô tả đường đi của gói dữ liệu.

Hình 3.7. Sơ đồ mô tả đường đi của gói dữ liệu

Sinh viên thực hiện: Trần Quang Minh – 07B3 23

Page 24: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Đầu tiên, gói dữ liệu đến mạng A, tiếp đó nó được kiểm tra bởi mangle table

PREROUTING chain (nếu cần). Tiếp theo là kiểm tra gói dữ liệu bởi NAT table

PREROUTING chain để kiểm tra xem gói dữ liệu có cần DNAT hay không?

DNAT sẽ thay đổi địa chỉ dích của gói dữ liệu. Rồi gói dữ liệu được dẫn đi.

Nếu gói dữ liệu đi vào một mạng được bảo vệ, thì nó sẽ được lọc bởi

FORWARD chain của filter table, và nếu cần gói dữ liệu sẽ được SNAT

trong POSTROUTING chain để thay đổi IP nguồn trước khi vào mạng B.

Nếu gói dữ liệu được định hướng đi vào bên trong Firewall, nó sẽ được

kiểm tra bởi INPUT chain trong Mangle Table. Và nếu gói dữ liệu qua

được các kiểm tra của INPUT chain trong Filter Table thì nó sẽ vào trong

các chương trình của Server bên trong Firewall.

Khi Firewall cần gửi dữ liệu ra ngoài, gói dữ liệu sẽ được dẫn và đi qua sự

kiểm tra của OUTPUT chain trong Mangle Table (nếu cần), tiếp đó là kiểm tra

trong OUTPUT chain của NAT Table để xem DNAT (DNAT sẽ thay đổi địa chỉ

đến) có cần hay không và OUTPUT chain của Filter Table sẽ kiểm tra gói dữ liệu

nhằm phát hiện các gói dữ liệu không được phép gửi đi. Cuối cùng trước khi gói dữ

liệu được đưa ra lại Internet, SNAT và Qos sẽ được kiểm tra trong POSTROUTING

chain.

3.2.5. TargetTargets là hành động sẽ diễn ra khi một gói dữ liệu được kiểm tra và phù hợp

với một yêu cầu nào đó. Khi một target đã được nhận dạng, gói dữ liệu cần nhảy

(jump) để thực hiện các xử lý tiếp theo. Bảng sau liệt kê các targets mà Iptables sử

dụng.

Miêu tả các target mà iptables thường dùng nhất

Sinh viên thực hiện: Trần Quang Minh – 07B3 24

Page 25: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Targets Ý nghĩa Tùy chọn

ACCEPT

iptables ngừng xử lý gói dữ liệu đó và chuyển tiếp nó vào một ứng dụng cuối hoặc hệ điều hành để xử lý .

DROPiptables ngừng xử lý gói dữ liệu đó và gói dữ liệu bị chặn, loại bỏ.

LOG

Thông tin của gói sẽ được đưa vào syslog để kiểm tra. Iptables tiếp tục xử lý gói với quy luật kế tiếp .

--log-prefix "string" iptables sẽ thêm vào log message một chuỗi do người dùng định sẵn Thông thường là để thông báo lý do vì sao gói bị bỏ

REJECT

Tương tự như DROP ,nhưng nó sẽ gởi trả lại chophía người gởi một thôngbáo lỗi rằng gói đã bị chặnvà loại bỏ .

--reject-with qualifierTham số qualifier sẽ cho biết loại thông báo gởi trả lại phía gởi. Qualifier gồm các loại sau: icmp-port-unreachable (default); icmp-net-unreachable; icmp-host-unreachable; icmp-proto-unreachable; icmp-net-prohibited icmp-host-prohibited tcp-resetecho-reply

DNAT

Dùng để thực hiện Destination network address translation, địachỉ đích của gói dữ liệu sẽ được viết lại.

--to-destination ipaddressIptables sẽ viết lại địa chỉ ipaddress vào địa chỉ đích của gói dữ liệu .

SNAT

Dùng để thực hiện Source network addresstranslation, viết lại địa chỉ nguồn của gói dữ liệu.

--to-source <address>[-<address>][:<port>-<port>]Miêu tả IP và port sẽ được viết lại bởi iptables .

MASQUERAD Dùng để thực hiện Source [--to-ports <port>[-

Sinh viên thực hiện: Trần Quang Minh – 07B3 25

Page 26: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

E

Networkaddress Translation. Mặc định thì địa chỉ IP nguồn sẽ giống như IP nguồn của firewall .

<port>]]Ghi rõ tầm các port nguồn mà port nguồn gốc có thể ánh xạ được.

Hình 3.8. Bảng miêu tả các target mà iptables thường dùng nhất.

3.2.6. Các tham số chuyển mạch quan trọng iptables:Các tham số chuyển mạch quan trọng của Iptables (Hình 3.9)

Lệnh switching quan trọng Ý nghĩa

-t <table> Nếu không chỉ định rõ là tables nào, thì filter table sẽ được áp dụng. Có ba loại table là filter, nat, mangle.

-j <target> Nhảy đến một chuỗi target nào đó khi gói dữ liệu phù hợp quy luật hiện tại .

-A Nối thêm một quy luât nào đó vào cuối chuỗi (chain ).

-F Xóa hết tất cả mọi quy luật trong bảng đã chọn .

-p <protocol-type> Phù hợp với giao thức (protocols ), thông thường là icmp, tcp, udp, và all .

-s <ip-address> Phù hợp IP nguồn

-d <ip-address> Phù hợp IP đích

-i <interface-name> Phù hợp điều kiện INPUT khi gói dữ liệu đi vào firewall

-o <interface-name> Phù hợp điều kiện OUTPUT khi gói dữ liệu đi ra khỏi firewall .

Hình 3.9. Các tham số chuyển mạch (switching) quan trọng của Iptables

Để hiểu rõ hơn về các lệnh ta cùng xem một ví dụ sau:Code:Iptables –A INPUT –s 0/0 eth0 –d 192,168.1.1 –p TCP –j ACCEPT

Iptables được cấu hình cho phép “filewall” chấp nhận các gói dữ liệu có giao tiếp

(protocols) là TCP, đến từ giao tiếp card mạng eth0, có địa chỉ IP nguồn là bất kỳ đi

đến địa chỉ 192.168.1.1, là địa chỉ IP của firewall. 0/0 nghĩa là bất kì địa chỉ IP nào.

Sinh viên thực hiện: Trần Quang Minh – 07B3 26

Page 27: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Các điều kiện TCP và UDP thông dụng (Hình 3.10)

Lệnh switching Miêu tả

-p tcp --sport <port>Điều kiện TCP port nguồn (source port ). Có thể là một giá trị hoặc một chuỗi có dạng: start-port-number:end-port-number

-p tcp --dport <port> Điều kiện TCP port đích (destination port). Có thể là một giá trị hoặc một chuỗi có dạng: starting-port:ending-port

-p tcp -syn Dùng để nhận dạng một yêu cầu kết nối TCP mới. ! --syn , nghĩa là không có yêu cần kết nối mới.

-p udp --sport <port>Điều kiện UDP port nguồn (source port ). Có thể là một giá trị hoặc một chuỗi có dạng: start-port-number:end-port-number

-p udp --dport <port> Điều kiện TCP port đích (destination port). Có thể là một giá trị hoặc một chuỗi có dạng: starting-port:ending-port

Hình 3.10. Bảng các điều kiện TCP và UDP thông dụng

Ta cùng xem một ví dụ sau:Code:Iptables –A FORWARD –s 0/0 –I eth0 –d 192,168,1,58 –o eth1 –p TCP –sport 1024:65535 –dport 80 –j ACCEPT

Iptables được cấu hình cho phép firewall chấp nhận các gói dữ liệu có giao

tiếp (protocols) là TCP, đến từ card mạng eth0, có bất kỳ địa chỉ IP nguồn là bất kỳ,

đi đến địa chỉ 192.168.1.58 qua card mạng eth1. Số port nguồn từ 1024 đến 65535

và port đích là 80 (www/http).

Lệnh Miêu tả

--icmp-type <type> Thường dùng nhất là echo-reply và echo-request

Hình 3.11. Bảng điều kiện ICMP

Ta cùng xem một ví dụ sau về ICMPCode:iptables –A OUTPUT –p icmp –icmp-type echo-request –j ACCEPTiptables –A INPUT –p icmp –icmp-type echo-reply –j ACCEPT

Sinh viên thực hiện: Trần Quang Minh – 07B3 27

Page 28: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Iptables được cấu hình cho phép firewall chấp nhận gởi ICMP echo-requests

(pings) và gởi trả các ICMP echo-replies.

Ta cùng xem ví dụ khác như sau:Code:iptables –A INPUT –p icmp –icmp-type echo-request –m limit –limit 1/s –I etho0 –j ACCEPT

Iptables cho phép giới hạn giá trị lớn nhất số lượng các gói phù hợp trong

một giây. Có chỉ định thời gian theo định dạng /second, /minute, /hour hặc /day.

Hoặc sử dụng dạng viết tắt 3/s thay vì 3/second. Trong ví dụ này ICMP echo

requests bị giới hạn không nhiều hơn một yêu cầu trong một giây. Đặc điểm này của

iptables giúp ta lọc bớt các lưu lượng lớn, dây chính là đặc tính của tấn công từ chối

dịch vụ (DOS) và sâu Internet.Code:iptables -A INPUT -p tcp --syn -m limit --limit 5/s -i eth0 -j ACCEPT

Có thế mở rộng khả năng giới hạn của iptables để giảm thiểu khả năng bị tấn

công bởi các loại tấn công từ chối dịch vụ. Đây là cách phòng vệ chống lại kiểu tấn

công SYN flood bằng cách hạn chế sự chấp nhận các phân đoạn TCP có bit SYS

không nhiều hơn 5 phân đoạn trong 1 giây.

Sinh viên thực hiện: Trần Quang Minh – 07B3 28

Page 29: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Các điều kiện mở rộng thông dụng:

Lệnh Ý nghĩa

-m multiport --sport <port,

port>

Nhiều port nguồn khác nhau của TCP/UDP được

phân cách bởi dấu phẩy (,). Đây là liệt kê của các

port chứ không phải là một chuỗi các port.

-m multiport --dport <port,

port>

Nhiều port đích khác nhau của TCP/UDP được

phân cách bởi dấu phẩy (,). Đây là liệt kê của các

port chứ không phải là một chuỗi các port.

-m multiport --ports <port,

port>

Nhiều port khác nhau của TCP/UDP được phân

cách bởi dấu phẩy (,). Đây là liệt kê của các port

chứ không phải là một chuỗi các port. Không phân

biệt port đích hay port nguồn.

-m --state <state>

Các trạng thái thông dụng nhất được dùng là:

ESTABLISHED:Gói dữ liệu là một phần

của kết nối đã được thiết lập bởi cả hai

hướng.

NEW:Gói dữ liệu là bắt đầu của một kết nối mới.

RELATED: Gói dữ liệu bắt đầu một kết nối

phụ.Thông thường đây là đặt điểm của các giao

thức như FTP hoặc lỗi ICMP.

INVALID: Gói dữ liệu không thể nhận dạng được.

Điều này có thể do việc thiếu tài nguyên hệ thống

hoặc lỗi ICMP không trùng với một luồng dữ liệu

đã có sẵn

Hình 3.12. Bảng các điều kiện mở rộng thông dụng

Sinh viên thực hiện: Trần Quang Minh – 07B3 29

Page 30: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Đây là phần mở rộng tiếp theo của ví dụ trước:

Code:

iptables -A FORWARD -s 0/0 -i eth0 -d 192.168.1.58 -o eth1 -p TCP --sport 1024:65535 -m multiport --dport 80,443 -j ACCEPT

iptables -A FORWARD -d 0/0 -o eth0 -s 192.168.1.58 -i eth1 -p TCP -m state --state ESTABLISHED -j ACCEPT

Iptables được cấu hình cho phép firewall chấp nhận cá gói dữ liệu có giao

tiếp (protocol) là TCP, đến từ card mạng eth0, có bất kỳ địa chỉ IP nguồn là bất kỳ,

đi đến địa chỉ 192,168.1.58 qua mạng eth1. Số port nguồn là từ 1024 đến 65535 và

port đích là 80 (www/http) và 443 (https). Đến khi các gói dữ liệu nhận trở lại từ

192.168.1.58, thay vi mở các port nguồn và đích, ta chỉ việc cho phép dùng kết nối

cũ đã thiếp lập bằng cách dùng tham số -m state và –state ESTABLISHED.

3.2.7. Sử dụng user defined chainsChuỗi User Defined Chains nằm trong bảng iptables. Nó giúp cho quá trinh

xử lý gói tốt hơn. Ví dụ: Thay vì sử dụng gói đơn được xây dưng trong chain cho tất

cả giao thức, ta có thể sử dụng chain này để quyết đinh loại giao thức cho gói và sau

đó kiểm soát việc xử lý user-defined, protocol-specific chain trong bảng filter table.

Mặt khác, ta có thể thay thế một chuỗi “long chain” với chuỗi chính “stubby main

chain” bới nhiều chuỗi “subby chain”, bằng cách chia ngắn đó tổng chiều dài của tất

cả chain gói phải thông qua.

Sáu lệnh sau giúp việc cải tến tốc độ xử lý:

Code:

iptables -A INPUT -i eth0 -d 206.229.110.2 -j fast-input-queue

iptables -A OUTPUT -o eth0 -s 206.229.110.2 -j fast-output-queue

iptables -A fast-input-queue -p icmp -j icmp-queue-in

iptables -A fast-output-queue -p icmp -j icmp-queue-out

iptables -A icmp-queue-out -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT

iptables -A icmp-queue-in -p icmp --icmp-type echo-reply -j ACCEPT

Sinh viên thực hiện: Trần Quang Minh – 07B3 30

Page 31: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

DANH SÁCH CÁC LỆNH (QUEUE) (Hình 3.13)

Chain Description

INPUT Được xây dựng trong INPUT chain trong bảng iptables

OUTPUT Được xây dựng trong ONPUT chain trong bảng iptables

Fast-input-queueInput chain tách riêng biệt để hỗ trợ cho những giao thức đặc biệt và chuyển cácgói đến những protocol specific chains.

fast-output-queueOutput chain tách riêng biệt để hỗ trợ cho những giao thức đặc biệt và chuyển cácgói đến những protocol specific chains.

icmp-queue-out lệnh output tách riêng cho giao thức ICMP

icmp-queue-in Lệnh input tách riêng cho giao thức ICMP

Hình 3.13. Danh sách các lệnh (Queue)

3.2.8. Lưu lại những đoạn mã iptablesĐoạn mã iptables được lưu tạm thời ở file “/etc/sysconfig/iptables”

Định dạng mẫu trong file iptables cho phép giao thức ICMP, IPSec (những

gói ESP và AH), thiết lập liên kết, và quay lại SSH.

Code:

[root@mpicachesrv ~]# cat /etc/sysconfig/iptables

# Firewall configuration written by system-config-securitylevel

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

:INVALID_IP - [0:0]

:PORT_SCAN_LOG - [0:0]

Sinh viên thực hiện: Trần Quang Minh – 07B3 31

Page 32: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

:PORT_SCAN - [0:0]

:TCP_IN - [0:0]

#:DETECT_NMAP - [0:0]

# Block outgoing NetBios

-I OUTPUT -p tcp -o eth0 --sport 137:139 -j DROP

-I OUTPUT -p udp -o eth0 --sport 137:139 -j DROP

# Allow local loopback

-I INPUT -i lo -j ACCEPT

# Allow three ssh connections

-I INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

#-I INPUT -p tcp -s 0/0 --sport 513:65535 --dport 22 -m state --state NEW,ESTABLISHED -m recent --name sshlish --set -j ACCEPT

#-I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 600 --hitcount 10 -j DROP#-A OUTPUT -p tcp -s 127.0.0.1 -d 0/0 --sport 22 --dport 513:65535 -m state --state ESTABLISHED -j ACCEPT

### Deny all

COMMIT

[root@mpicachesrv ~]#

3.2.9. Những Module Kernel cần thiếtModun Kernel cần thiết để hoạt động một vài chương trình của ứng dụng

iptables Một số modun: iptables_nat module, ip_conntrack_ftp module,

iptables_nat module cần cho một số loại NAT.

ip_conntrack_ftp module cần cho việc thêm vào giao thức FTP.

ip_conntrack module giữ trạng thái liên kết với giao thức TCP.

ip_nat_ftp module cần được tải cho những máy chủ FTP sau một

firewall

NAT

Sinh viên thực hiện: Trần Quang Minh – 07B3 32

Page 33: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Chú ý: file /etc/sysconfig/iptables không cập nhật những mô dun tải về, vì

vậy chúng ta phải thêm vào những trạng thái đó vào file /etc/rc.local và chạy nó tại

cuối mỗi lần boot lại.

Những mẫu đoạn mã trong phần này bao gồm những trạng thái được lưu

trong file /etc/rc.local:

Code :

# File: /etc/rc.local

# Module to track the state of connections modprobe ip_conntrack

# Load the iptables active FTP module, requires ip_conntrack modprobe # ip_conntrack_ftp

# Load iptables NAT module when required modprobe iptable_nat

# Module required for active an FTP server using NAT modprobe ip_nat_ftp

3.2.10. Những đoạn Iptables mẫu3.2.10.1. Cơ bản về hoạt động của hệ thống bảo vệ

Hệ Điều Hành Linux có cơ chế bảo vệ là các thông số kernel hệ thống trong

file hệ thống /proc qua file /etc/sysctl.conf. Dùng file /etc/systl.conf cho các thông

số kernel hỗ trợ.

Đây là một cấu hình mẫu:

Code:# File: /etc/sysctl.conf #--------------------------------------------------------# Disable routing triangulation. Respond to queries out # the same interface, not another. Helps to maintain state # Also protects against IP spoofing #--------------------------------------------------------net/ipv4/conf/all/rp_filter = 1 #---------------------------------------------------------# Enable logging of packets with malformed IP addresses #---------------------------------------------------------net/ipv4/conf/all/log_martians = 1 # Disable redirects #---------------------------------------------------------

Sinh viên thực hiện: Trần Quang Minh – 07B3 33

Page 34: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

net/ipv4/conf/all/send_redirects = 0#---------------------------------------------------------# Disable source routed packets#---------------------------------------------------------net/ipv4/conf/all/accept_source_route = 0#---------------------------------------------------------# Disable acceptance of ICMP redirects#---------------------------------------------------------net/ipv4/conf/all/accept_redirects = 0#---------------------------------------------------------# Turn on protection from Denial of Service (DOS) attacks #---------------------------------------------------------net/ipv4/tcp_syncookies = 1 #---------------------------------------------------------# Disable responding to ping broadcasts#---------------------------------------------------------net/ipv4/icmp_echo_ignore_broadcasts = 1#---------------------------------------------------------# Enable IP routing. Required if your firewall is # protecting # network, NAT included#---------------------------------------------------------net/ipv4/ip_forward = 1

3.2.10.2. Ưu điểm của sự khởi tạo Iptables

Ta có thể thêm vào nhiểu cái ứng dụng khởi tạo cho đoạn mã, bao gồm việc

kiểm tra đường truyền internet từ những địa chỉ riêng RFC1918. Nhiều hơn nhứng

khởi tạo phức tạp bao gồm kiểm tra lỗi bởi sự tấn công sử dụng cờ TCP không có

giá trị. Đoạn mã cũng sử dụng nhiều “user-defined chain” để tạo đoạn mã ngắn hơn

và nhanh hơn như những chain có thể bị truy cập lặp lại. Điều này loại bỏ việc cần

thiết lặp lại những trạng thái tương tự.

Đoạn mã firewall hoàn tất:Code:

#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#= # # Define networks: NOTE!! You may want to put these # "EXTERNAL"

Sinh viên thực hiện: Trần Quang Minh – 07B3 34

Page 35: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

# definitions at the top of your script. # #=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#= EXTERNAL_INT="eth0" # External Internet interfaceEXTERNAL_IP="97.158.253.25" # Internet Interface IP address#---------------------------------------------------------# Initialize our user-defined chains#---------------------------------------------------------iptables -N valid-src iptables -N valid-dst#---------------------------------------------------------# Verify valid source and destination addresses for all packets#---------------------------------------------------------iptables-A INPUT -i $EXTERNAL_INT -j valid-srciptables-A FORWARD -i $EXTERNAL_INT -j valid-srciptables-A OUTPUT -o $EXTERNAL_INT -j valid-dstiptables-A FORWARD -o $EXTERNAL_INT -j valid-dst#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#= # # Source and Destination Address Sanity Checks # Drop packets from networks covered in RFC 1918 # (private nets) # Drop packets from external interface IP # #=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#= iptables-A valid-src -s $10.0.0.0/8 -j DROPiptables-A valid-src -s $172.16.0.0/12 -j DROPiptables-A valid-src -s $192.168.0.0/16 -j DROPiptables-A valid-src -s $224.0.0.0/4-j DROPiptables-A valid-src -s $240.0.0.0/5-j DROPiptables-A valid-src -s $127.0.0.0/8-j DROPiptables-A valid-src -s 0.0.0.0/8 -j DROPiptables-A valid-src -d 255.255.255.255 -j DROPiptables-A valid-src -s 169.254.0.0/16 -j DROPiptables-A valid-src -s $EXTERNAL_IP -j DROPiptables-A valid-dst -d $224.0.0.0/4 -j DROP

3.2.10.3. Sự cho phép của máy chủ DNS truy cập đến Firewall

Sinh viên thực hiện: Trần Quang Minh – 07B3 35

Page 36: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Firewall không thể tạo yêu cầu DNS queries đến Internet bởi vì Internet được

yêu cầu cho hàm cơ bản của firewall, nhưng bởi vì Fedora Linux’s yum RPM sẽ

giúp giữ máy chủ cập nhật với trạng thái bảo vệ mới nhất. Những trạng thái theo sau

sẽ cập nhật không chỉ cho firewall hoạt động như nhưng DNS client nhưng cũng

cho những firewall làm việc trong một bộ đệm hoặc có vai trò như DNS server.

Code:iptables -A OUTPUT -p udp -o eth0 --dport 53 -sport 1024:65535 -j ACCEPT iptables -A INPUT -p udp -i eth0 --sport 53 -dport 1024:65535 -j ACCEPT

3.2.10.4. Cho phép WWW và SSH truy cập vào Firewall

Đoạn mã ngắn này là cho một firewall và gấp đôi như một web server được

quản lý bởi người quản trị hệ thống web server “web server system adminitrator”

qua những lớp vỏ bảo mật (SSH_secure shell). Những gói quay lại đã được dự định

trước cho port 80 (WWW) và 22 (SSH) được phép. Vì vậy tạo những bước đầu tiên

để thiết lập liên kết.. Ngược lại, những port trên (80 và 22) sẽ không được thiết lập

chế độ bảo mật tại ngõ ra cho những gói chỉ được chuyển đi không quay về cho tất

cả liên kết thiết lập được phép.

Code:#---------------------------------------------------------# Allow previously established connections # - Interface eth0 is the internet interface #---------------------------------------------------------iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT #---------------------------------------------------------# Allow port 80 (www) and 22 (SSH) connections to the firewall#---------------------------------------------------------iptables -A INPUT -p tcp -i eth0 --dport 22 -sport 1024:65535 -m state --state NEW -j ACCEPT iptables -A INPUT -p tcp -i eth0 --dport 80 --sport 1024:65535 -m state --state NEW -j ACCEPT

3.2.10.5. Cho phép Firewall truy cập Internet:

Sinh viên thực hiện: Trần Quang Minh – 07B3 36

Page 37: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Đoạn mã iptables này có thể cho phép một user tren firewall sử dụng Web

browser đến giao tiếp Internet. Đường truyền giao thức HTTP sử dụng TCP port 80,

HTTPs (HTTP secure) port 443

Code:

#---------------------------------------------------------

# Allow port 80 (www) and 443 (https) connections from the firewall

#---------------------------------------------------------

iptables -A OUTPUT -j ACCEPT -m state -state NEW,ESTABLISHED,RELATED -o eth0 -p tcp -m multiport --dport 80,443 -m multiport --sport 1024:65535

#---------------------------------------------------------

# Allow previously established connections Interface eth0 is the internet interface

#---------------------------------------------------------

iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i eth0 -p tcp

Nếu muốn tất cả đường truyền từ firewall được chầp nhận, sau đó xoá: Code:

-m multiport --dport 80,443 -m multiport --sport 1024:65535

3.2.10.6. Cho phép mạng nội bộ truy cập vào Firewall

Ví dụ: eth1 được liên kết với mạng ở nhà dùng địa chỉ IP từ mạng

192.168.1.0. Tất cả đường truyền này và firewall được giả sử là liên kết được:

Những rule được cần cho liên kết giao tiếp đến Internet để cho phép chỉ những cổng

đặc trưng, những loại liên kết và có thể điều chỉnh những server có truy cập đến

firewall và mạng ở nhà.

Code:

#---------------------------------------------------------# Allow all bidirectional traffic from your firewall to the protected network # Interface eth1 is the private network interface #---------------------------------------------------------iptables -A INPUT -j ACCEPT -p all -s 192.168.1.0/24 -i eth1 iptables -A OUTPUT -j ACCEPT -p all -d 192.168.1.0/24 -o eth1

3.2.10.7. Mặt nạ (Masquerade_many to one NAT)

Sinh viên thực hiện: Trần Quang Minh – 07B3 37

Page 38: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Đường truyển từ tất cả thiết bị trên một hoặc nhiều mạng được bảo vệ sẽ xuất

hiện như là nó bắt đầu từ địa chỉ IP đơn trên vị trí Internet của Firewall. Địa chỉ IP

mặt nạ (masquerade) luôn luôn mặc đinh đến địa chỉ IP của giao tiếp chính của

firewall. Ưu điểm của địa chỉ IP mặt nạ (masquerade) là ta không phải chỉ rõ địa chỉ

IP NAT. Điều này tạo cho việc cấu hình bảng iptables NAT với giao thức DHCP,

Ta có thể cấu hình nhiều đến một NAT cho một IP bằng cách sử dụng

POSTROUTING và không dùng trạng thái MASQUERADE. Việc che đậy

(Masquerading) phụ thuộc vào hệ điều hành Linux được cấu hình để cập nhật định

tuyến giữa Internet và giao tiếp mạng riêng của Firewall. Điều này được thực hiện

bởi IP enabling bằng cách cho file /proc/sys/net/ipv4/ip_forward giá trị 1 như là đối

với giá trị mặc định 0.

Một masquerading đươc thiết lập sử dụng POSTROUTING chain của bảng

NAT Table, ta sẽ phải định dạng Iptables để cho phép nhiều gói đi qua giữa hai bề

mặt. Dể làm được điều này, sử dụng FORWARD chain của filter table. Nhiều hơn,

nhiều gói liên quan những liên kết NEW và ESTABLISHED sẽ được cho phép

outbound đến Internet, nhưng chỉ những gói liên quan đến liên kết ESTABLISHED

mới được phép inbound. Điều này sẽ giúp bảo vệ mạng nội bộ từ bất cứ mọt người

nào cố gắng kết nối với mạng từ Internet.

Code:

#---------------------------------------------------------# Load the NAT module# Note: It is best to use the /etc/rc.local example in# this chapter. This value will not be retained in the#/etc/sysconfig/iptables file. Included only as a reminder.#---------------------------------------------------------modprobe iptable_nat #---------------------------------------------------------# Enable routing by modifying the ip_forward /proc filesystem file # Note: It is best to use the /etc/sysctl.conf example in # this #chapter. This value will not be retained in the /etc/sysconfig/iptables file. # Included only as a reminder.

Sinh viên thực hiện: Trần Quang Minh – 07B3 38

Page 39: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

#---------------------------------------------------------echo 1 > /proc/sys/net/ipv4/ip_forward#---------------------------------------------------------# Allow masquerading Interface eth0 is the internet interface # Interface eth1 is the private network interface #---------------------------------------------------------Iptables –A POSTROUTING -t nat -o eth0 -s 192.168.1.0/24 -d 0/0 -j MASQUERADE #---------------------------------------------------------# Prior to masquerading, the packets are routed via the # filter # table's FORWARD chain. Allowed outbound: New, established and related # connections # Allowed inbound : Established and related connections #---------------------------------------------------------Iptables -A FORWARD -t filter -o eth0 -m state -state NEW, ESTABLISHED, RELATED -j ACCEPT iptables -A FORWARD -t filter -i eth0 -m state --state ESTABLISHED, RELATED -j ACCEPT

3.2.10.8. Port forwarding theo loại NAT (Giao thức DHCP DSL)

Một số trường hợp, nhiều home user có thể nhận địa chỉ IP công cộng DHCP

đơn từ những nhà cung cấp dịch vụ ISP. Nếu một Linux firewall cũng là giao tiếp

với Internet và ta muốn dẫn một trang Web trên một trong những Home server được

bảo vệ NAT, sau đó ta phải sử dụng port forwarding. Ở đây việc kết hợp địa chỉ IP

đơn của Firewall, địa chỉ IP của server, và port nguồn/ đích của đường truyền có thể

được sử dụng bổ sung đường truyền.

Port forwarding được điều chỉnh bởi PREROUTING chain của bảng NAT

table. Giống như Masquerading, module iptables_nat phải được tải và định tuyến

phải được hiển thị cho port forwarding để làm việc. Đinh tuyết cũng phải được phép

trong bảng iptables với FORWARD chain, điều này bao gồm tất cả liên kết NEW

inbound từ Internet làm phù hợp port forwarding và tất cả gói liên kết với kết nối

ESTABLISHED trong những điều khiển:

Sinh viên thực hiện: Trần Quang Minh – 07B3 39

Page 40: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Code:

#---------------------------------------------------------# Load the NAT module Note: It is best to use the /etc/rc.local example in# this chapter. This value will not be retained in the# /etc/sysconfig/iptables file. Included only as a reminder.#---------------------------------------------------------modprobe iptable_nat#---------------------------------------------------------# Get the IP address of the Internet interface eth0 (linux only)# You'll have to use a different expression to get the IP address# for other operating systems which have a different ifconfig output# or enter the IP address manually in the PREROUTING Statement# This is best when your firewall gets its IP address using DHCP.# The external IP address could just be hard coded ("typed in normally") #---------------------------------------------------------external_int="eth0"external_ip=""ifconfig $external_int | grep 'inet addr'| awk '{print $2}' | sed -e 's/. *://'"" #---------------------------------------------------------# Enable routing by modifying the ip_forward /procfilesystem File# Note: It is best to use the /etc/sysctl.conf example in #this chapter. This value will not be retained in the#/etc/sysconfig/iptables file. Included only as a reminder.#---------------------------------------------------------echo 1 > /proc/sys/net/ipv4/ip_forward#---------------------------------------------------------# Allow port forwarding for traffic destined to port 80 of the# firewall's IP address to be forwarded to port 8080 on server 192.168.1.200 #Interface eth0 is the internet interface # Interface eth1 is the private network interface #---------------------------------------------------------iptables -t nat -A PREROUTING -p tcp -i eth0 -d $external_ip --dport 80 --sport 1024:65535 -j DNAT -to 192.168.1.200:8080 #---------------------------------------------------------# After DNAT, the packets are routed via the filter # table's # FORWARD chain.

Sinh viên thực hiện: Trần Quang Minh – 07B3 40

Page 41: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

# Connections on port 80 to the target machine on the # private # network must be allowed. #---------------------------------------------------------iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.1.200 --dport 8080 --sport 1024:65535 -m state --state NEW -j ACCEPT iptables -A FORWARD -t filter -o eth0 -m state --state

NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -t filter -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

3.2.10.9. NAT tĩnh (SNAT)

Ví dụ: tất cả đường truyền đến một địa chỉ IP công cộng riêng biệt, được

chuyển đổi đến một server đơn trên Subnet được bảo vệ. Bởi vì firewall có nhiều

hơn một địa chỉ IP, ta không thể thực hiện MASQUERADE; nó sẽ bắt buộc khởi

tạo như địa chỉ IP của giao tiếp chính và không như bất cứ địa chỉ IP trùng lập mà

Firewall có thể có. Vì vậy, sử dụng SNAT để chỉ rõ địa chỉ IP bị trùng lặp được sử

dụng cho việc liên kết ban đầu bởi những server khác trong mạng được bảo vệ,

Ghi chú: Mặc dù những NAT của bảng NAT Table, tất cả đường truyền đến

server đích (192.168.1.100 đến 102), chỉ liên kết với port 80, 443 và 22 là được

phép thông qua bởi FORWARD chain. Ta phải chỉ rõ lựa chọn riệng biệt –m

multiport khi ta cần làm cho thích hợp những cổng không tuần tự (multiple non-

squential) cho cả nguồn và đích.

Trong ví dụ này, firewall có:

Sử dụng one to one NAT tạo server 192.168.1.100 trên home network

xuất hiện trên Internet như những địa chỉ IP (97.158.253.26).

Tạo một many to one NAT cho địa chỉ IP 192.168.1.100 ở home

network, tát cả những server như những địa chỉ IP (97.158.253.26)

Điều này khác từ khởi tạo. Ta tạo những địa chỉ IP trùng lặp cho mỗi nhóm

IP Internet cho one to one NAT

Sinh viên thực hiện: Trần Quang Minh – 07B3 41

Page 42: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Code:

#---------------------------------------------------------# Load the NAT module # Note: It is best to use the /etc/rc.local example in this chapter. This value will # not be retained in the /etc/sysconfig/iptables file. Included only as a reminder. #---------------------------------------------------------modprobe iptable_nat #---------------------------------------------------------# Enable routing by modifying the ip_forward /proc filesystem file # Note: It is best to use the /etc/sysctl.conf example in this chapter. # This value will # not be retained in the /etc/sysconfig/iptables file. Included only as a reminder. #---------------------------------------------------------echo 1 > /proc/sys/net/ipv4/ip_forward # NAT ALL traffic: # REMEMBER to create aliases for all the internet IP addresses below # TO: FROM: MAP TO SERVER:# 97.158.253.26 Anywhere 192.168.1.100(1:1 NAT-Inbound)# Anywhere 2.168.1.100 97.158.253.26(1:1 NAT-Outbound)# Anywhere 192.168.1.0/24 97.158.253.29(FW IP)# # SNAT is used to NAT all other outbound connections initiated # from the protected network to appear to come from # IP address 97.158.253.29 # POSTROUTING: # NATs source IP addresses. Frequently used to NAT connections # from your home network to the Internet # PREROUTING: # NATs destination IP addresses. Frequently used to NAT # connections from the Internet to your home network # - Interface eth0 is the internet interface # - Interface eth1 is the private network interface #---------------------------------------------------------# PREROUTING statements for 1:1 NAT# (Connections originating from the Internet)#---------------------------------------------------------

Sinh viên thực hiện: Trần Quang Minh – 07B3 42

Page 43: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

iptables -t nat -A PREROUTING -d 97.158.253.26 -i eth0 -j DNAT --to-destination 192.168.1.100#---------------------------------------------------------# POSTROUTING statements for 1:1 NAT# (Connections originating from the home network servers)#---------------------------------------------------------iptables -t nat -A POSTROUTING -s 192.168.1.100 -o eth0 -j SNAT --to-source 97.158.253.26#---------------------------------------------------------# POSTROUTING statements for Many:1 NAT#(Connections originating from the entire home network)#---------------------------------------------------------iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT -o eth0 --to-source 97.158.253.29 #---------------------------------------------------------# Allow forwarding to each of the servers configured for 1:1 NAT # (For connections originating from the Internet. Notice how you use the real #IP addresses here) #---------------------------------------------------------iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.1.100 -m multiport --dport 80,443,22 -m state --state NEW -j ACCEPT#---------------------------------------------------------# Allow forwarding for all New and Established SNAT connections originating # on the home network AND already established DNAT connections #---------------------------------------------------------iptables -A FORWARD -t filter -o eth0 -m state --state

NEW,ESTABLISHED,RELATED -j ACCEPT #---------------------------------------------------------# Allow forwarding for all 1:1 NAT connections originating on the Internet that have # already passed through the NEW forwarding statements above #---------------------------------------------------------iptables -A FORWARD -t filter -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT #---------------------------------------------------------# Allow forwarding to each of the servers configured for 1:1 NAT # (For connections originating from the Internet. Notice how you use the real IP addresses here) #---------------------------------------------------------

Sinh viên thực hiện: Trần Quang Minh – 07B3 43

Page 44: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.1.100 -m multiport --dport 80,443,22 -m state --state NEW -j ACCEPT #---------------------------------------------------------# Allow forwarding for all New and Established SNAT connections originating on the # home network AND already established DNAT connections #---------------------------------------------------------iptables -A FORWARD -t filter -o eth0 -m state --state

NEW,ESTABLISHED,RELATED -j ACCEPT #---------------------------------------------------------# Allow forwarding for all 1:1 NAT connections originating on the Internet that have# already passed through the NEW forwarding statements above #---------------------------------------------------------iptables -A FORWARD -t filter -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

3.2.11. Sửa lỗi bảng iptablesMột số công cụ cho phép sửa lỗi đoạn mã firewall iptables. Một trong những

phương pháp tốt nhất là loại bỏ tất cả những gói bị khoá.

Kiểm tra the firewall log:

Ta theo dõi những gói đi qua firewall có trong danh sách bảng iptables của

những rule sử dụng LOG target. LOG target sẽ:

Tạm dừng tất cả đường truyền để chỉnh sửa rule trong iptables trong nơi

nó được chứa.

Tự động viết vào file /var/log/messages và sau đó thực thi rule kế tiếp

Để tạm dừng đường truyền không mong muốn, ta phải thêm vào rule phù

hợp với một DROP target sau LOG rule. Tạm dừng một nhóm gói bị lỗi vào file

/var/log/messages.

Code:

#------------------------------------------------------

# Log and drop all other packets to file /var/log/messages

# Without this we could be crawling around in the dark

#------------------------------------------------------

Sinh viên thực hiện: Trần Quang Minh – 07B3 44

Page 45: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

iptables -A OUTPUT -j LOG

iptables -A INPUT -j LOG

iptables -A FORWARD -j LOG

iptables -A OUTPUT -j DROP

iptables -A INPUT -j DROP

iptables -A FORWARD -j DROP

3.3. Webserver ApacheApache hay chương trình máy chủ HTTP (Webserver) là một chương trình

dành cho máy chủ đối thoại qua giao thức HTTP. Apache chạy trên các hệ điều

hành tương tự Unix, Microsoft Windows, Novell Netware và các hệ điều hành khác.

Apache đóng một vai trò quan trọng trong quá trình phát triển của mạng web thế

giới (tiếng Anh: World Wide Web)

Khi dược phát hành lần đầu, Apache là chương trình máy chủ mà nguồn mở

duy nhất có khả năng cạnh tranh với chương trình máy chủ tươn tự của Netscape

Communications Corporation mà ngày nay được biết đến qua tên Sun JavaSystem

Web Server. Từ đó trở đi, Apache đã không ngừng tiến triển và trở thành một phần

mềm có sức cạnh tranh mạnh so với các chương trình máy chủ khác về mặt hiệu

suất và tính năng phong phú. Từ tháng 4 năm 1996, Apache trở thành môt chương

trình máy chủ HTTP thông dụng nhất. Hơn nữa, Apache thường được dùng để so

sánh với các phần mềm khác có chức năng tương tự. Tính đến tháng 1 năm 2007 thì

Apache chiếm đến 60% thị trường các chương trình phần phân phối trang web.

Apache được phát triển và duy trì bởi một cộng đồng mã nguồn mở dưới sự bảo trợ

của Apache Software Foundation. Apache được phát hành với giấy phép Apache

License và là một phần mềm tự do và miễn phí.

Chúng tôi giới thiệu Apache vì cổng thông tin điện tử của Bộ Kế hoạch và

Đầu tư sử dụng Apache làm webserver, không thể xây dựng hệ thống phòng thủ cho

MPIPortal khi không nghiên cứu hệ thống này. Có nghĩa là phần mềm nguồn mở

Apache được giới thiệu ở đây như là một thành phần của hệ thống mã nguồn mở

Sinh viên thực hiện: Trần Quang Minh – 07B3 45

Page 46: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

được sử dụng trong bảo mật MPIPortal chứ không phải được giới thiệu dưới góc độ

là một phần mềm bảo mật nguồn mở.

3.3.1. Mô tả cụ thể của lõi ApacheTất cả các tập tin hình thành cốt lõi Apache được nhóm lại trong thư mục

chính. Các nhà thiết kế của Apache muốn nhiều tính năng của máy chủ web có thể

được thực hiện như những phân hệ riêng biệt và do đó có nhiều tương tác giữa các

tiểu hợp phần của lõi Apache. Ý tưởng này nhằm mục đích để một ai đó mở rộng

Apache không cần phải sửa đổi bất cứ điều gì trong lõi. Tiểu hợp phần duy nhất mà

có thể cần thay đổi để mở rộng các máy chủ là một trong đó thực hiện các giao thức

HTTP (mà là một phần của lõi). Mặc dù các giao thức HTTP là một tiểu hợp phần

riêng biệt của lõi, cũng không có định nghĩa API.

Hình 3.14. Minh họa mô tả lõi Apache

3.3.2. Các module chuẩn:Để có đầy đủ chức năng, Apache cài đặt mặc đinh một số module tiêu chuẩn.

Sinh viên thực hiện: Trần Quang Minh – 07B3 46

Page 47: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Những module này không phải được nạp tự động, các modules có thể được kết nối

với lõi hoặc có thể được biên dịch như phần riêng biệt được nạp động. Ngoại trừ các

module kết nối luôn được cài sẵn khi khởi động thì bất kỳ một modules nào cũng có

thể cài để nạp tự động.

Khi các kịch bản cấu hình đặc biệt là chạy một tệp có đuôi .c, file modules.c

tự động tạo ra trong thư mục gốc của mã nguồn. Modules.c định nghĩa mảng đặc

biệt của con trỏ tới các cấu trúc module, được gọi là ap_prelinked_modules [] đối

với các module được liên kết với lõi và module * ap_preloaded_modules [] cho

những module d ta tự cài đặt. Điều thú vị là ngay cả mod_core, đó là cấu trúc

module được xác định bởi các thành phần http_code,c với các tiểu thành phần được

liệt kê trong mảng tạo ra trong modules.c.

Lưu ý rằng một module có thể xác định xử lý của nhiều giai đoạn. Và

mod_core đã được bao gồm:

No Phase Modules

1 filename translationmod_alias.cmod_userdir.cmod_core

2 check_user_id

mod_auth.c

mod_auth_anon.c

mod_auth_db.c

mod_auth_dbm.c

mod_digest.c

3 check auth

mod_auth.c

mod_auth_anon.c

mod_auth_db.c

mod_auth_dbm.c

mod_digest.c

4 check access mod_access

Sinh viên thực hiện: Trần Quang Minh – 07B3 47

Page 48: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

5 type_checker

mod_mime.c

mod_mime_magic.c

mod_negotiation.c

mod_core

6 fixups

mod_alias.c

mod_cern_meta.cmod_env.c

mod_expires.c

mod_headers.c

mod_negotiation.c

mod_speling.c

mod_usertrack.c

mod_core

7 content handlers

mod_actions.c

mod_asis.c

mod_autoindex.c

mod_cgi.c

mod_dir.c

mod_imap.c

mod_include.c

mod_info.c

mod_negotiation.c

mod_status.c

mod_core

8 logger

mod_log_agent.c

mod_log_config.c

mod_log_referer.c

Hình 3.15. Bảng Mod_Core

3.3.3. Tối ưu ApacheMôi trường host

Sinh viên thực hiện: Trần Quang Minh – 07B3 48

Page 49: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Không quan tâm đến hệ điều hành, hãy sử dụng nguyên lý tối ưu dưới đây:

Giữ các ứng dụng background ở mức tối thiểu. Nếu thực sự quan tâm đến

vấn đề hiệu suất thì trước tiên cần phải xem xét đó là một số quá trình

hoạt động ở chế độ background. Cho ví dụ, trong Unix, nên tắt NFS, các

dịch vụ in ấn và thậm chí cả sendmail nếu không cần thiết. Trong

Windows, sử dụng System control panel để tối ưu hóa hệ thống cho các

ứng dụng và cache hệ thống, tối ưu hệ thống về hiệu suất. Chỉ cần bảo

đảm rằng các ứng dụng và các dịch vụ yêu cầu như MySQL vẫn đang

chạy.

Tránh sử dụng hệ thống. Nếu bắt đầu biên dịch các ứng dụng, chỉnh sửa

file hay sử dụng máy thì chắc chắn hiệu suất phục vụ web của máy sẽ

giảm. Do đó nếu ta phải chỉnh sửa các thành phần hoặc cài đặt phần

mềm, hãy xây dựng hoặc chỉnh sửa các thành phần trên máy tính khác

sau đó copy chúng sau.

Cần cập nhật liên tục hệ thống. Dẫu ý tưởng xuất phát từ quan điểm bảo

mật nhưng việc nâng cấp phần mềm và cập nhật các bản vá cũng cải thiện

đáng kể hiệu suất vào ra và hiệu suất mạng.

Ứng dụng Apache:

Rõ ràng Apache cũng là một ứng dụng. Do đó đầu tiên cần đảm bảo nó được

xây dựng đúng với các module và các thành phần mở rộng ho các website. Điều đó

có nghĩa rằng, cho ví dụ, ta có thể bó qua các model ghi nếu không cần thiết. Lợi

ích chủ yếu của việc đó là giảm được tải bộ nhớ, nhưng một lợi ích tốt nữa là ta

không thể kích hoạt vô tính các tùy chọn và do đó làm giảm hiệu suất máy chủ.

Tĩnh và động

Khả năng linh hoạt là vấn đề chủ yếu của hầu hết các quản trị viên Apache,

tuy nhiên khả năng linh hoạt có giá của nó. Việc sử dụng các module được load

động bên trong Apache sẽ tạo sự thuận tiện nhưng chúng cũng ảnh hưởng đến hiệu

Sinh viên thực hiện: Trần Quang Minh – 07B3 49

Page 50: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

suất, vì mã sẽ được nạp khi module yêu cầu. Các module động cũng có ưu điểm

trong việc giữ cho các yệu cầu ở mức thấp.

Để xây dựng một chế độ tĩnh, sử dụng kịch bản cấu hình và chỉ định các

module mà ta muốn, tuy nhiên không chỉ định chia sẻ (chẳng hạn như sử dụng

enable-rewrite mà không sử dụng -enable-rewrite-shared, hay sử dụng tùy chọn chia

sẻ -enable-so).

Cấu hình module

Nếu đang sử dụng cấu hình tĩnh của Apache, hãy chọn các module phù hợp

để sử dụng. Sử dụng chế độ tĩnh cũng phải trả giá – càng nhiều module thì càng tốn

nhiều bộ nhớ. Như vậy, khi một module đa xử lý có thể sẽ có hiệu quả đáng kể trên

các yêu cầu bộ nhớ của máy.

Lưu ý rằng có một số mục được đưa vào tự động, vì vậy cần kích hoạt một

cách dứt khoát và vô hiệu hóa các module cần thiết. Cũng cần nhớ gộp các module

của các hãng thứ ba, các yêu cầu dịch vụ web. Sử dụng cấu hình – help để có được

danh sách các tùy chọn có cập.

Cấu hình máy chủ

Khi môi trường được thiết lập và ứng dụng Apache tối ưu. Đây là lúc ta để ý

đến file cấu hình để có những điều chỉnh mạnh mẽ hơn. Một cách hay là bắt đầu

bằng cách dọn dẹp file để chỉ thị (directive) được giới hạn ở con số vài trăm bằng

cách remove các chú thích. Ngoài ra, nó sẽ trở thành việc remove các thành phần

không cần thiết hoặc các thành phần không cung cấp các lợi ích đích đáng.

Đơn giản hoá file cấu hình

Bước đầu tiên để tối ưu hóa là đơn giản hóa file cấu hình. Tuy sẽ không có

những tiến bộ rõ nét về hiệu suất nhưng nó sẽ làm cho file cấu hình trở nên dễ dàng

hơn trong sử dụng và vì vậy ta sẽ tránh được trường hợp bỏ sots các chỉ thị hoặc

thành phần cần thay đổi.

Nếu thực hiện bất kỳ kiểu tối ưu nào, hãy bắt dầu với một trong các file cấu

hình được cung cấp mặc định. Các file máy thường đc lưu trong thư mục cấu hình

Apache dưới tên httpd.conf.orig hoặc http-std.conf. Không nên sử dụng file high

Sinh viên thực hiện: Trần Quang Minh – 07B3 50

Page 51: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

performance-std.còn; về lâu dài nó không thực sự hữu ích như những gì ta nghĩ khi

bắt đầu thêm vào một số lượng lớn các thông tin cấu hình bổ sung. Mặt khác, nếu

mục tiêu của ta là một máy chủ web tĩnh, tốc dộ thi đây chắn chắn là cách dễ dàng

nhất để ta thực hiện được điều đó.

Nếu biết các lệnh cấu hình Apache, hoặc sẵn lòng nghiên cứu tài liệu, bước

hiệu quả nhất và nhanh nhất mà ta nên làm là remove tất cả các comment từ file cấu

hình, vì chúng thường làm giảm mức độ tin cậy của các chỉ thị thực. Ta cũng có thể

remove các tham chiếu đến hê thống MPM hiện không sử dụng trên platform đã

chọn.

Vô hiệu hóa các thành phần của hệ thống

Giờ đây chúng ta đã có được một file cấu hình đơn giản, hãy bắt đầu remove

thành phần cấu hình cho các hệ thống hiện không sử dụng. Cụ thể nhu:

HostnameLookups: thành phần thường sẽ thêm overhead vào mỗi yêu cầu

tra cứu DNS trên máy khách, đầu tiên quan sát để tìm tên từ địa chỉ IP,

sau đó tra cứu để chắc chắn thông tin đó không bị nhầm. Trong hầu hết

các trường hợp, có thể đơn giản vô hiệu hóa. Nếu thường xử lý với các

file bản ghi của mình, hãy sử dụng post processing, để xác định thông tin.

Để vô hiệu hóa các tra cứu, nhóm chỉ thị dưới dây HostnameLookups off.

Symbolic links: đây là thành phần khi kích hoạt, sẽ làm cho Apache kiểm

tra mọi yêu cầu để xác định xem liệu mọt liên kết tượng trưng có liên

quan trong yêu cầu hay không? Trừ khi ta thực sự cấn đến các liên kết

tượng trưng này, bằng không hãy tắt bỏ bằng cách sử dụng: <Directory/>

Options – FollowSymLinks </Directory>

Server status and info, đây là một thành phần mặc dù rất hữu dụng khi

test và kiểm tra máy chủ, nhưng nó sẽ tạo thêm overhead cho máy chủ

web, vo hiệu hóa bằng cách ìm kiếm các chỉ thị SetHandler server-status,

và nếu có thể, remove module từ Apache khi ta cấu hình ứng dung trong

suốt quá trình xây dựng.

Sinh viên thực hiện: Trần Quang Minh – 07B3 51

Page 52: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Wildcards và các tùy chon linh hoạt cần được tránh nếu có thể. Cho ví dụ

chỉ thị DirectoryIndex, sẽ chỉ thị rõ ràng danh sách các file được cấu

hình, luôn liệt jee lựa chọn phù hợp nhất đầu tiên.

CGI excution cần có trừ khi có một lý do tốt nào đó không thực hiện như

vậy. Đặt tất cả các file CGI vào một thư mục và cấu hình nó cho thực thi

CGI. ĐIều này sẽ tránh cho Apache cố gắng xác định xem yêu cầu đó có

phải quả thực cho thành phần CGI hay là một file tĩnh nào đó.

Vô hiệu hóa bản ghi:

Việc ghi thông tin bản ghi là một quá trình tiêu tốn khá nhiều thời gian. Măc

dù vậy Apache luôn mở tính năng này, do đó nó sẽ ngốn nhiều thời gian của máy

chủ. Nếu việc lưu các thông tin bản ghi là không cần thiết, có thể tiết kiệm được

một vài chu trình xử lý bằng cách vô hiệu hóa nó. Để thực hiện điều này, hãy ghi

chú các dòng bản ghi trong file cấu hình.

Nếu quyết định giữ các bản ghi của mình, vô hiệu hóa HostNameLookups

(xem bên trên) và bảo đảm copy các thông tin bản ghi ra một máy khác để phân tích

các file.

Đơn giản hóa cấu hinh mức thư mục:

Các file .htaccess là các file rất hữu dung cho việc mở rộng các tham số cấu

hình máy chủ Apache mà không cần phải chỉnh sửa file cấu hình chính mỗi khi

muốn thay đổi thứ gì đó. Tuy nhiên vấn đề ở đây là việc sử dụng chúng sẽ làm

chậm máy chủ.

Đầu tiên, máy chủ phải quan sát xem liệu file .htaccess có tồn tại hay không,

sau đó nó phải phân tích cú pháp và xử lý các thành phần này trước khi sử dụng cấu

hình cho thư mục đang được nói đến. Tồi tệ hơn, Apache phải xác định thông tin

này không chỉ cho thưc mục hiện hành mà còn cho cả các thư mục cha và sau đó

phải tạo những thay đổi dựa trên nội dung của tất cả các file này,

Mặc dù vậy, nếu muốn tối đa hóa hiệu suất, nên vô hiệu hóa việc sử dụng các

file .htaccess. Bất cứ cấu hình thư mục cụ thể nào cũng đều có thể đi vào file cấu

Sinh viên thực hiện: Trần Quang Minh – 07B3 52

Page 53: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

hình chính, nơi nó có thể được phân tích cú pháp một lần bởi Apache khi máy chủ

bắt đầu.

Để vô hiệu hóa .htaccess thêm chỉ thị AllowOverried None và các phần

<Directory>.

Cấu hình MPM (Multi-Processing Module)

MPM cho phép một nền tảng cụ thể có thể quản lý nhiều kết nối đồng thời.

Các module MPM cụ thể cho từng nền tảng. Các giải pháp có sẵn làm việc một

cách đặc trưng với Unix, Windows, BeOS và NetWare. Với một só nền tảng thường

có nhiều sự lựa chọn. Đối với hàu hết người dùng, cấu hình mặc đinh cho môi

trường cụ thể nào đó làm việc khá tốt, đặc biệt khi việc có được các tham số chính

xác có thể là một nhiệm vụ tốn thời gian. Bằng cách so sánh, nhiều kỹ thuật đã được

mô tả có thể mang lại hiệu suất tốt hơn, tuy nhiên khi muốn có được hiệu suất tối đa

cho máy chủ của mình thì vẫn phải điều chỉnh cấu hình.

Dưới hầu hết các nền tảng chỉ có MPM, Unix có hai tùy chọn prefork và

worker. MPM prefork chia ra một số các quá trình Apache giống nhau, còn worker

tạo ra nhiều thread. Nói chung, prefork tốt hơn trên các hệ thống một hoặc hai bộ vi

xử lý, nơi các hệ điều hành hỗ trwoj tốt hơn cho việc cắt nhỏ thời gian giữa các quá

trình. Trên hệ thống có số lượng CPU cao hơn, mô hình thread chắn chắn sẽ hiệu

quả hơn.

Trong gần như tất cả các trường hợp, chỉ thị MaxClients là hiệu quả nhất cho

việc tăng hiệu suất máy chủ, vì nó kiểm soát số lượng tối đa các kết nối đồng thời

mà máy chủ Apache có thể quản lý.

Tối ưu hóa các thành phần tĩnh

Nếu website sử dụng rất nhiều thành phần tĩnh, hoặc nếu ta tách các thành

phần động và tĩnh trên hai hoặc nhiều máy chủ web thì mục tiêu chính của ta sẽ là

cải thiện thời gian đáp trả mà Apache gửi trả lại các thông tin đã được yêu cầu.

Cách đơn giản nhất để thực hiện điều này là sử dụng module mod_cache. Ta có thể

Sinh viên thực hiện: Trần Quang Minh – 07B3 53

Page 54: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

sử dụng module này với mod_disk_cache để cung cấp cache để cung cấp cache bộ

nhớ và đĩa của các file tĩnh.

Kiểm tra tài liệu Apache trên module mod_cache để có thêm thông tin chi

tiết hơn.

Sinh viên thực hiện: Trần Quang Minh – 07B3 54

Page 55: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Tối ưu hóa các thành phần động

Các thành phần động chắc chắn sẽ là thành phần tiêu tốn thời gian nhất cho

bất cứ máy chủ web nào. Đặc biệt nếu ta sử dụng CGI, chúng sẽ làm tăng thêm thời

gian đáp trả để load và thực thi một ứng dụng đơn giản. Có nhiều thông tin bổ sung,

có thể tham khảo tại mod_perl, PHP, và Python và Java.

Ưu điểm chỉnh của các giải pháp dựa trên kịch bản là chúng được nhúng một

bộ thông dịch và Apache, giúp remove vấn để loading ban đầu cho các kịch bản

động. Một số thậm chí còn lưu kịch bản đã được phân tích để dễ dàng thực thi nếu

có yêu cầu sau này.

Cấu hình có thể phức tạp và việc có được hệ thống chính xác có thể tốn

nhiều thời gian. Một số giải pháp cũng không làm việc tốt chẳng hạn như giải pháp

với các host ảo, sẽ cần phải thay đổi các kịch bản nào đó để lợi dụng các cải tiến về

tốc độ mà nó cung cấp.

Mặc dù vậy những cải tiến ở đây rất đáng kể, có thể giảm được 70% thời

gian thực thi đối với một kịch bản Perl bằng cách sử dụng mod_perl thay cho CGI.

Thậm chí khi có nhiều yêu cầu cần xử lý, các giải pháp này cũng cho phép giữ được

các kết nối vững chắc với cơ sở dữ liệu hoặc có thể lưu trữ các thông tin giữa các

yêu cầu. Day là một điều tuyệt vời cho các site thương mại điện tử và cũng góp

phần giảm overhead trong việc load các thông tin giữa các yêu cầu.

Như vậy, dù Apache là một ứng dụng có thể cấu hình khá phức tạp nhưng

thực sự thú vị vì các cài đặt chuẩn của nó đạt được mức hiệu suất rất cao. Một lĩnh

vực mà ở đó ta có thể dễ dàng cài thiện đáng kẻ hiệu suất bằng cách điều chỉnh các

tham số. tuy nhiên không may thay, những tham só mà ta có ít kiểm soát bên trong

Apache – Ví dụ như các thành phần động và các kịch bản CGI – lại là các tham số

có ảnh hưởng lớn nhất về mặt hiệu suất. Kiểm một máy chủ Apache điển hình, ta sẽ

thấy rằng thời gin cho ứng dụng Apache để trả lời một kết nối và gửi dữ liệu trở lại

chỉ vài ms – tuy nhiên việc đợi cho nguồn dữ liệu đó có thể mất đến vài giây. Tuy

nhiên điều này không phải là việc chúng tôi nhấn mạnh hành động tối ưu là vô

nghĩa. Trong suố quá trình làm việc thì số lượng ms sẽ ngày một tăng lên. Quan

Sinh viên thực hiện: Trần Quang Minh – 07B3 55

Page 56: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

trọng hơn nữa là ta có thể làm sạch và đơn giản hóa cấu hình Apache của mình từ

đó giúp nó giảm được các overhead quản trị hơn trong quá trình thực hiện và giúp

phần nào việc kiện toàn bảo mật cho hệ thống máy chủ dịch vụ web sử dụng

webserver là Apache.

3.4. IDS và hệ thống phát hiện xâm nhập Snort3.4.1. Tổng quát về phát hiện xâm nhập (IDS)Là một hệ thống giám sát lưu thông mạng, các hoạt động khả nghi và cảnh

báo cho hệ thống, nhà quản trị. IDS cũng có thể phân biệt giữa những tấn công bên

trong từ bên trong (từ những người trong công ty) hay tấn công từ bên ngoài (từ các

hacker). IDS phát hiện dựa trên các dấu hiệu đặc biệt về các nguy cơ đã biết (giống

như cách các phần mềm diệt virus dựa vào các dấu hiệu đặc biệt để phát hiện và diệt

virus) hay dựa trên so sánh lưu thông mạng hiện tại với baseline (thông số đo đạc

chuẩn của hệ thống) để tìm ra các dấu hiệu khác thường.

3.4.2. Chức năng của IDSHệ thống phát hiện xâm nhập cho phép các tổ chức bảo vệ hệ thống của họ

khỏi những đe dọa với việc gia tăng kết nối mạng và sự tin cậy của hệ thống thông

tin. Những đe dọa đối với an ninh mạng ngày càng trở nên cấp thiết đã đặt ra câu

hỏi cho các nhà an ninh mạng chuyên nghiệp có nên sử dụng hệ thống phát hiện

xâm nhập trừ khi những đặc tính của hệ thống phát hiện xâm nhập là hữu ích cho

họ, bổ sung những điểm yếu của hệ thống khác…IDS có được chấp nhận là một

thành phần thêm vào cho mọi hệ thống an toàn hay không vẫn là một câu hỏi của

nhiều nhà quản trị hệ thống. Có nhiều tài liệu giới thiệu về những chức năng mà

IDS đã làm được những có thể đưa ra vài lý do tại sao nên sử dụng hệ thống IDS:

Bảo vệ tính toàn vẹn (integrity) của dữ liệu, bảo đảm sự nhất quán của dữ

liệu trong hệ thống. Các biện pháp đưa ra ngăn chặn được việc thay đổi

bất hợp pháp hoặc phá hoại dữ liệu.

Sinh viên thực hiện: Trần Quang Minh – 07B3 56

Page 57: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Bảo vệ tính bí mật, giữ cho thông tin không bị lộ ra ngoài. Bảo vệ tính

khả dụng, tức là hệ thống luôn sẵn sàng thực hiện yêu cầu truy nhập

thông tin của người dùng hợp pháp.

Bảo vệ tính riêng tư, tức là đảm bảo cho người sử dụng khai thác tài

nguyên của hệ thống theo đúng chức năng, nhiệm vụ đã được phân cấp,

ngăn chặn được sự truy nhập thông tin bất hợp pháp.

Cung cấp thông tin về sự xâm nhập, đưa ra những chính sách đối phó,

khôi phục, sửa chữa…

Nói tóm lại ta có thể tóm tắt IDS như sau:

Chức năng quan trọng nhất là: giám sát - cảnh báo - bảo vệ

Giám sát: lưu lượng mạng và các hoạt động khả nghi.

Cảnh báo: báo cáo về tình trạng mạng cho hệ thống và nhà quản trị.

Bảo vệ: Dùng những thiết lập mặc định và sự cấu hình từ nhà quản trị mà

có những hành động thiết thực chống lại kẻ xâm nhập và phá hoại.

Chức năng mở rộng: Phân biệt: "thù trong giặc ngoài" tấn công bên trong và

tấn công bên ngoài. Phát hiện: những dấu hiệu bất thường dựa trên những gì đã biết

hoặc nhờ vào sự so sánh thông lượng mạng hiện tại với baseline.

Hình 3.16.Hình minh họa hệ thống bảo vệ IDS

Sinh viên thực hiện: Trần Quang Minh – 07B3

Thông tin sự kiện

Thiết lập sự kiện

Hệ thống phân tích

Hệ thống đáp trả

Chính sách thu thập thông tin

Hệ thống thông tin

Chính sách phát hiện

Chính sách phản ứng

Thu thập thông tin Phát hiện Phản ứng

57

Protected System

Page 58: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

3.4.3. Kiến trúc hệ thống IDSKiến trúc của hệ thống IDS bao gồm các thành phần chính: thành phần thu

thập gói tin (information collection), thành phần phân tích gói tin (Dectection),

thành phần phản hồi (respontion) nếu gói tin đó được phát hiện là một tấn công của

tin tặc. Trong ba thành phần này thì thành phần phân tích gói tin là quan trọng nhất

và ở thành phần này bộ cảm biến đóng vai trò quyết định của hệ thống phát hiện

xâm nhập là như thế nào.

Hình 3.17. Kiến trúc của hệ thống IDS

Bộ cảm biến được tích hợp với thành phần sưu tập dữ liệu một bộ tạo sự

kiện. Cách sưu tập này được xác định bởi chính sách tạo sự kiện để định nghĩa chế

độ lọc thông tin sự kiện. Bộ tạo sự kiện (hệ điều hành, mạng, ứng dụng) cung cấp

một số chính sách thích hợp cho các sự kiện, có thể là một bản ghi các sự kiện của

hệ thống hoặc các gói mạng. Số chinh sách này cùng với thông tin chính sách có thể

được lưu trong hệ thống được bảo vệ hoặc bên ngoài. Trong trường hợp nào đó, ví

dụ khi luồng dữ liệu sự kiện được truyền tải trực tiếp đến bộ phân tích mà không có

sự lưu dữ liệu nào được thực hiện. Điều này cũng liên quan một chút nào đó đến các

gói mạng.

Sinh viên thực hiện: Trần Quang Minh – 07B3 58

Page 59: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Hình 3.18. Hệ thống bảo vệ của IDS

Vai trò của bộ cảm biến là dùng để lọc thông tin và loại bỏ dữ liệu không

tương thích đạt được từ các sự kiện liên quan với hệ thống bảo vệ, vì vậy có thể

phát hiện được các hành động nghi ngờ. Bộ phận tích hợp sử dụng cơ sở dữ liệu

chính sách phát hiện cho mục này. Ngoài ra còn có các thành phần: dấu hiệu tấn

công, profile hành vi thông thường, các tham số cần thiết (ví dụ: các ngưỡng). Thêm

vào đó, cơ sở dữ liệu giữ các tham số cấu hình, gồm có các chế độ truyền thông với

module đáp trả. Bộ cảm biến cũng có cơ sở dữ liệu của riêng nó, gồm dữ liệu lưu vê

các xâm phạm phức tạp tiềm ẩn (tạo ra từ nhiều hành động khác nhau).

IDS có thể được sắp đặt tập trung (ví dụ như được tích hợp vào trong tường

lửa) hoặc phân tán. Một IDS phân tán gồm nhiều IDS khác nhau trên một mạng lớn,

tát cả chúng truyền thông với nhau. Nhiều hệ thống tinh vi đi theo nguyên lý cấu

trúc một tác nhân, nơi các module nhỏ được tổ chức trên một host trong mạng được

bảo vệ. Vai trò của tác nhân là để kiểm tra và lọc tất cả các hành động bên trong

vùng được bảo vệ và phụ thuộc vào phương pháp được đưa a tạo phân tích bước

đầu và thậm chí đảm trách cả hành động đáp trả. Mạng các tác nhân hợp tác hợp tác

báo cáo đến máy chủ phân tích trung tâm là một trong những thành phần quan trọng

của IDS. DIDS có thể sử dụng nhiều công cụ phân tích tinh vi hơn, đặc biệt được

trang bị sự phát hiện các tấn công phân tán. Các vai trò khác của tác nhân liên quan

đến khả năng lưu động và tính roaming của nó trong các vị trí vật lý. Thêm vào đó,

Sinh viên thực hiện: Trần Quang Minh – 07B3 59

Page 60: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

các tác nhân có thể đặc biệt dành cho việc phải hiện dấu hiệu tấn công đã biết nào

đó. Đây là một hệ số quyết định khi nói đến nghĩa vụ bảo vệ liên quan đến các kiểu

tấn công mới. Giải pháp kiến trúc đa tác nhân được đưa ra năm 1994 là AAFID (các

tác nhân tự trị cho việc phát hiện xâm phạm). Nó sử dụng các tác nhân dể kiểm tra

một khía cạnh nào đó về các hành vi hệ thống ở một thời điểm nào đó. Ví dụ một

tác nhân có thể cho biết một số không bình thường các telnet session bên trong hệ

thống nó kiểm tra. Tác nhân có khả năng đưa ra một cảnh báo khi phát hiện một sự

kiện khả nghi. Những tác nhân nào thay đổi bên trong hệ thống. Một phần trong các

tác nhân, hệ thống có thể có các bộ phần thu phát để kiểm trả tất cả các hành động

được kiểm soát bời các tác nhân ở một host cụ thể nào đó. Các bộ thu nhận luôn

luôn gửi các kết quả hoạt động của chúng đến bộ kiểm tra duy nhất. Các bộ kiểm tra

nhận thông tin từ các mạng, điều đó có nghĩa là chúng có thể tương quan với thông

tin phân tán. Thêm vào đó một số bộ lọc có thể được đưa ra để chọn lọc và thu nhập

dữ liệu.

Hình 3.19. Hình minh họa bộ cảm biến

Ngoài ra còn có một số điểm chú ý sau:

Kiến trúc, vị trí đặt hệ thống IDS: tùy thuộc vào quy mô tổ chức của đơn

vị cũng như mục đích sử dụng hệ thống IDS của đơn vị, tổ chức.

Sinh viên thực hiện: Trần Quang Minh – 07B3 60

Page 61: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Chiến lược điều khiển: là sự mô tả rõ ràng của mỗi hệ thống IDS về việc

kiểm soát, kiểm tra thông tin đàu vào đầu ra.

Chiến lược tập trung: là việc điều khiển trực tiếp các thác tác như kiểm

tra, phát hiện, phân tích, đáp trả, báo cáo từ vị trí trung tâm.

Phân thành nhiều thành phần: Phát hiện, kiểm tra từ các vị trí thành phần

rồi về báo cáo với vị trí trung tâm.

Phân phối: Mỗi vùng sẽ có những trung tâm đại diện cho trung tâm chính

trực tiếp điều khiển các thao tác giám sát, kiểm tra báo cáo.

3.4.4. Phân loại IDSCó hai phương pháp khác nhau trong việc phân tích các sự kiện để phát hiện

các vụ tấn công: phát hiện dựa trên các dấu hiệu và phát hiện sự bất thường. Các sản

phầm IDS có thể sử dụng một trong hai cách hoặc sử dụng kết hợp cả hai.

Phát hiện sự bất thường: công cụ này thiết lập một hiện trạng các hoạt động

bình thường và sau đó duy trì mọt hiện trạng hiện hành cho một hệ thống. Khi hai

yếu tổ này xuất hiện sự khác biệt, nghĩa là đã có sự xâm nhập.

Các hệ thống IDS khác nhau đến dựa vào phát hiện các xâm nhập trái phép

và những hành động dị thường. Quá trình phát hiện có thể được mô tả bởi ba yếu tổ

cơ bản nền tảng sau:

Thu nhập thông tin (information source): Kiểm tra tất cả các gói tin trên

mạng,

Sự phân tích (Analysis): Phân tích tất cả các gói tin đã thu thập để cho

biết hành động nào là tấn công.

Cảnh báo (Response): hành động cảnh báo cho sư tấn công được phân

tích ở trên.

3.4.4.1. Network Base IDS (NIDS)

Hệ thống IDS dựa trên mạng sử dụng bộ dò và bộ cảm biến cài đặt trên toàn

mạng. Những bộ dò này theo dõi trên mạng nhằm tìm kiếm những lưu lượng trùng

và những mô tả sơ lược được định nghĩa hay là những dấu hiệu. Những bộ cảm biến

thu nhận và phân tích lưu lượng trong thời gian thực. Khi ghi nhận được một mẫu

Sinh viên thực hiện: Trần Quang Minh – 07B3 61

Page 62: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

lưu lượng hay dấu hiệu, bộ cảm biến gửi tín hiệu cảnh báo đến trạm quản trị và có

thể được cấu hình nhằm tìm ra biện pháp ngăn chặn những xâm nhập xa hơn. NIPS

là tập nhiều sensor được đặt ở toàn mạng để theo dõi những gói tin trong mạng so

sánh với mẫu đã được định nghĩa để phát hiện đó là tấn công hay không?

Hinh 3.20. Hệ thống Network Base IDS

Được đặt giữa kết nối hệ thống mang bên trong và mạng bên ngoài để giảm

sát toàn bộ lưu lượng vào ra. Có thể là một thiết bị phần cứng riêng biệt được thiết

lập sẵn hay phần mềm cài đặt trên máy tính. Chủ yếu dùng để đo lưu lượng mạng

được sử dụng. Tuy nhiên có thể xảy ra hiện tượng nghẽn cố chai khi lưu lượng

mạng hoạt động ở mức cao.

Lợi thế của Network-Based IDSs:

Quản lý được cả một network segment (gồm nhiều host)

“Trong suốt” với người sử dụng lẫn kẻ tấn công.

Cài đặt và bảo trì đơn giản, không ảnh hưởng tới mạng.

Tránh DOS ảnh hưởng tới một host nào đó.

Có khả năng xác định lỗi ở tầng Network (trong mô hình OSI).

Đối lập với OS.

Hạn chế của Network-Based IDSs:

Có thể xảy ra trường hợp báo động giả (false positive), tức không có

intrusion mà NIDS báo là có intrusion.

Không thể phần tích các traffic đã được encrypt (vd: SSL, SSH, IPSec…)

Sinh viên thực hiện: Trần Quang Minh – 07B3 62

Page 63: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

NIDS đòi hỏi phải được cập nhật các signature mới nhất để thực sự an

toàn.

Có độ trễ giữa thời điểm bị attack với thời điểm phát báo động. Khi báo

động được phát ra, hệ thống có thể đã bị tổn hại

Không cho biết việc attack có thành công hay không.

Một trong những hạn chế là giới hạn băng thông. Những bộ dò mạng phải

nhận tất cả các lưu lượng mạng, sắp xếp lại những lưu lượng đó cũng như phân tích

chúng. Khi tốc độ mạng tăng lên thì khả năng của đầu đó cũng vậy. Một giải pháp

là bảo đảm cho mạng được thiết kế chính xác để cho phép sự sắp đặt của nhiều đầu

dò. Khi mà mạng phát triển, thì càng nhiều đầu do được lắp thêm vào để bảo đảm

truyền thông và bảo mật tốt nhất.

Một cách mà các hacker cố gắng che đậy cho hoạt động của họ khi gặp hệ

thống IDS dựa trên mạng là phân mảnh những gói thông tin của họ. Một giao thức

có một kích cỡ gói dữ liệu giới hạn, nếu dữ liệu truyền qua mạng lớn hơn kích cỡ

này thì gói dữ liệu đó sẽ được phân mảnh. Phân mảnh đơn giản chỉ là quá trình chia

nhỏ dứ liệu ra những mẫu nhỏ. Thứ tự của việc sắp xếp lại có thể tùy ý miễn là

không xuất hiện hiện tượng chồng chéo. Nếu có hiện tượng phân mảnh chồng chéo,

bộ cảm biến phải biết quá trình tái hợp lại cho đúng. Nhiều hacker cố gắng ngăn

chặn phát hiện bằng cahcs gọi nhieuf gói dữ liệu phân mảnh chồng chéo. Một bộ

cảm biến sẽ không phát hiện các hoạt động xâm nhập nếu bộ cảm biến không thể

sắp xếp lại những gói thông tin một cách chính xác.

3.4.4.2. Host Based IDS (HIDS)

Bằng cách cài đặt một phần mềm trên tất cả các máy chủ, IPS dựa trên máy

chủ quan sát tất cả những hoạt động hệ thóng như các file log và những lưu lượng

mạng thu thập được. Hệ thống dựa trên máy chủ cũng theo dõi OS, những cuộc gọi

hệ thống, lich sử log và những thông điệp báo lỗi trên hệ thống máy chủ. Trong khi

những đầu dò của mạng có thể phát hiện một cuộc tấn công, thì chỉ có hệ thống dựa

trên máy chủ mới có thể xác định xem cuộc gọi tấn công có thành công hay không?

Thêm nữa là, hệ thốn dựa trên máy chủ có thể ghi nhận những việc mà người tấn

Sinh viên thực hiện: Trần Quang Minh – 07B3 63

Page 64: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

công đã làm trên máy chủ bị tấn công (compromised host). Không phải tất cả các

cuộc tấn công được thực hiện qua mạng. Bằng cách giành quyền truy cập ở mức vật

lý (physical access) vào một hệ thống máy tính, kẻ xâm nhập có thể tấn công một hệ

thống hay dữ liệu mà không cần phải tạo ra bất cứu lưu lượng mạng (network

traffic) nào cả. Hệ thóng dựa trên máy chủ có thể phát hiện các cuộc tấn công mà

không đi qua đường công cộng nào hay mạng được theo dõi, hay thực hiện từ cổng

điều khiển (console), nhưng với một số hacker có kinh nghiệm xâm nhập có hiểu

biết, có kiến thức về hệ IDS thì hacker có thể nhanh chóng tắt tất cả các phần mềm

phát hiện khi đã có quyền truy cập vật lý.

Hình 3.21.Hệ thống HIDS

Một ưu điểm khác của IDS dựa trên máy chủ là nó có thể ngăn chặn các kiểu

tấn công dùng sự phân mảnh hoặc TTL. Vì một host phải nhận và tái hợp các phân

mảnh khi xử lý lưu lượng nên IDS dựa trên host có thể giám sát chuyện này. HIDS

thường được cài đặt trên một máy tính nhất định. Thay vì giám sát hoạt động của

một network segment, HIDS chỉ giảm sát các hoạt động trên một máy tính. HIDS

thường được đặt trên các host xung yếu của tổ chức và các server trong vùng DMZ

– thường là mục tiêu bị tấn công đầu tiên. Nhiệm vụ chính của HIDS là giám sát các

thay đổi trên hệ thống, bao gồm (not all).

Các tiến trình

Các entry của Registry.

Mức độ sử dụng CPU.

Kiểm tra tính toàn vẹn và truy cập trên hệ thống file.

Một vài thông số khác.

Sinh viên thực hiện: Trần Quang Minh – 07B3 64

Page 65: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Các thông số thay đổi này khi vượt qua một ngưỡng định trước hoặc những

thay đổi khả nghi trên hệ thống file sẽ gây ra báo động.

Lợi thế của HIDS:

Có khả năng xác định user liên quan tới một event.

HIDS có khả năng phát hiện các cuộc tấn công diễn ra trên máy NIDS

không có khả năng này.

Có thể phân tích các dữ liệu mã hóa.

Cung cấp các thông tin về host trong lúc cuộc tấn công diễ ra trên host

này.

Hạn chế của HIDS:

Thông tin từ HIDS là không đáng tin cậy ngay khi host này bị tấn công.

Khi OS bị “hạ” do tấn công công, đồng thời HIDS cũng bị “hạ”.

HIDS phải được thiết lập trên từng host cần giám sát.

HIDS không có khả năng phát hiện các cuộc dò quét mạng (Nmap, Netcat…)

HIDS cần tài nguyên trên host để hoạt động.

HIDS có thể không hiệu quả khi bị DOS.

Đa số chạy trên hệ điều hành Window. Tuy nhiên cũng đã có một số chạy

trên UNIX và những hệ điều hành khác.

Vì hệ thống IDS dựa trên máy chủ đòi hỏi phần mềm IDS phải được cài đặt

trên tất cả các máy chủ nên đây có thể là cơn ác mộng của những nhà quản trị khi

nâng cấp phiên bản, bảo trì phần mềm, và cấu hình phần mềm trở thành công việc

tốn nhiều thời gian và là những việc làm phức tạp. Bởi vì hệ thống dựa trên máy

chủ chỉ phân tích những lưu lượng được máy chủ nhận được, chúng không thể phát

hiện những tấn công thăm dò thông thường được thực hiện nhằm chống lại một máy

chủ hay là một nhóm máy chủ. Hệ thống IDS dựa trên máy chủ sẽ hông phát hiện

được những chức năng quét ping hay dò cổng (ping sweep and port scans) trên

nhiều máy chủ. Nếu máy chủ bị điều khiển thì kẻ xâm nhập hoàn toàn có thể tắt

phần mềm IDS hay tắt kết nối của máy chủ đó. Một khi điều này xảy ra thì các máy

chủ sẽ không tạo ra được cảnh báo nào. Phần mềm IDS phải được cài đặt trên mỗi

Sinh viên thực hiện: Trần Quang Minh – 07B3 65

Page 66: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

hệ thọng mạng nhằm cung cấp đầy đủ khả năng cảnh báo của mạng. Đây là một vấn

để rất khó khăn khi mà phần mềm IDS phải tương ứng nhiều hệ điều hành khác

nhau. Do đó trước khi chọn một hệ thống IDS, chúng ta phải chắc chắn là phù hợp

và chạy được trên tát cả các hệ điều hành.

3.4.5. Công cụ hỗ trợ của IDS

Có một số công cụ hỗ trợ cho hệ thống xâm nhập IDS, trong phần này chúng

ta sẽ đề cập bốn công cụ hỗ trợ:

Hệ thống phân tích tổn thương.

Bộ kiểm tra toàn vẹn dữ liệu.

Honey pots,

Padded call.

Những thành phần này có thể tăng cường, hỗ trợ, tổ chức như thế nào với hệ

thống phát hiện xâm nhập IDS sẽ được làm rõ ở những mục dưới đây.

Hệ thống phân tích đánh giá tổn thương:

Sự phân tích đánh giá tổn thương (sự định giá cũng được biết như tính dễ bị

tổn thương) là công cụ kiểm tra xác dịnh liệu có phải một mạng hay host . Sự đánh

giá tổn thương đại diện môi trường đặc biệt của quá trình phát hiện xâm nhập.

Nhưng thông tin bao gồm tính trạng hệ thóng và hậu quả của những tấn công được

phân tích và đánh giá. Những thông tin này được tổng hợp phân tích lại tại bộ cảm

biến. Sự phân tích đánh giá tổn thương là một kỹ thuật quản lý an toàn rất mạnh và

là sự bổ sung thích hợp tới việc sử dụng IDS, không phải chỉ như một sự thay thế.

Cần phải có một tổ chức tin cây quản lý những công cụ phân tích đánh giá tổn

thương để theo dõi những hệ thống này.

3.4.5.1. Quá trình phân tích đánh giá tổn thương

Quá trình phân tích đánh giá tổn thương bao gồm những bước sau:

Lấy một mẫu bao gồm tập hợp các thuộc tính của hệ thống.

Kết quá của việc lấy mốc được cất vào mọt chỗ an toàn.

Sinh viên thực hiện: Trần Quang Minh – 07B3 66

Page 67: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Kết quả này được so sánh với ít nhất một mẫu trước đó hoặc một mẫu lý

tưởng trước đó.

Bất kỳ sự khác nhau giữa hai tập hợp được tổng hợp và báo cáo.

3.4.5.2. Các kiểu phân tích đánh giá tổn thương

Có hai kiểu phân tích đánh giá tổn thương dành cho Netword-based và host-

based:

Host-based: Phân tích đánh giá tổn thương chính là việc đánh giá dữ liệ

của hệ thống như dữ liệu, việc cấu hình, trạng thái của những thông tin

khác.

Network-based: Sự phân tích đánh giá tổn thương yêu cầu một kết nối từ

xa tói hệ thống đich. Công việc đánh giá bao gồm ghi chú lại sự phản hồi

của hệ thống hay đơn giản là thăm dò xem xét để biết những điểm yếu

của hệ thống.

3.4.5.3. Kiểm tra toàn vẹn dữ liệu

Những bộ kiểm tra toàn vẹn dữ liệu là những công cụ an toàn mà bổ sung

IDSs. Chúng tóm lược thông báo hay kiểm tra giải mã cho những dữ liệu những đối

tượng phê bình, so sánh nó với giá trị tham khảo và việc đặt những dấu hiệu cho sự

khác nhau hay thay đổi. Việc kiểm tra giải mã sẽ giúp biết nội dung của dữ liệu có

bị thay đổi bởi tin tặc hay không. Việc thay đổi nội dung có nhiều kỹ thuật nhưng

mục đích của tin tặc là gắn những thành phần vào nội dung dể làm cầu nối trao đổi

thông tin giữa hệ thống và máy của tin tặc hoặc là với mục đích phá hoại.

3.4.5.4. Honey Pot và Padded Cell System

Honey pot là hệ thống những cạm bẫy được thiết kế để bẫy những tin tặc tấn

công. Honey pot được thiết kế bao gồm những mục đích sau:

Làm lệch hướng tin tặc ra khỏi hệ thống cần bảo vệ.

Tập hợp thông tin về tin tặc và hành động của tin tặc.

Lôi kéo tin tặc ở trên hệ thống dài hơn để đủ thời gian cho người phản hồi

lại.

Sinh viên thực hiện: Trần Quang Minh – 07B3 67

Page 68: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Padded Cell: Khác với honey pot là hướng tin tặc theo kế hoạch của mình thì

padded cell được thiết kế để theo dõi hành động thay đỏi dữ liệu của tin tặc đánh

dấu sự thay đổi để biết mục đích của tin tặc.

3.4.6. Các kỹ thuật xử lý dữ liệu được sử dụng trong các hệ thống phát hiện

xâm nhập

Phụ thuộc vào kiểu phương pháp được sử dụng để phát hiện xâm nhập, các

cơ chế xử lý khác nhau (kỹ thuật) cũng được sử dụng cho dữ liệu đối với một IDS.

Dưới đây là một số hệ thống được mô tả vắn tắt.

3.4.6.1. Hệ thống Expert (Expert System)

Hệ thống này làm việc trên một tập các nguyên tắc đã được định nghĩa từ

trước để miêu tả các tấn công. Tất cả các sự kiện có liên quan đến bảo mật đều đực

kết hợp vào cuôc kiểm định và được dịch dưới dạng nguyên tắc if-then-else. Lấy ví

dụ Wisdom & Sense và ComputerWatch (được phát triển tại AT&T).

Phát hiện xâm nhập dựa trên luật (Rule Based Intrusion Delection)

Giống như phương pháp hệ thống Expert, phương pháp này dựa trên những

hiểu biết về tấn công. Chúng biến đỏi sự mô tả của mỗi tấn công thành định dạng

kiểm định thích hợp. Như vậy, dấu hiệu tấn công có thể tìm kiếm đã lấy được trong

cuộc kiểm định. Phương pháp này sử dụng các từ tương đương trừu tượng của dữ

liệu kiểm định. Sự phát hiện được thực hiện bằng cách sử dụng chuỗi văn bản

chung hợp với các cơ chế. Điển hình, nó là một kỹ thuât rất mạnh và thường được

sử dụng trong hệ thống thương mại (Ví dụ như: Cisco Secure IDS, Toierald eXpert-

BSM (Solaris)).

Phân biệt ý định người dùng (User Intention Identification)

Kỹ thuật này mô hình hóa các hành vi thông thường của người dùng một tập

nhiệm vụ mức cao mà họ có thể thực hiện được trên hệ thống (liên quan đến chức

năng người dùng). Các nhiệm vụ đó thường cần đến một số hoạt động được điều

chỉnh sao cho hợp với dữ liệu kiểm định thích hợp. Bộ phân tích giữ một tập hợp

nhiệm vụ có thể chấp nhận cho mỗi người dùng. Bất cứ khi nà một sự không hợp lệ

được phát hiện thì một cảnh báo sẽ được sinh ra.

Sinh viên thực hiện: Trần Quang Minh – 07B3 68

Page 69: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Phân biệt ý định người dùng (User intention identification)

Một tấn công được miêu tả bằng một tập các mục tiêu và phiên cần được

thực hiện bởi một kẻ xâm nhập để gây tổn hai hệ thống. Các phiên được trình bày

trong sơ đồ trạng thái phiên. Nếu phát hienj được một tập phiên vi phạm sẽ tiến

hành cảnh báo hay đáp trả theo các hành động đã được định trước.

Phương pháp Colored Petri Nets

Phương pháp này thường được sử dụng để tổng quát hóa các tấn công từ

những hiểu biết cơ bản và để thể hiện các tấn công theo đồ họa. Hệ thống IDIOT

của đại học Purdue sử dụng Colored Petri Nets. Với kỹ thuật này, các quản trị viên

sẽ dễ dàng hơn trong việc bổ sung thêm dấu hiệu mới. Mặc dù vậy, việc tổng quát

hóa một dấu hiệu phức tạp vói dữ liệu kiểm định là một vấn đề gây tốn nhiều thời

gian. Kỹ thuật này không được sử dụng trong các hệ thống thương mại.

Phương pháp phân tích thống kê (Statiscal analysis approach)

Phương pháp phân tích thống kê (Statistical analysis approach)

Hành vi người dùng hay hệ thống (tập các thuộc tính) được tính theo một số

biến thời gian. Ví dụ, các biến như là: đăng nhập người dùng, đăng xuất, số tập tin

truy nhập trong một khoảng thời gian, hiệu suất sử dụng không gian đĩa, bộ nhớ,

CPU … Chu kỳ nâng cấp có thể thay đổi từ vài phút đến một tháng. Hệ thống lưu

giá trị có nghĩa cho mỗi biến được sử dụng để phát hiện sự vượt quá ngưỡng được

định nghĩa từ trước. Ngay cả phương pháp đơn giản này cũng không thể hợp được

với mô hình hành vi người dùng điển hình. Các phương pháp dựa vào việc làm

tương quan thông tin về người dùng riêng lẻ với các biểu nhóm đã được gộp lại

cũng ít có hiệu quả.

Vì vậy, một mô hình tinh vi hơn về hành vi người dùng đã được phát triển

bằng cách sử dụng thông tin người dùng ngắn hạn hoặc dài hạn. Các thông tin này

thường xuyên được nâng cấp để bắt kịp với thay đổi trong hành vi người dùng. Các

phương pháp thống kê thường được sử dụng trong việc bổ sung trong IDS dựa trên

thông tin hành vi người dùng thông thường.

Sinh viên thực hiện: Trần Quang Minh – 07B3 69

Page 70: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Neural Networks

Phương pháp này sử dụng các thuật toán đang được nghiên cứu về mối quan

hệ giữa các vector đầu vào – đầu ra và tổng quát hóa chúng để rút ra mối quan hệ

vào/ ra mới. Phương pháp neural network được sử dụng cho phát hiện xâm nhập,

mục đích chính là để nghiên cứu hành vi của người tham gia của mạng (người dùng

hay kẻ xâm phạm). Thực ra các phương pháp thống kê cũng một phần được coi như

neural networks. Sử dụng mạng neural trên thống kê hiện có hoặc tập trung đơn

giản để biểu diễn mối quan hệ khong tuyến tính giữa các biến và trong việc nghiên

cứu các mối quan hệ một cách tự động. Các thực nghiệm đã được tiến hành với sự

dự đoán mạng neural về hành vi người dùng. TỪ những kết quả cho thấy rằng các

hành vi của siêu người dùng UNIX (root) là có thể dự đoán. Với một số ít ngoại lệ,

hành vi của hầu hết người dùng khác cũng có thể dự đoán. Neural networks vẫn là

một kỹ thuật tính toán mạnh và không được sử dụng rộng rãi trong cộng đồng phát

hiện xâm nhập.

Computer immunology Analogies

Với sự nghiên cứu miễn dịch được chủ định để phát triển các kỹ thuật đã

được xây dựng từ mô hình hành vi thông thường trong các dịch vụ mạng UNIX hơn

là người dùng riêng lẻ. Mô hình này gồm có các chuỗi ngắn cuộc gọi hệ thống được

tạo thành bởi các quá trình. Các tấn công khai thác lỗ hổng trong mã ứng dụng rất

có khả năng gây ra đường dẫn thực thi không bình thường. Đầu tiên, một tập dữ liệu

kiểm định tham chiếu được sưu tập để trình bày hành vi hợp lệ của các dịch vụ, sau

đó kiến thức cơ bản được bổ sung thêm với tất cả các chuỗi được biết rõ về cuộc gọi

hệ thống. Các mẫu đó sau dó được sử dụng cho việc kiểm tra liên tục các cuộc gọi

hệ thống, để xem chuỗi được tạo ra đã được liệt kê trong cơ sở kiến thức chưa nếu

không, một cảnh báo sẽ được tạo ra. Kỹ thuật này có tỉ lệ cảnh báo sai rất thấp. Trở

ngại của nó là sự bất lực trong việc phát hiện lỗi trong cấu hình dịch vụ mạng.

Machine learning (nghiên cứu cơ chế)

Đây là một kỹ thuật thông minh nhân tạo. Nó lưu luồng lệnh đầu ra người

dùng vào các biểu mẫu vector và sử dụng một tham chiếu của profile hành vi người

Sinh viên thực hiện: Trần Quang Minh – 07B3 70

Page 71: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

dùng thông thường. Các profile sau đó được nhóm vào trong một thư viện lệnh

người dùng có các thành phần chung nào dó. Việc tối thiểu hóa dữ liệu thường phải

dùng đến một số kỹ thuật sử dụng quá trinh trích dữ liệu chưa biết nhưng có khả

năng hữu dụng trước đó từ những vị trí dữ liệu được lưu trữ với số lượng lớn.

Phương pháp tối thiểu dữ liệu này vượt trội hơn đối với việc xử lý bàn ghi hệ thống

lớn (dữ liệu kiểm định). Mặc dù vậy, chúng kém hữu dụng đối với viêc phân tích

luồng lưu lượng mạng. Một trong những kỹ thuật tối thiểu hóa dữ liệu cơ bản được

sử dụng trong phát hiện xâm nhập được kết hợp với các cây phán quyết. Các mô

hình cây phán quyết cho phép ai đó có thể phát hiện các sự bất thường trong một cơ

sở dữ liệu lớn. Kỹ thuật khác phải dùng đến các đoạn, cho phép trích dẫn mẫu của

các tấn công chưa biết. Điều đó được thực hiện bằng việc hợp lệ hóa các mẫu đã

được trích từ tập kiểm định đơn giản với các mẫu khác được cung cấp cho tấn công

chưa biết đã cất giữ. Một kỹ thuật tối thiểu hóa dữ liệu điển hình được kết hợp với

việc tìm hiểu các nguyên tắc kết hợp. Nó cho phép ai đó có thể trích kiến thức chưa

hiểu trước đó về các tấn công mới hoặc đã xây dựn trên mẫu hành vi thông thường.

Sự phát hiện bất thường gây ra các cành báo sai. Với việc tối thiểu hóa dữ liệu, nó

dễ dàng tương quan dữ liệu đã liên quan đến các cảnh báo với dữ liệu kiểm định tối

thiểu, do đó giảm đáng kể xác suất báo sai.

3.4.7. Phân loại các dấu hiệu trong hệ thống IDS3.4.7.1. Phân hiện dấu hiệu không bình thường

Hệ thống phát hiện xâm nhập phải có khả năng phân biệt giữa các hoạt động

thông thường của người dùng với hoạt động bất thường để tìm ra được các tấn công

nguy hiểm kịp thời. Mặc dù vậy, việc dịch các hành vi người dùng (hoặc session hệ

thống người dùng hoàn chỉnh) trong một quyết định liên quan đến bảo mật phù hợp

thường không đơn giản – nhiều hành vi không được dự định trước và không rõ

ràng. Để phân loại các hoạt động, IDS phải lợi dụng phương pháp phát hiện dị

thường, dôi khi là hành vi cơ bản hoặc các dấu hiệu tấn công… một thiết bị mô tả

hành vi bất thường đã biết (phát hiện dáu hiệu) cũng được gọi là kiến thức cơ bản.

Sinh viên thực hiện: Trần Quang Minh – 07B3 71

Page 72: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

3.4.7.2. Các mẫu hành vi thông thường – phát hiện bất thường

Các mẫu hành vi thông thường rất hữu ích trong việc dự đoán người dùng và

hành vi hệ thống. Do đó các bộ phát hiện bất thường xây dựng profile thể hiện việc

sử dụng thông thường và sau đó sử dụng dữ liệu hành vi thông thường để phát hiện

sự không hợp lệ giữa các profile và nhận ra tấn công có thể.

Để hợp lý với các profile sự kiện, hệ thống bị yêu cầu phải tạo ra profile

người dùng ban đầu để “đào tạo” hệ thống quan tâm đến sự hợp pháp hóa hành vi

người dùng. Có một vấn đề liên quan đến việc làm profile ở đây đó là: khi hệ thống

được phép “học” trên chính nó, thì những kẻ xâm nhập cũng có thể đào tạo hệ thống

ở điểm này, nơi mà các hành vi xâm phạm trước trở thành hành vi thông thường.

Một profile không tương thích sẽ có thể được phát hiện tất cả các hoạt động xâm

nhập có thể. Ngoài ra, còn có một sự cần thiết nữa đó là nâng cấp profile và “đào

tạo” hệ thống, một nhiệm vụ khó khăn và tốn thời gian.

Cho một tập các profile hành vi thông thường, mọi thứ không hợp với profile

được lưu sẽ được coi như là một hoạt động nghi ngờ. Do đó, các hệ thống này được

đặc trưng bởi hiệu quả phát hiện rất cao (chúng có thể nhận ra nhiều tấn công mặc

dù tấn công đó là mới có trong hệ thống), tuy nhiên chúng lại có hiện tượng là tạo

các cảnh báo sai về một số vấn đề.

Ưu điểm của phương pháp phát hiện bất thường này là: có khả năng phát

hiện các tấn công mới khi có sự xâm nhập; các vấn đề không bình thường được

nhận ra không cần nguyên nhân bên trong của chúng và các tính cách; ít phụ thuộc

vào IDS đối với môi trường hoạt động (khi so sánh với các hệ thống dựa vào dấu

hiệu); khả năng phát hiện sự lạm dụng quyền của người dùng.

Nhược điểm lớn nhất của phương pháp này là: Xác suất cảnh báo sai nhiều.

Hiệu suất hệ thống không được kiểm tra trong suốt quá trình xây dựng profile và

giai đoạn đào tạo. Do đó, tất cả các hoạt động người dùng bị bỏ qua trong suốt giai

đoạn này sẽ không hợp lý. Các hành vi người dùng có thể thay đổi theo thời gian,

do đó cần phải có một sự nâng cấp liên tục đối với cơ sở dữ liệu profile hành vi

thông thường.

Sinh viên thực hiện: Trần Quang Minh – 07B3 72

Page 73: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Sự cần thiết về đào tạo hệ thống khi thay đổi hành vi sẽ làm hệ thống không

có được phát hiện bất thường trong giai đoạn đào tạo (lỗi tiêu cực).

3.4.7.3. Các dấu hiệu có hành vi xấu – phát hiện dấu hiệu

Thông tin xử lý hệ thống trong các hành vi bất thường và không an toàn (dấu

hiệu tấn công – dựa vào các hệ thống) thường được sử dụng trong các hệ thống phát

hiện xâm nhập thời gian thực (vì sự phức tạp trong tính toán của chúng không cao).

Các dấu hiệu hành vi xấu được chia thành hai loại:

Các dấu hiệu tấn công – chúng miêu tả các mẫu hoạt động có thể gây ra

mối đe dọa về bảo mật. Điển hình, chúng được thể hiện khi mối quan hệ

phụ thuộc thời gian giữa một loạt các hoạt động có thể kết hợp lại với các

hoạt động trung tính.

Các chuỗi văn bản được chọn – các dấu hiệu hợp với các chuỗi văn bản

đang tìm kiếm các hoạt động nghi ngờ.

Bất kỳ hoạt động nào không rõ ràng đều có thể bị xem xét và ngăn cản.

Do đó, độ chính xác của chúng rất cao (số báo cảnh sai thấp). Tuy nhiên

chúng không thực hiện một cách hoàn toàn và không ngăn cản hoàn toàn

các tấn công mới.

Có hai phương pháp chính đã kết hợp sự phát hiện dấu hiệu này:

Việc kiểm tra vấn đề ở các gói lớp thấp hơn – nhiều loại tấn công khai

thác lỗ hổng trong các gói IP, TCP, UDP hoặc ICMP. Với kiểm tra đơn

giản về tập các cờ trên gói đặc trưng hoàn toàn có thể phát hiện ra gói nào

hợp lệ, gói nào không. Khó khăn ở đây có thể là phải mở gói và lắp ráp

chúng lại. Tương tự, một số vấn đề khác có thể liên quan với lớp TCP/IP

của hệ thống đang được bảo vệ. Thường thì kẻ tấn công hay sử dụng cách

mở các gói để băng qua được nhiều công cụ IDS.

Kiểm tra giao thức lớp ứng dụng – nhiều loại tấn công (WinNuke) khai

thác các lỗ hổng chương trình, ví dụ dữ liệu đặc biệt đã gửi đến một kết

nối mạng đã được thành lập. Để phát hiện có hiệu quả các tấn công như

vậy, IDS phải được bổ sung nhiều giao thức lớp ứng dụng.

Sinh viên thực hiện: Trần Quang Minh – 07B3 73

Page 74: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Các phương pháp phát hiện dấu hiệu có một số ưu điểm dưới đây: tỉ lệ cảnh

báo sai thấp, thuật toán đơn giản, dễ dàng tạo cơ sở dữ liệu dấu hiệu tấn công, dễ

dàng bổ sung và tiêu phí hiệu suất tài nguyên hệ thống tối thiểu.

Một số nhược điểm:

Khó khăn trong việc nâng cấp các kiểu tấn công mới.

Chúng không thể kế thừa để phát hiện các tấn công mới và chưa biết.

Phải nâng cấp một cơ sở dữ liệu dấu hiệu tấn công tương quan với nó.

Sự quản lý và duy trì một IDS cần thiết phải kết hợp với việc phân tích và

vá các lỗ hổng bảo mật, đó là một quá trình tốn kém thời gian.

Kiến thức về tấn công lại phụ thuộc vào môi trường hoạt đông – vì vậy,

IDS dựa trên dấu hiệu những hành vi xấu phải được cấu hình tuân thủ

những nguyên tắc nghiêm ngặt của nó với hệ điều hành (phiên bản, nền

tảng, các ứng dụng được sử dụng…)

Chúng dường như khó quản lý các tấn công bên trong. Điển hình, sự lạm

dụng quyền người dùng xác thực không thể phát hiện khi có hoạt động

mã nguy hiểm (vì chúng thiếu thông tin về quyền người dùng và cấu trúc

dấu hiệu tấn công).

Các sản phẩm IDS thương mại thường sử dụng phương pháp phát hiện dấu

hiệu cho hai lý do. Trước tiên, nó dễ dàng hơn trong việc cung cấp dấu hiệu liên

quan đến tấn công đã biết và để gán tên đối với một tấn công. Thứ hai, cơ sở dữ liệu

dấu hiệu tấn công được nâng cấp thường xuyên (bằng cách thêm các dấu hiệu tấn

công mới phát hiện).

3.4.7.4. Tương quan các mẫu tham số

Phương pháp thứ ba về phát hiện xâm nhập khá khôn ngoan hơn hai phương

pháp trước. Nó được sinh ra do nhu cầu thực tế rằng, các quản trị viên kiểm tra các

hệ thống khác nhau và các thuộc tính mạng (không cần nhắm đến các vấn đề bảo

mật). Thông tin đạt được trong cách này có một môi trường cụ thể không thay đổi.

Phương pháp này liên quan đến sử dụng kinh nghiệm hoạt động hàng ngày của các

quản trị viên như các vấn đề cơ bản cho việc phát hiện dấu hiệu bất thường. Nó có

Sinh viên thực hiện: Trần Quang Minh – 07B3 74

Page 75: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

thể được xem như trường hợp đặc biệt của phương pháp Profile thông thường. Sự

khác nhau ở đây nằm ở chỗ trong thực tế, một profile là một phần hiểu biết của con

người.

Đây là một kỹ thuật mạnh, bời vì nó cho phép xâm nhập dựa trên các kiểu

tấn công không biết. Hoạt động hệ thống có thể phát hiện các thay đổi tinh vi không

rõ ràng đối với chính hoạt động đó. Nó kế thừa những nhược điểm trong thực tế là

con người chỉ hiểu một phần giới hạn thông tin tại một thời điểm, điều đó có nghĩa

là các tấn công nào đó có thể vượt qua mà không bị phát hiện.

3.4.8. Một số kiến thức cơ bản về SnortSNORT là một IDS Software, là một sản phẩm mã nguồn mở được phát triển

nhằm phát hiện những xâm nhập trái phép vào hệ thống bởi những quy tắc hay luật

đã được thiết lập sẵn, những thiết lập này dựa vào những dấu hiệu, giao thức và sự

dị thường.

Snort sử dụng các luật được lưu trữ trong các file text, có thể được chỉnh sửa

bởi người quản trị. Các luật được nhóm thành các kiểu. Các luật thuộc về mỗi loại

được lưu trong các file khác nhau. File cấu hình chính của Snort là snort.conf. Snort

đọc những luật này vào lúc khởi tạo và xây dựng cấu trúc dữ liệu để cung cấp các

luật để bắt giữ mẫu vi phạm. Tìm ra các dấu hiệu và sử dụng chúng trong các luật là

một vấn đề đòi hỏi sự tinh tế, vì càng sử dụng nhiều luật thì năng lực xử lý càng

được đòi hỏi để thu thập dữ liệu trong thực tế. Snort có một tập hợp các luật được

định nghĩa trước để phát hiện các hành động xâm nhập và các quản trị viên cũng có

thể thêm vào các luật của chính mình. Quản trị viên cũng có thể xóa một vài luật đã

được tạo trước để tránh việc báo động sai.

Snort bao gồm một hoặc nhiều sensor và một server cơ sở dữ liệu

(CSDL) chính.Các Sensor có thể được đặt trước hoặc sau firewall:

Giám sát các cuộc tấn công vào firewall và hệ thống mạng

Có khả năng ghi nhớ các cuộc vượt firewall thành công.

Sinh viên thực hiện: Trần Quang Minh – 07B3 75

Page 76: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

3.4.8.1. Các thành phần của Snort

Snort được chia thành nhiều thành phần. Những thành phần này làm việc với

nhau để phát hiên các cách tấn công cụ thể và tạo ra output theo định hướng đang

được đòi hỏi. Một IDS dựa trên Snort bao gồm các thành phần chính sau đây:

Packet Decoder

Preprocessor

Dectection Engine

Logging và Alerting System

Output Modules

Hình 3.22. Hình minh họa các thành phần của Snort

Packet Decoder (Bộ phân giải mã gói)

Bộ phận giải mã gói lấy các gói từ các giao diện mạng khác nhau và chuẩn bị

cho việc gói tin được xử lí trước hoặc được gửi cho bộ phận phát hiện

Preprocessor (Bộ phận xử lý trước)

Bộ phận xử lí trước là những thành phần được sử dụng với Snort để sắp xếp

hoặc chỉnh sửa gói dữ liệu trước khi bộ phận phát hiện làm một vài xử lý để tìm ra

gói tin có được sử dụng bởi kẻ xâm nhập hay không. Một vài bộ phận xử lý trước

Sinh viên thực hiện: Trần Quang Minh – 07B3 76

Page 77: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

cũng thực thi việc phát hiện bằng cách tìm các dấu hiệu bất thường trong header của

gói tin và tạo ra các cảnh báo. Bộ phận xử lí trước là rất quan trọng trong bất kì IDS

nào, chúng chuẩn bị cho các gói dữ liệu được phân tích dựa trên các luật trong bộ

phận phát hiện. Kẻ tấn công sử dụng nhiều kĩ thuật khác nhau để lừa IDS theo nhiều

cách. Bộ phận xử lí trước cũng được sử dụng để tái hợp các gói tin. Trên IDS, trước

khi áp dụng bất kì luật nào, phải tái hợp các gói tin lại để tìm ra các dấu hiệu. Bộ

phận xử lí trước trong Snort có thể tái hợp các gói tin, giải mã HTTP URI, ráp lại

các dòng TCP, v.v...Những chức năng này rất quan trọng trong hệ thống phát hiện

xâm nhập

Dectection Engine (Bộ phận phát hiện):

Đây là phần quan trọng nhất của Snort. Trách nhiệm của nó là phát hiện có

sự xâm nhập tồn tại trong gói tin hay không. Bộ phận phát hiện sử dụng các luật của

Snort cho mục đích này. Nếu một gói tin giống với bất kì lậut nào, một hành động

tương ứng sẽ được thực hiện. Đây là bộ phận then chốt về thời gian thực thi của

Snort. Dựa vào bộ máy mạnh như thế nào và bao nhiêu luật định nghĩa mà nó có thể

tốn những khoảng thời gian khác nhau đối với các gói tin khác nhau. Nếu lưu lượng

trên mạng là quá lớn khi Snort đang hoạt động trong chế độ NIDS, có thể mất một

vài gói tin và có thể thời gian đáp ứng không chính xác. Lưu lượng trên bộ phận

phát hiện phụ thuộc vào các yếu tố sau:

Số lượng các luật

Sức mạnh của bộ máy mà Snort đang chạy

Tốc độ của bus được sử dụng

Lưu lượng trên mạng

Bộ phận phát hiện hoạt động theo những cách khác nhau ở các phiên bản

khác nhau của Snort. Trong tất cả phiên bản 1.x của Snort, bộ phận phát hiện dừng

việc xử lí gói tin khi phù hợp với một luật. Dựa vào luật, bộ phận phát hiện sẽ có

các hành động tương ứng. Điều này có nghĩa là nếu một gói tin phù hợp với nhiều

luật, chỉ có luật đầu tiên được áp dụng mà không xem xét đến các luật còn lại. Điều

này làm nảy sinh một vấn đề. Một luật có độ ưu tiên thấp sẽ tạo ra một cảnh báo có

Sinh viên thực hiện: Trần Quang Minh – 07B3 77

Page 78: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

độ ưu tiên thấp, nếu một luật có độ ưu tiên cao bị xếp sau trong chuỗi luật. Vấn đề

này được giải quyết trong Snort phiên bản 2, khi mà tất cả các luật được so sánh

trên một gói tin trước khi tạo ra một cảnh báo. Sau khi so sánh tất cả các luật, luật

có độ ưu tiên cao nhất sẽ được chọn để tạo cảnh báo. Vì bộ phận phát hiện trong

phiên bản 2 đã được viết lại hoàn toàn nên nó nhanh hơn rất nhiều so với các phiên

bản trước đây.

Logging và Alerting System (Hệ thống ghi và cảnh báo)

Phụ thuộc vào Dectection Engine phát hiện tìm thấy trong gói tin, gói tin có

thể được sử dụng để ghi lại các hành vi hoặc tạo ra một cảnh báo. Các thông tin ghi

lại được giữ trong các file text đơn giản hoặc các dạng khác.

Output Modules (Bộ phân đầu ra)

Module đầu ra hoặc plug-in có thể hoạt động theo nhiều cách phụ thuộc vào

việc muốn lưu các output được tạo ra bằng hệ thống ghi và tạo cảnh báo như thế

nào.

3.4.8.2. Các chế độ hoạt động của Snort

Tại sao cần Snort trong khi nó có vẻ giống các phần mềm khác như tcpdump

cũng sniff packet và có thể đọc từ định dạng của libpcap. Sau đây là những lý do

chứng tỏ Snort có nhiều điểm tốt trong giải pháp sniffing và phát hiện xâm nhập:

Mô tả sâu sắc về các dòng dữ liệu

Linh hoạt hơn tcpdump về khả năng đọc và output

Có thể dễ dàng chỉnh sửa , hiển thị nhiều trường đa dạng trong các

headers

Viết các rules liên quan dễ dàng dễ hiểu và dễ chỉnh sửa

Có thể report trên các mạng wireless riêng biệt bằng cách sử dụng những

patches đặc biệt

Snort có 3 chế độ hoạt động cơ bản:

Cod

Sinh viên thực hiện: Trần Quang Minh – 07B3 78

Page 79: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Sniffer (snort -v).

Packet logger (snort -l)

Network Intrusion Detection System (snort -A hoặc snort –c <path_to_conf_file>).

Snort là một Sniffer:

Các công cụ sniffer mạng như tcpdump, ethereal, và Tethereal có đầy đủ các

đặc tính và phân tích gói tin một cách xuất sắc nó theo dõi lượng mạng trên bộ cảm

biến Snort. Trong trường hợp này, sử dụng Snort như là một sniffer là khả thi. Kết

quả xuất của chế độ Snort sniffer hơi khác so với các sniffer khác. Nó rất dễ để đọc

và có thể thấy thích khả năng bắt giữ gói tin nhanh của nó. Một đặc tính hay của chế

độ này là việc tóm tắt lưu lượng mạng khi kết thúc việc bắt giữ gói tin. Thỉnh

thoảng, nó có thể là một công cụ gỡ dối hữu dụng cho nhà quản trị. Bật chế độ

sniffer cho snort bằng cờ -v:

Code:

#snort –v

Running in packet dump mode

Log directory = /var/log/Snort

Initializing Network Interface eth0

--== Initializing Snort ==--

Initializing Output Plugins!

Decoding Ethernet on interface eth0

--== Initialization Complete ==--

-*> Snort! <*-

Version 2.1.x (Build 72)

……

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

06/24-11:19:34.482799 64.147.136.1 -> 224.0.0.10

EIGRP TTL:2 TOS:0xC0 ID:0 IpLen:20 DgmLen:60

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

Sinh viên thực hiện: Trần Quang Minh – 07B3 79

Page 80: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

……

Snort analyzed 38 out of 38 packets, dropping 0(0.000%) packets

Breakdown by protocol: Action Stats:

TCP: 1 (2.632%) ALERTS: 0

UDP: 0 (0.000%) LOGGED: 0

ICMP: 0 (0.000%) PASSED: 0

ARP: 0 (0.000%)

EAPOL: 0 (0.000%)

IPv6: 0 (0.000%)

IPX: 0 (0.000%)

OTHER: 37 (97.368%)

DISCARD: 0 (0.000%)

===============================================

Wireless Stats:

Breakdown by type:

Management Packets: 0 (0.000%)

Control Packets: 0 (0.000%)

Data Packets: 0 (0.000%)

===============================================

Fragmentation Stats:

Fragmented IP Packets: 0 (0.000%)

Fragment Trackers: 0

Rebuilt IP Packets: 0

Frag elements used: 0

Discarded(incomplete): 0

Discarded(timeout): 0

Frag2 memory faults: 0

===============================================

TCP Stream Reassembly Stats:

Sinh viên thực hiện: Trần Quang Minh – 07B3 80

Page 81: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

TCP Packets Used: 0 (0.000%)

Stream Trackers: 0

Stream flushes: 0

Segments used: 0

Stream4 Memory Faults: 0

===============================================

Trong lúc khởi động, Snort hiển thị chế độ, thư mục ghi log, và các giao diện

mà nó đang lắng nghe. Khi việc khởi động hoàn tất, Snort bắt đầu xuất các gói tin ra

màn hình. Kết quả xuất này khá cơ bản : nó chỉ hiển thị các header

IP,TCP/UDP/ICMP và một số cái khác. Để thoát chế độ sniffer, sử dụng Ctrl-C.

Snort thoát bằng cách tạo ra một bản tóm tắt các gói tin được bắt giữ, bao gồm các

giao thức, thống kê phân mảnh và tái hợp gói tin. Để xem dữ liệu ứng dụng, sử

dụng cờ -d. Tùy chọn này cung cấp các kết quả chi tiết hơn:

Code:

# snort –vd

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

06/24-11:27:35.408290 ARP who-has 64.147.136.1 tell 64.147.136.144

06/24-11:27:35.408860 64.147.136.144:50507 -> 64.147.130.2:53

UDP TTL:64 TOS:0x0 ID:0 IpLen:20 DgmLen:57 DF

Len: 29

E8 0A 01 00 00 01 00 00 00 00 00 00 03 6E 73 31 .............ns1

03 6B 73 6C 03 63 6F 6D 00 00 01 00 01 .ksl.com.....

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

06/24-11:27:35.408838 ARP reply 64.147.136.1 is-at 0 0:BC:ED:15:E4

06/24-11:27:35.409465 64.147.130.2:53 -> 64.147.136.144:50507

UDP TTL:63 TOS:0x0 ID:0 IpLen:20 DgmLen:121 DF

Len: 93

E8 0A 85 80 00 01 00 01 00 02 00 01 03 6E 73 31 .............ns1

03 6B 73 6C 03 63 6F 6D 00 00 01 00 01 C0 0C 00 .ksl.com........

Sinh viên thực hiện: Trần Quang Minh – 07B3 81

Page 82: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

01 00 01 00 00 70 80 00 04 40 93 82 02 C0 10 00 .....p...@......

02 00 01 00 00 70 80 00 02 C0 0C C0 10 00 02 00 .....p..........

01 00 00 70 80 00 06 03 6E 73 32 C0 10 C0 47 00 ...p....ns2...G.

01 00 01 00 00 70 80 00 04 40 93 82 03 .....p...@...

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

Dữ liệu ứng dụng có thể thấy được qua các plain text trong gói tin. Trong

trường hợp này, văn bản gửi từ một server DNS được thể hiện dưới dạng plain text.

Để xem được chi tiết hơn, bao gồm các header lớp liên kết dữ liệu, sử dụng cờ -e.

Việc sử dụng cả hai tùy chọn –d và –e sẽ cho hiển thị hầu như tất cả các dữ liệu

trong gói tin:

Code:

#Snort –vde

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

06/24-11:34:00.840645 0:8:74:F3:CC:F9 -> 0 0:BC:ED:15:E4 type:0x800 len:0x47

64.147.136.144:50507 -> 64.147.130.2:53 UDP TTL:64 TOS:0x0 ID:0 IpLen:20 DgmLen:57 DF

Len: 29

28 BF 01 00 00 01 00 00 00 00 00 00 03 6E 73 31 (............ns1

03 6B 73 6C 03 63 6F 6D 00 00 01 00 01 .ksl.com.....

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

06/24-11:34:00.841157 0 0:BC:ED:15:E4 -> 0:8:74:F3:CC:F9 type:0x800 len:0x87

64.147.130.2:53 -> 64.147.136.144:50507 UDP TTL:63 TOS:0x0 ID:0 IpLen:20 DgmLen:121 DF

Len: 93

28 BF 85 80 00 01 00 01 00 02 00 01 03 6E 73 31 (............ns1

03 6B 73 6C 03 63 6F 6D 00 00 01 00 01 C0 0C 00 .ksl.com........

Sinh viên thực hiện: Trần Quang Minh – 07B3 82

Page 83: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

01 00 01 00 00 70 80 00 04 40 93 82 02 C0 10 00 .....p...@......

02 00 01 00 00 70 80 00 02 C0 0C C0 10 00 02 00 .....p..........

01 00 00 70 80 00 06 03 6E 73 32 C0 10 C0 47 00 ...p....ns2...G.

01 00 01 00 00 70 80 00 04 40 93 82 03 .....p...@...

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=

Các chuỗi thập lục phân hiển thị nhiều dữ liệu hơn. Có địa chỉ MAC và địa

chỉ IP. Khi thực hiện kiểm tra trên một mạng hoặc bắt giữ dữ liệu bằng Snort, việc

bật –vde cung cấp nhiều thông tin nhất. Để lưu lại trong logfile thay vì xuất ra

console, sử dụng:

Code:

# snort -dve > ttooip.log.

Tóm lại, đây là các tùy chọn có thể sử dụng với chế độ sniffer của Snort.

Những tùy chọn này có thể chạy độc lập hoặc kết hợp với cái khác

Snort là một Packet Logger:

Bước tiếp theo sau khi sniffing các gói tin là ghi log chúng. Việc ghi log chỉ

đơn giản bằng cách thêm tùy chọn –l, theo sau đó là thư mục muốn lưu trữ các log.

Thư mục mặc định trong Snort là /var/log/snort. Nếu xác định một thư mục không

tồn tại thì Snort sẽ báo một thông điệp lỗi. Có thể sử dụng các tùy chọn –d, -a và –e

để điều khiển số lượng thông tin sẽ được ghi log cho mỗi gói tin. Trong ví dụ sau

đây, thư mục log được thiết lập là /usr/local/log/snort, và các logfile bao gồm các

payload gói tin:

Code:

# snort -1/usr/local/log/snort –d

Khi chạy trong chế độ này, Snort thu thập mỗi gói tin nó thấy và lưu chúng

trong thư mục log theo kiểu phân cấp. Nói cách khác, một thư mục mới được tạo ra

cho mỗi địa chỉ được bắt giữ và dữ liệu liên quan đến địa chỉ này được lưu trong thư

mục đó. Snort lưu các gói tin thành các file ASCII, với tên file được tạo ra từ giao

Sinh viên thực hiện: Trần Quang Minh – 07B3 83

Page 84: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

thức và số cổng. Cách tổ chức này làm cho nhà quản trị có thể dễ dàng thấy được ai

đang kết nối với mạng, số cổng và giao thức họ đang sử dụng (sử dụng ls –R để liệt

kê thư mục log). Hãy nhớ xác định biến mạng của cơ quan hay tổ chức (trong file

cấu hình hoặc sử dụng -h ) để xác định chỉ ghi log cho mạng của cơ quan.

Cách tổ chức phân cấp này hữu dụng khi một số giới hạn các host được quan

tâm hoặc muốn thoáng qua các địa chỉ IP của các host được bắt giữ. Tuy nhiên, thư

mục log có thể ngày càng nhiều vì sự gia tăng thư mục và các file. Nếu ghi log tất

cả lưu lượng trên một mạng lớn thì có thể sẽ bị tràn index Unix giới hạn tổng số file

trong một file hệ thống) trước khi bị tràn bộ nhớ. Nếu một người nào đó thực hiện

việc quét mạng và ánh xạ tất cả 65536 cổng TCP cũng như 65536 cổng UDP, sẽ đột

ngột có hơn 131000 file trong một thư mục đơn. Sự bùng nổ file này có thể là một

thử thách lớn cho bất kì một máy nào, và rất dễ trở thành cách tấn công DOS. Việc

ghi log theo kiểu nhị phân có thể đọc được bởi Snort, tcpdump hoặc ethereal. Cách

này làm tăng tốc độ và khả năng vận chuyển của việc bắt giữ gói tin. Hầu hết các hệ

thống có thể bắt giữ và ghi log với tốc độ 100 Mbps mà không có vấn đề gì. Để ghi

log các gói tin theo kiểu nhị phân, sử dụng –b switch. Ví dụ:

Code:

#snort-b -l /usr/local/log/snort/ttooip.log

Khi đã thực hiện việc bắt giữ gói tin, có thể đọc lại các file vừa tạo ra bằng khóa –r.

Kết quả giống như sniffer của Snort. Lưu ý rằng –r không thể sử dụng với –C.

Code:

# snort -r /usr/local/log/snort/ttooip.log

Ở chế độ này, Snort không giới hạn việc đọc dữ liệu nhị phân được lưu trữ

trong chế độ sniffer.

Snort là một NIDS:

Snort là một công cụ phát hiện xâm nhập rất tốt. Khi được sử dụng như là

một NIDS, Snort cung cấp khả năng phát hiện xâm nhập gần như là thời gian thực.

Chúng ta sẽ xem rất nhiều cách mà Snort có thể được sử dụng như là một NIDS và

Sinh viên thực hiện: Trần Quang Minh – 07B3 84

Page 85: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

tất cả các tùy chọn cấu hình có thể. Trong chế độ cảnh báo, Snort cần một file cấu

hình (thật ra, chỉ cần xác định vị trí của file snort.conf là đặt Snort trong chế độ

này). Vị trí mặc định của file này là /etc/snort.conf. Nếu muốn đặt ở một vị trí khác,

phải sử dụng khóa –c kèm với vị trí đặt file. Các cảnh báo được đặt trong file alert

trong thư mục log (mặc định là (/var/log/snort). Snort sẽ thoát ra với với một lỗi nếu

file cấu hình hoặc thư mục log không tồn tại.

Các cài đặt mặc định cho hầu như tất cả các mục trong file này là khá tốt

(mặc dù sẽ có các cảnh báo nhầm). Biến duy nhất chúng ta mới thiết lập là biến

RULE_PATH, chỉ cho Snort nơi của các file luật. File cảnh báo nằm trong thư

mục /var/log/snort. File này chứa các cảnh báo được tạo ra khi Snort đang chạy. Các

cảnh báo Snort được phân loại theo kiểu cảnh báo. Một luật Snort cũng xác định

một mức độ ưu tiên cho một cảnh báo. Điều này cho phép lọc các cảnh báo có độ

ưu tiên thấp.

Khởi đầu cấu hình với file Snort.conf

Ở chế độ báo động ( alert ), Snort yêu cầu phải có file cấu hình, files cấu

hình mặc định lưu ở thư mục /etc/Snort.conf, nếu file nằm ở chỗ khác ta phải dùng

cờ -c để chỉ tới files đó. Các báo động sẽ lưu ở thư mục /var/log/Snort ( mặc

định ).Snort sẽ thoát ra nếu file .conf và thư mục log không có. Ta có thể chỉ định

loại báo động nào ví dụ như full, fast,none hoặc Unix sockets bằng cách thêm cờ -A

vào dòng lệnh

Lần đầu nhìn vào file Snort.conf ta có thể nhìn thấy nhiều dòng chú thích rất

dễ hiểu với màu sắc dễ phân biệt, ví dụ như tạo các biến, set các đường dẫn

RULE_PATH để chỉ Snort các files rules

Code:

var RULE_PATH ../rules

Thay đổi đường dẫn đầy đủ nơi chứa các rules

var RULE_PATH /usr/local/share/Snort_rules/november_2005/rules

Sinh viên thực hiện: Trần Quang Minh – 07B3 85

Page 86: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Để cho Snort khởi động, sử dụng dòng lệnh:

Snort -c /usr/local/share/Snort_rules/november_2005/rules/Snort.conf

Nó sẽ hiển thị ra màn hình console

Running in IDS mode

….

No arguments to frag2 directive, setting defaults to:

Fragment timeout: 60 seconds

Fragment memory cap: 4194304 bytes

Fragment min_ttl: 0

Fragment ttl_limit: 5

Fragment Problems: 0

Self preservation threshold: 500

Self preservation period: 90

Suspend threshold: 1000

Suspend period: 30

……

+++++++++++++++++++++++++++++++++++++++++++++++

+-----------------------[thresholding-config]----------------------------------

| memory-cap : 1048576 bytes

+-----------------------[thresholding-global]----------------------------------

| none

+-----------------------[thresholding-local]-----------------------------------

| gen-id=1 sig-id=2275 type=Threshold tracking=dst count=5 seconds=60

+-----------------------[suppression]------------------------------------------

Rule application order: ->activation->dynamic->alert->pass->log

--== Initialization Complete ==--

-*> Snort! <*-

Version 2.1.x (Build 24)

By Martin Roesch ([email protected], www.Snort.org)

Sinh viên thực hiện: Trần Quang Minh – 07B3 86

Page 87: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Tới đây ta có thể kết thúc dùng lệnh CTRL – C sẽ xuất hiện các bảng tóm tắt:

====================================================

Snort analyzed 3210 out of 3807 packets, dropping 597(15.682%) packets

Breakdown by protocol: Action Stats:

TCP: 2602 (68.348%) ALERTS: 6

UDP: 2 (0.053%) LOGGED: 6

ICMP: 8 (0.210%) PASSED: 0

ARP: 0 (0.000%)

EAPOL: 0 (0.000%)

IPv6: 0 (0.000%)

IPX: 0 (0.000%)

OTHER: 0 (0.000%)

DISCARD: 0 (0.000%)

===============================================

Wireless Stats:

Breakdown by type:

Management Packets: 0 (0.000%)

Control Packets: 0 (0.000%)

Data Packets: 0 (0.000%)

===============================================

Fragmentation Stats:

Fragmented IP Packets: 0 (0.000%)

Fragment Trackers: 0

Rebuilt IP Packets: 0

Frag elements used: 0

Discarded(incomplete): 0

Discarded(timeout): 0

Frag2 memory faults: 0

===============================================

TCP Stream Reassembly Stats:

Sinh viên thực hiện: Trần Quang Minh – 07B3 87

Page 88: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

TCP Packets Used: 2602 (68.348%)

Stream Trackers: 1559

Stream flushes: 0

Segments used: 0

Stream4 Memory Faults: 0

===============================================

Final Flow Statistics

,----[ FLOWCACHE STATS ]----------

Memcap: 10485760 Overhead Bytes 16400 used(%2.287951)/blocks (239909/1564) Overhead

blocks: 1 Could Hold: (73326)

IPV4 count: 1563 frees: 0 low_time: 1080162455, high_time: 1080162458, diff: 0h:00:03s

finds: 2612 reversed: 1022(%39.127106)

find_sucess: 1049 find_fail: 1563 percent_success: (%40.160796) new_flows: 1563

Protocol: 1 (%0.306279) finds: 8 reversed: 3(%37.500000)

find_sucess: 5 find_fail: 3 percent_success: (%62.500000) new_flows: 3

Protocol: 6 (%99.617152) finds: 2602 reversed: 1018(%39.123751)

find_sucess: 1043 find_fail: 1559 percent_success: (%40.084550) new_flows: 1559

Protocol: 17 (%0.076570) finds: 2 reversed: 1(%50.000000)

find_sucess: 1 find_fail: 1 percent_success: (%50.000000) new_flows: 1

Snort exiting

Bây giờ đã có 1 file báo động trong thư mục /var/log/Snort. File sẽ bao gồm

các báo động từ Snort khi đang chạy ( trong bài này có sử dụng nmap SYN scan để

cho Snort báo động )

Code:

[**] [1:469:1] ICMP PING NMAP [**]

[Classification: Attempted Information Leak] [Priority: 2]

03/24-15:07:35.187504 192.168.1.2 -> 192.168.1.105

ICMP TTL:51 TOS:0x0 ID:23210 IpLen:20 DgmLen:28

Sinh viên thực hiện: Trần Quang Minh – 07B3 88

Page 89: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Type:8 Code:0 ID:1290 Seq:0 ECHO

[Xref => http://www.whitehats.com/info/IDS162]

[**] [1:618:5] SCAN Squid Proxy attempt [**]

[Classification: Attempted Information Leak] [Priority: 2]

03/24-15:07:35.583826 192.168.1.2:49641 -> 192.168.1.105:3128

TCP TTL:44 TOS:0x0 ID:56810 IpLen:20 DgmLen:40

******S* Seq: 0x4EB5A7C6 Ack: 0x0 Win: 0x400 TcpLen: 20

[**] [1:1421:3] SNMP AgentX/tcp request [**]

[Classification: Attempted Information Leak] [Priority: 2]

03/24-15:07:35.589463 192.168.1.2:49641 -> 192.168.1.105:705

TCP TTL:44 TOS:0x0 ID:54050 IpLen:20 DgmLen:40

******S* Seq: 0x4EB5A7C6 Ack: 0x0 Win: 0x400 TcpLen: 20

[Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0013][Xref => http://

cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0012]

[**] [1:615:5] SCAN SOCKS Proxy attempt [**]

[Classification: Attempted Information Leak] [Priority: 2]

03/24-15:07:35.674332 192.168.1.2:49641 -> 192.168.1.105:1080

TCP TTL:44 TOS:0x0 ID:9794 IpLen:20 DgmLen:40

******S* Seq: 0x4EB5A7C6 Ack: 0x0 Win: 0x400 TcpLen: 20

[Xref => http://help.undernet.org/proxyscan/]

[**] [1:1420:3] SNMP trap tcp [**]

[Classification: Attempted Information Leak] [Priority: 2]

03/24-15:07:35.696925 192.168.1.2:49641 -> 192.168.1.105:162

TCP TTL:44 TOS:0x0 ID:41259 IpLen:20 DgmLen:40

******S* Seq: 0x4EB5A7C6 Ack: 0x0 Win: 0x400 TcpLen: 20

[Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0013][Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0012]

[**] [1:1418:3] SNMP request tcp [**]

[Classification: Attempted Information Leak] [Priority: 2]

03/24-15:07:35.827022 192.168.1.2:49641 -> 192.168.1.105:161

Sinh viên thực hiện: Trần Quang Minh – 07B3 89

Page 90: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

TCP TTL:44 TOS:0x0 ID:37753 IpLen:20 DgmLen:40

******S* Seq: 0x4EB5A7C6 Ack: 0x0 Win: 0x400 TcpLen: 20

[Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0013][Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0012]

Ví dụ phân tích một báo động của Snort

Đây là tên của báo động:

[**] [1:1418:3] SNMP request tcp [**]

Snort sẽ chia ra nhiều lớp cho từng loại báo động , ví dụ cái này là thuộc

dang đang cố gắng đánh lừa thông tin “Attempted Information Leak” và mức độ ưu

tiên của từng báo động

[Classification: Attempted Information Leak] [Priority: 2]

Đây là phần header và thông tin của packet là nguyên nhân gây ra báo đông:

03/24-15:07:35.827022 192.168.1.2:49641 -> 192.168.1.105:161

TCP TTL:44 TOS:0x0 ID:37753 IpLen:20 DgmLen:40

******S* Seq: 0x4EB5A7C6 Ack: 0x0 Win: 0x400 TcpLen: 20

Snort sẽ báo động bao gồm các đường dẫn tới mô tả các rules gây ra báo

động

[Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0013][Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0012]

3.4.8.3. File Snort.conf

File Snort.conf điều khiển mọi thứ mà Snort thấy được, làm cách nào nó có

thể chống lại các cuộc tấn công, những rules nào được sử dụng khi thấy nghi ngờ,

và làm cách nào nó có thể phát hiện ra được những dấu hiệu nguy hiểm tìm tàng

mặc dù nó không có các tín hiệu nhận dạng cụ thể để so sánh. Để hiểu và cấu hình

nó thành công khi phát triển Snort thành 1 công cụ IDS thật sự. Tôi sẽ trình bày cụ

thể những kinh nghiệm hiểu biết về Snort sau đây. Để tìm hiểu nó 1 cách nhanh

nhất và dễ dàng nên mở sẵn nó ra trên máy tính hoặc in nó ra giấy theo dõi cho dễ

dàng.

Sinh viên thực hiện: Trần Quang Minh – 07B3 90

Page 91: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

File conf được chia ra thành nhiều đoạn và có chú thích rất rõ ràng cho từng

đoạn, những nội dung chính của nó gồm:

Thiết lập mạng và cấu hình các biến

Cấu hình phần giải mã (decoder) 1và phát hiện

Cấu hình tiền xử lý (preprocessor)

Cấu hình phần output

File được trỏ tới

3.4.8.3.1. Thiết lập mạng và cấu hình các biến:

Các biến trong file conf được tạo ra thường để dễ dàng hơn trong việc theo

dõi các địa chỉ IP, hoặc các port TCP, UDP được chỉ định mà nó đang lắng nghe.

Mặc đinh các biến thường để giá trị là any chỉ tất cả các địa chỉ IP mà nó

nhận được, nó cũng có thể là nguyên nhân gây ra nhiều báo động sai

Var HOME_NET 192.168.1.1

Hoặc khi muốn chỉ định nhiều địa chỉ cùng lúc, phải có dấu ngoặc vuông để

chỉ định cho cả nhóm:

Var HOME_NET [192.168.1.1,192.168.14.1,10.0.0.2]

Ta cũng có cách khác để chỉ định luôn cả mạng:

Var HOME_NET 10.10.10.0/24

Hoặc cũng có thể gộp cả 2 cách trên vào chung 1 nhóm:

Var HOME_NET [192.168.1.1,10.10.10.0/24,172.168.1.5/16,187.1.1.1/19]

Nếu muốn chỉ định không dùng các ip này ngoại trừ … thì dùng thêm dấu

“than” ! nghĩa là NOT

Var EXTERNAL_NET !$HOME_NET

Để chỉ định cho các port cũng làm tương tự ví dụng

Var ORACLE_PORTS 1521

Sinh viên thực hiện: Trần Quang Minh – 07B3 91

Page 92: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Hoặc các port không phải là port 80

Var SHELLCODE_PORTS !80

Các biến mặc định trong Snort.conf

HOME_NET: chỉ định địa chỉ mạng của mình đang bảo vệ

EXTERNAL_NET: các mạng bên ngoài.

Các biến để chỉ định các server đang chạy các service phục vụ cho hệ thống

DNS_SERVERS

SMTP_SERVERS

HTTP_SERVERS

SQL_SERVERS

TELNET_SERVERS

SNMP_SERVERS

……

Các port mặc định các biến khác:

HTTP_PORTS

SHELLCODE_PORTS

ORACLE_PORTS

AIM_SERVERS

RULES_PATH

3.4.8.3.2. Cấu hình phân giải mã (decoder) và phát hiện (detection)

Snort sẽ giải mã cấu trúc các packet và so sánh cấu trúc theo những dấu hiệu

đã được trang bị. Nếu packet có kích thước lạ, nhìêu cấu hình lạ không bình thường,

Snort sẽ báo động. Nếu không báo động thì sẽ có 1 luợng lớn lỗi báo động sai. Ta

có thể tắt chức năng này. Mặc định tất cả báo động đều bật. Để tắt 1 loại báo động

cụ thể nào đó, ta nên để dấu thăng # vào trước dòng lệnh thành dòng comment ghi

chú

# config disable_decode_alerts # config disable_tcpopt_experimental_alerts

Sinh viên thực hiện: Trần Quang Minh – 07B3 92

Page 93: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

# config disable_tcpopt_obsolete_alerts # config disable_tcpopt_ttcp_alerts # config disable_tcpopt_alerts # config disable_ipopt_alerts

Ta cũng có thể thêm vào nhiều dòng lênh của Snort trong phần này của file

Snort.conf. Cấu Hình Option Của Snort.conf

Option Mô tả

config order: [pass, alert, log, activation, or dynamic] Thay đổi các giá trị điều khỉên của rules

config alertfile: alerts Thiết lập output của file báo động

config decode_arp Bật chức năng arp decoding (Snort -a).

config dump_chars_only Bật chức năng character dumps (Snort -C).

config dump_payload Hiện thông tin lớp application(Snort -d).

config decode_data_link Giải mã Layer2 headers (Snort -e).

config bpf_file: filters.bpf Chỉ định dùng bộ lọc BPF (Snort -F).

config set_gid: 30 Thay đổi GID đến GID khác (Snort -g).

config daemon Chạy Snort ở chế độ daemon (Snort -D).

config interface: <interface name> Thiết lập interface (Snort -i).

config alert_with_interface_name Chỉ định interface cần báo động (Snort -I).

config logdir: /var/log/Snort Thiết lập lại thư mục log (Snort -l).

config umask: <umask> Thiết lập umask khi chạy (Snort -m).

config pkt_count: N Thoát ra sau N packets (Snort -n).

config nolog Tắt chế độ log (Snort -N).

config obfuscate Ẩn địa chỉ IP (Snort -O).

config no_promisc Tắt chế độ cho chạy lẫn lộn (Snort -p).

config quiet Tắt banner và report trạng thái (Snort -q).

Sinh viên thực hiện: Trần Quang Minh – 07B3 93

Page 94: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

config chroot: /home/Snort Thay đổi lại thư mục root (Snort-T).

config checksum_mode : allCác loại packet dùng để tính toán lại checksums: none, noip, notcp, noicmp, noudp, or all.

config set_uid: <id> Thay đổi UID ra uid mới (Snort-u).

config utc Sử dụng UTC thay vì dùng thời gian máy local gán cho timestamps (Snort -U).

config verbose Sử dụng chế độ xem chi tiết (Snort -v.)

config dump_payload_verbose Hiển thị những packet "thô" bắt đầu ở lớp linkdata (Snort-X ).

config show_year Hiển thị timestamps năm (Snort-y).

3.4.8.3.3. Cấu hình tiền xử lý (preprocessor)

Tiền xử lý phục vụ cho nhiều mục đích. Nó “bình thường hoá” traffic cho

các services, để chắc chắn rằng dữ liệu trong các packet Snort đang theo dõi sẽ có

cơ hội tốt nhất để so sánh với các tín hiệu nhận dạng (signatures ) mà Snort đuợc

trang bị. Chức năng khác của quá trình tiền xử lý là tự phòng thủ. Các cuộc tấn công

được phát triển để lẩn tránh hoặc làm tràn ngập NIDS sensor, vì thế attacker có thể

lợi dụng làm những công việc mình cần. Chức năng frag2 và stream4 tiền xử lý có

chức năng chính để chống lại các phương pháp này.

Và chức năng cuối cùng cũng là chức năng quan trọng nhất là làm cho Snort

có thêm chút thông minh để phát hiện ra các cuộc tấn công mang phong cách không

bình thuờng mà Snort không được trang bị trong rules.

Sinh viên thực hiện: Trần Quang Minh – 07B3 94

Page 95: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Hình 3.22. Bảng mô hình các gói tin đi vào ở mode preprocessor

FLOW

Flow preprocessor có một module là flow-portscan. Flow theo dõi tất cả

traffic và giữ các track kết nối giữa hệ thống và port lạ, khi có 1 flow lạ mới thông

tin sẽ chuyển qua hash (làm cho các track nhỏ hơn , nhanh hơn trong tracking các

địa chỉ IP và PORTS) được lưu trữ trong bảng bộ nhớ dành sẵn. Các option cho

flow preprocessor

Memcap

Chỉ định mức tối đa cho bộ nhớ khi tracking, mặc định là 10MB, thông số

này để điều khỉên bộ nhớ của Snort khi cần

Rows

Chỉ định số dòng trên bảng hash, mặc định là 4,099 dòng

Stats_interval

Có thể chuyển tình trạng của flow preprocessor qua stdout, giá trị là một số

nguyên đại diện cho thời gian tính bằng giây (s) , rất hữu ích khi dùng cho mục đích

test

Hash

Phương pháp sử dụng hash thông tin vào bảng, có thể set hash có giá trị là 1

(byte) hoặc 2 (số nguyên ) dùng hash 2 nhanh hơn

Sinh viên thực hiện: Trần Quang Minh – 07B3 95

Page 96: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Đây là cấu hình khuyên của các nhà phát triển dùng cho flow:

Preprocessor flow: stats_interval 0 hash 2

Frag2

Khi một packet đi từ mạng này qua mạng khác, nó thường cần phân mảnh

thành các packet nhỏ hơn, bởi vì mạng thứ 2 sẽ giới hạn kích thuớc của packet và

tất nhiên nhỏ hơn mạng đầu tiên. Và tất cả các packet nhỏ sẽ đuợc sắp xếp lại khi

đến nơi. Một trong những phương pháp của attacker là dùng các packet nhỏ để lừa

firewall hoặc IDS. Ví dụ: rules của Snort đang dò tìm chuỗi /users.pwd trong các

section của packet, một attacker có thể tạo ra một dãy các packet rất nhỏ chỉ chứa

vài byte trong data của packet, mảnh đầu tiên có thể chứa /user , và cái packet phân

mảnh thứ 2 có thể chứa s.pwd, các packet này sẽ không kích hoạt báo động bởi vì

nó không giống các rules nào cả, frag2 preprocessor sẽ sắp xếp sự phân mảnh này

vào chung và nó sẽ dễ dàng phát hiện sự ẩn dấu đó. Hoặc một ví dụ khác các

attacker có thể đưa ra 1 dung lượng quá lớn các packet đã phân mảnh nó sẽ chiếm

dung lưonng của hệ thống và làm overload có thể Snort sẽ từ chối tất cả và ảnh

hưởng tới các packet không liên quan, các tools mà attacker thường dùng là

Fragroute, frag2 có các options để chống lại các dạng tấn công này.

Timeout Số dây trước khi tắt các sension để flush lại bộ nhớ, mặc định là 60s

Memcap Số luợng bytes của memory set aside, mặc định là 4MB

Detect_state_problems Bật chức năng báo động khi phát hiện điều kiện không bình thường trong các packet phân mảnh, nó nên được bật cho hầu hết các trường hợp

Min_ttl Thiết lập time to live (TTL) tối thiểu đuợc chấp nhận của tiền xử lý, mặc định là 0

Ttl_limit Thiết lập ttl maximum, nó không nên quá lớn ,mặc định là 5

Thiết lập khuyến cáo nên dùng: Preprocessor frag2

Sinh viên thực hiện: Trần Quang Minh – 07B3 96

Page 97: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Stream4

Stream4 được thiết kế để bảo vệ Snort từ 1 dạng tấn công mới của attacker

tới các NIDS sensor bằng cách gửi tràn ngập các packet chứa các chuỗi dữ liệu

giống như trong rules để kích các báo động, cũng có khá nhiều tools dùng cho việc

này nhưng Snort của có cách chống lại.

Stream4 có 2 nhiệm vụ chính: sateful inspection ( kiểm tra tính nguyên ven ),

awareness and session reassembly ( nhận biết và sắp xếp các session )

Các option của stream4

Detect_scans Mặc định là tắt. nó sẽ báo động khi phát hiện các tools scan ports

Detect_state_problems Mặc định tắt. sẽ báo động khi có vấn đề về tình trạng của cuộc thoại bị phát hiện

Disable_evasion_alerts

Cũng mặc định tắt luôn. nếu bật nó có thể phát hiện attacker đang cố gắng từ chối IDS bằng cách gởi các packet đuơc sắp xếp lộn xộn, hoặc các packet là SYN trong data

Min_ttl Thiết lập thời gian sống ít nhất để chấp nhận các packet vào stream4 preprocessor

Ttl_limit Thiết lập ttl maximum, nó không nên quá lớn, mặc định là 5

keepstats [machine, binary]Mặc định tắt, nếu bật nó sẽ hiển thị tình trạng các senssion đã theo dõi ở 2 chế độ machine là text file, định dạng binary và dùng tools barnyard để thống nhất

Noinspect Mặc định cũng off. tắt chức năng statefull inspection của tất cả các packets

Timeout Mặc định là 30s

Log_flushed_streams Nếu một packet đang bị theo dõi và là nguyên nhân gây ra báo động, ta có thể dump session này và lưu thông tin từ stream4 vào đĩa cứng

Memcap Số luợng bytes của memory set aside, mặc định là

Sinh viên thực hiện: Trần Quang Minh – 07B3 97

Page 98: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

4MB

Đây là câu lệnh khuyến cáo nên dùng Code:preprocessor stream4: detect scans, disable_evasion_alerts, timeout 60, ttl_limit 10

Stream4_reassembleSnort phản hồi những chuỗi kí tự nó đọc đuợc trong các gói tin đi qua nếu nó

trùng với các kí tự nhận dạng trong signatures. Nếu attacker có thể phân chia các kí

tự thành nhiều gói tin để tránh báo động của Snort, stream4_reassemble đóng vài trò

sắp xếp lại các traffic giữa 2 hệ thống đàm thoại ( conversation ) của network, gia

tăng khả năng match các signatures

Các conversation network thường là các chương trình dùng bằng command

line như Telnet, Ftp, Smtp có thể là các nguyên nhân nội dung của các packet lọt

qua được hệ thống. Reassemble các traffic các services này là cần thiết để ngăn

chặn các báo động lầm hoặc bỏ sót.

Một kĩ thuật khác của attacker là nhúng các gói tin với các kí tự gây lỗi,

reassemble vẫn có thể phát hiện được

Các option của reassemble:

Clientonly: Chỉ bật chức năng này trên client

Serveronly: Chỉ bật chức năng này trên server

Both: Bật trên cả server và client

Noalerts: Chế độ báo động vẫn hoạt động nhưng chỉ tắt chức năng

reassembly

Ports [list]: Chỉ định những ports cụ thể để reassembly

Câu lệnh khuyên dùng: Preprocessor stream4_reassemble: both

Tiền xử lý các http inspect

Sinh viên thực hiện: Trần Quang Minh – 07B3 98

Page 99: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Có nhiều cách thông tin có thể định dạng sang các http session và cũng có

nhiều loại khác nhau biểu diễn các thông tin như là các http session như multimedia,

.xml, .HTML, .asp, .php, .java,….và kết quả Snort phải “massage” nội dung của các

HTTP conversation để định dạng lại data phục vụ cho quá trình phát hiện tốt nhất.

Có 2 kiểu cấu hình http_inspect là global và server. Global ảnh huởng trực tiếp tới

http traffic ,cấu hình Server chứa các phần setting cho 1 máy server và các group

servers như vậy, cái này rất thường dùng để cấu hình cho web server dùng apache

hoặc IIS http_inspect (global)

Có 3 option trong phần này dùng để config http traffic:

Code:

iis_unicode_map <filename> [codemap <interger]

Chỉ đuờng dẫn tới map file unicode.map. Nó sẽ chỉ cho bộ tiền xử lý biết làm

cách nào để map các kí tự unicode sang ASCII dạng text đê match các signatures.

Ta phải chỉ ra code dể map ví dụ 1252 là latin code

Code:

detect_anomalous_servers

Sẽ báo động khi gặp các ports lạ không tiêu chuẩn. thường không bật chế độ này

proxy_alert

Nếu sử dụng proxy server cho các internet user, bật chức năng này để giám

sát các user không dùng proxy để kết nối internet

Đề nghị setting cho mode này:

preprocessor http_inspect: global iis_unicode_map unicode.map 1252

http_inspect_server

Có thể dùng option này cho servers bất kì hoặc các servers trong môi truờng

làm việc của mình. hầu hết các administrator đều dùng 1 server riêng dùng cho IIS

và cái khác dùng Apache servers. Trong phần trình bày này sẽ có ví dụ cụ thể. Có 2

kiều cấu hình cho http_inspetct_server là “default” và “by IP address”, kiểu

Sinh viên thực hiện: Trần Quang Minh – 07B3 99

Page 100: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

“default” chỉ cấu hình cho tất cả web traffic không liên quan gì đến IP address, còn

kiểu “IP address” chỉ cấu hình cho các IP đựơc chỉ định hoặc 1 dãy các IP. Có các

option là:

Default hoặc < IP address >

Như đã trình bày ở trên

Profile <all | apache | iis >

Có thể dùng apache hoặc chỉ dùng cho iis ta cũng có thể dùng all cho cả hai.

Các bảng sau sẽ trình bày cụ thể của profile khi dùng từng loại

Bảng setting cho profile "all"

Option Setting

flow_depth 300

chunk_encoding Báo động khi các chunks lớn hơn 500,000 bytes

lis_unicode_map Map sử dụng cho mode globle

ascii No

non_refc_char On

multi_slash No

directory No

apache_whitespace Yes

double_decode Yes

j_encode Yes

bare_byte Yes

lis_unicode Yes

lis_backslash No

lis_delimiter Yes

Bảng setting cho profile "apache"

Option Setting

Sinh viên thực hiện: Trần Quang Minh – 07B3 100

Page 101: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

flow_depth 300

chunk_encoding Báo động khi các chunks lớn hơn 500,000 bytes

ascii No

non_rfc_char On

multi_slash No

directory No

apache_whitespace Yes

Bảng setting cho profile "iis"

Option Setting

flow_depth 300

lis_unicode_map Map sử dụng cho mode globle

ascii No

multi_slash No

directory No

double-decode Yes

u_encode Yes

bare_byte Yes

lis_unicode Yes

lis_backslash No

lis_delimiter Yes

apache_whitespace Yes

utf_8 No

non_strict On

Đây là phần cấu hình mặc định cho http_inspect_server:

Code:

Preprocessor http_inspect_server: server default profile all ports {80 8080 }

Đây là phần cấu hình cho IIS server http_inspect_server :

Sinh viên thực hiện: Trần Quang Minh – 07B3 101

Page 102: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Preprocessor http_inspect_server: server 10.10.10.33 profile iis ports {80 8080}

Còn đây là cấu hình điển hình cho Apache server:

Preprocessor http_inspect_server 10.1.1.125 profile apache ports { 80 8080 }

rpc_decode

RPC’s traffic có thể phân chia ra nhiều packet và mã hoá theo nhiều kiểu

khác nhau. Rpc_decode preprocessor sẽ bình thường hoá các traffic này cũng chỉ

mục đích giúp nhận diện tốt hơn trong singnatures list. List của các ports mà RPC

services đang chạy đuợc cung cấp trong các dòng cấu hình. Ở đây có 4 options cho

rpc_decode

Alert_fragments: Báo động khi có fragmented RPC traffic

No_alert_multiple_requests: Không báo động khi nhiều hơn một RPC

request đuợc chứa trong một packet.

No_alert_large_fragments: RPC fragments có thể lớn hơn size của các

fragment hiện hành. Nếu bạn tìm lỗi xác thực, ta phải dùng chức năng này để

disable

No_alert_incomplete: RPC messages có thể rất lớn, có khi nó lớn hơn có

MTU của mạng nó đang đi qua, nó có thể gây nhiều lỗi cho các RPC network

services. Có thể tắt chức năng này để phát hiện lỗi

Đây là đề nghị config rpc_decode: Preprocessor rpc_decode: 111 32771 1024

Bo

Bo- Back orifice con virust nổi tiếng của các hacker trong các năm qua, dùng

để điều khiển từ xa các client bị nhiễm nó, Snort có option để ngăn chặn điều này và

phát hiện khá dễ dàng chỉ bằng một dòng lệnh ngắn gọn.

Preprocessor bo

Sinh viên thực hiện: Trần Quang Minh – 07B3 102

Page 103: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Telnet_decode

Dùng chức năng này để bình thuờng hoá các kí tự ,chuổi không tiêu chuẩn, lạ

của traffic FTP và telnet cũng đơn giản dùng 1 câu lệnh đơn giản.

Code:

Preprocessor telnet_decode

Flow-portscan

Flow-portscan thay thế portscan2 nó nhiều chức năng hơn và mạnh hơn. Có

3 components cơ bản cho flow-portscan

Scoreboards

Nó phát hiện đuợc 2 loại khác nhau của host , talker và scanner. Talker là tất

cả các host đang active trong mạng. còn scanner là host đang connection tới 1 port

trên server ở trong mạng

Uniqueness tracker: Theo dõi nếu có duy nhất 1 kết nối

Server statistics tracker: Sử dụng để theo dõi thời gian của các service trên

các server nhằm theo dõi các kết nối

Để phát hiện các attacker scan port rất khó vì hacker có thể dùng nhiều cách

khác nhau:

Sau đây là các option ta có thể dùng để nâng cao hiệu quả của flow-portscan

Code:

scoreboard-memcap-talker < bytes>

scoreboard-rows-talker < count>

scoreboard-rows-scanner < count>

scoreboard-memcap-scanner < bytes>

scanner-fixed-threshold < integer>

scanner-sliding-threshold < integer>

scanner-fixed-window < integer>

scanner-sliding-window < integer>

Sinh viên thực hiện: Trần Quang Minh – 07B3 103

Page 104: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

scanner-sliding-scale-factor < float>

talker-fixed-threshold < integer>

talker-sliding-threshold < integer>

talker-fixed-window < integer>

talker-sliding-window < integer>

talker-sliding-scale-factor < float>

unique-memcap < bytes>

unique-rows < integer>

server-memcap < bytes>

server-rows < integer>

server-watchnet < ip list in Snort notation>

src-ignore-net < ip list in Snort notation>

dst-ignore-net < ip list in Snort notation>

tcp-penalties <on|off>

server-learning-time < seconds>

server-ignore-limit < hit count>

server-scanner-limit < hit count>

alert-mode <once|all>

output-mode <msg|pktkludge>

base-score < integer>

dumpall <1>

Đây là dòng cấu hình mẫu cho flow-portscan

Code:

preprocessor flow-portscan: server-watchnet [10.10.10.0/24,10.10.20.0/24]

Arpspoof

Arpspoof được thiết kế cho preprocessor dể detech các hoạt động spoof arp

bất hợp pháp trên local nétwork. Các hacker dùng các tools man-in-the-middle

attacks như ettercap hoặc arpspoof để nghe trộm giữa các máy trong mạng nội bộ.

Sinh viên thực hiện: Trần Quang Minh – 07B3 104

Page 105: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

để cấu hình administrator phải biết địa chỉ MAC của card mạng, điều này thì quá dễ

dàng:

Sau đây là cấu hình đề nghị:

Code:

# preprocessor arpspoof # preprocessor arpspoof_detect_host: 192.168.1.1 F0:AB:GH:10:12:53

Perfmonitor

Một trong những khả năng rất hay của Snort là monitor tình trạng hiện tại

của hể điều hành các thông số nó thể hiện nêu lên nhiều ý nghĩa mà dựa vào đó ta

có thể đoán được nhiều đìều và đưa ra nhiều biện pháp điều chỉnh theo ý muốn, các

thông số Snort monitor

Code:

Packets received

Packets dropped

Percentage of packets dropped

Packets Received

Kpackets per second

Average bytes per packets

Mbits per second (wire)

Mbits per second (rebuilt) (Mbits trung bình Snort nhúng vào sau khi rebuil các packet)

Mbits per second (total)

Pattern-matching percent (Phần trăm dữ liệu average percent of data received that Snort processes

in pattern matching)

CPU usage (user time, system time, idle time)

Alerts per second

SYN packets per second

SYN/ACK packet per second

New sessions per second

Sinh viên thực hiện: Trần Quang Minh – 07B3 105

Page 106: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Deleted sessions per second

Total sessions

Max sessions during time interval

Stream flushes per second

Stream faults per second

Stream timeouts

Frag completes per second

Frag inserts per second

Frag deletes per second

Frag flushes per second

Frag timeouts

Frag faults

Khi dùng thêm từ “flow” , nó sẽ hiển thị tình trạng các traffic của protocal

mà Snort dang soi, dùng “event” Snort sẽ mở chức năng reporting và hiển thị trạng

thái số lượng signatures match, dùng từ “max” sẽ kích hoạt Snort hoạt động hết sức

để nâng cao hiệu quả, dùng tư “pktcnt” điều chỉnh số lượng packets đang thực thi

trước khi check thời gian sample mặc định set là 10,000.

Ví dụ config và bật chức năng perfmonitor preprocessor:

Code:

Preprocessor perfmonitor : time 30 events flow file stats.profile max console pktcnt 10000

Preprocessor perfmonitor: time 30 file /var/tmp/Snortstat pktcnt 10000

3.4.8.3.4. Cấu hình OUTPUT:

Snort có thể output vào các file log hoặc output ra console, nhiều

administrator thích dùng các phần mềm của hãng thứ 3 (third party ) để tăng thêm

chức năng giám sát của Snort, các phần mềm data database đều có thể dùng được,

lưu ý trước khi cài đặt Snort muốn dùng database nào thì cần chỉ rõ khi cài đặt ví

dùng dùng MySQL , khi biên dịch source thêm vào - -mysql

Sinh viên thực hiện: Trần Quang Minh – 07B3 106

Page 107: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Code:

./configure - - mysql

Alert_syslog

Output cấu hình theo kiểu

Code:

Output alert_syslog : <facility> <priority>

Các option sau là một trong nhưng syslog chuẩn và syslog mặc định là

LOG_AUTH; LOG_AUTH; LOG_AUTHPRIV; LOG_DAEMON; LOG_LOCAL0; LOG_LOCAL1; LOG_LOCAL2; LOG_LOCAL3; LOG_LOCAL4; LOG_LOCAL5; LOG_LOCAL6; LOG_LOCAL7; LOG_USER

Các option ưu tiên sau cũng là các syslog ưu tiên chuẩn, mặc định là

LOG_ALERT; LOG_EMERG; LOG_ALERT; LOG_CRIT; LOG_ERR; LOG_WARNING; LOG_NOTICE;

LOG_INFO; LOG_DEBUG

Đây là câu cấu hình mẫu cho alert_syslog

Code:

tput alert_syslog: LOG_AUTH LOG_ALERT

và câu lệnh này dành cho bản windows của Snort nhìn vào cũng dễ hiểu

Code:

output alert_syslog: host=192.168.1.100:80 LOG_AUTH LOG_ALERT

Log_tcpdump

Log này sẽ định dạng sang dạng log_tcpdump, do có rất nhiều phần mềm có

thể đọc được dạng log này, khi log sẽ có timestamp đính vào file name

Code:

output log_tcpdump /var/log/Snort/tcpdump.out

Database

Sinh viên thực hiện: Trần Quang Minh – 07B3 107

Page 108: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Khi log vào database , một khối luơng lớn thông tin của Snort sẽ được lưu

trữ như các báo động (alert) , các host liên quan, các packet gây ra báo động, và ta

dễ dàng log các báo động thật sự và các báo động lỗi, sai nhanh và nhiều hơn

Đôi khi log vào database cũng quá tải gây ra hiện tượng thắt cổ chai dẫn đến

1 alert chỉ có thể được log trong một thời gian. Và phương pháp cấu hình Snort làm

sao hợp lý nhất là các kinh nghiệm của các admin sau này ví dụ có thể dùng tuning

hoặc thresholding để tạo hiệu quả hơn.

Cấu trúc của câu lệnh output ra database

Code:

output database: <log | alert>,<database type>,<parameter list>

Câu lệnh trên nhìn vào ta có thể hiểu ngay được ý nghĩa của nó, còn

<parameter list> bao gồm các phần sau :

Host: Địa chỉ IP của database server

Port: Port của database đang lắng nghe

dbname=<database name>: Loại database ta đang logging

user: username Snort sử dụng để log trong database

password: Mật khẩu username Snort sử dụng để log trong database

sensor_name: Tên của sensor cấu hình, có thể thểm -I trong command line

sử dụng IP address thay cho tên

encoding: Sử dụng mã hoá để log vào database, ví dụ kiểu hex,base64,ascii

và khuyên dùng ascii

detail: Có thể chỉ định details level nào log vào database, ví dụ dùng full,fast

và full được khuyên dùng nhất

Với các loại database cụ thể ta phải biên dịch cho đúng khi cài đặt như đã nói

phần trước

CODEMySQL: ./configure - -with-mysql

Sinh viên thực hiện: Trần Quang Minh – 07B3 108

Page 109: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

POSTGRESQL: ./configure - -with-postresql

ODBC: ./configure - -with-odbc

MSSQL: Chỉ dùng cho bản windows, dùng odbc để log vào MSMSQL

server

ORACLE: ./configure - -with-oracle

các log khác ta sẽ coi trong phần khuyến cáo của database kèm theo

File Inclusion

Trong file Snort.conf, câu lệnh include chỉ cho Snort đọc các file sau từ

include được lưu trong filesystem của Snort sensor, giống như trong lập trình

Code:

$ include $RULE_PATH/bad-traffic.rules $ include $RULE_PATH/exploit.rules $ include $RULE_PATH/scan.rules

Các rules trên ta có thể download trên internet, khi down về ta muốn phân

nhóm hoặc chỉnh sửa,độ ưu tiên các rules ta có thể cấu hình trong file

classification.config, file reference.config gồm các links tới web site với các thông

tin cho tất cả các alerts, include nó rất hữu tích , nhanh gọn Code:# include classification & priority settings include classification.config # include reference systems include reference.config

3.5. Tường lửa cho ứng dụng Mod_SecurityModSecurity là một bộ máy phát hiện và phòng chống xâm nhập dành cho

các ứng dụng web (hoặc 1 web application firewall). Hoạt động như một module

của máy chủ web Apache, mục đích của ModSecurity là tăng cường bảo mật cho

các ứng dụng web, bảo vệ chúng khỏi các loại tấn công đã biết và chưa biết.

Sinh viên thực hiện: Trần Quang Minh – 07B3 109

Page 110: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Hình 3.23. Hình minh họa tường lửa Mod_Security

Sau khi cài đặt Apache mặc định sẽ không có mod_security. Ta phải

download mod_security từ http://www.modsecurity.org về và cài đặt.

3.5.1. Các khả năng của mod_securityRequest filtering : tất cả các request gửi đến web server đều được phân tích

và cản lọc (filter) trước khi chúng được đưa đến các modules khác để xử lý. Anti-

evasion techniques : paths và parameters được chuẩn hoá trước khi phân tích để

chống evasion techniques. Kỹ thuật này sẽ được thảo luận ở phần sau.

Sinh viên thực hiện: Trần Quang Minh – 07B3 110

Page 111: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Hình 3.24. Quy trình xử lý các request của Apache và Mod_Security

Understanding of the HTTP protocol: mod_security là web application

firewall nên nó có khả năng hiểu được HTTP protocol. Mod_security có khả năng

cản lọc dựa trên các thông tin ở HTTP Header hay có thể xem xét đến từng

parameters hay cookies của các requests ...vv.

POST payload analysis: ngoài việc cản lọc dựa trên HTTP Header,

mod_security có thể dựa trên nội dung (payload) của POST requests.

Audit logging: mọi requests đều có thể được ghi lại (bao gồm cả POST ) để

chúng ta có thể xem xét sau nếu cần.

HTTPS filtering: mod_security có thể phân tích HTTPS.

Compressed content filtering: mod_security sẽ phân tích sau khi đã

decompress các request data.

3.5.2. Cấu hình cơ bản3.5.2.1. File cấu hình

Mod_security là application firewall thuộc loại rules-based, nghĩa chúng ta

cần thiết lập các luật (rules) để mod_security hoạt động. Các rules này được thể

hiện dưới dạng các chỉ thị (directives) và có thể đặt trực tiếp trong file cấu hình

Apache (thông thường là httpd.conf).Khi chúng ta không biết chắc chắn

mod_security đã được kích hoạt hay chưa thì có thể đặt các cấu hình.

Code:

<IfModule>#Modsecurity configuration#.....</IfModule>

Ngoài ra có thể đặt các cấu hình này vào một file riêng, chẳng hạn

modsecurity.conf và sau đó chúng ta cần thêm vào httpd.conf:

Code:

Include conf/modsecurity.conf

Sinh viên thực hiện: Trần Quang Minh – 07B3 111

Page 112: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

3.5.2.2. Turning Filtering on and off

Mặc định mod_security sẽ không kiểm tra các POST payload (nội dung của

POST), để kiểm tra cả POST payload tả sẽ sử dụng.

SecFilterScanPOST On

mod_security hỗ trợ 2 loại encoding:

application/x-www-form-urlencoded - used to transfer form data

multipart/form-data – used for file transfers

3.5.3. RulesRules là phần quan trọng nhất đối với một rule-based firewall và cũng là

phần dễ nhàm chán nhất. Ở phần này thay vì liệt kê các rules có thể của

mod_security, chúng tôi đề cập tới cách viết một rule thế nào.

Trước hết là ta phải hiểu về:

Cơ bản về giao thức http: Trong phạm vi của đề tài này chúng tôi không giới

thiệu về giao thức này một cách căn kẽ.

Có thể sử dụng Regular Expression: tạm dịch là biểu thức chính quy, đây là

một biểu thức mà nó sẽ đại diện cho một tập hợp các chuỗi ký tự . Regular

Expression được viết tắt là regex. Tham khảo quyển sách “Mastering Regular

Expression” của NXB O'reilly hoặc nhờ Google với từ khoá “regular expression”.

3.5.3.1. Xây dựng rules

Hãy bật browse lên và vào site modsecurity.org, dùng một chương trình nào

đó để capture lại các gói tin, chẳng hạn ethereal, chúng ta sẽ thu được:

Code:

GET /documentation/index.html HTTP/1.1

Host: www.modsecurity.org

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.1) Gecko/20060124 Firefox/1.5.0.1

Accept:

Sinh viên thực hiện: Trần Quang Minh – 07B3 112

Page 113: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

text/xml,application/xml,application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Referer: http://www.modsecurity.org/index.php

Cookie:__utmz=129890064.1139909500.1.1.utmccn=(direct)| utmcsr=(direct)|utmcmd=(none); __utma=129890064.347942152.1139909500. 1140275483.1140425527.13; __utmb=129890064; __utmc=129890064

Xem xét request ở trên chúng ta có thể thấy các HTTP Header sau :Code:GET – Đây là request methodHostUser-AgentAcceptAccept-LanguageAccept-EncodingAccept-EncodingKeep-AliveConnectionReferer

Mod_security sẽ sử dụng thông tin này trong các rules của nó để cản lọc các

requests, tất cả các thông tin trong header đều được sử dụng để viết các rules. Và

không chỉ trong header, mod_security cũng có thể xem xét cả POST payload như đã

nhắc tới ở trên, ...

Hãyxem xét ví dụ sau đây :

Không cho phép các request có Referer là www.abc.com thì sẽ dùng rule

sau: SecFilterSelective HTTP_Referer “www\.abc\.com”

Không cho phép User-Agent có từ HotBar: SecFilterSelective

HTTP_User-Agent “HotBar”

Sinh viên thực hiện: Trần Quang Minh – 07B3 113

Page 114: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Qua 2 ví dụ này ta thấy được cách thức làm việc với các HTTP header, và

không chỉ dừng lại ở đó mod_security thậm chí còn có thể hiểu được những header

khác không được đề cập ở trong RFC. Chẳng hạn tôi có một header có tên là

Conmaz thì tôi có thể viết rule là:

Code:

SecFilterSelective HTTP_Conmaz “^$”

Ngoài SecFilterSelective ra mod_security còn có một directive nữa cũng

dùng với mục đích cản lọc đó là SecFilter. SecFilter được dùng rất đơn giản, nếu

chúng ta muốn cản lọc một từ khoá nào đó ở bất cứ vị trí nào trong gói tin HTTP thì

chỉ cần : SecFilter keyword

Code:

SecFilter /bin/sh

3.5.3.2. Cấu trúc của Filtering Rules

Chúng ta hãy xem xét cấu trúc chi tiết của các filtering rulesCode:SecFilter KEYWORD [ACTIONS] SecFilterSelective LOCATION KEYWORD [ACTIONS]

Locations

Như các bạn đã thấy ở các ví dụ trên LOCATION ở đây có thể là tất cả các field

trong HTTP Header. Dưới đây là liệt kê những LOCATION mà bạn có thể sử dụng

trong SecFilterSelective

Code:

<!--[endif]-->REMOTE_ADDR: Địa chỉ IP của client

<!--[if !supportLists]--> <!--[endif]-->REMOTE_HOST: hostname của client (nếu tồn tại)

<!--[endif]-->REMOTE_USER : Authenticated username (nếu tồn tại)

<!--[if !supportLists]--> <!--[endif]-->REMOTE_IDENT : Remote Username (lấy từ inetd, ít dùng)

<!--[if !supportLists]--> <!--[endif]-->REQUEST_METHOD : Request Method (GET, HEAD, POST..)

Sinh viên thực hiện: Trần Quang Minh – 07B3 114

Page 115: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

<!--[if !supportLists]--> <!--[endif]-->SCRIPT_FILENAME : Đường dẫn đầy đủ của script thực thi

<!--[endif]-->PATH_INFO : Phần mở rộng của URI phía sau tên của một script, ví dụ /archive.php/5 thì PATH_INFO là /5

<!--[endif]-->QUERY_STRING : URI phía sau dấu ?. Ví dụ /index.php?i=1 thì QUERY_STRING là i=1

<!--[if !supportLists]--> <!--[endif]-->AUTH_TYPE : Basic hoặc Digest Authentication

<!--[endif]-->DOCUMENT_ROOT : đường dẫn đến documentroot

<!--[if !supportLists]--> <!--[endif]-->SERVER_ADMIN : email của Server Administrator

<!--[if !supportLists]--> <!--[endif]-->SERVER_NAME : hostname của Server

<!--[if !supportLists]--> <!--[endif]-->SERVER_ADDR : Địa chỉ IP của Server

<!--[if !supportLists]--> <!--[endif]-->SERVER_PORT : Server port

<!--[if !supportLists]--> <!--[endif]-->SERVER_PROTOCOL : protocol, (ví dụ HTTP/1.1)

<!--[if !supportLists]--> <!--[endif]-->SERVER_SOFTWARE : Apache version

<!--[if !supportLists]--> <!--[endif]-->TIME_YEAR : Năm hiện tại (2010)

<!--[if !supportLists]--> <!--[endif]-->TIME_MON : Tháng hiện tại (11)

<!--[if !supportLists]--> <!--[endif]-->TIME_DAY : Ngày

<!--[endif]-->TIME_HOUR : Giờ

<!--[if !supportLists]--> <!--[endif]-->TIME_MIN : Phút

<!--[if !supportLists]--> <!--[endif]-->TIME_SEC : Giây

<!--[if !supportLists]--> <!--[endif]-->TIME_WDAY : Thứ tự ngày trong tuần (ví dụ 4 - Thursday)

<!--[if !supportLists]--><!--[endif]--> TIME : Thời điểm hiện tại được viết theo cấu trúc : YmdHMS ví dụ 20101112144530 : 12/11/2010 14h 45' 30''

<!--[if !supportLists]--> <!--[endif]-->API_VERSION

<!--[if !supportLists]--> <!--[endif]-->THE_REQUEST : dòng đầu tiên của request. vd: GET / HTTP/1.1

<!--[if !supportLists]--> <!--[endif]-->REQUEST_URI : Request URI

<!--[endif]-->REQUEST_FILENAME : Tên file được yêu cầu đến.

<!--[if !supportLists]--> <!--[endif]-->IS_SUBREQ

Một vài LOCATION đặc biệt :

Sinh viên thực hiện: Trần Quang Minh – 07B3 115

Page 116: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Code :

<!--[if !supportLists]--> <!--[endif]-->POST_PAYLOAD – POST payload (nội dung của POST hay POST body)

<!--[if !supportLists]--> <!--[endif]-->ARGS - filter arguments,giống như QUERY_STRING|POST_PAYLOAD

<!--[if !supportLists]--> <!--[endif]-->ARGS_NAMES – variable/parameter names only

<!--[if !supportLists]--> <!--[endif]-->ARGS_VALUES – variable/parameter values only

COOKIES_NAMES - cookie names only

<!--[if !supportLists]--> <!--[endif]-->COOKIES_VALUES - cookie values only

<!--[if !supportLists]--> <!--[endif]-->SCRIPT_UID

<!--[if !supportLists]--> <!--[endif]-->SCRIPT_GID

<!--[if !supportLists]--> <!--[endif]-->SCRIPT_USERNAME

<!--[if !supportLists]--> <!--[endif]-->SCRIPT_GROUPNAME

<!--[if !supportLists]--> <!--[endif]-->SCRIPT_MODE

<!--[if !supportLists]--> <!--[endif]-->ARGS_COUNT

<!--[if !supportLists]--> <!--[endif]-->COOKIES_COUNT

<!--[if !supportLists]--> <!--[endif]-->HEADERS

<!--[if !supportLists]--> <!--[endif]-->HEADERS_COUNT

<!--[if !supportLists]--> <!--[endif]-->HEADERS_NAMES

<!--[if !supportLists]--> <!--[endif]-->HEADERS_VALUES

<!--[if !supportLists]--> <!--[endif]-->FILES_COUNTHTTP_header – search request header "header"

<!--[if !supportLists]--> <!--[endif]-->ENV_variable – search environment variable variable

<!--[if !supportLists]--> <!--[endif]-->ARG_variable – search request variable/parameter variable

<!--[if !supportLists]--> <!--[endif]-->COOKIE_name - search cookie with name name

<!--[if !supportLists]--> <!--[endif]-->FILE_NAME_variable - search the filename of the file uploaded under the name variable.

<!--[if !supportLists]--> <!--[endif]-->FILE_SIZE_variable - search the size of the file uploaded under the name variable

<!--[if !supportLists]--> <!--[endif]-->FILES_NAMES

Sinh viên thực hiện: Trần Quang Minh – 07B3 116

Page 117: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

<!--[if !supportLists]--> <!--[endif]-->FILES_SIZES

Thậm chí còn có vài LOCATION đặc biệt hơn:

Code:

<!--[endif]-->HTTP_header – search request header "header"

<!--[if !supportLists]--> <!--[endif]-->ENV_variable – search environment variable variable

<!--[if !supportLists]--> <!--[endif]-->ARG_variable – search request variable/parameter variable

<!--[if !supportLists]--> <!--[endif]-->COOKIE_name - search cookie with name name

<!--[if !supportLists]--> <!--[endif]-->FILE_NAME_variable - search the filename of the file uploaded under the name variable.

<!--[if !supportLists]--> <!--[endif]-->FILE_SIZE_variable - search the size of the file uploaded under the name variable

LOCATION có thể bao gồm hai hoặc nhiều các location đã được liệt kê

Code:

SecFilterSelective "REMOTE_ADDR|REMOTE_HOST" KEYWORD

Actions

Khi request vi phạm một rule nào đó thì mod_security sẽ thực thi một hành

động (action). Khi action không được chỉ rõ trong rule thì rule đó sẽ sử dụng default

action . Có 3 loại actions :

Primary Actions

Primary actions sẽ quyết định cho phép request tiếp tục hay không. Mỗi rule

chỉ có một primary action. Có 4 primary actions :

<!--[if !supportLists]--> <!--[endif]-->deny : Request sẽ bị ngắt, mod_security sẽ trả về HTTP status code 500 hoặc là status code của bạn thiết lập trong chỉ thị status:

<!--[if !supportLists]--> <!--[endif]-->SecFilter xxx "deny,status:403"

<!--[if !supportLists]--> <!--[endif]-->pass : Cho phép request tiếp tục được xử lý ở các rules tiếp theo

<!--[if !supportLists]--> <!--[endif]-->SecFilter secret "log,pass"

Sinh viên thực hiện: Trần Quang Minh – 07B3 117

Page 118: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

<!--[if !supportLists]--> <!--[endif]-->allow : Giống Pass tuy nhiên Request sẽ được cho phép và không bị kiểm tra ở các rules tiếp theo

<!--[if !supportLists]--> <!--[endif]-->SecFilterSelective REMOTE_ADDR "^192\.168\.2\.99$" allow

<!--[if !supportLists]--> <!--[endif]-->redirect : Redirect một request đến một url nào đó.

<!--[if !supportLists]--> <!--[endif]-->SecFilter /bin/sh "redirect:http://www.conmaz.com"

Secondary Actions

Secondary actions sẽ bổ sung cho Primary actions, một rule có thể có nhiều

Secondary actions

Code:

<!--[if !supportLists]--> <!--[endif]-->status : n khi một Request vi phạm một rule nào đó thì mod_security có thể trả về các HTTP status code n thay vì status code 500 mặc định.

<!--[if !supportLists]--> <!--[endif]-->SecFilterSelective “HTTP_Referer” “xxx.com” “deny,status:403”

<!--[if !supportLists]--> <!--[endif]-->exec : thực thi một lệnh nào đó nếu một request vi phạm

<!--[if !supportLists]--> <!--[endif]-->SecFilter /etc/passwd "exec:/usr/local/bin/report-attack.pl"

<!--[if !supportLists]--> <!--[endif]-->log : ghi log những request vi phạm rule

<!--[if !supportLists]--> <!--[endif]-->nolog : không ghi log

<!--[if !supportLists]--> <!--[endif]-->pause : n mod_security sẽ đợi một thời gian n ms rồi mới trả về kết quả.

Flow Actions:

Code:

<!--[if !supportLists]--> <!--[endif]-->chain: kết nối 2 hay nhiều rules lại với nhau

Ví dụ: chúng ta sẽ redirect một GET request về (conmaz.com/index.html)

nếu không đúng Referer và không có cookie có tên là rocker

Sinh viên thực hiện: Trần Quang Minh – 07B3 118

Page 119: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Code:

SecFilterSelective “REQUEST_METHOD” “^GET$”

SecFilterSelective “HTTP_REFERER” “!(www\.conmaz\.com|^$)” chain

SecFilterSelective “COOKIE_rocker” “^$” “redirect:http://www.conmaz.com/index.html”

<!--[if !supportLists]--> <!--[endif]-->skipnext:n mod_security sẽ bỏ qua n rules theo sau nó

<!--[if !supportLists]--> <!--[endif]-->SecFilterSelective ARG_p value1 skipnext:2

SecFilterSelective ARG_p value2

SecFilterSelective ARG_p value3

Default Action

Khi một rule không chỉ rõ action thì rule đó sẽ dùng default action được thiết

lập trong SecFilterDefaultAction.

SecFilterDefaultAction “deny,log,status:403”

Filter inheritance

Các rules thiết lập ở ngữ cảnh cha (parent context) sẽ được thừa kế ở ngữ

cảnh con (child context) , đây là điều chấp nhận được. Tuy nhiên có nhiều trường

hợp chúng ta không muốn thừa kế các Rules đó thì có thể sử dụng

SecFilterInheritance directive. Ví dụ:

Code:

<Location /view.php>

SecFilterInheritance Off

#......

</Location>

Khi SecFilterInheritance off ở ngữ cảnh (context) nào đó (ví dụ trên là file

view.php) thì chúng ta phải viết rules từ đầu tại ngữ cảnh đó. Thỉnh thoảng chúng ta

chỉ muốn một vài thay đổi nhỏ và nếu sử dụng SecFilterInheritance thì phải viết lại

rules từ đầu khá mất công, chính vì thế mod_security cung cấp thêm 2 directives để

giảm thiểu số lượng rules phải viết:

Sinh viên thực hiện: Trần Quang Minh – 07B3 119

Page 120: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Code:

SecFilterImport – Import một rule ở parent context.

SecFilterRemove – Remove một rule ở parent context

Ta sẽ sử dụng id vào cuối mỗi rule để định danh và sẽ được sử dụng trong 2

directives trên:

Code: (Ví dụ 1)

SecFilter XXX id:1001

SecFilter YYY id:1002

SecFilter ZZZ id:1003

<Location /subcontext/>

SecFilterInheritance Off

SecFilterImport 1003

</Location>

Code: (Ví dụ 2)

SecFilter XXX id:1001

SecFilter YYY id:1002

SecFilter ZZZ id:1003

<Location /subcontext/>

SecFilterRemove 1001 1002

</Location>

3.5.4. Logging3.5.4.1. Debug Log

Sử dụng SecFilterDebugLog directive lựa chọn file để ghi lại các thông tin

debug

Code:

SecFilterDebugLog logs/modsec_debug_log

Có thể thay đổi mức độ chi tiết các thông tin được log thông qua directive:

Code:

Sinh viên thực hiện: Trần Quang Minh – 07B3 120

Page 121: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

SecFilterDebugLevel 4

Giá trị log có thể thay đổi từ 0-9 :

Code:

<!--[if !supportLists]--> <!--[endif]-->0 - none (this value should always be used on production systems)

<!--[if !supportLists]--> <!--[endif]-->1 - significant events (these will also be reported in the error_log)

<!--[if !supportLists]--> <!--[endif]-->2 - info messages

<!--[if !supportLists]--> <!--[endif]-->3 - more detailed info messages

<!--[if !supportLists]--> <!--[endif]-->....

3.5.4.2.

3.5.4.3. Audit logging

Apache log ít thông tin vì thế nó không cho phép chúng ta có thể lần ngược

các bước của kẻ tấn công. Mod_security hỗ trợ audit logging với đầy đủ thông tin

và từ đó có thể lần ngược lại quá trình của kẻ tấn công, cũng như là chỉnh sửa các

rules cho hợp lý tránh bị “false positive”. Có hai directives:

Code:

SecAuditEngine On SecAuditLog logs/audit_log

Đây là một ví dụ của audit log: Code :==378bfd37============================== Request: conmaz.com 203.160.1.170 - - [20/Feb/2006:02:21:52 --0600] "GET /favicon.ico HTTP/1.1" 403 285 "-" "-" - "-" ---------------------------------------- GET /favicon.ico HTTP/1.1 Cookie: rocker=r0xker Host: conmaz.com Connection: Keep-Alive mod_security-message: Access denied with code 403. Pattern match "^$" at HEADER("User-Agent") mod_security-action: 403

Sinh viên thực hiện: Trần Quang Minh – 07B3 121

Page 122: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

HTTP/1.1 403 Forbidden Content-Length: 285 Keep-Alive: timeout=5, max=29 Connection: Keep-Alive Content-Type: text/html; charset=iso-8859-1 --378bfd37—

Khi SecFilterScanPOST on thì POST payload sẽ luôn được kèm theo trong

audit log

3.5.4.4. Tùy biến thông tin log

SecAuditEngine chấp nhận 4 giá trị sau :

Code:

<!--[if !supportLists]--> <!--[endif]-->On – log tất cả các requests

<!--[if !supportLists]--> <!--[endif]-->Off – không log

<!--[if !supportLists]--> <!--[endif]-->RelevantOnly – chỉ log những gì được sinh ra bởi các filtering rules

<!--[endif]-->DynamicOrRelevant – log những request tạo ra nội dung động hoặc những requests được sinh ra bởi các filtering rules.

Ngoài ra mod_security còn hỗ trợ log dựa vào status code , ví dụ bạn cần log

lại những requests gây ra lỗi 5xx :

Code:

SecAuditLogRelevantStatus ^5

Sinh viên thực hiện: Trần Quang Minh – 07B3 122

Page 123: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

4. CHƯƠNG 4: XÂY DỰNG MÔ HÌNH THỬ NGHIỆM ÁP DỤNG MÃ

NGUỒN MỞ VÀO TĂNG CƯỜNG BẢO MẬT HỆ THỐNG

4.1. Thực tế tại Bộ Kế hoạch và Đầu tưTrên thực tế tại Bộ Kế hoạch và Đầu tư đã ứng dụng phương thức dựng một

máy chủ chắn trước máy chủ dịch vụ HTTP từ năm 2003. Do những lý do về bảo

mật nên trong phạm vi của đề tài này chúng tôi chỉ đề cập đến mô hình trên một hệ

điều hành linux cụ thể hoàn toàn có thể áp dụng cho mọi hệ thống dịch vụ HTTP

chứ không riêng MPIPortal. Mô hình hệ thống chắn trước chúng tôi đã áp dụng

không phân biệt hệ thống dịch vụ HTTP đứng phía sau được xây dựng trên nền tảng

ngôn ngữ lập trình nào, không phân biệt công nghệ Portal của hãng nào,…

Trong phần mô hình thử nghiệm chúng tôi xây dựng một hệ thống đề mô để

bảo vệ MPIPortal trên máy ảo. Hệ thống này ứng dụng các phần mềm nguồn mở đã

được giới thiệu và phân tích ở trên và được ứng dụng vào việc bảo mật hệ thống

MPIPortal được cài đặt, cấu hình trong mô hình mạng thực tế năm 2009 của Bộ kế

hoạch và Đầu tư như đã giới thiệu, phân tích ở các phần trước. Chúng tôi không đưa

ra toàn bộ các cấu hình và trù bị bảo mật thực sự của MPIPortal vì lý do bảo mật.

4.2. Yêu cầu khi cài đặt hệ thốngThực tế khi triển khai trên hệ thống bảo mật sử dụng phần mềm Mã nguồn

mở sẽ được xây dựng trên máy tính cá nhân. Trong đó những phần mềm không thể

thiếu khi xây dựng hệ thống này bao gồm:

4.2.1. Sử dụng chương trình máy ảo VMWareĐể thuận tiện cho việc xây dựng hệ thống bảo mật. Toàn bộ mô hình bảo mật

sẽ được xây dựng trên máy ảo VMWare phiên bản 7.1.

4.2.2. Sử dụng hệ điều hành mã nguồn mở CentosPhiên bản hệ điều hành sử dụng cho hệ thống sẽ là Centos 5.5

4.2.3. Sử dụng Snort Sniffer mode: đọc toàn bộ các gói tin qua card mạng và hiển thị trên màn

hình quản trị.

Packet Logger mode: ghi log toàn bộ gói tin lên ổ đĩa.

Sinh viên thực hiện: Trần Quang Minh – 07B3 123

Page 124: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

Network Intrustion Detection (NIDS) mode: Cho phép Snort phân tích

traffic dựa trên các tập luật được định nghĩa và thực hiện các hành động dựa

trên kết quả phân tích.

4.2.4. Sử dụng Iptables Để ngăn chặn truy cập không hợp lệ dựa vào trạng thái của gói tin

Hạn chế truy cập khi máy chủ hứng chịu lượng lớn truy cập tại cùng một thời

điểm.

Ghi log để phân tích.

4.2.5. Sử dụng Mod_securityLà một Firewall cho ứng dụng web, có khả năng ghi lại dấu vết traffic cho

phép giảm sát, phát hiện và chống các cuộc tấn công vào ứng dụng web.

Sinh viên thực hiện: Trần Quang Minh – 07B3 124

Page 125: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

5. CHƯƠNG 5: KẾT LUẬN

5.1. Mở đầu

Sau khoảng thời gian là hai tháng, nhờ sự hướng dẫn tận tình của thầy giáo

Thái Thanh Tùng, em đã hoàn thành được đồ án Ứng dụng mã nguồn mở vào bảo

mật hệ thống của Bộ Kế hoạch và đầu tư. Trong quá trình từ tìm hiểu đến khi hoàn

thành đồ án, em đã trải qua tất cả quá trình khi xây dựng một hệ thống bảo mật. Qua

quá trình phát triển đề tài em đã rút ra được một số ưu điểm cũng như hạn chế của

đề tài.

Ưu điểm:

Đề tài đã xây dựng được hệ thống bảo mật hoàn chỉnh. Các phần mềm của hệ

thống như Snort, Iptables, và Mod_security được cài đặt vào hệ thống tạo nên một

hệ thống ưu việt. Hệ thống này có khả năng chống được tấn công cơ bản như DOS.

Hệ thống này sẽ rất hữu ích cho những hệ thống mạng theo mô hình Server – Client

Nhược điểm:

Hiện nay đề tài mới chỉ được xây dựng thử nghiệm trên máy ảo VMWare.

Do đó yêu cầu cần có một hệ thống mạng thực sự để có thể thể hiện rõ khả năng bảo

mật đối với một hệ thống lớn. Đồng thời việc xây dựng thử nghiệm trên máy ảo và

trên hệ thống thật có thể sẽ khác nhau nên có thể sẽ xảy ra nhiều sự cố chưa lường

trước được.

5.2. Hướng phát triển của hệ thốngVới những gì đã làm được trong đề tài, em sẽ phát triển đề tài để có thể triển

khai được đề tài này trên hệ thống lớn. Đồng thời khắc phục được sự cố

những phát sinh khi triển khai hệ thống này.

5.3. Kết LuậnKhi hoàn thiện đề tài không thể tránh khỏi có những sai sót. Em rất mong

nhận được sự góp ý của thầy cô và bạn bè để đề tài ngày càng hoàn thiện hơn.

Sinh viên thực hiện: Trần Quang Minh – 07B3 125

Page 126: Ứng dụng mã nguồn mở vào bảo mật hệ thống của …dulieu.tailieuhoctap.vn/books/luan-van-de-tai/luan-van... · Web viewVIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG

Ứng dụng mã nguồn mở vào bảo mật hệ thống của Bộ Kế hoạch và Đầu tư

DANH MỤC TÀI LIỆU THAM KHẢO

[1] Patrick S. Harper, Oinkmaster Installation and Configuration Guide

[2] Andy Firman, Debian, Snort, Barnyard, BASE, & Oinkmaster Setup

Guide

[3] Mark Cooper, Stephen Northcutt, Matt Fearnow, Karen Frederick,

Intrusion

Signatures and Analysis

[4] Angela D. Orebaugh, Simon Biles, Jacob Babbin, “Snort Cookbook “

[5] Roman Danyliw, “ACID: Installation and Configuration”

[6] Chris Vespermann, “Snort, MySQL 5, Apache, and BASE for Gentoo

Linux”

[7] Brian Laing, ISS, “How To Guide: Intrusion Detection Systems”

[8]Richard Bejtlich, “Extrusion Detection: Security Monitoring for Internal

Intrusions”

Sinh viên thực hiện: Trần Quang Minh – 07B3 126