Luận văn Nghiên cứu giải pháp bảo vệ mạng nội bộ

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.

doc62 trang | Chia sẻ: lylyngoc | Lượt xem: 2756 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu giải pháp bảo vệ mạng nội bộ, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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. QoS 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à 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] [options] Ipchains –D chain rulenum [options] Ipchains –[LFZNX] [chain] [options] Ipchains –P chain target 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 <=80), --sport 22: (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:

  • doctim_hieu_van_de_bao_mat_mang_lan_9069.doc