Hiện tại Cổng thông tin điện tử Bộ Kế hoạch và Đầu tư đã dần đáp ứng nhucầ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 Đề án30, chiến lược, quy hoạch, kế hoạch
Trang 1KHOA 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
Trang 2M C L C ỤC LỤC ỤC LỤC
DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT 5
DANH MỤC HÌNH VẼ 6
CHƯƠNG 1 – MỞ ĐẦU 7
1.1 Giới thiệu 7
1.1.1 Giới thiệu chung 7
1.1.2 Lý do lựa chọn đề tài 7
CHƯƠNG 2 – PHÂN TÍCH TÌNH HÌNH ỨNG DỤNG VÀ PHÁT TRIỂN 11 2.1 Tình hình ứng dụng và phát triển của Quốc tế 11
2.1.1 Trình duyệt web 11
2.1.2 Máy chủ web 12
2.2 Tình hình ứng dụng và phát triển của Việt Nam 13
2.2.1 Về cơ chế chính sách 13
2.2.2 Về đào tạo và hướng dẫn sử dụng 14
2.2.3 Về tuyên truyền nâng cao nhận thức 14
2.2.4 Về triển khai lại một số nơi cụ thể 14
2.2.5 Khó khăn vướng mắc 15
CHƯƠNG 3 – PHÂN TÍCH HỆ THỐNG MÃ NGUỒN MỞ ĐỂ TĂNG CƯỜNG BẢO MẬT CHO CỔNG THÔNG TIN ĐIỆN TỬ 16 3.1 Giới thiệu chung 16
3.2 Netfilter/Iptables 16
3.2.1 Giới thiệu Netfilter/Iptables 16
3.2.2 Giới thiệu kỹ thuật NAT 17
3.2.3 Cấu trúc của Iptables 19
3.2.4 Xử lý gói của iptables 20
3.2.5 Target 23
3.2.6 Các tham số chuyển mạch quan trọng iptables: 25
3.2.7 Sử dụng user defined chains 29
3.2.8 Lưu lại những đoạn mã iptables 30
Trang 33.2.9 Những Module Kernel cần thiết 31
3.2.10 Những đoạn Iptables mẫu 32
3.2.11 Sửa lỗi bảng iptables 43
3.3 Webserver Apache 44
3.3.1 Mô tả cụ thể của lõi Apache 45
3.3.2 Các module chuẩn: 45
3.3.3 Tối ưu Apache 47
3.4 IDS và hệ thống phát hiện xâm nhập Snort 54
3.4.1 Tổng quát về phát hiện xâm nhập (IDS) 54
3.4.2 Chức năng của IDS 54
3.4.3 Kiến trúc hệ thống IDS 56
3.4.4 Phân loại IDS 59
3.4.5 Công cụ hỗ trợ của IDS 64
3.4.7 Phân loại các dấu hiệu trong hệ thống IDS 69
3.4.8 Một số kiến thức cơ bản về Snort 73
3.5 Tường lửa cho ứng dụng Mod_Security 107
3.5.1 Các khả năng của mod_security 108
3.5.2 Cấu hình cơ bản 109
3.5.3 Rules 110
3.5.4 Logging 118
CHƯƠNG 4: XÂY DỰNG MÔ HÌNH THỬ NGHIỆM ÁP DỤNG MÃ NGUỒN MỞ VÀO TĂNG CƯỜNG BẢO MẬT HỆ THỐNG 121 4.1 Thực tế tại Bộ Kế hoạch và Đầu tư 121
4.2 Yêu cầu khi cài đặt hệ thống 121
4.2.1 Sử dụng chương trình máy ảo VMWare 121
4.2.2 Sử dụng hệ điều hành mã nguồn mở Centos 121
4.2.3 Sử dụng Snort 121
4.2.4 Sử dụng Iptables 122
4.2.5 Sử dụng Mod_security 122
Trang 4CHƯƠNG 5: KẾT LUẬN 123
5.1 Mở đầu 1235.2 Hướng phát triển của hệ thống 1235.3 Kết Luận 123
Trang 5LỜ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ủaViện Đại Học Mở Hà Nội nói chung và các thầy giáo, cô giáo trong khoa Côngnghệ 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 đồ ántố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ềukiế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 khoahọ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 TrungTâ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è đã độngviên, đóng góp ý kiến và giúp đỡ em trong quá trình học tập, nghiên cứu và hoànthà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
Trang 61 DANH MỤC KÝ HIỆU, CHỮ VIẾT TẮT
Transmission Control Protocol
5 NAT Network Address Translate Phiên dịch từ địa chỉ mạng IP
6 DNAT Destination Network Address
Translate
Phiên dịch từ địa chỉ mạng IPđích
7 SNAT Source Network Address
Translate
Phiên dịch từ địa chỉ mạng IPnguồn
8 FTP File Transfer Protocol Giao thức truyền tập tin
11 DHCP Dynamic Host Configuration
Protocol
Giao thức cấu hình động máychủ
12 DSL Digital Subcriber Line Kênh thuê bao số
13 HTTP HyperText Transfer Protocol Giao 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 HIDS Host Based Intrusion
17 UDP User Datagram Protocol Giao thức không liên kết
trang
Trang 71 Hình 2.1 Bảng thống kê số lượng người sử dụng các trình duyệt
2 Hình 2.2 Thị phần người sử dụng trên trình duyệt 10/2010 13
4 Hình 2.4 Biểu đồ thể hiện thị phần máy chủ trên thế giới 14
10 Hình 3.6 Các loại queues và chain cùng chức năng của nó 22
11 Hình 3.7 Sơ đồ mô tả đường đi của gói dữ liệu 23
12 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.9 Các tham số chuyển mạch (switching) quan trọng của
14 Hình 3.10 Bảng các điều kiện TCP và UDP thông dụng 27
16 Hình 3.12 Bảng các điều kiện mở rộng thông dụng 29
26 Hình 3.22 Hình minh họa các thành phần của Snort 75
27 Hình 3.23 Hình minh họa tường lửa Mod_security 108
28 Hình 3.24 Quy trình xử lý các request của Apache và
Trang 81 CHƯƠNG 1 – MỞ ĐẦU
1.1 Giới thiệu
1.1.1 Giới thiệu chung
Hiệ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ị, doanhnghiệ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 nhucầ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 (Đề án30), 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ư trongnướ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 tincũ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ườngcô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 ứngdụ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
Trang 9bả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ậtcá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ớicác phần mềm thương mại Ví dụ: Chi phí cho Hệ điều hành Windows 7 và các ứngdụ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ảnquyề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ủangườ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ềmthươ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ápchung, 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ảomậ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áttriể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ạikhô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éplậ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ớicá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 đổichú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úpcá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
Trang 10Chấ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 nhautrê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ênbả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ẫncò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ốtnhấ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ữuriê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ăngliê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 DoPMNM 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âmcung 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ữnghay 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ườnghợ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ặcthay đổ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ớiphầ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ằngcá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:
Trang 11Cá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 Windowshoặ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ôngtin) 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.1 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ốngdự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ốngthự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ảomậ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ăngcườ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
Trang 122 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ụngPMNM 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 web
Firefox (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
Trang 13Thống kê thị phần máy chủ trên thế giới từ 8/1995 đến 11/2010
Developer October 2010 Percent November 2010 Percent Change
Trang 14Hình 2.4 Biểu đồ thể hiện thị phần máy chủ trên thế giới.
Chính phủ nhiều nước trên thế giới đã ứng dụng PMNM: Mỹ, EU, Pháp,Đức, Hà Lan, Nga, Thổ Nhĩ Kỳ, Ý, Tây Ban Nha, Thụy Sĩ, Macedonia, TrungQuốc, Ấn Độ, Nhật, Hàn, Malaysia, Thailand, Brazil, Venezuela, Ecuador, NamPhi, Úc, Iran… Nhiều hãng máy tiính hàng đầu đã cài sẵn các ứng dụng PMNMtrên máy tính để bàn: Dell, HP, Lenovo, Acer, Toshiba, Asus, Samsung… Khoảng50% trong 500 doanh nghiệp hàng đầu thế giới đã dùng PMNM điển hình:Amazon.com, eBay.com, Google, Yahoo …
2.2 Tình hình ứng dụng và phát triển của Việt Nam
2.2.1 Về cơ chế chính sách
Đảng và Nhà nước ta đã xác đinh thúc đẩy ứng dụng và phát triển phần mềmnguồn mở (PMNM) là một trong những nhiệm vụ trọng tâm cần thực hiện nhằmgóp phần thực thi Luật sở hữu trí tuệ và giảm chi phí mua sắm phần mềm, thúc đẩyphát triển công nghiệp công nghệ thông tin nói chung và công nghiệp phần mềmViệt Nam nói riêng để thúc đẩy phát triển kinh tế xã hội Điều này đã được khẳngđịnh trong văn bản mà Đảng và Nhà nước đã ban hành
Trong thời gian qua Thủ tướng Chính phủ ban hành các Quyết định nhưQuyết đinh số 169/QĐ-TTg và 223/QĐ-TTg; Quyết định 51/2007/QĐ-TTg , trong
Trang 15các Quyết đinh trên có lồng ghép các quy đinh về ưu tiên mua sắm PMNM Ngoài
ra, Bộ Thông tin và truyền thông cũng đã ban hành Thông tư 02/2007/TT-BBCVThướng dẫn chi tiết một số nội dung của Quyết đinh số 169/2006/QĐ-TTg, Quyếtđịnh số 223/2006/QĐ-TTg; Quyết định số 08/2007/QĐ-BTTTT ban hành danh mụcsản phẩm PMNM được ưu tiên mua sắm, sử dụng làm cơ sở để các cơ quan nhànước ưu tiên mua sắm khi thực hiện mua sắm sản phẩn mềm và Chỉ thị07/2008/CT-BTTTT về việc đẩy mạnh sử dụng phần mềm mã nguồn mở trong hoạtđộng của cơ quan, tổ chức nhà nước
2.2.2 Về đào tạo và hướng dẫn sử dụng
Bộ Giáo dục và Đào tạo đã ban hành văn bản chỉ đạo điều hành các Sở vàtrường đại học trong việc đưa PMMN vào chương trình giảng dạy và sử dụng Một
số trường đại học đã áp dụng (Cần Thơ); Bộ Khoa học và Công nghệ tổ chức tậphuấn cho tất cả các Bộ ngành và địa phương về sử dụng Open Office, Firefox,Unikey; Bộ Thông tin và truyền thông có công văn gửi Bộ Nội vụ, Bộ Lao động vàThương Binh Xã Hội đưa vào nội dung đào tạo và cấp chứng chỉ (CVC); Các Bộ
Kế hoạch và Đầu tư, Công an, Quốc phòng thành phố Hà Nội, Hồ Chí Minh đã tổchức các khóa đào tạo PMNM phục vụ công tác triển khai; HaNoiLug, SaigonLug đào tạo cho cộng đồng ngay tai các trường đại học
2.2.3 Về tuyên truyền nâng cao nhận thức
Triển khai cung cấp thông tin, xây dưng các phóng sự, buổi tọa đàm trêntruyền hình như trên VTV, VTC và một số đài truyền hình địa phương; Tạp chíchuyên ngành về CNTT, Báo Điện Tử VnExpress, báo giấy, trang thông tin điện tử,diễn đàn đã đưa nội dung về PMNM Tổ chức và tham gia tổ chức các kiện đểcung cấp thông tin, nâng cao nhận thức, giới thiệu và cung cấp giải pháp về PMNM(Hội thảo quốc gia, IT Week, Thi Olympic Tin học…); Xây dựng tài liệu, sách, đĩachương trình để tuyên truyền và phổ biến
2.2.4 Về triển khai lại một số nơi cụ thể
Hệ thống thông tin các cơ quan Đảng, gần như toàn bộ hệ thống máy chủdùng PMNM (~2000 máy) Khoảng 14.000 PCs đã dùng OpenOffice/Windows
Trang 16(Tỉnh Ủy Khánh Hòa, 50% máy PCs đã dùng Ubuntu); Hệ thống thông tin trên máychủ của nhiều tỉnh, bộ ngành sử dụng các giải pháp nguồn mở chạy trên HĐH RedHat; Hệ thống thông tin trên máy chủ của nhiều tỉnh, bộ, ngành sử dụng các giảipháp nguồn mở chạy trên Hệ diều hành Red Hat; Khoảng 70 trường Đại học, Caođăng đã dùng Moodle, Cổng thông tin và diễn đàn giáo dục của Bộ GDĐT đượcxây dựng trên nguồn mở; Hệ thống tường lửa và Hội nghị truyền hình trên nềnnguồn mở đã được ứng dụng tại 55 cơ quan Công an Địa phương Hệ thống giámsát xâm nhập trái phép, kiểm soát nội dung Internet; Tỉnh Bắc Giang, tỉnh HảiDương, Tổng cục Du lịch, một số đơn vị thuộc Bộ Khoa học và Công Nghệ, SởThương Mại Hồ Chí Minh, Hà Nội (Portal), Tp HCM (Openlab)
2.2.5 Khó khăn vướng mắc
Nhậ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ựccho 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ủangười dùng; Mô hình kinh doanh? Dịch vụ chưa được coi trọng; Việc chỉ đạo chưathố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
Trang 173 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ữngphầ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/Iptables
3.2.1 Giới thiệu Netfilter/Iptables
Iptables 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ếnhà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
Trang 18Iptables do Netfilter Organization viết ra để tăng tính bảo mật của hệ thốngLinux 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 NAT
Trước khi đi vào phần chính, chúng tôi muốn giới thiệu về công nghệ đổi địachỉ NAT động và đóng giả IP Masquerade Hai thuật ngữ này được dùng rất nhiềutrong Iptables
Cách đổi địa chỉ IP động – dynamic NAT
NAT (Network Address Translation) động là một trong những kĩ thuậtchuyể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 IPmớ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ảngNAT độ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ỉ đích203.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ểntiếp (forward) gói dữ liệu từ 192.168.0.200 đến 203.162.2.200 và ngược lại
Trang 19Hì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ồn192.168.0.168:1204, đích 211.200.51.15:80 đến router, router sẽ đổi nguồn thành203.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, đích203.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áynội với máy bên ngoài qua router
Hình 3.3 Bảng NAT (Masquerade)
Trang 203.2.3 Cấu trúc của Iptables
Iptables đượ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 conntrackdùng để theo dõi các kết nối Mỗi table gồm nhiều mắt xích (chain) Chain gồmnhiề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ậngó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
Trang 213.2.4 Xử lý gói của iptables
Tất cả mọi gói dữ liệu đều được kiểm tra bởi iptables bằng cách dùng cácbả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
Trang 22Các loại queues và chain cùng chức năng của nó:
Loại
queues
Chức năng queues
INPUT Lọc gói đi đến firewall
OUTPUT Lọc gói đi ra khỏi firewall.a
NAT
NetworkAddressTranslation(Biên dịchđịa chỉmạng)
PREROUTING
Việc thay đổi địa chỉ diễn ratrước khi dẫn đường Thay đổiđịa chỉ đích sẽ giúp gói dữ liệuphù hợp với bảng chỉ đường củafirewall Sử dụng estination NAT
or DNAT
POSTROUTING
Việc thay đổi địa chỉ diễn ra saukhi dẫn đường Sử dụng sourceNAT, or SNAT
OUTPUT
NAT sử dụng cho các gói dữ liệuxuất phát từ firewall Hiếm khidùng trong môi trường SOHO(small office - home office)
Mangle Chỉnh sửa
TCP header
PREROUTING POSTROUTINGOUTPUTINPUTFORWARD
Điều chỉnh các bit quy địch chấtlượng dịch vụ trước khi dẫnđường Hiếm khi dùng trongmô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ó
Trang 23Để 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
Trang 24Đầu tiên, gói dữ liệu đến mạng A, tiếp đó nó được kiểm tra bởi mangle tablePREROUTING chain (nếu cần) Tiếp theo là kiểm tra gói dữ liệu bởi NAT tablePREROUTING 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ởiFORWARD chain của filter table, và nếu cần gói dữ liệu sẽ được SNATtrong 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ẽ đượckiể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 trongcá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 tratrong 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ệunhằ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 POSTROUTINGchain
3.2.5 Target
Targets là hành động sẽ diễn ra khi một gói dữ liệu được kiểm tra và phù hợpvớ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
Trang 25Targets Ý 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ý
DROP
iptables ngừng xử lý gói dữ liệu đó và gói dữ liệu bị chặn, loại 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ặn
và loại bỏ
reject-with qualifierTham số qualifier sẽ cho biết loạithô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, địa
chỉ đích của gói dữ liệu sẽ được viết lại
to-destination ipaddressIptables sẽ viết lại địa chỉ ipaddressvào địa chỉ đích của gói dữ liệu
SNAT
Dùng để thực hiện Source network address
translation, viết lại địa chỉ nguồn của gói dữ liệu
[ to-ports
<port>[-<port>]]
Trang 26Mặc định thì địa chỉ IP nguồn sẽ giống như IP nguồn của firewall
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)
-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ỏifirewall
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
Các điều kiện TCP và UDP thông dụng (Hình 3.10)
Trang 27Lệ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ộtgiá 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ộtgiá 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ộtgiá 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
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ề ICMP
Code:
iptables –A OUTPUT –p icmp –icmp-type echo-request –j ACCEPT
iptables –A INPUT –p icmp –icmp-type echo-reply –j ACCEPT
Trang 28Iptables đượ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 trongmộ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 echorequests 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ủaiptables 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ốidị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
Trang 29Các điều kiện mở rộng thông dụng:
-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
Trang 30Đây là phần mở rộng tiếp theo của ví dụ trước:
cũ đã thiếp lập bằng cách dùng tham số -m state và –state ESTABLISHED
3.2.7 Sử dụng user defined chains
Chuỗi User Defined Chains nằm trong bảng iptables Nó giúp cho quá trinh
xử lý gói tốt hơn Ví dụ: Thay vì sử dụng gói đơn được xây dưng trong chain cho tất
cả giao thức, ta có thể sử dụng chain này để quyết đinh loại giao thức cho gói và sau
đó kiểm soát việc xử lý user-defined, protocol-specific chain trong bảng filter table.Mặt khác, ta có thể thay thế một chuỗi “long chain” với chuỗi chính “stubby mainchain” bới nhiều chuỗi “subby chain”, bằng cách chia ngắn đó tổng chiều dài của tất
cả chain gói phải thông qua
Sáu lệnh sau giúp việc cải tến tốc độ xử lý:
Code:
iptables -A INPUT -i eth0 -d 206.229.110.2 -j fast-input-queue
iptables -A OUTPUT -o eth0 -s 206.229.110.2 -j fast-output-queue
iptables -A fast-input-queue -p icmp -j icmp-queue-in
iptables -A fast-output-queue -p icmp -j icmp-queue-out
iptables -A icmp-queue-out -p icmp icmp-type echo-request -m state state NEW -j ACCEPT iptables -A icmp-queue-in -p icmp icmp-type echo-reply -j ACCEPT
Trang 31DANH SÁCH CÁC LỆNH (QUEUE) (Hình 3.13)
INPUT Được xây dựng trong INPUT chain trong bảng iptables
OUTPUT Được xây dựng trong ONPUT chain trong bảng iptables
gói đến những protocol specific chains
icmp-queue-out lệnh output tách riêng cho giao thức ICMP
icmp-queue-in Lệnh input tách riêng cho giao thức ICMP
Hình 3.13 Danh sách các lệnh (Queue)
3.2.8 Lưu lại những đoạn mã iptables
Đoạn mã iptables được lưu tạm thời ở file “/etc/sysconfig/iptables”
Định dạng mẫu trong file iptables cho phép giao thức ICMP, IPSec (nhữnggói ESP và AH), thiết lập liên kết, và quay lại SSH
Code:
[root@mpicachesrv ~]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
Trang 32:PORT_SCAN - [0:0]
:TCP_IN - [0:0]
#:DETECT_NMAP - [0:0]
# Block outgoing NetBios
-I OUTPUT -p tcp -o eth0 sport 137:139 -j DROP
-I OUTPUT -p udp -o eth0 sport 137:139 -j DROP
# Allow local loopback
-I INPUT -i lo -j ACCEPT
# Allow three ssh connections
-I INPUT -p tcp dport 22 -m state state NEW,ESTABLISHED -j ACCEPT
#-I INPUT -p tcp -s 0/0 sport 513:65535 dport 22 -m state state NEW,ESTABLISHED -m recent name sshlish set -j ACCEPT
#-I INPUT -p tcp dport 22 -m state state NEW -m recent update seconds 600 hitcount 10 -j DROP#-A OUTPUT -p tcp -s 127.0.0.1 -d 0/0 sport 22 dport 513:65535 -m state state ESTABLISHED -j ACCEPT
### Deny all
COMMIT
[root@mpicachesrv ~]#
3.2.9 Những Module Kernel cần thiết
Modun Kernel cần thiết để hoạt động một vài chương trình của ứng dụngiptables 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ộtfirewall
NAT
Trang 33Chú ý: 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ạicuố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ưutrong 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ẫu
1.1.1.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 trongfile hệ thống /proc qua file /etc/sysctl.conf Dùng file /etc/systl.conf cho các thông
# -# Disable routing triangulation Respond to queries out
# the same interface, not another Helps to maintain state
# Also protects against IP spoofing
Trang 341.1.1.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ệckiểm tra đường truyền internet từ những địa chỉ riêng RFC1918 Nhiều hơn nhứngkhở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ầnthiết lặp lại những trạng thái tương tự
Đoạn mã firewall hoàn tất:
Trang 35# definitions at the top of your script
#
#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=
EXTERNAL_INT="eth0" # External Internet interface
EXTERNAL_IP="97.158.253.25" # Internet Interface IP address
# -iptables -A INPUT -i $EXTERNAL_INT -j valid-src
iptables -A FORWARD -i $EXTERNAL_INT -j valid-src
iptables -A OUTPUT -o $EXTERNAL_INT -j valid-dst
iptables -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 DROP
iptables -A valid-src -s $172.16.0.0/12 -j DROP
iptables -A valid-src -s $192.168.0.0/16 -j DROP
iptables -A valid-src -s $224.0.0.0/4 -j DROP
iptables -A valid-src -s $240.0.0.0/5 -j DROP
iptables -A valid-src -s $127.0.0.0/8 -j DROP
iptables -A valid-src -s 0.0.0.0/8 -j DROP
iptables -A valid-src -d 255.255.255.255 -j DROP
iptables -A valid-src -s 169.254.0.0/16 -j DROP
iptables -A valid-src -s $EXTERNAL_IP -j DROP
iptables -A valid-dst -d $224.0.0.0/4 -j DROP
Trang 361.1.1.3 Sự cho phép của máy chủ DNS truy cập đến Firewall
Firewall không thể tạo yêu cầu DNS queries đến Internet bởi vì Internet đượcyê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ũngcho những firewall làm việc trong một bộ đệm hoặc có vai trò như DNS server
Code:
iptables -A OUTPUT -p udp -o eth0 dport 53 -sport 1024:65535 -j ACCEPT
iptables -A INPUT -p udp -i eth0 sport 53 -dport 1024:65535 -j ACCEPT
1.1.1.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 đượcquả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ự địnhtrướ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ậpchế độ 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
Trang 37Đoạn mã iptables này có thể cho phép một user tren firewall sử dụng Webbrowser đến giao tiếp Internet Đường truyền giao thức HTTP sử dụng TCP port 80,HTTPs (HTTP secure) port 443
# -iptables -A INPUT -j ACCEPT -m state state ESTABLISHED,RELATED -i eth0 -p tcp
Nếu muốn tất cả đường truyền từ firewall được chầp nhận, sau đó xoá:
Code:
-m multiport dport 80,443 -m multiport sport 1024:65535
1.1.1.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ạng192.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 đếnfirewall và mạng ở nhà
Code:
# -# Allow all bidirectional traffic from your firewall to the protected network
# Interface eth1 is the private network interface
Trang 38Đườ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ấthiện như là nó bắt đầu từ địa chỉ IP đơn trên vị trí Internet của Firewall Địa chỉ IPmặt nạ (masquerade) luôn luôn mặc đinh đến địa chỉ IP của giao tiếp chính củafirewall Ư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ụngPOSTROUTING 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 địnhtuyến giữa Internet và giao tiếp mạng riêng của Firewall Điều này được thực hiệnbởi IP enabling bằng cách cho file /proc/sys/net/ipv4/ip_forward giá trị 1 như là đốivới giá trị mặc định 0
Một masquerading đươc thiết lập sử dụng POSTROUTING chain của bảngNAT 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époutbound đến Internet, nhưng chỉ những gói liên quan đến liên kết ESTABLISHEDmớ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ườinà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
Trang 39# Included only as a reminder.
# -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
1.1.1.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ếpvới Internet và ta muốn dẫn một trang Web trên một trong những Home server đượcbả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 NATtable Giống như Masquerading, module iptables_nat phải được tải và định tuyếnphải được hiển thị cho port forwarding để làm việc Đinh tuyết cũng phải được phéptrong bảng iptables với FORWARD chain, điều này bao gồm tất cả liên kết NEWinbound từ Internet làm phù hợp port forwarding và tất cả gói liên kết với kết nốiESTABLISHED trong những điều khiển:
Trang 40
# -# 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