Đồ án Tìm hiểu vấn đề bảo mật mạng LAN

Tài liệu Đồ án Tìm hiểu vấn đề bảo mật mạng LAN: MỤC LỤC LỜI CẢM ƠN Trước tiên em xin gửi lời cảm ơn chân thành đến GS, TS.Trần Hữu Nghị hiệu trưởng nhà trường người đã có công lớn trong việc sáng lập ra trường ĐHDL Hải Phòng. Đồng thời em xin gửi lời cám ơn xâu sắc tới các thầy, các cô trong tổ Bộ môn tin học của trường ĐHDL Hải Phòng những người đã tận tình giảng dạy và cung cấp những kiến thức quý báu cho em trong suốt bốn năm học qua. Đặc biệt em xin chân thành cám ơn TS. Phạm Hồng Thái và CN. Lương Việt Nguyên - trường Đại học công nghệ các thầy đã dành nhiều thời gian vô cùng quý báu tận tình hướng dẫn em cũng như tạo mọi điều kiện thuận lợi để em có thể hoàn thành tốt đề tài. Cuối cùng em cũng xin cảm ơn gia đình, bạn bè những người thân luôn bên cạnh động viên, giúp đỡ và tạo mọi điều kiện thuận lợi cho em . Do còn hạn chế về kiến thức và kinh nghiệm nên luân văn còn nhiều thiếu sót em rất mong được sự phê bình, đánh giá và góp ý của thầy cô và các bạn. Em xin chân thành cảm ơn! Hải Phòng, Ngày tháng 8 năm 2007. Sinh...

