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
184
Embed
Ứ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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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
Ứ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
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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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ư
#-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
Ứ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
Ứ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
Ứ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
Ứ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.
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
Ứ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,
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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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:
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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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
Ứ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â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
Ứ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
Ứ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.
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
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:
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.