doc66 trang | Chia sẻ: hunglv | Lượt xem: 1274 | Lượt tải: 3download
Bạn đang xem trước 20 trang mẫu tài liệu Đồ án Tìm hiểu vấn đề bảo mật mạng LAN, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
MỤC LỤC LỜI CẢM ƠN Trước tiên em xin gửi lời cảm ơn chân thành đến GS, TS.Trần Hữu Nghị hiệu trưởng nhà trường người đã có công lớn trong việc sáng lập ra trường ĐHDL Hải Phòng. Đồng thời em xin gửi lời cám ơn xâu sắc tới các thầy, các cô trong tổ Bộ môn tin học của trường ĐHDL Hải Phòng những người đã tận tình giảng dạy và cung cấp những kiến thức quý báu cho em trong suốt bốn năm học qua. Đặc biệt em xin chân thành cám ơn TS. Phạm Hồng Thái và CN. Lương Việt Nguyên - trường Đại học công nghệ các thầy đã dành nhiều thời gian vô cùng quý báu tận tình hướng dẫn em cũng như tạo mọi điều kiện thuận lợi để em có thể hoàn thành tốt đề tài. Cuối cùng em cũng xin cảm ơn gia đình, bạn bè những người thân luôn bên cạnh động viên, giúp đỡ và tạo mọi điều kiện thuận lợi cho em . Do còn hạn chế về kiến thức và kinh nghiệm nên luân văn còn nhiều thiếu sót em rất mong được sự phê bình, đánh giá và góp ý của thầy cô và các bạn. Em xin chân thành cảm ơn! Hải Phòng, Ngày tháng 8 năm 2007. Sinh viên Nguyễn Thị Thúy LỜI MỞ ĐẦU Với nhu cầu trao đổi thông tin, bắt buộc các cơ quan, tổ chức phải hoà mình vào mạng toàn cầu Internet. An toàn và bảo mật thông tin là một trong những vấn đề quan trọng hàng đầu, khi thực hiện kết nối mạng nội bộ của các cơ quan, doanh nghiệp, tổ chức với Internet. Ngày nay, các biện pháp an toàn thông tin cho máy tính cá nhân cũng như các mạng nội bộ đã được nghiên cứu và triển khai. Tuy nhiên, vẫn thường xuyên có các mạng bị tấn công, có các tổ chức bị đánh cắp thông tin,…gây nên những hậu quả vô cùng nghiêm trọng. Những vụ tấn công này nhằm vào tất cả các máy tính có mặt trên Internet, các máy tính của các công ty lớn như AT&T, IBM, các trường đại học và các cơ quan nhà nước, các tổ chức quân sự, nhà băng,…một số vụ tấn công với quy mô khổng lồ (có tới 100.000 máy tính bị tấn công). Hơn nữa những con số này chỉ là phần nổi của tảng băng trôi. Một phần rất lớn các vụ tấn công không được thông báo vì nhiều lý do, trong đó có thể kể đến nỗi lo mất uy tín hoặc chỉ đơn giản những người quản trị dự án không hề hay biết những vụ tấn công nhằm vào hệ thống của họ. Không chỉ các vụ tấn công tăng lên nhanh chóng mà các phương pháp tấn công cũng liên tục được hoàn thiện. Điều đó một phần do các nhân viên quản trị hệ thống ngày càng đề cao cảnh giác. Vì vậy việc kết nối mạng nội bộ của cơ quan tổ chức mình vào mạng Internet mà không có các biện pháp đảm bảo an ninh thì cũng được xem là tự sát. Từ nhu cầu phát triển, đòi hỏi các cơ quan, tổ chức phải hòa mình vào mạng toàn cầu, mạng Internet song vẫn phải đảm bảo an toàn thông tin trong quá trình kết nối. Bởi vậy, em đã quyết định chọn đề tài: “Nghiên cứu giải pháp bảo vệ mạng nội bộ”, nhằm điều khiển luồng thông tin ra, vào và bảo vệ các mạng nội bộ khỏi sự tấn công từ Internet. Nội dung đề tài này sẽ trình bày một cách khái quát các khái niệm về mạng và Firewall, cách bảo vệ mạng bằng Firewall, cách xây dựng Firewall. Đồng thời, dùng Iptables trong hệ điều hành Linux để thiết lập Firewall bảo vệ các mạng nội bộ. Nội dung chính của đề tài gồm 4 chương như sau: Chương 1: Vấn đề an ninh trong mạng máy tính. Trình bày tổng quan về vấn đề an ninh trong mạng máy tính, các nguy cơ và vấn đề bảo mật hệ thống mạng. Chương 2: Tổng quan về Firewall. Trình bày các khái niệm Firewall, chức năng Firewall, phân loại Firewall và các kiến trúc Firewall. Đưa ra các chính sách để xây dựng Firewall, từ các chính sách đó ta có cách để xây dựng nên các Firewall bảo vệ mạng. Chương 3: Tìm hiểu IPTables trong hệ điều hành Linux. Tìm hiểu về Iptables và các tham số của dòng lệnh thường gặp. Chương 4: Thiết lập Firewall bảo vệ mạng nội bộ bằng Iptables trong hệ điều hành Linux. Từ việc tìm hiểu về Iptables ở chương 3 để từ đó thiết lập bức tường lửa bảo vệ cho các mạng nội bộ bằng Iptables trong Linux. Chương 1: VẤN ĐỀ AN NINH AN TOÀN MẠNG MÁY TÍNH 1.1. Tổng quan về vấn đề an ninh an toàn mạng máy tính 1.1.1. Đe doạ an ninh từ đâu? Trong xã hội, cái thiện và cái ác luôn song song tồn tại như hai mặt không tách rời, chúng luôn phủ định nhau. Có biết bao nhiêu người muốn hướng tới cái chân thiện, cái tốt đẹp, thì cũng có không ít kẻ vì mục đích này hay mục đích khác lại làm cho cái ác nảy sinh, lấn lướt cái thiện. Sự giằng co giữa cái thiện và cái ác ấy luôn là vấn đề bức xúc của xã hội, cần phải loại trừ cái ác, thế nhưng cái ác lại luôn nảy sinh theo thời gian. Mạng máy tính cũng vậy, có những người phải mất biết bao nhiêu công sức nghiên cứu ra các biện pháp bảo vệ cho an ninh của tổ chức mình, thì cũng lại có kẻ tìm mọi cách phá vỡ lớp bảo vệ đó với nhiều ý đồ khác nhau. Mục đích của người lương thiện là luôn muốn tạo ra các khả năng bảo vệ an ninh cho tổ chức rất rõ ràng. Ngược lại, ý đồ của kẻ xấu lại ở nhiều góc độ, cung bậc khác nhau. Có kẻ muốn phá vỡ lớp vỏ an ninh để chứng tỏ khả năng của mình, để thoả mãn thói hư ích kỷ. Loại người này thường làm hại người khác bằng cách phá hoại các tài nguyên trên mạng, xâm phạm quyền riêng tư hoặc bôi nhọ danh dự của họ. Nguy hiểm hơn, có những kẻ lại muốn đoạt không các nguồn lợi của người khác như việc lấy cắp các thông tin mật của các công ty, đột nhập vào ngân hàng để chuyển trộm tiền... Bởi trên thực tế, hầu hết các tổ chức công ty tham gia vào mạng máy tính toàn cầu đều có một lượng lớn các thông tin kết nối trực tuyến. Trong lượng lớn các thông tin ấy, có các thông tin bí mật như: các bí mật thương mại, các kế hoạch phát triển sản phẩm, chiến lược maketing, phân tích tài chính... hay các thông tin về nhân sự, bí mật riêng tư... Các thông tin này hết sức quan trọng, việc để lộ ra các thông tin cho các đối thủ cạnh tranh sẽ dẫn đến một hậu quả hết sức nghiêm trọng. Tuy nhiên, không phải bất cứ khi nào muốn những kẻ xấu cũng có thể thực hiện được mục đích của mình. Chúng cần phải có thời gian, những sơ hở, yếu kém của chính những hệ thống bảo vệ an ninh mạng. Và để thực hiện được điều đó, chúng cũng phải có trí tuệ thông minh cộng với cả một chuỗi dài kinh nghiệm. Còn để xây dựng được các biện pháp đảm bảo an ninh, đòi hỏi ở người xây dựng cũng không kém về trí tuệ và kinh nghiệm thực tiễn. Như thế, cả hai mặt tích cực và tiêu cực ấy đều được thực hiện bởi bàn tay khối óc của con người, không có máy móc nào có thể thay thế được. Vậy, vấn đề an ninh an toàn mạng máy tính hoàn toàn mang tính con người. Ban đầu, những trò phá hoại chỉ mang tính chất là trò chơi của những người có trí tuệ không nhằm mục đích vụ lợi, xấu xa. Tuy nhiên, khi mạng máy tính trở nên phổ dụng, có sự kết nối của nhiều tổ chức, công ty, cá nhân với nhiều thông tin bí mật, thì những trò phá hoại ấy lại không ngừng gia tăng. Sự phá hoại ấy đã gây ra nhiều hậu quả nghiêm trọng, nó đã trở thành một loại tội phạm. Theo số liệu thống kê của CERT (Computer Emegency Response Team) thì số lượng các vụ tấn công trên Internet được thông báo cho tổ chức này là ít hơn 200 vào năm 1989, khoảng 400 vào năm 1991, 1400 năm 1993 và 2241 năm 1994. Những vụ tấn công này nhằm vào tất cả các máy tính có mặt trên Internet, từ các máy tính của các công ty lớn như AT & T, IBM, các trường đại học, các cơ quan nhà nước, các nhà băng... Những con số đưa ra này, trên thực tế chỉ là phần nổi của tảng băng. Một phần lớn các vụ tấn công không được thông báo vì nhiều lý do khác nhau, như sự mất uy tín, hoặc chỉ đơn giản là họ không hề biết mình bị tấn công. Thực tế, đe doạ an ninh không chỉ ở bên ngoài tổ chức, mà bên trong tổ chức vấn đề cũng hết sức nghiêm trọng. Đe doạ bên trong tổ chức xẩy ra lớn hơn bên ngoài, nguyên nhân chính là do các nhân viên có quyền truy nhập hệ thống gây ra. Vì họ có quyền truy nhập hệ thống nên họ có thể tìm được các điểm yếu của hệ thống, hoặc vô tình họ cũng có thể phá hủy hay tạo cơ hội cho những kẻ khác xâm nhập hệ thống. Và nguy hiểm hơn, một khi họ là kẻ bất mãn hay phản bội thì hậu quả không thể lường trước được. Tóm lại, vấn đề an ninh an toàn mạng máy tính hoàn toàn là vấn đề con người và không ngừng gia tăng, nó có thể bị đe doạ từ bên ngoài hoặc bên trong tổ chức. Vấn đề này đã trở thành mối lo ngại lớn cho bất kì chủ thể nào tham gia vào mạng máy tính toàn cầu. Và như vậy, để đảm bảo việc trao đổi thông tin an toàn và an ninh cho mạng máy tính, buộc các tổ chức đó phải triển khai các biện pháp bảo vệ đảm bảo an ninh, mà trước hết là cho chính mình. 1.1.2. Các giải pháp cơ bản đảm bảo an ninh Như trên ta đã thấy, an ninh an toàn mạng máy tính có thể bị đe doạ từ rất nhiều góc độ và nguyên nhân khác nhau. Đe doạ an ninh có thể xuất phát từ bên ngoài mạng nội bộ hoặc cũng có thể xuất phát từ ngay bên trong tổ chức. Do đó, việc đảm bảo an ninh an toàn cho mạng máy tính cần phải có nhiều giải pháp cụ thể khác nhau. Tuy nhiên, tổng quan nhất có ba giải pháp cơ bản sau: Giải pháp về phần cứng. Giải pháp về phần mềm. Giải pháp về con người. Đây là ba giải pháp tổng quát nhất mà bất kì một nhà quản trị an ninh nào cũng phải tính đến trong công tác đảm bảo an ninh an toàn mạng máy tính. Mỗi giải pháp có một ưu nhược điểm riêng mà người quản trị an ninh cần phải biết phân tích, tổng hợp và chọn lựa để tạo khả năng đảm bảo an ninh tối ưu nhất cho tổ chức mình. Giải pháp phần cứng là giải pháp sử dụng các thiết bị vật lý như các hệ thống máy chuyên dụng, cũng có thể là các thiết lập trong mô hình mạng (thiết lập kênh truyền riêng, mạng riêng)... Giải pháp phần cứng thông thường đi kèm với nó là hệ thống phần mềm điều khiển tương ứng. Đây là một giải pháp không phổ biến, vì không linh hoạt trong việc đáp ứng với các tiến bộ của các dịch vụ mới xuất hiện, và chi phí rất cao. Khác với giải pháp phần cứng, giải pháp về phần mềm hết sức đa dạng. Giải pháp phần mềm có thể phụ thuộc hay không phụ thuộc vào phần cứng. Cụ thể các giải pháp về phần mềm như: các phương pháp xác thực, các phương pháp mã hoá, mạng riêng ảo, các hệ thống bức tường lửa,... Các phương pháp xác thực và mã hoá đảm bảo cho thông tin truyền trên mạng một cách an toàn nhất. Vì với cách thức làm việc của nó, thông tin thật trên đường truyền được mã hoá dưới dạng mà những kẻ “nhòm trộm” không thể thấy được, hoặc nếu thông tin bị sửa đổi thì tại nơi nhận sẽ có cơ chế phát hiện sự sửa đổi đó. Còn phương pháp sử dụng hệ thống bức tường lửa lại đảm bảo an ninh ở góc độ khác. Bằng cách thiết lập các luật tại một điểm đặc biệt (thường gọi là điểm nghẹt) giữa hệ thống mạng bên trong (mạng cần bảo vệ) với hệ thống mạng bên ngoài (mạng được coi là không an toàn về bảo mật - hay là Internet), hệ thống bức tường lửa hoàn toàn có thể kiểm soát các kết nối trao đổi thông tin giữa hai mạng. Với cách thức này, hệ thống tường lửa đảm bảo an ninh khá tốt cho hệ thống mạng cần bảo vệ. Như thế, giải pháp về phần mềm gần như hoàn toàn gồm các chương trình máy tính, do đó chi phí cho giải pháp này sẽ ít hơn so với giải pháp về phần cứng. Bên cạnh hai giải pháp trên, giải pháp về chính sách con người là một giải pháp hết sức cơ bản và không thể thiếu được. Vì như phần trên đã thấy, vấn đề an ninh an toàn mạng máy tính hoàn toàn là vấn đề con người, do đó việc đưa ra một hành lang pháp lý và các quy nguyên tắc làm việc cụ thể là cần thiết. Ở đây, hành lang pháp lý có thể gồm: các điều khoản trong bộ luật của nhà nước, các văn bản dưới luật,... Còn các quy định có thể do từng tổ chức đặt ra cho phù hợp với từng đặc điểm riêng. Các quy định có thể như: quy định về nhân sự, việc sử dụng máy, sử dụng phần mềm,... Và như vậy, sẽ hiệu quả nhất trong việc đảm bảo an ninh an toàn cho hệ thống mạng máy tính một khi ta thực hiện triệt để giải pháp về chính sách con người. Tóm lại, vấn đề an ninh an toàn mạng máy tính là một vấn đề lớn, nó yêu cầu cần phải có một giải pháp tổng thể, không chỉ phần mềm, phần cứng máy tính mà nó đòi hỏi cả vấn đề chính sách về con người. Và vấn đề này cần phải được thực hiện một cách thường xuyên liên tục, không bao giờ triệt để được vì nó luôn nảy sinh theo thời gian. Tuy nhiên, bằng các giải pháp tổng thể hợp lý, đặc biệt là giải quyết tốt vấn đề chính sách về con người ta có thể tạo ra cho mình sự an toàn chắc chắn hơn. 1.2. Vấn đề bảo mật hệ thống và mạng 1.2.1. Các vấn dề chung về bảo mật hệ thống và mạng Đặc điểm chung của một hệ thống mạng là có nhiều người sử dụng chung và phân tán về mặt địa lý nên việc bảo vệ tài nguyên (mất mát hoặc sử dụng không hợp lệ) phức tạp hơn nhiều so với việc môi trường một máy tính đơn lẻ, hoặc một người sử dụng. Hoạt động của người quản trị hệ thống mạng phải đảm bảo các thông tin trên mạng là tin cậy và sử dụng đúng mục đích, đối tượng đồng thời đảm bảo mạng hoạt động ổn định không bị tấn công bởi những kẻ phá hoại. Nhưng trên thực tế là không một mạng nào đảm bảo là an toàn tuyệt đối, một hệ thống dù được bảo vệ chắc chắn đến mức nào thì cũng có lúc bị vô hiệu hóa bởi những kẻ có ý đồ xấu. Trong nội dung đề tài của em là tìm hiểu về các phương pháp bảo mật cho mạng LAN. Trong nội dung về lý thuyết của đề tài em xin trình bày về một số khái niệm sau: 1.2.2. Một số khái niệm và lịch sử bảo mật hệ thống a. Đối tượng tấn công mạng (intruder) Đối tượng là những cá nhân hoặc tổ chức sử dụng những kiến thức về mạng và các công cụ phá hoại (gồm phần cứng hoặc phần mềm) để dò tìm các điểm yếu và các lỗ hổng bảo mật trên hệ thống, thực hiện các hoạt động xâm nhập và chiếm đoạt tài nguyên trái phép. Một số đối tượng tấn công mạng như: Hacker: là những kẻ xâm nhập vào mạng trái phép bằng cách sử dụng các công cụ phá mật khẩu hoặc khai thác các điểm yếu của thành phần truy nhập trên hệ thống Masquerader : Là những kẻ giả mạo thông tin trên mạng như giả mạo địa chỉ IP, tên miền, định danh người dùng… Eavesdropping: Là những đối tượng nghe trộm thông tin trên mạng, sử dụng các công cụ Sniffer, sau đó dùng các công cụ phân tích và debug để lấy được các thông tin có giá trị. Những đối tượng tấn công mạng có thể nhằm nhiều mục đích khác nhau như ăn cắp các thông tin có giá trị về kinh tế, phá hoại hệ thống mạng có chủ định, hoặc có thể đó là những hành động vô ý thức… b. Các lỗ hổng bảo mật Các lỗ hổng bảo mật là những điểm yếu trên hệ thống hoặc ẩn chứa trong một dịch vụ mà dựa vào đó kẻ tấn công có thể xâm nhập trái phép vào hệ thống để thực hiện những hành động phá hoại chiếm đoạt tài nguyên bất hợp pháp. Có nhiều nguyên nhân gây ra những lỗ hổng bảo mật: có thể do lỗi của bản thân hệ thống, hoặc phần mềm cung cấp hoặc người quản trị yếu kém không hiểu sâu về các dịch vụ cung cấp… Mức độ ảnh hưởng của các lỗ hổng tới hệ thống là khác nhau. Có lỗ hổng chỉ ảnh hưởng tới chất lượng dịch vụ cung cấp, có lỗ hổng ảnh hưởng tới toàn bộ hệ thống hoặc phá hủy hệ thống. c. Chính sách bảo mật Chính sách bảo mật là tập hợp các quy tắc áp dụng cho những người tham gia quản trị mạng, có sử dụng các tài nguyên và các dịch vụ mạng. Đối với từng trường hợp phải có chính sách bảo mật khác nhau. Chính sách bảo mật giúp người sử dụng biết trách nhiệm của mình trong việc bảo vệ các tài nguyên trên mạng, đồng thời còn giúp cho nhà quản trị mạng thiết lập các biên pháp đảm bảo hữu hiệu trong quá trình trang bị, cấu hình và kiểm soát hoạt động của hệ thống và mạng. 1.2.3. Các loại lỗ hổng bảo mật và phương thức tấn công mạng chủ yếu a. Các loại lỗ hổng Có nhiều các tổ chức đã tiến hành phân loại các dạng lỗ hổng đặc biệt. Theo bộ quốc phòng Mỹ các loại lỗ hổng được phân làm ba loại như sau: Lỗ hổng loại C: Cho phép thực hiện các hình thức tấn công theo DoS (Denial of Services- Từ chối dịch vụ) Mức độ nguy hiểm thấp chỉ ảnh hưởng tới chất lượng dịch vụ, làm ngưng trệ gián đoạn hệ thống, không làm phá hỏng dữ liệu hoặc đạt được quyền truy cập bất hợp pháp. DoS là hình thức tấn công sử dụng các giao thức ở tầng Internet trong bộ giao thức TCP/IP để làm hệ thống ngưng trệ dẫn đến tình trạng từ chối người sử dụng hợp pháp truy nhập hay sử dụng hệ thống. Các dịch vụ có lỗ hổng cho phép các cuộc tấn công DoS có thể được nâng cấp hoặc sửa chữa bằng các phiên bản mới hơn của các nhà cung cấp dịch vụ. Hiện nay chưa có một biện pháp hữu hiệu nào để khắc phục tình trạng tấn công kiểu này vì bản thân thiết kế ở tầng Internet (IP) nói riêng và bộ giao thức TCP/IP nói chung đã ẩn chứa những nguy cơ tiềm tang của các lỗ hổng loại này. Lỗ hổng loại B : Cho phép người sử dụng có thêm các quyền trên hệ thống mà không cần kiểm tra tính hợp lệ dẫn đến mất mát thông tin yêu cầu cần bảo mật. Lỗ hổng này thường có trong các ứng dụng trên hệ thống . Có mức độ nguy hiểm trung bình. Lỗ hổng loại B này có mức độ nguy hiểm hơn lỗ hổng loại C. Cho phép người sử dụng nội bộ có thể chiếm được quyền cao hơn hoặc truy nhập không hợp pháp.Những lỗ hổng loại này thường xuất hiện trong các dịch vụ trên hệ thống. Người sử dụng local được hiểu là người đã có quyền truy nhập vào hệ thống với một số quyền hạn nhất định. Một dạng khác của lỗ hổng loại B xảy ra với các chương trình viết bằng mã nguồn C. Những chương trình viết bằng mã nguồn C thường sử dụng một vùng đệm, một vùng trong bộ nhớ sử dụng để lưu trữ dữ liệu trước khi xử lý. Người lập trình thường sử dụng vùng đệm trong bộ nhớ trước khi gán một khoảng không gian bộ nhớ cho từng khối dữ liệu. Ví dụ khi viết chương trình nhập trường tên người sử dụng quy định trường này dài 20 ký tự bằng khai báo: Char first_name [20]; Khai báo này cho phép người sử dụng nhập tối đa 20 ký tự. Khi nhập dữ liệu ban đầu dữ liệu được lưu ở vùng đệm. Khi người sử dụng nhập nhiều hơn 20 ký tự sẽ tràn vùng đệm. Những ký tự nhập thừa sẽ nằm ngoài vùng đệm khiến ta không thể kiểm soát được. Nhưng đối với những kẻ tấn công chúng có thể lợi dụng những lỗ hổng này để nhập vào những ký tự đặc biệt để thực thi một số lệnh đặc biệt trên hệ thống. Thông thường những lỗ hổng này được lợi dụng bởi những người sử dụng trên hệ thống để đạt được quyền root không hợp lệ. Để hạn chế được các lỗ hổng loại B phải kiêm soát chặt chẽ cấu hình hệ thống và các chương trình. Lỗ hổng loại A: Cho phép người ngoài hệ thống có thể truy cập bất hợp pháp vào hệ thống. Có thể làm phá huỷ toàn bộ hệ thống. Loại lỗ hổng này có mức độ rất nguy hiểm đe dọa tính toàn vẹn và bảo mật của hệ thống. Các lỗ hổng này thường xuất hiện ở những hệ thống quản trị yếu kém hoặc không kiểm soát được cấu hình mạng. Ví dụ với các web server chạy trên hệ điều hành Novell các server này có một scripst là convert.bas chạy scripst này cho phép đọc toàn bộ nội dung các file trên hệ thống. Những lỗ hổng loại này hết sức nguy hiểm vì nó đã tồn tại sẵn có trên phần mềm sử dụng, người quản trị nếu không hiểu sâu về dịch vụ và phần mềm sử dụng có thể bỏ qua điểm yếu này. Vì vậy thường xuyên phải kiểm tra các thông báo của các nhóm tin về bảo mật trên mạng để phát hiện những lỗ hổng loại này. Một loạt các chương trình phiên bản cũ thường sử dụng có những lỗ hổng loại A như: FTP, Gopher, Telnet, Sendmail, ARP, finger... b. Các hình thức tấn công mạng phổ biến Scanner Scanner là một trương trình tự động rà soát và phát hiện những điểm yếu về bảo mật trên một trạm làm việc cục bộ hoặc một trạm ở xa. Một kẻ phá hoại sử dụng chương trình Scanner có thể phát hiện ra những lỗ hổng về bảo mật trên một Server dù ở xa. Cơ chế hoạt động là rà soát và phát hiện những cổng TCP/UDP được sủ dụng trên hệ thống cần tấn công và các dịch vụ sử dụng trên hệ thống đó. Scanner ghi lại những đáp ứng trên hệ thống từ xa tương ứng với dịch vụ mà nó phát hiện ra. Từ đó nó có thể tìm ra điêm yếu của hệ thống. Những yếu tố để một Scanner hoạt động như sau: Yêu cầu thiết bị và hệ thống: Môi trường có hỗ trợ TCP/IP Hệ thống phải kết nối vào mạng Internet. Các chương trình Scanner có vai trò quan trọng trong một hệ thống bảo mật, vì chúng có khả năng phát hiện ra những điểm yếu kém trên một hệ thống mạng. Password Cracker Là một chương trình có khả năng giải mã một mật khẩu đã được mã hoá hoặc có thể vô hiệu hoá chức năng bảo vệ mật khẩu của một hệ thống. Một số chương trình phá khoá có nguyên tắc hoạt động khác nhau. Một số chương trình tạo ra danh sách các từ giới hạn, áp dụng một số thuật toán mã hoá từ kết quả so sánh với Password đã mã hoá cần bẻ khoá để tạo ra một danh sách khác theo một logic của chương trình. Khi thấy phù hợp với mật khẩu đã mã hoá, kẻ phá hoại đã có được mật khẩu dưới dạng text . Mật khẩu text thông thường sẽ được ghi vào một file. Biện pháp khắc phục đối với cách thức phá hoại này là cần xây dựng một chính sách bảo vệ mật khẩu đúng đắn. Sniffer Sniffer là các công cụ (phần cứng hoặc phần mềm)”bắt ”các thông tin lưu chuyển trên mạng và lấy các thông tin có giá trị trao đổi trên mạng. Sniffer có thể “bắt” được các thông tin trao đổi giữa nhiều trạm làm việc với nhau. Thực hiện bắt các gói tin từ tầng IP trở xuống. Giao thức ở tầng IP được định nghĩa công khai, và cấu trúc các trường header rõ ràng, nên việc giải mã các gói tin này không khó khăn. Mục đích của các chương trình sniffer đó là thiết lập chế độ promiscuous (mode dùng chung) trên các card mạng ethernet - nơi các gói tin trao đổi trong mạng - từ đó "bắt" được thông tin. Các thiết bị sniffer có thể bắt được toàn bộ thông tin trao đổi trên mạng là dựa vào nguyên tắc broadcast (quảng bá) các gọi tin trong mạng Ethernet. Tuy nhiên việc thiết lập một hệ thống sniffer không phải đơn giản vì cần phải xâm nhập được vào hệ thống mạng đó và cài đặt các phần mềm sniffer. Đồng thời các chương trình sniffer cũng yêu cầu người sử dụng phải hiểu sâu về kiến trúc, các giao thức mạng. Việc phát hiện hệ thống bị sniffer không phải đơn giản, vì sniffer hoạt động ở tầng rất thấp, và không ảnh hưởng tới các ứng dụng cũng như các dịch vụ hệ thống đó cung cấp. Tuy nhiên việc xây dựng các biện pháp hạn chế sniffer cũng không quá khó khăn nếu ta tuân thủ các nguyên tắc về bảo mật như: Không cho người lạ truy nhập vào các thiết bị trên hệ thống Quản lý cấu hình hệ thống chặt chẽ Thiết lập các kết nối có tính bảo mật cao thông qua các cơ chế mã hoá. Trojans Trojans là một chương trình chạy không hợp lệ trên một hệ thống. Với vai trò như một chương trình hợp pháp. Trojans này có thể chạy được là do các chương trình hợp pháp đã bị thay đổi mã của nó thành mã bất hợp pháp. Ví dụ như các chương trình virus là loại điển hình của Trojans. Những chương trình virus thường che dấu các đoạn mã trong các chương trình sử dụng hợp pháp. Khi những chương trình này được kích hoạt thì những đoạn mã ẩn dấu sẽ thực thi và chúng thực hiện một số chức năng mà người sử dụng không biết như: ăn cắp mật khẩu hoặc copy file mà người sử dụng như ta thường không hay biết. Một chương trình Trojans sẽ thực hiện một trong những công việc sau: Thực hiện một vài chức năng hoặc giúp người lập trình lên nó phát hiện những thông tin quan trọng hoặc những thông tin cá nhân trên một hệ thống hoặc chỉ trên một vài thành phần của hệ thống đó. Che dấu một vài chức năng hoặc là giúp người lập trình phát hiện những thông tin quan trọng hoặc những thông tin cá nhân trên một hệ thống hoặc chỉ trên một vài thành phần của hệ thống. Ngoài ra còn có các chương trình Trojan có thể thực hiện đựợc cả hai chức năng này. Có chương trình Trojan còn có thể phá hủy hệ thống bằng cách phá hoại các thông tin trên ổ cứng. Nhưng ngày nay các Trojans kiểu này dễ dàng bị phát hiện và khó phát huy được tác dụng. Tuy nhiên có những trường hợp nghiêm trọng hơn những kẻ tấn công tạo ra những lỗ hổng bảo mật thông qua Trojans và kẻ tấn công lấy được quyền root trên hệ thống và lợi dụng quyền đó để phá hủy một phần hoặc toàn bộ hệ thống hoặc dùng quyền root để thay đổi logfile, cài đặt các chương trình trojans khác mà người quản trị không thể phát hiện được gây ra mức độ ảnh hưởng rất nghiêm trọng và người quản trị chỉ còn cách cài đặt lại toàn bộ hệ thống. 1.3. Vấn đề bảo mật cho mạng LAN Khi nói đến vấn đề bảo mật cho mạng LAN ta thường quan tâm tới những vấn đề chính là bảo mật thông tin dữ liệu trao đổi bên trong mạng nội bộ, bảo mật thông tin dữ liệu trao đổi từ trong mạng ra bên ngoài và từ bên ngoài vào trong mạng. Việc kiểm soát được những truy cập bất hợp pháp từ bên ngoài vào cũng như kiểm soát những truy cập không cho phép từ trong nội bộ mạng ra bên ngoài. Cùng với sự phát triển mạnh mẽ của Internet và sự kết nối mạng nội bộ với Internet thì vấn đề đảm bảo an toàn, an ninh mạng càng trở nên khó khăn và cần thiết. Hiện nay để bảo mật cho mạng LAN có nhiều phương pháp trong đó có một số phương pháp phổ biến và đáng tin cậy đó là: 1.3.1. Mạng riêng ảo (Virtual Private Network- VPN) Mạng riêng ảo (Virtual Private Network - VPN) là sự mở rộng mạng riêng của các công ty, tổ chức thông qua sử dụng các kết nối mạng công cộng hoăc mạng chia sẻ như Internet. VPN cung cấp cho khách hàng đầy đủ các tính năng mà một kênh thuê riêng có được nhưng với giá thành rẻ hơn do sử dụng hạ tầng cơ sở mạng công cộng. VPN sử dụng giao thức để tạo đường hầm truyền tin riêng và các biện pháp an ninh để bảo vệ dữ liệu trên đường truyền như mã hoá, xác thực… 1.3.2. Tường lửa (Firewall) Thuật ngữ Firewall (Bức tường ngăn lửa) có nguồn gốc từ một kỹ thuật thiết kế trong xây dựng để ngăn chặn, hạn chế hoả hoạn. Trong công nghệ mạng thông tin, Firewall là một kỹ thuật được tích hợp vào hệ thống mạng để chống sự truy cập trái phép nhằm bảo vệ các nguồn thông tin nội bộ cũng như hạn chế sự xâm nhập vào hệ thống của một số thông tin khác không mong muốn. Cũng có thể hiểu rằng Firewall là một cơ chế để bảo vệ mạng tin tưởng (Trusted network) khỏi các mạng không tin tưởng (Untrusted network). Firewall giữa mạng của một tổ chức, một công ty, hay một quốc gia (Intranet) và Internet. Nó thực hiện vai trò bảo mật các thông tin Intranet từ thế giới Internet bên ngoài. Qua quá trình tìm hiểu em thấy rằng Firewall là phương pháp hữu hiệu và phổ biến nhất hiện nay do nó có nhiều ưu điểm, cung cấp những tính năng bảo mật tốt cho vấn đề bảo vệ an ninh mạng hiện nay. Trong khuôn khổ bài báo cáo này em xin trình bày về phương pháp bảo mật mạng LAN bằng Firewall. Chương 2: TỔNG QUAN VỀ FIREWALL Để bảo vệ mạng nội bộ Firewall là một trong những giải pháp bảo vệ mạng hữu hiệu và phổ biến hiện nay. Nó giúp cho các mạng nội bộ tránh khỏi những truy nhập trái phép từ bên ngoài bằng cách điều khiển thông tin ra vào giữa các mạng nội bộ. Nội dung chính của chương này em sẽ đi giới thiệu tổng quan về Firewall, khái niệm, các chức năng của Firewall, phân loại Firewall, ưu nhược điểm của từng loại Firewall, các chiến lược để xây dựng Firewall và giới thiệu về cơ chế lọc gói tin. 2.1. Giới thiệu về firewall 2.1.1. Khái niệm firewall Firewall là thiết bị nhằm ngăn chặn sự truy nhập không hợp lệ từ mạng ngoài vào mạng trong. Hệ thống firewall thường bao gồm cả phần cứng và phần mềm. Firewall thường được dùng theo phương thức ngăn chặn hay tạo các luật đối với các địa chỉ khác nhau. 2.1.2. Các chức năng cơ bản của firewall Chức năng chính của Firewall là kiểm soát luồng thông tin giữa mạng cần bảo vệ (Trusted Network) và Internet thông qua các chính sách truy nhập đã được thiết lập. - Cho phép hoặc cấm các dịch vụ truy nhập từ trong ra ngoài và từ ngoài vào trong. - Kiểm soát địa chỉ truy nhập, và dịch vụ sử dụng. - Kiểm soát khả năng truy cập người sử dụng giữa 2 mạng. - Kiểm soát nội dung thông tin truyền tải giữa 2 mạng. - Ngăn ngừa khả năng tấn công từ các mạng ngoài. Xây dựng firewalls là một biện pháp khá hữu hiệu, nó cho phép bảo vệ và kiểm soát hầu hết các dịch vụ do đó được áp dụng phổ biến nhất trong các biện pháp bảo vệ mạng. 2.1.3. Phân loại firewall Firewall có nhiều loại tuy nhiên mỗi loại có ưu và nhược điểm riêng. Nhưng thông thường firewall được chia làm 2 loại chính là: Firewall phần cứng Firewall phần mềm. a. Firewall phần cứng. Là một thiết bị phần cứng được tích hợp bộ định tuyến, các quy tắc cho việc lọc gói tin được thiết lập ngay trên bộ định tuyến đó. Firewall phần cứng này như một chiếc máy tính chỉ thực hiện chức năng duy nhất là lọc gói tin bằng cách chạy một phần mềm đã được cứng hóa trong đó và chỉ có thể thiết lập các tập luật còn không thể thay đổi bộ định tuyến được cứng hóa và tích hợp bên trong. Tùy vào từng loại firewall phần cứng của các hãng khác nhau mà cho phép người quản trị có khả năng cập nhật những quy tắc lọc gói tin khác nhau. Khi hoạt động, tường lửa sẽ dựa trên các quy tắc được thiết lập trong bộ định tuyến mà kiểm tra thông tin header của gói tin như địa chỉ nguồn (source IP address), địa chỉ đích (destination IP address), cổng (Port) ... Nếu mọi thông tin trong header của gói tin là hợp lệ nó sẽ được cho qua và nếu không hợp lệ nó sẽ bị bỏ qua. Chính việc không mất thời gian xử lí những gói tin có địa chỉ không hợp lệ làm cho tốc độ xử lí của firewall phần cứng rất nhanh và đây chính là ưu điểm lớn nhất của hệ thống firewall phần cứng. Một điểm đáng chú ‎ là tất cả các loại firewall phần cứng trên thế giới hiện nay đều chưa thể lọc được nội dung của gói tin mà chỉ có thể lọc được phần nội dung trong header của gói tin. Dưới đây sẽ giới thiệu mô hình sử dụng firewall phần cứng đảm bảo an ninh mạng: Mô hình sử dụng firewall phần cứng: (Thiết bị phần cứng Firewall trong mô hình này chỉ có một chức năng duy nhất là lọc gói tin mà không thể thực hiện bất kì một công việc nào khác) Hình 1: Mô hình sử dụng Firewall phần cứng. Trong mô hình này thông tin từ mạng Internet không thể trực tiếp đi vào vùng mạng được bảo vệ và ngược lại mà nó phải thông qua Firewall phần cứng. Quá trình kiểm duyệt xảy ra nếu các thông tin trong phần header của gói tin bao gồm địa chỉ nguồn (source IP address), địa chỉ đích (destination IP address), cổng (Port) ... được chấp nhận thì nó sẽ được chuyển tiếp vào mạng bên trong hay chuyển ra mạng internet bên ngoài. Hiện nay trên thế giới có một số hãng sản xuất firewall phần cứng rất nổi tiếng như CISCO, D-LINK, PLANET... b. Firewall phần mềm Loại firewall này là một chương trình ứng dụng nguyên tắc hoạt động dựa trên trên ứng dụng proxy - là một phần mềm cho phép chuyển các gói tin mà máy chủ nhận được đến những địa điểm nhất định theo yêu cầu. Và các quy tắc lọc gói tin được người sử dụng tự thiết lập. Người ta thường sử dụng firewall loại này khi một mạng máy tính có máy chủ và mọi thông tin đều thông qua máy chủ này rồi mới chuyển đến máy con trong mạng hoặc dùng cho máy tính cá nhân khi tham gia mạng ... Firewall phần mềm này rất tiện lợi ở chỗ phần mềm có thể dễ dàng thay đổi cập nhật các phiên bản mới. Cách thức hoạt động của firewall dạng này cũng rất đơn giản. Phần mềm firewall được chạy thường trú trên máy chủ hay máy tính cá nhân. Máy tính này có thể đảm đương nhiều nhiệm vụ ngoài công việc là Firewall. Mỗi khi có các gói tin được chuyển đến hay chuyển đi nó đều được phần mềm firewall này kiểm tra phần header của gói tin bao gồm các thông tin về địa chỉ đến, địa chỉ đi, giao thức, cổng dịch vụ ....Firewall phần mềm mới hiện nay còn có thể kiểm tra được nội dung của gói tin. Các thông tin mà firewall kiểm tra được người dùng quy định trước trong tập luật. Nếu gói tin được phần mềm firewall cho qua thì tiếp theo nó sẽ được đưa đến các máy con trong mạng hoặc là các ứng dụng chạy trực tiếp trên máy đó. Dưới đây là mô hình thường sử dụng firewall phần mềm: (Máy tính dùng làm firewall có thể đảm đương nhiều nhiệm vụ khác nhau ngoài việc là một Firewall ví dụ DNS server, Mail server, Web server ...) Hình 2: Mô hình sử dụng Firewall phần mềm. Trong mô hình này máy tính chạy ứng dụng firewall có vai trò trung gian. Nó sẽ nhận các gói tin từ Internet và Protected Network sau đó thực hiện quá trình kiểm tra phần header của các gói tin đó gồm thông tin như : địa chỉ đến, địa chỉ đi, giao thức, cổng dịch vụ ... sau đó nếu phần mềm firewall chấp nhận cho gói tin đi qua thì gói tin sẽ tiếp tục chuyển đến đích. Ngược lại nếu gói tin không được chấp nhận chuyển tiếp thì phần mềm firewall sẽ đưa ra quyết định hủy bỏ. Cách hủy bỏ cũng có nhiều kiểu như hủy bỏ không cần trả lời cho máy gửi tới biết lí do (DROP), hủy bỏ nhưng vẫn trả lời cho máy gửi tới biết lí do (REJECT) ... Chính việc xử lí việc hủy bỏ gói tin như vậy dẫn đến tốc độ của loại firewall này bị hạn chế. Một số phần mềm firewall sử dụng nhiều và được đánh giá cao về khả năng lọc gói tin như ZoneAlarm Pro, SmoothWall, McAfee Personal Firewall Plus, ZoneAlarm Pro , Sygate Personal Firewall ... c. Ưu và nhược điểm của firewall Mỗi loại tường lửa có những ưu điểm, nhược điểm và được sử dụng trong những trường hợp khác nhau. Tường lửa phần cứng thường được sử dụng để đảm bảo an ninh cho các mạng lớn vì nếu không sử dụng firewall phần cứng thì sẽ cần hệ thống firewall phần mềm tức là sẽ có một tính máy chủ. Máy chủ này sẽ nhận mọi gói tin và kiểm duyệt rồi chuyển tiếp cho các máy trong mạng. Mà tốc độ của firewall phần mềm hoạt động chậm hơn so với firewall phần cứng nên ảnh hưởng lớn đến tốc độ của toàn hệ thống mạng. Mặt khác hệ thống tường lửa phần mềm thường được sử dụng để đảm bảo an ninh cho các máy tính cá nhân hoặc một mạng nhỏ. Việc sử dụng hệ thống firewall phần mềm sẽ giúp giảm chi phí vì giá cả thiết bị firewall phần cứng đắt gấp nhiều lần so với hệ thống firewall phần mềm. Hơn nữa, khi ta sử dụng hệ thống firewall phần mềm trong việc đảm bảo an ninh cho máy tính cá nhân hay mạng với quy mô nhỏ thì việc ảnh hưởng đến tốc độ chuyển các gói tin trong mạng là không đáng kể. Điểm yếu khác của firewall phần mềm đó là với mỗi firewall phần mềm được chạy trên từng hệ điều hành nhất định. Ví dụ ZoneAlarm Pro là môt hệ thống firewall phần mềm chỉ chạy trên hệ điều hành Windows. Hay với phần mềm SmoothWall thì lại chỉ có thể chạy trên hệ điều hành Linux. Nhưng với firewall phần cứng thì có thể chạy một các hoàn toàn độc lập không bị phụ thuộc vào hệ điều hành như firewall phần mềm. Firewall phần mềm hiện giờ đã có thể lọc được nội dung gói tin còn firewall phần cứng chỉ có thể lọc thông tin trong phần header của gói tin còn phần nội dung chính của gói tin thì firewall phần cứng không thể kiểm soát được. Bởi vậy mà Firewall phần cứng không thể giúp ngăn chặn các loại virus hệ thống nhưng firewall phần mềm thì có thể. 2.1.4 Một số hệ thống firewall khác a. Packet-Filtering Router (Bộ trung chuyển có lọc gói) Hệ thống Internet firewall phổ biến nhất chỉ bao gồm một packet-filtering router đặt giữa mạng nội bộ và Internet. Một packet-filtering router có hai chức năng: chuyển tiếp truyền thông giữa hai mạng và sử dụng các quy luật về lọc gói để cho phép hay từ chối truyền thông. Căn bản, các quy luật lọc đựơc định nghĩa sao cho các host trên mạng nội bộ được quyền truy nhập trực tiếp tới Internet, trong khi các host trên Internet chỉ có một số giới hạn các truy nhập vào các máy tính trên mạng nội bộ. Tư tưởng của mô hình cấu trúc firewall này là tất cả những gì không được chỉ ra rõ ràng là cho phép thì có nghĩa là bị từ chối. Bên ngoài Packet filtering router The Internet Mạng nội bộ Bên trong Hình 3: Packet-Filtering Router Ưu điểm Giá thành thấp (vì cấu hình đơn giản) Trong suốt đối với user Hạn chế Có tất cả hạn chế của một packet-filtering router, như là dễ bị tấn công vào các bộ lọc mà cấu hình được đặt không hoàn hảo, hoặc là bị tấn công ngầm dưới những dịch vụ đã được phép. Bởi vì các packet được trao đổi trực tiếp giữa hai mạng thông qua router , nguy cơ bị tấn công quyết định bởi số lượng các host và dịch vụ được phép. Điều đó dẫn đến mỗi một host được phép truy nhập trực tiếp vào Internet cần phải được cung cấp một hệ thống xác thực phức tạp, và thường xuyên kiểm tra bởi người quản trị mạng xem có dấu hiệu của sự tấn công nào không. Nếu một packet-filtering router do một sự cố nào đó ngừng hoạt động, tất cả hệ thống trên mạng nội bộ có thể bị tấn công. b. Screened Host Firewall Hệ thống này bao gồm một packet-filtering router và một bastion host. Screened Host Firewall cung cấp độ bảo mật cao hơn Packet-Filtering Router, vì nó thực hiện cả bảo mật ở tầng network( packet-filtering ) và ở tầng ứng dụng (application level). Đồng thời, kẻ tấn công phải phá vỡ cả hai tầng bảo mật để tấn công vào mạng nội bộ. Mạng nội bộ The Internet Bên ngoài Packet filtering router Bên trong Information server Bastion host Hình 4: Screened Host Firewall Trong hệ thống này, bastion host được cấu hình ở trong mạng nội bộ. Quy luật filtering trên packet-filtering router được định nghĩa sao cho tất cả các hệ thống ở bên ngoài chỉ có thể truy nhập bastion host. Việc truyền thông tới tất cả các hệ thống bên trong đều bị khoá. Bởi vì các hệ thống nội bộ và bastion host ở trên cùng một mạng, chính sách bảo mật của một tổ chức sẽ quyết định xem các hệ thống nội bộ được phép truy nhập trực tiếp vào bastion Internet hay là chúng phải sử dụng dịch vụ proxy trên bastion host. Việc bắt buộc những user nội bộ được thực hiện bằng cách đặt cấu hình bộ lọc của router sao cho chỉ chấp nhận những truyền thông nội bộ xuất phát từ bastion host. Ưu điểm Máy chủ cung cấp các thông tin công cộng qua dịch vụ Web và FTP có thể đặt trên packet-filtering router và bastion. Trong trường hợp yêu cầu độ an toàn cao nhất, bastion host có thể chạy các dịch vụ proxy yêu cầu tất cả các user cả trong và ngoài truy nhập qua bastion host trước khi nối với máy chủ. Trường hợp không yêu cầu độ an toàn cao thì các máy nội bộ có thể nối thẳng với máy chủ. Nếu cần độ bảo mật cao hơn nữa thì có thể dùng hệ thống firewall dual-home (hai chiều) bastion host. Một hệ thống bastion host như vậy có 2 giao diện mạng (network interface), nhưng khi đó khả năng truyền thông trực tiếp giữa hai giao diện đó qua dịch vụ proxy là bị cấm. Mạng nội bộ Bên trong The internet Bênngoài Packet filtering router Information server Bastion host Hình 5: Hệ thống firewall dual-home (hai chiều) bastion host. Hạn chế Bởi vì bastion host là hệ thống bên trong duy nhất có thể truy nhập được từ Internet, sự tấn công cũng chỉ giới hạn đến bastion host mà thôi. Tuy nhiên, nếu như user log on được vào bastion host thì họ có thể dễ dàng truy nhập toàn bộ mạng nội bộ. Vì vậy cần phải cấm không cho user logon vào bastion host. c. Demilitarized Zone (DMZ - khu vực phi quân sự) hay Screened-subnet Firewall Hệ thống này bao gồm hai packet-filtering router và một bastion host. Hệ thống firewall này có độ an toàn cao nhất vì nó cung cấp cả mức bảo mật network và application trong khi định nghĩa một mạng “phi quân sự”. Mạng DMZ đóng vai trò như một mạng nhỏ, cô lập đặt giữa Internet và mạng nội bộ. Cơ bản, một DMZ được cấu hình sao cho các hệ thống trên Internet và mạng nội bộ chỉ có thể truy nhập được một số giới hạn các hệ thống trên mạng DMZ, và sự truyền trực tiếp qua mạng DMZ là không thể được. Với những thông tin đến, router ngoài chống lại những sự tấn công chuẩn (như giả mạo địa chỉ IP), và điều khiển truy nhập tới DMZ. Nó cho phép hệ thống bên ngoài truy nhập chỉ bastion host, và có thể cả information server. Router trong cung cấp sự bảo vệ thứ hai bằng cách điều khiển DMZ truy nhập mạng nội bộ chỉ với những truyền thông bắt đầu từ bastion host. The Internet Bên ngoài Packet filtering router Bên trong Information server Bastion host Outside router Inside router DMZ Với những thông tin đi, router trong điều khiển mạng nội bộ truy nhập tới DMZ. Nó chỉ cho phép các hệ thống bên trong truy nhập bastion host và có thể cả information server. Quy luật filtering trên router ngoài yêu cầu sử dung dich vụ proxy bằng cách chỉ cho phép thông tin ra bắt nguồn từ bastion host. Hình 6: Screened-subnet Firewall Ưu điểm Kẻ tấn công cần phá vỡ ba tầng bảo vệ: router ngoài, bastion host và router trong. Bởi vì router ngoài chỉ quảng cáo DMZ network tới Internet, hệ thống mạng nội bộ là không thể nhìn thấy (invisible). Chỉ có một số hệ thống đã được chọn ra trên DMZ là được biết đến bởi Internet qua routing table và DNS information exchange ( Domain Name Server ). Bởi vì router trong chỉ quảng cáo DMZ network tới mạng nội bộ, các hệ thống trong mạng nội bộ không thể truy nhập trực tiếp vào Internet. Điều nay đảm bảo rằng những user bên trong bắt buộc phải truy nhập Internet qua dịch vụ proxy. 2.2. Các chiến lược xây dựng firewall Khi nghiên cứu chi tiết về Firewall, chúng ta cần hiểu một số chiến lược cơ bản được dùng xây dựng Firewall. 2.2.1. Quyền hạn tối thiểu(Least Privilege) Một nguyên tắc cơ bản nhất của an toàn (không phải chỉ áp dụng cho an toàn mạng) là trao quyền tối thiểu. Về cơ bản, nguyên tắc này có nghĩa là bất kỳ một đối tượng nào (người sử dụng, người quản trị, chương trình, hệ thống….) Chỉ nên có những quyên hạn nhất định mà đối tượng đó cần phải có để thực hiện các nhiện vụ của mình và chỉ như vậy. Quyền hạn tối thiểu là nguyên tắc quan trọng để tránh cho người ngoài lợi dụng đột nhập và hạn chế sự phá huỷ do các đột nhập gây ra. 2.2.2. Bảo vệ theo chiều sâu (Defense in Depth) Một nguyên tắc khác của an toàn và bảo vệ theo chiều sâu. Đối với mỗi hệ thống, không nên cài đặt và chỉ sử dụng một chế độ an toàn cho dù nó có thể mạnh, mà nên lắp đặt nhiều cơ chế an toàn để chúng có thể hỗ trợ lẫn nhau. Vì vậy firewall được xây dựng theo cơ chế có nhiều lớp bảo vệ. 2.2.3. Nút thắt (Choke Point) Một nút thắt bắt buộc những kẻ đột nhập phải đi qua một “cửa khẩu” hẹp mà chúng ta có thể kiểm soát và điều khiển được giống như việc muốn vào rạp xem hát, ta phải đi qua cổng kiểm soát vé. Trong cơ chế an toàn mạng, Firewall nằm giữa hệ thống của ta và mạng Internet, nó chính là một nút thắt. Bất kỳ ai có ý định đột nhập hệ thống từ Internet sẽ phải qua cửa khẩu này, và ta có thể theo dõi, quản lý được. 2.2.4. Điểm xung yếu nhất (Weakest Link) Khi muốn xâm nhập vào hệ thống, kẻ đột nhập tinh ranh thường tìm các điểm yếu nhất đẻ tấn công vào đó. Do vậy, đối với từng hệ thống cần phải biết điểm yếu nhất để có phương án bảo vệ an toàn hệ thống. Thường ta hay quan tâm đến những kẻ đột nhập trên mạng hơn là những kẻ tiếp nhận hệ thống, cho nên an toàn về mặt vật lý được coi là điểm yếu nhất trong mọi hệ thống. 2.2.5. Hỏng trong an toàn (Fail-Safe Stance) Một nguyên tắc nền tảng khác của an toàn là “hỏng trong an toàn”; Điều này có nghĩa là nếu hệ thống đang hỏng thì nó phải được hỏng theo một cách nào đó để ngăn chặn sự truy nhập bất hợp pháp tốt hơn là để cho kẻ đột nhập lọt vào phá hệ thống. Đương nhiên việc hỏng trong an toàn cũng huỷ bỏ sự truy nhập hợp pháp của người sử dụng cho đến khi hệ thống được khôi phục lại. Dựa trên nguyên tắc này người ta đưa ra hai quy tắc cơ bản áp dụng cho các quy định và biện pháp an toàn: Một là, Default deny Stance: Chú trọng vào những cái được phép và ngăn chặn tất cả cái gì còn lại. Những gì không rõ ràng cụ thể sẽ bị ngăn cấm. Hai là, Default permit stance: Trú trọng vào những cái bị ngăn cấm và cho phép tất cả những cái còn lại, những gì không bị ngăn cấm thì đựợc phép. Hầu hết những người sử dụng và nhà quản lý quy tắc default pernmit stance cho rằng mọi thứ mặc định nghĩa là cho phép và một số dịch vụ, hành động rắc rối, không rõ ràng sẽ bị ngăn cấm. Ví dụ: NFS không cho phép qua firewall. Truy nhập WWW bị hạn chế đối với những chuyên gia đào tạo về những vấn đề an toàn của WWW. Người sử dụng không được cài đặt các Server không được phép. Vậy vận dụng quy tắc nào thì tốt hơn? Theo quan điểm về an toàn thì nên dùng quy tắc “Default deny stance”. Còn theo quan điểm của các nhà quản lý thì lại là quy tắc “Default pernmit Stance”. 2.2.6. Sự tham gia toàn cầu Để đạt hiệu quả an toàn cao, tất cả các hệ thống trên mạng phải tham gia vào giải pháp an toàn. Nếu tồn tại một hệ thống có cơ chế an toàn kém, người truy nhập bất hợp pháp có thể truy nhập vào hệ thống này sau đó truy nhập các hệ thống khác từ bên trong. 2.2.7. Tính đa dạng của việc bảo vệ Do sử dụng nhiều hệ thống khác nhau, ta phải có nhiều biện pháp bảo vệ để đảm bảo chiến lược bảo vệ theo chiều sâu. Bởi vì, nếu tất cả các hệ thống của ta đều như nhau và một người nào đó biết cách đột nhập vào một trong số các hệ thống thì anh ta cũng có thể đột nhập vào tất các hệ thống còn lại. Sử dụng nhiều hệ thống khác nhau có thể hạn chế các các cơ hội phát sinh lỗi và an toàn hơn. Song đổi lại, ta phải đối mặt với các vấn đề về giá cả và tính chất phức tạp. Việc mua bán, lắp đặt nhiều hệ thống khác nhau sẽ khó hơn, tốn kém thời gian hơn các hệ thống cùng chủng loại. Ngoài ra , cũng cần nhiều sự hỗ trợ và thời gian để đào tạo cán bộ vận hành, quản trị hệ thống từ phía các nhà cung cấp. 2.2.8. Đơn giản hoá Mọi thứ đơn giản sẽ trở nên dễ hiểu. Nếu ta không hiểu rõ một cái gì đó, ta cũng không thể biết được liệu nó có an toàn hay không. 2.3. Cách thức xây dựng firewall Trong quá trình xây dựng một tường lửa đòi hỏi bước tiến hành đều phải được nên kế hoạch trước và phối hợp chặt chẽ với nhau. Và để giải quyết vấn đề lớn nhất là xây dựng thành công một tường lửa hoạt động theo hiệu quả thì ta phải xây dựng từng bước thật vững chắc, hạn chế tối đa những sai sót đáng tiếc có thể xảy ra trong quá trình xây dựng. 2.3.1. Xây dựng các nguyên tắc căn bản(Rule Base) Muốn xây dựng được một Firewall thành công thì nó phải thực hiện theo một số quy tắc căn bản nhất định (Rule base). Khi có một gói tin IP đi qua tường lửa thì nó sẽ phải dựa các quy tắc căn bản này để phân tích và lọc gói tin. Vì thế chúng ta phải đưa ra các quy tắc thật đơn giản, ngắn gọn và dễ hiểu nhầm tăng tốc độ sử lý gói tin trong tường lửa và sẽ tránh được tắc nghẽn, đồng thời nó còn giúp cho việc thay đổi và bảo trì hệ thống được dễ dàng hơn rất nhiều. Thông thường thì ta nên dùng không quá 30 quy tắc căn bản và tối đa không đựoc quá 50 quy tắc vì nếu dùng quá nhiều sẽ làm cho việc lọc gói sẽ chậm hơn và cũng sẽ dễ gây ra lỗi vì các quy tắc có thể bị chồng chéo lên nhau. 2.3.2. Xây dựng chính sách an toàn (Security Policy) Một tường lửa phải có các chính sách an toàn (security policy) vì thực chất tường lửa chỉ là một công cụ thực thi các chính sách an toàn. Việc quản lý và xây dựng chính sách an toàn một cách chặt chẽ sẽ tạo ra được sức mạnh cho tường lửa. Vì vậy trước khi chúng ta xây dựng các quy tắc căn bản thì chúng ta phải hiểu được chính sách an toàn của tường lửa cần xây dựng là gì ? Và đồng thời cũng phải xây dựng các chính sách an toàn sao cho dễ hiểu và đơn giản một cách tương đối và không nên xây dựng một cách quá phức tạp dẫn đến chồng chéo dễ gây nhầm lẫn và dễ kiểm tra, bảo trì. Chúng ta có thể đưa ra một số chính sách an toàn rất đơn giản như sau: Những máy trong mạng nội bộ được truy nhập ra Internet không giới hạn. Cho phép sự truy cập vào Web và Mail Server của mạng nội bộ từ Internet Tất cả các thông tin đi vào trong mạch nội bộ đều phải được xác thực và mã hoá. Từ những chính sách rất đơn giản như ví dụ trên đây chúng ta có thể phát triển để thành những chính sách hoạt động một cách hiệu quả và phức tạp hơn rất nhiều. ví dụ giới hạn mạng nội bộ chỉ được sử dụng internet một cách hạn chế với một vài dịch vụ cơ bản như Mail, HTTP … mà thôi, còn lại ngăn cấm hoàn toàn dịch vụ truyền tệp FTP v.v… 2.3.3. Xây dựng kiến trúc an toàn Các bước cần làm khi xây dựng một kiến trúc an toàn: Đầu tiên thì ta cho phép tất cả các máy trong mạng nội bộ có thể truy cập ra Internet. Sau đó ta thực hiện cài đặt các phần thồng tin không cần bảo vệ (ví dụ: Web Server và Mail Server) vào một vùng có tên kỹ thuật là vùng “phi quân sự” (Demilitarized Zone - MDZ). DMZ là một mạng tách biệt nơi mà ta sẽ đặt các hệ thống mà chúng ta không hoàn toàn tin tưởng (vì một khi từ Internet có thể truy cập vào được trong DMZ của chúng ta nên không thể tin tưởng chúng). Bởi vậy những hệ thống trong DMZ sẽ không bao giờ kết nối trực tiếp với mạng bên trong một khi chúng chưa được tin cậy. Có hai loại DMZ là: DMZ được bảo vệ và DMZ không được bảo vệ. DMZ được bảo vệ là một phần tách rời ra bên ngoài của tường lửa. DMZ không được bảo vệ là phần mạng nằm giữa Router và tường lửa. Chúng ta nên dùng loại DMZ được bảo vệ, vì nơi đó là nơi chúng ta thường đặt cả Web Server và Mail Server Con đường duy nhất có thể đi vào mạng nội bộ là phải đi qua sự kiểm soát của nhà quản trị mạng (cũng có thể cho phép thực hiện mạng từ xa) Cái mà chúng ta có thể nói đến nữa là DNS (Domain Name Server). Chúng ta sẽ phải thực hiện chia DNS ra làm nhiều phần. Chia DNS thành nhiều phần có nghĩa là chia các thao tác của DNS sẽ thuộc hai máy chủ DNS khác nhau. Chúng ta làm điều này vì ta sẽ để một máy chủ DNS sẽ lo cho chúng ta việc giải quyết thông tin tên miền của công ty với mạng bên ngoài. Và một máy chủ DNS ở bên trong để giải quyết vấn đề của mạng bên trong. Máy chủ DNS ngoài sẽ nằm trong DMS có được bảo vệ cùng với Web và Mail Server. Máy DNS bên trong sẽ nằm ở mạng bên trong với việc này sẽ giúp cho chúng ta không cho biết thông tin về tên miền trong màng nội bộ. Vì máy chủ DNS chứa thông tin về sơ đồ của mạng bên trong nên cúng ta cần phải đặt dưới sự bảo vệ tránh lộ thông tin về bản đồ mạng. 2.3.4. Thứ tự các quy tắc trong bảng (Sequence of Rules Base) Trước khi chúng ta xây dựng các quy tắc căn bản thì điều chúng ta cần phải quan tâm đến đó chính là thứ tự của các quy tắc (hay còn gọi là cấp độ của các quy tắc) và trong đó có một quy tắc đặc biệt, nó sẽ giữ vai trò then chốt trong chính sách bảo mật ở tường lửa của chúng ta. Có nhiều quy tắc có cấp độ tương tự như nhau nhưng vẫn phải đặt chúng theo một thứ tự trước/sau, việc này làm thay đổi phương thức làm việc căn bản của tường lửa. Đa số các tường lửa kiểm tra các gói tin một cách tuần tự và liên tục. Khi tường lửa nhận được một gói tin, nó sẽ xem xét gói tin đó có đúng với quy tắc nào trong bảng Rules base hay không bằng cách cho xét bắt đầu từ quy tắc thứ nhất, rồi quy tắc thứ hai … cho đến khi có quy tắc nào đó thoả mãn thì nó sẽ dừng công việc kiêm trả và nó sẽ thực thi theo quy tắc đó. Nếu gói tin đã được so sánh với tất cả các quy tắc trong bảng mà không có quy tắc nào thoả đáng thì gói tin đó sẽ bị từ chối (lọc bỏ). Vấn đề then chốt là phải sớm tìm được quy tắc đầu tiên thoả mãn để khớp được với quy tắc Rules Base để cho gói tin được nhanh chóng được đi qua. Và khi tìm hiểu rõ được điều này thì ta nên đặt các quy tắc đặc biệt trước tiên, rồi sau đó mới đến các quy tắc thông thường. Việc này ngăn chặn việc các quy tắc thông thường cho phép gói tin đi qua nhưng trong trường hợp đắc biệt lại không cho gói tin đi qua gây chồng chéo. Chính vì vậy phải luôn chú ý và phải đặt các quy tắc đặc biệt lên trước tiên rồi tới các nguyên tắc thông thường. Phải tuân thủ nguyên tắc này để tránh việc cấu hình bị sai giúp tường lửa làm việc hiệu quả, đồng thời dễ dàng trong công tác nâng cấp bảo trì và thay đổi sửa chữa. 2.3.5. Các quy tắc căn bản (Rules Base) Default properties (nguyên tắc mặc định): Phải loại trừ tất cả các trường hợp này và phải chắc chắn một điều là không có một gói tin nào có thể đi qua được, bất kể gói tin đấy là gói tin gì. Internal Outbound (đi từ mạng bên trong ra ngoài): Bước đầu tiên ta cho phép việc đi từ trong ra ngoài mà không có hạn chế nào. Và tất cả các dịch vụ cơ bản như Web, Mail, FTP v.v… đều cho phép Lockdown (): Hạn chế tất cả không cho phép một sự sâm nhập nào vào tường lửa của chúng ta. Đây là quy tắc chuẩn mà quy tắc căn bản cần phải có. Không có bất kỳ sự sâm nhập nào vào tường lửa nhưng chúng ta lại cần có người quản trị tường lửa (Firewall Admins). Admin Access (): Không ai có thể kết nối với tường lửa, bao gồm cả Admin. Chúng ta cũng phải tạo ra một quy tắc để cho phép Admin truy nhập vào được tường lửa Drop All (): Thông thường thì ta sẽ loại bỏ tất cả các gói tin mà không phù hợp với quy tắc nào. Nhưng ta nên đưa gói tin này vào một bản ghi và ta sẽ thêm vào đó cuối danh sách các quy tắc. Đây là một quy tắc chuẩn mà ta nên có. No Logging (): Thông thường sẽ có rất nhiều gói tin được giử đến tất cả các địa chỉ (vd: như tin quảng cáo) trên mạng. Khi đến tường lửa thì nó sẽ bị loại bỏ và sau đó được ghi vào bản ghi, nhưng việc này sẽ làm cho bản ghi nhanh chóng bị đầy. Chính vì vậy ta phải tạo một quy tắc sao cho khi ta bỏ gói tin ấy đi mà lại không ghi lại vào bản ghi. Đây cũng là một nguyên tắc căn bản mà đôi khi ta cũng phải dùng đến. DNS Access (): Mô hình và các thành phần của tường lửa. 2.4. Lọc gói và cơ chế hoạt động Khi nói đến việc chuyển thông tin dữ liệu giữa các mạng với nhau thông tin qua tường lửa thì điều đó có nghĩa rằng bức tường lửa hoạt động kết hợp chặt chẽ với giao thức TCP/IP vì giao thức này làm việc theo thuật toán chia nhỏ các dữ liệu nhận được từ các ứng dụng trên mạng. Tức là: Dữ liệu nhận được từ các dịch vụ chạy trên các giao thức phổ cập trên mạng (ví dụ như: telnet, SMTP, DNS, SMNP,…..) được phân thành các gói giữ liệu (data packet). Các gói tin này được gán những địa chỉ và thông tin để có thể nhận và tái hợp lại thành dữ liệu ban đầu. Chính vì vậy các loại tường lửa cũng liên quan rất nhiều đến các gói tin và các địa chỉ của chúng sau đây chúng ta sẽ cùng tìm hiểu lọc gói là gì và cơ chế của nó như thế nào. 2.4.1. Bộ lọc gói (packet filtering) Bộ lọc gói có những chức năng thực hiện việc kiểm tra số nhận dạng địa chỉ của gói tin để kiểm tra có thể cho phép chúng đi qua tường lửa hay không. Các thông tin có thể lọc được một gói tin bao gồm : Địa chỉ nơi xuất phát hay còn gọi là địa chỉ nguồn (source IP Address) Địa chỉ nơi nhận hay còn gọi là địa chỉ đích (destination IP Address). Số cổng của nơi xuất phát (source port). Số cổng của nơi nhận (destination). Nhờ vậy mà tường lửa có thể chặn được các kết nối từ mạng ngoài vào những máy chủ nội bộ hoặc vào trong mạng nội bộ. Từ những địa chỉ không cho phép. Hơn nữa việc kiểm soát các cổng làm cho tường lửa có khả năng chỉ cho phép một số loại kết nối nhất định vào máy chủ đã được định sẵn mà phục vụ cho một số dịch vụ nào đó (Telnet, SMTP,mail………) được phép sử dụng trên mạng nội bộ. 2.4.2. Cổng ứng dụng (Application Gateway) Application Gateway được thiết kế để tăng cường chức năng kiểm soát các loại dich vụ vào giao thức được cho phép truy cập vào hệ thống mạng. Cơ chế hoạt động của nó dưạ trên cái gọi là “dịch vụ đại diện” (proxy Service). Proxy Service hoạt động theo cơ chế: Một ứng dụng nào đó được quy chiếu đến (hay đại diện bởi) một proxy Service chạy trên các hệ thống máy chủ thì được quy chiếu đến ApplicationGateway của firewall. Cơ chế lọc của packet filtering phối hợp kiểm soát với cơ chế “đại diện của ”Application gateway cung cấp một khả năng an toàn hơn cho firewall trong việc giao tiếp thông tin với mạng ngoài. Ví dụ một hệ thống mạng có chức năng lọc gói tin, nó sẽ ngăn các kết nối bằng Telnet vào hệ thống chỉ trừ một cổng duy nhất -Telnet Application Gateway- là được phép. Một người sử dụng dịch vụ Telnet muốn kết nối vào hệ thống phải thực hiện các bước sau: Thực hiện dịch vụ Telnet đến Telnet Application Gateway rồi cho biết tên của máy chủ bên trong cần truy cập. Gateway kiểm tra địa chỉ IP nơi xuất phát của người truy cập rồi cho phép hoặc từ chối tuỳ theo chế độ an ninh của hệ thống. Người truy cập phải vượt qua được hệ thống kiểm tra xác định. Proxy service liên kết lưu thông giữa người truy cập với máy chủ. Cơ chế hoạt động này có ý nghĩa quan trọng trong việc thiết kế an ninh hệ thống. Nó có thể cung cấp nhiều khả năng, ví dụ như: Che dấu các thông tin: người dùng chỉ có thể nhìn thấy trực tiếp các Gateway được phép. Tăng cường kiểm tra truy cập bằng các dịch vụ xác thực (Authentication). Giảm đáng kể giá thành cho việc phát triển các hệ quản trị xác thực vì hệ thống này được thiết kế chỉ quy chiếu đến Application Gateway. Giảm thiếu các quy tắc kiểm soát của bộ lọc (Packet Filtering). Điều này làm tăng một cách đáng kể tốc độ hoạt động của Firewall. 2.4.3. Bộ lọc Sesion thông minh (Smart Sesion Filtering) Cơ chế hoạt động phối hợp giữa bộ lọc packet và cổng ứng dụng như đề cập ở trên cung cấp một chế độ an ninh cao tuy nhiên nó cũng tồn tại một vài hạn chế. Vấn đề chính hiện nay là làm sao để cung cấp đủ Proxy Service cho rất nhiều ứng dụng khác nhau đang phát triển ồ ạt. Điều này có nghĩa là nguy cơ, áp lực đối với việc firewall bị đánh lừa gia tăng lên rất lớn nếu các Proxy không kịp đáp ứng. Trong khi giám sát các packet ở những mức phía trên, nếu như lớp Network đòi hỏi nhiều công sức đối với việc lọc các packet đơn giản, thì việc giám sát các giao dịch lưu thông ở mức mạng (Sesion) đòi hỏi ít công việc hơn. Cách này cũng loại bỏ được các dịch vụ đặc thù cho từng loại ứng dụng khác nhau. Cơ chế hoạt động của bộ lọc sesion thông minh chính là việc kết hợp khả năng ghi nhận thông tin về các Sesion và sử dụng nó để tạo các quy tắc cho bộ lọc. Biết rằng, một Sesion ở mức network được tạo bởi hai packet lưu thông hai chiều: Một để kiểm soát các packet lưu thông từ host phát sinh ra nó đến máy chủ cần tới. Một để kiểm soát packet trở về từ máy chủ phát sinh Một bộ lọc thông minh sẽ nhận biết được rằng packet trở về theo chiều ngược lại nên quy tắc thứ hai là không cần thiết. Do vậy, cách tiếp nhận các packet không mong muốn sinh ra từ bên ngoài firewall sẽ khác biệt rất rõ với cách tiếp nhận cho các packet do những kết nối được phép (ra bên ngoài). Và như vậy dễ dàng nhận dạng được các packet “bất hợp pháp”. 2.4.4. Firewall hỗn hợp (Hybrid Firewall) Trong thực tế xây dựng, các firewall được sử dụng là kết hợp của nhiều kỹ thuật để tạo ra hiệu quả an ninh tối đa. Ví dụ việc để lọt lưới tại các kiểm soát của bộ lọc packet có thể được thực hiện tại bộ lọc sesion thông minh ở mực ứng dụng. Các giám sát của bộ lọc lót chặt chẽ bởi các dịch vụ Proxy của Application Gateway. 2.5. Kết luận Các hệ thống firewall thiết lập nhằm mục đích đảm bảo an ninh mạng thông qua việc kiểm soát phần header của các gói tin. Nhưng để sử dụng firewall đảm bảo được an ninh mạng một các hiệu quả thì người quản trị hệ thống cần có những hiểu biết sâu sắc về địa chỉ IP đích, địa chỉ IP nguồn, cổng dịch vụ, các giao thức mạng (TCP, UDP, SMTP…)và đặc biệt cần có những công cụ giúp cấu hình hệ thống firewall hiệu quả. Trong chương tiếp theo này em sẽ trình bày về công cụ FirewallIptable được tích hợp trên hệ điều hành mã nguồn mở Linux để bảo vệ cho mạng nội bộ. Chương 3: TÌM HIỂU IPTALES TRONG HỆ ĐIỀU HÀNH LINUX Hiện nay đã có nhiều phần mềm firewall được thực hiện trên các hệ điều hành như Windows NT, Linux, Solaris…. Nhưng với hệ điều hành mã nguồn mở Linux thì phần mềm IPtables Firewall phiên bản mới này thực sự là một công cụ mạnh dùng để đảm bảo an ninh mạng. Người quản trị mạng có thể sử dụng nó cùng nhiều tùy chọn hữu ích. Nhưng do phần mềm có quá nhiều tham số và để sử dụng được thì đòi hỏi người sử dụng phải có kiến thức chuyên sâu về hệ thống mạng máy tính. Như vậy với những người ít kiến thức về mạng máy tính và không biết rõ về tham số của chương trình thì không thể sử dụng công cụ IPtables được. Trong phạm vi đề tài này em sẽ tìm hiểu về công cụ Iptables của firewall trên Linux với việc kiểm soát người dùng trong mạng nội bộ được quyền gửi bất cứ yêu cầu truy cập trên bất cứ giao thức nào từ bên trong máy ra ngoài cũng như cản bất cứ yêu cầu truy cập trên mọi giao thức từ bên ngoài vào. Ngoài ra như ta đã biết, trong khi máy chạy trên Linux sẽ có một số dịch vụ đang lắng nghe (LISTEN). Những dịch vụ này chỉ phục vụ cho riêng bạn và bạn không muốn bất cứ ai từ Internet truy cập vào các dịch vụ này. Cho nên ta phải xây dựng các luật ấn định: khi các packet đi vào (INPUT) firewall, firewall sẽ kiểm tra xem có luật INPUT nào thích hợp cho phép nó đi vào, nếu không firewall sẽ cản nó theo quy định của quy chế mặc định. Điều này sẽ làm tăng khả năng bảo mật và tính linh động cho người quản trị mạng máy tính. Trong chương này em sẽ đi giới thiệu tổng quan về công cụ Firewall IPtable và tìm hiểu một số tập luật cơ bản trong IPtable: 3.1. Firewall IPtable trên Redhat Phiên bản nhân Linux version 2.4.x đã được đưa ra với rất nhiều tính năng mới giúp Linux hoạt động tin cậy hơn và hỗ trợ cho nhiều thiết bị. Một trong những tính năng mới của nó đó là hỗ trợ Netfilter iptables ngay trong kernel, giúp thao tác trên packet hiệu quả hơn so với các ứng dụng trước đó như ipfwadm trong kernel 2.0 và ipchains trong kernel 2.2, tuy vẫn hỗ trợ cho các bộ lệnh cũ. Thiết lập firewall theo kiểu lọc packet (packet filtering – lọc gói thông tin) với ipfwadm hoặc ipchains có nhiều hạn chế: thiếu các tích hợp cần thiết để mở rộng tính năng, khi sử dụng lọc packet cho các giao thức thông thường và chuyển đổi địa chỉ mạng (Network Address Translation - NAT) thì thực hiện hoàn toàn tách biệt mà không có được tính kết hợp. Netfilter và iptables trên kernel 2.4 giải quyết tốt các hạn chế trên và có thêm nhiều tính năng khác mà Ipfwadm và Ipchains không có. 3.1.1. Giới thiệu về IPtables Trong hệ thống Linux có rất nhiều firewall. Trong đó có một số firewall được cấu hình và hoạt động trên nền console rất nhỏ và tiện dụng đó là Iptable và Ipchain. a. Netfilter/IPtables Giới thiệu Iptables do Netfilter Organiztion viết ra để tăng tính năng bảo mật trên hệ thống Linux. Hình 7: Firewall IPTable trong Linux. Iptables là một tường lửa ứng dụng lọc gói dữ liệu rất mạnh, có sẵn bên trong kernel Linux 2.4.x và 2.6.x. Netfilter/Iptable gồm 2 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 để đẩy các luật của người dùng vào cho 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. Được thiết kế để thay thế cho linux 2.2.x Ipchains và linux 2.0.x ipfwadm và có nhiều đặc tính hơn Ipchains và nó được xây dựng hợp lý hơn với những điểm sau: Netfilter/Iptables có khả năng gì? Xây dựng bức tường lửa dựa trên cơ chế lọc gói stateless và stateful Dùng bảng NAT và masquerading chia sẻ sự truy cập mạng nếu không có đủ địa chỉ mạng. Dùng bảng NAT để cài đặt transparent proxy Giúp các hệ thống tc và iproute2 để tạo các chính sách router phức tạp và QoS Làm các thay đổi các bit(mangling) TOS/DSCP/ECN của IP header Có khả năng theo dõi sự kết nối, có khả năng kiểm tra nhiều trạng thái của packet. Nó làm việc này cho UDP và ICMP tốt nhất là kết nối TCP, ví dụ tình trạng đầy đủ của lọc ICMP chỉ cho phép hồi âm khi có yêu cầu phát đi, chứ không chặn các yêu cầu nhưng vẫn chấp nhận hồi âm với giả sử rằng chúng luôn đáp lại lệnh ping. Sự hồi âm không do yêu cầu có thể là tín hiệu của sự tấn công hoặc cửa sau. Xử sự đơn giản của các packet thoả thuận trong các chains (một danh sách các nguyên tắc) INPUT, OUTPUT, FORWARD. Trên các host có nhiều giao diện mạng, các packet di chuyển giữa các giao diện chỉ trên chain FORWARD hơn là trên 3 chain. Phân biệt rõ ràng giữa lọc packet và NAT (Nework Address Translation) Có khả năng giới hạn tốc độ kết nối và ghi nhật ký. Bạn có thể giới hạn kết nối và ghi nhật ký ồ ạt để tránh sự tấn công từ chối dịch vụ (Deinal of service). Có khả năng lọc trên các cờ và địa chỉ vật lý của TCP. Là một firewall có nhiều trạng thái, nên nó có thể theo dõi trong suốt sự kết nối, do đó nó an toàn hơn firewall có ít trạng thái. Iptables bao gồm 4 bảng, mỗi bảng với một chính sách (police) mặc định và các nguyên tắc trong chain xây dựng sẵn. b. Ipchain Một trong những phần mềm mà Linux sử dụng để cấu hình bảng NAT của kernel là Ipchain. Bên trong chương trình Ipchain có 2 trình kịch bản (scrip) chính được sử dụng để đơn giản hóa công tác quản trị Ipchains. Ipchain được dùng để cài đặt, duy trì và kiểm tra các luật của Ip firewall trong Linux kernel. Những luật này có thể chia làm nhóm chuỗi luật khác nhau là: Ip Input chain (chuỗi luật áp dụng cho các gói tin đi đến firewall). Ip Output chain (chuỗi luật áp dụng cho các gói tin được phát sinh cục bộ trên firewall và đi ra khỏi firewall). Ip forwarding chain (áp dụng cho các gói tin được chuyển tiếp tới máy hoặc mạng khác qua firewall). Và các chuỗi luật do người dùng định nghĩa (user defined). Ipchains sử dụng khái niệm chuỗi luật (chain ) để xử lý các gói tin. Một chuỗi luật là một danh sách các luật dùng để xử lý các gói tin có cùng kiểu là gói tin đến, gói tin chuyển tiếp hay gói tin đi ra. Những luật này chỉ rõ hành động nào được áp dụng cho gói tin. Các luật được lưu trữ trong bảng NAT là những cặp địa chỉ IP chứ không phải từng địa chỉ IP riêng lẻ. Một luật firewall chỉ ra các tiêu chuẩn để packet và đích đến. Nếu packet không đúng luật kế tiếp sẽ được xem xét, nếu đúng thì luật kế tiếp sẽ chỉ định rõ giá trị của đích có thể các chain do người dùng định nghĩa hay có thể là một trong các giá trị cụ thể sau: ACCEPT, DENY, REJECT, MASQ, REDICRECT hay RETURN. ACCEPT: cho phép packet đi qua. DENY: Hủy packet mà không có trả lời thông báo cho phía client biết điều này. REJECT: Tương tự như DENY nhưng có trả lời cho client biết gói tin đã bị hủy bỏ. MASQ: Chỉ hợp lệ đối với chain forward và chain do người dùng định nghĩa và được dùng khi kernel được biên dịch với CONFIG_IP_MASQUERADE. Với chain này packet sẽ được masquerade như là nó được sinh ra từ máy cục bộ, hơn thế nữa các packet ngược sẽ được nhận ra và chúng sẽ được demasqueraded một cách tự động, bỏ qua forwarding chain. REDIRECT: Chỉ hợp lệ với chain input và chain do người dùng định nghĩa và chỉ được dùng khi Linux kernel được biên dịch với tham số CONFIG_IP_TRANSPARENT_PROXY được định nghĩa. Với điều này packets sẽ được chuyển tới socket cục bộ, thậm chí chúng được gửi đến host ở xa. Một số cú pháp hay được sử dụng: Ipchains –[ADC] chain rule-specification [options] Ipchains –[RI] chain rulenum rule-specification [options] Ipchains –D chain rulenum [options] Ipchains –[LFZNX] [chain] [options] Ipchains –P chain target [options] Ipchains –M [-L | -S] [options] 3.1.2. Quá trình chuyển gói dữ liệu qua Netfilter Gói dữ liệu (packet) chạy trên cáp, sau đó đi vào card mạng (chẳng hạn như eth0). Đầu tiên packet sẽ qua chain PREROUTING (trước khi định tuyến). Tại đây, packet có thể bị thay đổi thông số (mangle) hoặc bị đổi địa chỉ IP đích (DNAT). Đối với packet đi vào máy, nó sẽ qua chain INPUT. Tại chain INPUT, packet có thể được chấp nhận hoặc bị hủy bỏ. Tiếp theo packet sẽ được chuyển lên cho các ứng dụng (client/server) xử lí và tiếp theo là được chuyển ra chain OUTPUT. Tại chain OUTPUT, packet có thể bị thay đổi các thông số và bị lọc chấp nhận ra hay bị hủy bỏ. Đối với packet forward qua máy, packet sau khi rời chain PREROUTING sẽ qua chain FORWARD. Tại chain FORWARD, nó cũng bị lọc ACCEPT hoặc DENY. Packet sau khi qua chain FORWARD hoặc chain OUTPUT sẽ đến chain POSTROUTING (sau khi định tuyến). Tại chain POSTROUTING, packet có thể được đổi địa chỉ IP nguồn (SNAT) hoặc MASQUERADE. Packet sau khi ra card mạng sẽ được chuyển lên cáp để đi đến máy tính khác trên mạng. 3.1.3. Cấu trúc của Iptable. Iptables được chia làm 4 bảng (table): 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 hay NAT đích. Bảng mangle dùng để thay đổi các thông số trong gói IP. Bảng conntrack dùng để theo dõi các kết nối. Mỗi table gồm nhiều mắc xích (chain). Chain gồm nhiều luật (rule) để thao 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. 3.1.4. Cài đặt iptables Iptables được cài đặt mặc định trong hệ thống Linux, package của iptables là iptablesversion.rpm hoặc iptables-version.tgz …, ta có thể dùng lệnh để cài đặt package này: $ rpm –ivh iptables-version.rpm đối Red Hat $ apt-get install iptables đối với Debian Khởi động iptables: service iptables start Tắt iptables: service iptables stop Tái khởi động iptables: service iptables restart Xác định trạng thái iptables: service iptables status 3.2. Các tham số dòng lệnh thường gặp 3.2.1 Gọi trợ giúp Để gọi trợ giúp về Iptables, bạn gõ lệnh $ man iptables hoặc $ iptables --help. Chẳng hạn nếu bạn cần biết về các tùy chọn của match limit, bạn gõ lệnh $ iptables -m limit --help. 3.2.2 Các tùy chọn để chỉ định thông số Chỉ định tên table: -t , ví dụ -t filter, -t nat, .. nếu không chỉ định table, giá trị mặc định là filter Chỉ đinh loại giao thức: -p , ví dụ -p tcp, -p udp hoặc -p ! udp để chỉ định các giao thức không phải là udp Chỉ định card mạng vào: -i , ví dụ: -i eth0, -i lo Chỉ định card mạng ra: -o , ví dụ: -o eth0, -o pp0 Chỉ định địa chỉ IP nguồn: -s , ví dụ: -s 192.168.0.0/24 (mạng 192.168.0 với 24 bít mạng), -s 192.168.0.1-192.168.0.3 (các IP 192.168.0.1, 192.168.0.2, 192.168.0.3). Chỉ định địa chỉ IP đích: -d , tương tự như -s Chỉ định cổng nguồn: --sport , ví dụ: --sport 21 (cổng 21), --sport 22:88 (các cổng 22 .. 88), --sport :80 (các cổng =22) Chỉ định cổng đích: --dport , tương tự như –sport 3.2.3. Các tùy chọn để thao tác với chain Tạo chain mới: iptables -N Xóa hết các luật đã tạo trong chain: iptables -X Đặt chính sách cho các chain `built-in` (INPUT, OUTPUT & FORWARD): iptables -P , ví dụ: iptables -P INPUT ACCEPT để chấp nhận các packet vào chain INPUT Liệt kê các luật có trong chain: iptables -L Xóa các luật có trong chain (flush chain): iptables -F Reset bộ đếm packet về 0: iptables -Z 3.2.4. Các tùy chọn để thao tác với luật Thêm luật: -A (append) Xóa luật: -D (delete) Thay thế luật: -R (replace) Chèn thêm luật: -I (insert) 3.2.5 Phân biệt giữa ACCEPT, DROP và REJECT packet ACCEPT: chấp nhận packet DROP: thả packet (không hồi âm cho client) REJECT: loại bỏ packet (hồi âm cho client bằng một packet khác) Một số ví dụ: # iptables -A INPUT -i eth0 --dport 80 -j ACCEPT chấp nhận các packet vào cổng 80 trên card mạng eth0 # iptables -A INPUT -i eth0 -p tcp --dport 23 -j DROP thả các packet đến cổng 23 dùng giao thức TCP trên card mạng eth0 # iptables -A INPUT -i eth1 -s ! 10.0.0.1-10.0.0.5 --dport 22 -j REJECT --reject-with tcp-reset Gửi gói TCP với cờ RST=1 cho các kết nối không đến từ dãy địa chỉ IP 10.0.0.1..5 trên cổng 22, card mạng eth1 # iptables -A INPUT -p udp --dport 139 -j REJECT --reject-with icmp-port-unreachable Gửi gói ICMP `port-unreachable` cho các kết nối đến cổng 139, dùng giao thức UDP 3.2.6 Phân biệt giữa NEW, ESTABLISHED và RELATED NEW: mở kết nối mới ESTABLISHED: đã thiết lập kết nối RELATED: mở một kết nối mới trong kết nối hiện tại Một số ví dụ: # iptables -P INPUT DROP Đặt chính sách cho chain INPUT là DROP # iptables -A INPUT -p tcp --syn -m state --state NEW -j ACCEPT Chỉ chấp nhận các gói TCP mở kết nối đã set cờ SYN=1 # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT Không đóng các kết nối đang được thiết lập, đồng thời cũng cho phép mở các kết nối mới trong kết nối được thiết lập # iptables -A INPUT -p tcp -j DROP các gói TCP còn lại đều bị DROP 3.2.7 Tùy chọn --limit, --limit-burst --limit-burst: mức đỉnh, tính bằng số packet --limit: tốc độ khi chạm mức đỉnh, tính bằng số packet/s(giây), m(phút), d(giờ) hoặc h(ngày). 3.3. Giới thiệu về bảng NAT (Network Address Traslation) Có một vấn đề được đặt ra hiện nay là sự khan hiếm địa chỉ IP, một cơ quan khi có rất nhiều máy tính nhưng chỉ được cấp phát một địa chỉ IP duy nhất. Vậy làm thế nào để chỉ với một địa chỉ IP duy nhất này tất cả các máy tính ở trong một cơ quan có thể truy cập đựơc Internet. Có một cơ chế để thực hiện điều đó, đó chính là NAT (Network Address Translation). 3.3.1. Khái niêm căn bản về NAT NAT được dùng khi cá nhân dùng địa chỉ mạng riêng của mình để kết nối vào Internet (Trong khi muốn kết nối được với Internet thì yêu cầu bạn phải có địa chỉ mạng chung – Public Address) Địa chỉ mạng chung sử dụng trên Internet chỉ tồn tại duy nhất và thông thường được cung cấp bởi các nhà cung cấp dịch vụ Internet (Internet Service Providers – ISPs) hay còn gọi là địa chỉ IP hợp lệ. Địa chỉ mạng riêng được sử dụng trong mạng nội bộ (Local Address Networt- LAN). Địa chỉ này thì không cần phải cung cấp từ nhà dịch vụ mà có thể được cung cấp bởi người quản trị mạng nội bộ. Nhưng không bao giờ địa chỉ mạng riêng đó lại được sử dụng trên Internet. NAT có thể giúp bạn vào Internet ngay trong khi bạn đang sử dụng địa chỉ mạng riêng đó. Thực hiện được điều đó là do NAT cho phép bạn chuyển đổi giữa hai kiểu địa chỉ đó, bất kể bạn đang ở mạng nội bộ có kích thước như thế nào trong khi ISPS chỉ cung cấp cho bạn duy nhất một địa chỉ chung duy nhất. NAT sẽ biến đổi địa chỉ nguồn và khi ra khỏi mạng nội bộ thì nó sẽ sử dụng địa chỉ mạng chung để vào Internet. Và nếu đứng từ Internet thì sẽ không thể biết được địa chỉ riêng của máy mà chỉ biết được địa chỉ chung của mạng nội bộ. NAT sẽ nhận biết các địa chỉ mạng của các máy trong mạng nội bộ thông qua số cổng dịch vụ. Với những đặc điểm này thì NAT có những ưu điểm sau: Bí mật được địa chỉ mạng nội bộ với mạng bên ngoài. Nếu kết nối vào Internet thì nó sẽ tiết kiệm được địa chỉ chung (địa chỉ Internet). Nó sẽ phục vụ cân bằng tải và có thể chia ra nhiều server khác nhau ở bên trong mạng nội bộ. Quá trình phân phối khoá sẽ được đảm bảo bí mật. Nếu thay đổi địa chỉ Internet cũng không cần phải cấu hình lại cho từng máy sẽ rất thuận lợi cho người quản trị. Giảm được chi phí đầu tư. Nhưng cùng với những ưu điểm nêu trên thì nó cũng không tránh khỏi các nhược điểm: Tốc độ xử lí chậm vì phải phân tích lại gói tin, ghi lại địa chỉ và tính toán địa chỉ gói tin. Dễ xảy ra tắc nghẽn nếu quá nhiều thông tin cùng qua lại một thời điểm. Chúng ta sẽ tìm hiểu về một số phương thức đổi địa chỉ của NAT sau đây. 3.3.2. Cách đổi địa chỉ IP động (Dynamic - NAT) NAT động là một trong những kĩ thuật chuyển đổi địa chỉ IP NAT (Network Address Translation). Các địa chỉ IP nội bộ được chuyển sang IP NAT như sau: Hình 8: Cách đổi đia chỉ IP động. NAT Router đảm nhận việc chuyển dãy IP nội bộ 169.168.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 từ liệu từ 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. 3.3.3. Cách đóng giả địa chỉ IP (masquerade) Hình 9: Cách đóng giả địa chỉ IP 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 trong mạng LAN với máy khác bên ngoài hoàn toàn trong suốt qua router. 3.3.4. Một số ví dụ sử dụng kỹ thuật NAT Iptables hổ trợ tùy chọn -j REDIRECT cho phép đổi hướng cổng một cách dễ dàng. Ví dụ như SQUID đang listen trên cổng 3128/tcp. Để redirect cổng 80 đến cổng 3128 này: # iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128 Lưu ý: tùy chọn -j REDIRECT có trong chain PREROUTING SNAT & MASQUERADE Để tạo kết nối `transparent` giữa mạng LAN 192.168.0.1 với Internet thì lập cấu hình cho tường lửa Iptables như sau: # echo 1 > /proc/sys/net/ipv4/ip_forward Cho phép forward các packet qua máy chủ đặt Iptables # iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 210.40.2.71 Đổi IP nguồn cho các packet ra card mạng eth0 là 210.40.2.71. Khi nhận được packet vào từ Internet, Iptables sẽ tự động đổi IP đích 210.40.2.71 thành IP đích tương ứng của máy tính trong mạng LAN 192.168.0/24. Hoặc có thể dùng MASQUERADE thay cho SNAT như sau: # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  (MASQUERADE thường được dùng khi kết nối đến Internet là pp0 và dùng địa chỉ IP động) DNAT Giả sử đặt các máy chủ Proxy, Mail và DNS trong mạng DMZ. Để tạo kết nối trong suốt từ Internet vào các máy chủ này : # echo 1 > /proc/sys/net/ipv4/ip_forward # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2 # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to- destination 192.168.1.3 # iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j DNAT --to-destination 192.168.1.4 Chương 4: THIẾT LẬP FIREWALL BẢO VỆ MẠNG NỘI BỘ BẰNG IPTABLES TRONG HỆ ĐIỀU HÀNH LINUX Trong ứng dụng này dùng iptables trên máy chủ Linux làm Firewall cho phép mạng bên ngoài truy cập vào vùng DMZ và cho phép mạng nội bộ truy cập mạng bên ngoài qua Firewall. Không cho phép mạng bên ngoài truy cập vào mạng nội bộ. 4.1. Cách làm việc của Firewall có vùng DMZ Hình 10: Firewall có vung DMZ Firewall cho phép máy bên trong mạng nội bộ truy cập tài nguyên mạng bên ngoài bằng kỹ thuật SNAT Chỉ cho phép các máy của mạng bên ngoài truy cập tài nguyên web Server và DNS Server trong vùng DMZ bằng kỹ thuật DNAT. Các yêu cầu đối với Firewall 2.4.x , các modules cần thiết cho Firewall, gán địa chỉ cho mạng nội bộ và DMZ thực hiện giống như đối với ứng dụng IP NAT. Các chain do người dùng định nghĩa: gồm 3 chains ‘bad_tcp_packets’, ‘allowed’ và ‘icmp_packets’ giống như trong ứng dụng IP NAT. 4.2. Cấu trúc file cấu hình và cấu hình File cấu hình cho Firewall: 4.2.1. Cấu hình các tuỳ chọn: #!/bin/sh # rc.firewall_dmz – Firewall DMZ cho Linux 2.4.x và iptables # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 1. Configuration options. # 1.1 Cấu hình giao diện với Internet. # INET_IP="194.236.50.152" HTTP_IP="194.236.50.153" DNS_IP="194.236.50.154" INET_IFACE="eth0" # 1.2 Cấu hình giao diện mạng cục bộ. LAN_IP="192.168.0.1" LAN_IFACE="eth1" # 1.3 Cấu hình giao diện vùng DMZ. # DMZ_HTTP_IP="192.168.1.2" DMZ_DNS_IP="192.168.1.3" DMZ_IP="192.168.1.1" DMZ_IFACE="eth2" # 1.4 Cấu hình Localhost. LO_IFACE="lo" LO_IP="127.0.0.1" # 1.5 Vị trí chương trình iptables. IPTABLES="/usr/sbin/iptables" 4.2.2. Tải các module cần thiết kế vào Kernel. # 2. Tải các module cần thiết vào Kernel. /sbin/depmod -a /sbin/modprobe ip_tables /sbin/modprobe ip_conntrack /sbin/modprobe iptable_filter /sbin/modprobe iptable_mangle /sbin/modprobe iptable_nat /sbin/modprobe ipt_LOG /sbin/modprobe ipt_limit /sbin/modprobe ipt_state 4.2.3. Cài đặt cấu hình cần thiết cho hệ thống file proc. # 3. đặt cấu hình cần thiết cho hệ thống file. echo "1" > /proc/sys/net/ipv4/ip_forward 4.2.4. Cài đặt các nguyên tắc. # 4. Cài đặt các nguyên tắc. # 4.1 Filter table # 4.1.1 Nguyên tắc cập nhật luật trong các chain. # $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP # 4.1.2 Tạo các chain do người dùng định nghĩa # Tạo chain bad_tcp_packets. $IPTABLES -N bad_tcp_packets # Tạo chain allowed, icmp_packets. $IPTABLES -N allowed $IPTABLES -N icmp_packets # # 4.1.3 Tạo nội dung của chains do người dùng định nghĩa # chain bad_tcp_packets. $IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \ -m state --state NEW -j REJECT --reject-with tcp-reset $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG \ --log-prefix "New not syn:" $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP # chain allowed. # $IPTABLES -A allowed -p TCP --syn -j ACCEPT $IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A allowed -p TCP -j DROP # # chain icmp_packets $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT # 4.1.4 INPUT chain # Các packet dị dạng không muốn $IPTABLES -A INPUT -p tcp -j bad_tcp_packets # Các packets từ Internet đến Firewall. # $IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets # Các packets từ LAN, DMZ hoặc LOCALHOST # # Từ giao diện DMZ đến firewall IP DMX $IPTABLES -A INPUT -p ALL -i $DMZ_IFACE -d $DMZ_IP -j ACCEPT # # Từ giao diện LAN đến firewall IP LAN $IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_IP -j ACCEPT # # Từ giao diện Localhost đến IP Localhost $IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT $IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT $IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT # Các nguyên tắc yêu cầu DHCP từ LAN. $IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT # tất cả các packet đã được thiết lập kết nối và có quan hệ với một kết nối đã thiết lập đi vào từ #Internet đến Firewall. $IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED \ -j ACCEPT # # Ghi lại những packet không khớp với nguyên tắc trên. $IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \ --log-level DEBUG --log-prefix "IPT INPUT packet died: " # # 4.1.5 FORWARD chain # Các packet dị dạng không muốn $IPTABLES -A FORWARD -p tcp -j bad_tcp_packets # # Phần DMZ # Các nguyên tắc chung $IPTABLES -A FORWARD -i $DMZ_IFACE -o $INET_IFACE -j ACCEPT $IPTABLES -A FORWARD -i $INET_IFACE -o $DMZ_IFACE -m state \ --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -i $LAN_IFACE -o $DMZ_IFACE -j ACCEPT $IPTABLES -A FORWARD -i $DMZ_IFACE -o $LAN_IFACE -m state \ --state ESTABLISHED,RELATED -j ACCEPT # HTTP server # $IPTABLES -A FORWARD -p TCP -i $INET_IFACE -o $DMZ_IFACE -d $DMZ_HTTP_IP \ --dport 80 -j allowed $IPTABLES -A FORWARD -p ICMP -i $INET_IFACE -o $DMZ_IFACE -d $DMZ_HTTP_IP \ -j icmp_packets # # DNS server $IPTABLES -A FORWARD -p TCP -i $INET_IFACE -o $DMZ_IFACE -d $DMZ_DNS_IP \ --dport 53 -j allowed $IPTABLES -A FORWARD -p UDP -i $INET_IFACE -o $DMZ_IFACE -d $DMZ_DNS_IP \ --dport 53 -j ACCEPT $IPTABLES -A FORWARD -p ICMP -i $INET_IFACE -o $DMZ_IFACE -d $DMZ_DNS_IP \ -j icmp_packets # # Phần LAN $IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # ghi lại những packet không khớp với các nguyên tắc trên $IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG\ --log-level DEBUG --log-prefix "IPT FORWARD packet died: " # # 4.1.6 OUTPUT chain # Các packet dị dạng không muốn $IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets # # Các nguyên tắc cho phép packet đi ra. $IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT $IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT $IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT # ghi lại những packet không khớp với các nguyên tắc trên $IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG\ --log-level DEBUG --log-prefix "IPT OUTPUT packet died: " # 4.2 nat table # 4.2.4 PREROUTING chain $IPTABLES -t nat -A PREROUTING -p TCP -i $INET_IFACE -d $HTTP_IP -- dport 80 \ -j DNAT --to-destination $DMZ_HTTP_IP $IPTABLES -t nat -A PREROUTING -p TCP -i $INET_IFACE -d $DNS_IP -- dport 53 \ -j DNAT --to-destination $DMZ_DNS_IP $IPTABLES -t nat -A PREROUTING -p UDP -i $INET_IFACE -d $DNS_IP -- dport 53 \ -j DNAT --to-destination $DMZ_DNS_IP # 4.2.5 POSTROUTING chain # Nguyên tắc cho phép các máy trong mạng nội bộ truy cập Internet # $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP 4.3. Cấu hình cho máy nội bộ truy cập mạng bên ngoài Bên cạnh việc đặt địa chỉ IP thích hợp cho các máy nội bộ bên trong Firewall (gán địa chỉ IP tĩnh hoặc động), đặt địa chỉ IP Gateway thích hợp của server Linux Firewall, địa chỉ DNS Server. Cấu hình Microsoft Windows 2000 sau khi đã cài card mạng thích hợp vào máy tính. Thực hiện các cấu hình như trong IP NAT. 4.4. Kiểm tra Firewall Bước 1: kiểm tra kết nối cục bộ của các máy nội bộ ------------------------------------ client# ping 192.168.0.10 PING 192.168.0.10 (192.168.0.10): 56 data bytes 64 bytes from 192.168.0.10: icmp_seq=0 ttl=255 time=0.8 ms 64 bytes from 192.168.0.10: icmp_seq=1 ttl=255 time=0.4 ms 64 bytes from 192.168.0.10: icmp_seq=2 ttl=255 time=0.4 ms 64 bytes from 192.168.0.10: icmp_seq=3 ttl=255 time=0.5 ms --- 192.168.0.10 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.4/0.5/0.8 ms Bước 2: Kiểm tra kết nối máy nội bộ đến server Firewall. client# ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1): 56 data bytes 64 bytes from 192.168.0.1: icmp_seq=0 ttl=255 time=0.8 ms 64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=0.4 ms 64 bytes from 192.168.0.1: icmp_seq=2 ttl=255 time=0.4 ms 64 bytes from 192.168.0.1: icmp_seq=3 ttl=255 time=0.5 ms ^C --- 192.168.0.1 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.4/0.5/0.8 ms Bước 3: Kiểm tra kết nối cục bộ của Server Firewall với LAN firewall-server# ping 192.168.0.1 PING 192.168.0.1 (192.168.0.1): 56 data bytes 64 bytes from 192.168.0.1: icmp_seq=0 ttl=255 time=0.8 ms 64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=0.4 ms 64 bytes from 192.168.0.1: icmp_seq=2 ttl=255 time=0.4 ms 64 bytes from 192.168.0.1: icmp_seq=3 ttl=255 time=0.5 ms ^C --- 192.168.0.1 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.4/0.5/0.8 ms Bước 4: Kiểm tra kết nối cục bộ của Server Firewall với DMZ. firewall-server# ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1): 56 data bytes 64 bytes from 192.168.1.1: icmp_seq=0 ttl=255 time=0.8 ms 64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=0.4 ms 64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=0.4 ms 64 bytes from 192.168.1.1: icmp_seq=3 ttl=255 time=0.5 ms ^C --- 192.168.1.1 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.4/0.5/0.8 ms Bước 5: Kiểm tra kết nối với Server Firewall đến máy cục bộ. firewall-server# ping 192.168.0.10 PING 192.168.0.10 (192.168.0.10): 56 data bytes 64 bytes from 192.168.0.10: icmp_seq=0 ttl=255 time=0.8 ms 64 bytes from 192.168.0.10: icmp_seq=1 ttl=255 time=0.4 ms 64 bytes from 192.168.0.10: icmp_seq=2 ttl=255 time=0.4 ms 64 bytes from 192.168.0.10: icmp_seq=3 ttl=255 time=0.5 ms ^C --- 192.168.0.10 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.4/0.5/0.8 ms Bước 6: Kiểm tra kết nối giao diện với bên ngoài của Server Firewall. ------------------------------------- firewall-server# ping 194.236.50.152 PING 194.236.50.152(194.236.50.152): 56 data bytes 64 bytes from 194.236.50.152: icmp_seq=0 ttl=255 time=0.8 ms 64 bytes from 194.236.50.152: icmp_seq=1 ttl=255 time=0.4 ms 64 bytes from 194.236.50.152: icmp_seq=2 ttl=255 time=0.4 ms 64 bytes from 194.236.50.152: icmp_seq=3 ttl=255 time=0.5 ms ^C --- 194.236.50.152 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.4/0.5/0.8 ms Bước 7: Kiểm tra kết nối từ máy nội bộ đến giao diện bên ngoài của Server Firewall. client# ping 194.236.50.152 PING 194.236.50.152(194.236.50.152): 56 data bytes 64 bytes from 194.236.50.152: icmp_seq=0 ttl=255 time=0.8 ms 64 bytes from 194.236.50.152: icmp_seq=1 ttl=255 time=0.4 ms 64 bytes from 194.236.50.152: icmp_seq=2 ttl=255 time=0.4 ms 64 bytes from 194.236.50.152: icmp_seq=3 ttl=255 time=0.5 ms ^C --- 194.236.50.152 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.4/0.5/0.8 ms 4.5. Xây dựng phần mềm quản trị Firewall IPTables từ xa 4.5.1. Mô tả bài toán Công cụ Firewall IP-Tables chạy trên nền hệ điều hành Linux phiên bản Redhat là một công cụ rất mạnh. Người quản trị có thể sử dụng công cụ này để đảm bảo an ninh mạng máy tính rất hiệu quả. Nhưng muốn sử dụng công cụ này một cách hiệu quả nhất thì đòi hỏi người quản trị phải hiểu biết sâu sắc về kiến thức mạng máy tính và nhớ chắc chắn một số lượng lớn các tham số phức tạp. Chính điều này gây nên khó khăn cho người quản trị. Vì lí do nêu trên mà tôi đã xây dựng phần mềm trợ giúp việc quản trị firewall từ xa. Phần mềm được xây dựng bằng ngôn ngữ PHP và chạy trên Webserver Apache nên tại mọi máy tính trong mạng ta đều có thể truy xuất đến phần mềm và cấu hình hệ thống firewall này. Ngoài ra để giải quyết vấn đề người sử dụng phải nhớ quá nhiều tham số phức tạp thì chương trình sẽ có sẵn các tập luật và mỗi luật này sẽ có chú thích và mô tả rõ ràng công dụng. 4.5.2. Một số giao diện chương trình Như phần trên đã nêu, để có thể sử dụng công cụ firewall iptables người sử dụng cần phải có kiến thức rất sâu sắc về mạng như các giao thức, địa chỉ IP, cổng dịch vụ hơn nữa là rất nhiều tham số của tường lửa iptables. Với mục đích giúp dễ dàng cho việc cấu hình firewall nhờ iptables thì phần mềm quản lí IP-Tables đã được xây dựng trên nền tảng là ngôn ngữ PHP. Phần mềm với nhiều tính năng nổi trội như cho phép người dùng có thể cấu hình tường lửa từ xa, cho phép lưu trữ các cấu hình cũ và có thể cập nhật lại, người dùng dễ dàng thêm/xóa/sửa/ di chuyển các câu lệnh.... Khả năng cấu hình firewall từ xa: Vì chương trình được xây dựng trên cơ sở các trang web nên tại mọi thời điểm chỉ cần người sử dụng có trình duyệt và kết nối đến máy tính cần cấu hình firewall. Trang chủ Hình 11: Giao diện chính của chương trình Một số tùy chọn Hình 12: Giao diện chương trình với một số tùy chọn Hình 13: Giao diện khi đã thiết lập xong tùy chọn và thực thi chương trình. Sau khi lựa chọn các tùy chọn. Kết quả trả lại một file dưới dạng text các tập luật IPtables. Hình 14: Kết quả chương trình trả về tập luật IPtables 4.5.3. Đánh giá phần mềm Ưu điểm phần mềm - Thiết kế dưới dạng website nên tại mọi máy tính trong mạng đều có thể thực hiện công việc cấu hình iptables. - Giúp người dùng không cần kiến thức quá sâu sắc về các tham số của iptables vẫn có thể cấu hình được firewall nhờ việc tạo sẵn các luật. - Việc tái sử dụng, chỉnh sửa với các luật, câu lệnh iptables là rất dễ dàng. - Chương trình thiết kế dạng mã nguồn mở nên người dùng có thể tự thay đổi theo yêu cầu. Nhược điểm phần mềm - Hiện tại mới hỗ trỗ một ngôn ngữ. - Cài đặt còn khó khăn vì phải cài nhiều phần mềm hỗ trợ như HTTP Server, Crond tab ... - Mọi người dùng đều có quyền như nhau. Sự phát triển trong tương lai - Một website sẽ được thiết kế với mục đích giới thiệu và công bố các phiên bản mới của phần mềm. - Phiên bản tiếp theo sẽ cung cấp khả năng cập nhật các luật mới. Và các file luật này sẽ được cung cấp trên website. - Mỗi người dùng sẽ được cấp quyền sử dụng các luật khác nhau trong tập luật. Yêu cầu về cấu hình phần mềm - Hệ điều hành Linux (Redhat 9.0) - WebServer (Apache Server 2.0...) - Iptables firewall 1.2.9 - PHP 4.03 (hoặc mới hơn) KẾT LUẬN Đề tài về Firewall luôn là mối quan tâm hàng đầu của các nhà quản trị mạng nói riêng và của những nhà tin học nói chung. Để có thể xây dựng được một mạng riêng mà có thể tránh khỏi mọi sự tấn công là không thể, nhưng chúng ta có thể xây dựng được những mạng có tính an toàn cao theo những yêu cầu cụ thể. Để có thể xây dựng được những mạng như vậy, người quản trị mạng phải nắm rõ được những kiến thức cơ bản về Firewall. Đề tài đã trình bày khá chi tiết về Firewall, và những vấn đề liên quan đến bảo vệ thông tin cho các mạng nội bộ. Đề tài cũng đã thiết lập được mô hình Firewall bảo vệ mạng nội bộ bằng IPTABLES trong hệ điều hành LINUX. Với hệ thống Firewall sử dụng Iptables trên Linux đạt được sự ổn định cao của hệ điều hành Linux và một Iptables với nhiều chức năng đáp ứng được cho nhu cầu của các đơn vị có nhu cầu xây dựng hệ thống Firewall khi có mạng nội bộ kết nối Internet. Hệ thống Firewall này mang tính ứng dụng thực tế cao vì: Phần cứng sử dụng cho hệ thống này không cần có cấu hình mạnh. Tất cả các phần mềm sử dụng cho hệ thống này đều là phần mềm mã nguồn mở. Tài liệu hỗ trợ cho các phần mềm này có đầy đủ trên Internet và miễn phí. Trên Internet có nhiều diễn đàn về chủ đề này. Hệ thống được thiết kế mềm dẻo tuỳ vào chính sách an toàn của đơn vị. Sử dụng hệ điều hành có độ ổn định cao và bảo mật tốt. TÀI LIỆU THAM KHẢO [1] Nguyễn Hồng Sơn - Giáo trình Hệ thống mạng CCNA – NXB Giáo dục năm 2001 [2] Nguyễn Thanh Thuy, Nguyễn Quang Huy, Nguyễn Hữu Đức, Đinh Lan Anh - Nhập môn hệ điều hành Linux – NXB Khoa học kỹ thuật – 2000. [3] Dave Hucaby – Cisco ASA and PIX Firewall Handbook- Cisco Press – năm 2005 [4] Michael Hasenstein – IP Network Address Translation - 1997 [5] Elizabeth, D. Ziwicky, Simon Cooper & D. Brent Chapman - Building Internet Firewall. [6] Website: [7] [8] [9] [10]

Các file đính kèm theo tài liệu này:

  • docDo an tot nghiep_thuy.doc
  • docbao cao tom tat.doc
  • pptTrinhchieu_thuy.ppt