Đồ án Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux

pdf 91 trang phuongnguyen 7990
Bạn đang xem 20 trang mẫu của tài liệu "Đồ án Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfdo_an_tim_hieu_ly_thuyet_va_xay_dung_firewall_tren_nen_linux.pdf

Nội dung text: Đồ án Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux

  1. Đồ án tốt nghiệp: Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux
  2. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux LỜI CẢM ƠN Để có được đồ án này, em xin bày tỏ lòng biết ơn sâu sắc đến các thầy cô giáo trong trường Đại học Bách Khoa Hà Nội nói chung, khoa Công nghệ thông tin, chương trình đào tạo kỹ sư chất lượng cao tại Việt Nam ( P.F.I.E.V ) nói riêng, những người đã tận tình giảng dạy, truyền đạt cho em những kiến thức quý báu trong 5 năm học vừa qua. Em xin chân thành cảm ơn thầy giáo hướng dẫn, Thạc sỹ - Giảng viên chính Đỗ Văn Uy, bộ môn Công nghệ phần mềm, khoa Công nghệ thông tin, trường Đại học Bách Khoa Hà Nội đã nhiệt tình hướng dẫn, chỉ bảo và cung cấp cho em nhiều kiến thức cũng như tài liệu quý trong suốt quá trình làm đồ án. Nhờ sự giúp đỡ của thầy em mới có thể hoàn thành được đồ án này. Em xin chân thành cảm ơn các cô chú, các anh, cùng các bạn đồng nghiệp tại phòng giải pháp phần mềm hệ thống và bảo mật, công ty phát triển phần mềm và hỗ trợ công nghệ bộ quốc phòng – Misoft, những người đã tạo điều kiện về cơ sở vật chất, phương tiện làm việc cũng như truyền đạt những kinh nghiệm qúy báu cho em trong thời gian thực tập tốt nghiệp và làm đồ án tốt nghiệp tại đây. Cuối cùng, xin cảm ơn gia đình, bạn bè, những người luôn ở bên tôi và cho tôi những sự động viên lớn lao trong thời gian thực hiện đồ án này.
  3. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux MỤC LỤC LỜI CẢM ƠN 1 Chƣơng 1 : TỔNG QUAN AN TOÀN AN NINH MẠNG 9 I. Tình hình thực tế 10 II. Mô hình mạng 11 2.1 Mô hình OSI và TCP/IP 11 2.2 Các tầng của mô hình TCP/IP 12 2.2.1 Tầng truy nhập mạng - Network Acces Layer 13 2.2.2 Tầng Internet – Internet Layer 13 2.2.3 Tầng giao vận - Transport Layer 13 2.2.4 Tầng ứng dụng – Application Layer 13 2.3 Các giao thức,dịch vụ trong mạng TCP/IP 14 2.3.1 Các giao thức tầng mạng – Network Layer Protocols 14 b. Giao thức ánh xạ địa chỉ - Address Resolution Protocol (ARP 14 2.3.2 Các giao thức tầng giao vận – Transport Layer Protocols 15 2.3.3 Các dịch vụ tầng ứng dụng 17 e. Các dịch vụ tìm kiếm : 18 2.4 Các lỗ hổng trên mạng 18 III. Các mục tiêu cần bảo vệ 19 3.1 Dữ liệu 19 3.2 Tài nguyên 20 3.3 Danh tiếng 20 IV. Tấn công trên mạng và các chiến lƣợc bảo vệ 20 4.1 Các dạng tấn công 20 4.1.1 Xâm nhập 20 4.1.2 Từ chối dịch vụ 22 4.1.3 Ăn trộm thông tin 23 4.2 Một số kỹ thuật tấn công 25 4.2.1 Giả mạo địa chỉ IP ( IP Spoofing ) 25 4.2.2. SYN flooding – Tấn công tràn ngập gói tin SYN 26 4.2.3 ICMP flooding – Tấn công tràn ngập gói tin ICMP 27 4.3 Các chiến lƣợc bảo vệ mạng 27 4.3.1 Quyền hạn tối thiểu ( Least Privilege ) 27 4.3.2 Bảo vệ theo chiều sâu ( Defence in Depth ) 28 4.3.3 Nút thắt ( Choke Point ) 28 4.3.4 Liên kết yếu nhất ( Weakest Link ) 28 4.3.5 Hỏng an toàn ( Fail – Safe Stance ) 28 4.3.6 Tính toàn cục ( Universal Participation ) 29 4.3.7 Đa dạng trong bảo vệ ( Diversity of Defence ) 29 4.3.8 Đơn giản ( Simplicity ) 29 Chƣơng 2 : INTERNET FIREWALL 30 I. Khái niệm 31 1.1 Khái niệm 31 1.2 Ƣu, nhƣợc điểm của Firewall 32 1.2.1 Ƣu điểm : 32 1.2.2 Nhƣợc điểm 32 II. Các chức năng cơ bản của Firewall 34 2.1 Packet Filtering 34
  4. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux 2.1.1 Khái niệm 34 2.1.2 Các hoạt động của Packet Filtering 35 2.1.3 Ƣu, nhƣợc điểm của Packet Filtering 36 2.2 Proxy 36 2.2.1 Khái niệm 36 2.2.2 Ƣu nhƣợc điểm của Proxy 37 2.2.3 Các hoạt động của Proxy 37 2.2.4 Phân loại Proxy 37 2.2.5 Sử dụng Proxy với các dịch vụ Internet 38 2.3 Network Address Translation 38 2.4 Theo dõi và ghi chép ( Monitoring and Logging ) 39 III. Kiến trúc Firewall 40 3.1 Bastion host 40 3.1.1 Những nguyên tắc chính của một Bastion host 40 3.1.2 Các dạng Bastion host 41 2.3.4 Vị trí của Bastion host trên mạng 41 3.2 Dual –home host 42 3.3 Screened host 42 3.4 Screened Subnet 43 3.5 Một số kiến trúc biến thể khác 45 IV. Bảo dƣỡng Firewall 45 4.1 Quản lý Firewall 45 4.1.1 Sao lƣu Firewall 45 4.1.2 Quản lý các tài khoản 45 4.1.3 Quản lý dung lƣợng đĩa 46 4.2 Kiểm tra hệ thống 46 4.3 Luôn cập nhật cho Firewall 46 Chƣơng 3 : HỆ ĐIỀU HÀNH LINUX 47 I. Tổng quan hệ điều hành Linux 48 1.1 Sơ lƣợc về Linux 48 1.2 Môi trƣờng Linux 48 1.2.1. Kernel: 49 1.2.2. Bộ điều khiển thiết bị: 49 1.2.3. Lệnh và tiện ích: 49 1.2.4. Shell: 49 1.2.5. Windows và Graphic User Interface: 50 1.3 Lập trình Shell script 50 1.3.1. Shell là gì : 50 1.3.2. Các loại Shell : 50 1.3.3. Viết và chạy các chƣơng trình shell : 50 1.3.4. Các cấu trúc lệnh cơ bản của shell : 51 II. Kết nối mạng trong Linux 52 2.1 Giới thiệu 52 2.2 Thiết bị, trình điều khiển và giao diện mạng 52 2.3 Thiết lập cấu hình mạng TCP/IP 53 2.4 Truyền các packet 53 III. IPTables 55 3.1. Giới thiệu iptables 55 3.2. Quá trình di chuyển của gói tin qua lõi của hệ thống 55 3.3. Sử dụng IPtables Commands 58 3.4. Sử dụng Masquerading và NAT 60
  5. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Chƣơng 4 : XÂY DỰNG HỆ THỐNG BKWALL 61 I. Tổng quan về hệ thống BKWall 61 1.1 Mục tiêu xây dựng hệ thống BKWall 61 1.2 Giải pháp kỹ thuật đƣợc lựa chọn 62 1.3 Qui trình phát triển 63 1.4 Công cụ phát triển 64 1.5 Dự kiến kết quả đạt đƣợc 64 II. Mô hình và đặc tả chức năng hệ thống BKWall 64 2.1 Mô hình 64 2.2 Đặc tả chức năng 65 2.3 Mô hình triển khai BKWall 65 III. Phân tích thiết kế hệ thống BKWall 66 3.1 Biểu đồ phân cấp chức năng 66 3.2 Biểu đồ luồng dữ liệu 66 3.2.1 Biểu đồ mức bối cảnh 66 3.2.2 Biểu đồ mức đỉnh 67 3.3 Thiết kế module 69 3.3.1 Module chƣơng trình chính 69 3.3.2 Module chuyển tiếp yêu cầu 74 3.3.3 Module quản lý cấu hình 75 3.3.4 Module quản lý luật cho Packet Filtering, Web Proxy 76 3.3.5 Module theo dõi thông tin về hệ thống 80 3.4 Tính bảo mật của hệ thống 80 IV. Tích hợp, cài đặt, kiểm thử, đánh giá kết quả hệ thống BKWall 80 4.1 Tích hợp hệ thống 80 4.2 Cài đặt hệ thống 81 4.3 Kiểm thử hệ thống 82 4.4 Đánh giá kết quả 87 MỤC LỤC HÌNH VẼ
  6. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Hình 1-1 : Kiến trúc OSI và TCP/IP 12 Hình 1-2 : Đƣờng đi của dữ liệu qua các phần tử trên mạng 12 Hình 1-3 : Cấu trúc gói tin IP ( IP datagram ) 14 Hình 1-5 : Khuôn dạng UDP datagram 17 Hình 1-6: Tấn công kiểu DOS và DDoS 22 Hình 1-7: Tấn công kiểu DRDoS 23 Hình 1-8: Mô hình ứng dụng mail trên mạng Internet 24 Hình 1-9: Kết nối Internet từ LAN 24 Hình 1-10 : Thiết lập kết nối TCP giữa client và server 25 Hình 1-11 : Tấn công tràn ngập SYN (1 ) 26 Hình 1-12 : Tấn công tràn ngập SYN ( 2 ) 26 Hình 1-13 : Tấn công tràn ngập gói tin ICMP 27 Hình 1-14 : Bảo vệ theo chiều sâu 28 Hình 2-1 : Vị trí Firewall trên mạng 32 Hình 2-2 : Screening Router sử dụng bộ lọc gói 34 Hình 2-3 : Proxy Server 36 Hình 2-4: Chuyển đổi địa chỉ mạng 38 Hình 2-5: Kiến trúc Dual –home host 42 Hình 2-6: Kiến trúc Screen host 43 Hình 2-7: Kiến trúc Screen subnet 44 Hình 3-1: Mô hình chức năng Shell 50 Hình 3-2: Giao diện, trình điều khiển và thiết bị 52 Hình 3-3: Sơ đồ Netfilter hook 54 Hình 3-4 : Quá trình gói tin trong lõi hệ thống Linux 57 Hình 4-1: Mô hình tổng thể hệ thống BKWall 64 Hình 4-2: Đặc tả chức năng hệ thống BKWall 65 Hình 4-3: Mô hình triển khai BKWall 65 Hình 4-4: Biểu đồ phân cấp chức năng 66 Hình 4-5: Biểu đồ luồng dữ liệu mức bối cảnh 66 Hình 4-6: Biểu đồ chức năng điều khiển 67 Hình 4-7: Biểu đồ chức năng Quản lý cấu hình 67 Hình 4-8: Biểu đồ chức năng Quản lý luật lọc gói 68 Hình 4-9: Biểu đồ chức năng Quản lý luật Web Proxy 68 Hình 4-10: Biểu đồ chức năng theo dõi hoạt động 68 Hình 4-11: Sơ đồ khối module chƣơng trình chính 69 Hình 4-12: Sơ đồ khối module chuyển tiếp yêu cầu 75 Hình 4-13:Sơ đồ khối module quản lý cấu hình 76 Hình 4-14: Sơ đồ khối module quản lý luật 77 Hình 4-15: Mô hình triển khai BKWall trong mạng 82 Hình 4-16: Trang chủ - Home page 84 Hình 4-17: Cấu hình Packet Filtering 85 Hình 4-18: Các dịch vụ: truy cập từ xa, thay đổi password 85 Hình 4-19: Trang cấu hình Web Proxy 86 Hình 4-20: Trang thông tin trạng thái hệ thống 86 BẢNG CÁC TỪ VIẾT TẮT
  7. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux ARP( Address Resolution Protocol ) : Giao thức chuyển đổi từ địa chỉ IP sang địa chỉ vật lý BKWall( Bach Khoa Firewall System ) CGI (Common Gateway Interface) : Giao tiếp gateway chung DDoS(Distributed Denied of Service) : Tấn công từ chối dịch vụ phân tán DMA(Direct Memory Access) : Truy nhập bộ nhớ trực tiếp DMZ(DeMilitarized Zone) : Vùng phi quân sự DNS(Domain Name Service) : Dịch vụ tên miền DoS(Denied of Service) : Tấn công từ chối dịch vụ DRDoS(Distributed Reflection Denied of Service) : DoS phản xạ, phân tán FDDI(Fiber Distributed Data Interface ) FIB(Forwarding Information Table) : Bảng thông tin chuyển đổi định tuyến FTP(File Transfer Protocol) : Giao thức truyền file HTTP(Hyper Text Transfer Protocol) : Giao thức truyền siêu văn bản ICMP(Internet Control Message Protocol): Giao thức điều khiển thông điệp Internet IGMP(Internet Group Management Protocol) : Giao thức Internet để các host kết nối, huỷ kết nối từ các nhóm multicast. IP(Internet Protocol) : Giao thức Internet IPS(Intrusion Preventation System) : Hệ thống phòng chống xâm nhập ISP(Internet Services Provider) : Nhà cung cấp dịch vụ Internet ISDN( Integrated Services Digital Network) : Mạng số học các dịch vụ tích hợp LAN(Local Area Network) : Mạng nội bộ MAC(Media Access Control) : Địa chỉ thiết bị MTU(Maximum Transmission Unit) : Đơn vị truyền lớn nhất NIC(Network Interface Card) : Card giao tiếp mạng PSTN(Public Switched Telephone Network ) : Mạng điện thoại chuyển mạch công cộng RARP(Reverse Address Resolution Protocol ) : Giao thức chuyển đổi từ địa chỉ vật lý sang địa chỉ IP RIP( Routing Information Protocol ) : Một kiểu giao thức dẫn đƣờng SSL(Secure Socket Layer) : Tầng socket an toàn SSH( Secure Shell ) : Dịch vụ truy cập từ xa STMP( Simple Mail Transfer Protocol ) : Giao thức truyền thƣ đơn giản TCP(Transmission Control Protocol) : Giao thức điều khiển truyền tin TELNET : dịch vụ đăng nhập hệ thống từ xa UDP(User Datagram Protocol) : Giao thức điều khiển truyền tin không tin cậy URI(Uniform Resouce Indentifier ) Địa chỉ định vị tài nguyên URL(Uniform Resouce Locator) : Địa chỉ tài nguyên thống nhất LỜI NÓI ĐẦU
  8. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Trong những năm gần đây, việc tổ chức và khai thác mạng Internet rất phát triển. Mạng Internet cho phép các máy tính trao đổi thông tin một cách nhanh chóng, thuận tiện. Mọi đối tƣợng đều có thể sử dụng các dịch vụ và tiện ích của Internet một cách dễ dàng nhƣ trao đổi thông tin, tham khảo các thƣ viện tri thức đồ sộ của nhân loại Tai thời điểm hiện nay thì lơi ích của Internet là quá rõ ràng và không thể phủ nhận. Nhƣng một điều không may là đi kèm với nó là các nguy cơ mất an toàn thông tin trên Internet đang là một vấn đề hang đầu cản trở sự phát triển của Internet. Bảo đảm an toàn an ninh không chỉ là nhu cầu riêng của các nhà cung cấp dịch vụ mà nó còn là nhu cầu của chính đáng của mỗi ngƣời sử dụng. Các thông tin nhạy cảm về quốc phòng, thƣơng mại là vô giá và không thể để lọt vào tay đối thủ cạnh tranh Trên thế giới đã có nhiều công trình nghiên cứu về lĩnh vực bảo mật, bảo vệ an toàn thông tin trên mạng và kết quả chúng đã trở thành các sản phẩm thƣơng mại nhƣ : Vista Firewall, ZoneAlarm Firewall, VPN-1/Firewall-1, SmoothWall, Astaro Tuy nhiên mỗi loại có những ƣu nhƣợc điểm riêng,phát triển theo những hƣớng khác nhau. Các sản phẩm này đƣợc xây dựng trên những nền hệ điều hành khác nhau nhƣng chủ yếu là Windows của Microsoft và hệ điều hành mã nguồn mở Linux. Linux là hệ điều hành họ UNIX miễn phí dùng cho máy tính cá nhân đang đƣợc sử dụng rộng rãi hiện nay. Hệ điều hành Linux đã thu những thành công nhất định. Hiện nay Linux ngày càng phát triển, đƣợc đánh giá cao và thu hút nhiều sự quan tâm của các nhà tin học. Tại Việt Nam, mặc dù Internet mới chỉ trở lên phổ biến mấy năm gần đây nhƣng những vấn đề an toàn an ninh mạng cũng không là ngoại lệ. Mặc dù thực sự chƣa có tổn thất lớn về kinh tế nhƣng vẫn tiềm ẩn trong đó rất nhiều nguy cơ mất an toàn. Các cuộc tấn công vào hệ thống của nhà cung cấp dịch vụ, xoá bỏ dữ liệu ngày một tăng. Ở Việt Nam hiện nay chƣa có sản phẩm Firewall thƣơng mại nào của ngƣời Việt tạo ra. Đặc biệt là sản phẩm Firewall đƣợc xây dựng trên nền hệ điều hành mã nguồn mở Linux. Do đó, muốn khai thác và sử dụng Internet thì vấn đề an toàn an ninh phải đƣợc đặt lên hang đầu. Có rất nhiều biện pháp khác nhau để bảo vệ hệ thống chống lại các cuộc tấn công từ bên ngoài. Một trong những biện pháp đƣợc áp dụng rộng rãi là sử dụng tƣờng lửa – Firewall. Thực tế đã cho thấy đây là một biện pháp đơn giản nhƣng hiệu quả đạt đƣợc lại rất khả quan. Trên cơ sở đó, em đã chọn đề tài : “ Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux” Mục tiêu của đề tài bao gồm : 1. Tìm hiểu chung về an toàn an ninh mạng, các kỹ thuật tấn công trên mạng. Các chiến lƣợc bảo vệ. 2. Tìm hiểu lý thuyết về Firewall 3. Thực hiện xây dựng một Firewall trên nền hệ điều hành Linux Bố cục của đồ án gồm 4 chƣơng đƣợc bố trí nhƣ sau : Chƣơng 1 : Tổng quan an toàn an ninh mạng Trình bày các khái niệm chung về an toàn an ninh mạng, tính cấp thiết của đề tài. Các mô hình mạng và các giao thức đƣợc sử dụng để truyền thông trên mạng.
  9. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Các dạng tấn công, một số kỹ thuật tấn công đang đƣợc sử dụng phổ biến hiện nay, từ đó đƣa ra các chiến lƣợc bảo vệ hệ thống khỏi các nguy cơ này. Chƣơng 2 : Internet Firewall Trình bày khái niệm tổng quát về Firewall. Các chức năng cơ bản của Firewall. Các mô hình hay kiến trúc triển khai của một Firewall trong hệ thống. Chƣơng 3: Hệ điều hành Linux Chƣơng này trình bày khái quát về hệ điều hành Linux. Cấu hình mạng trong môi trƣờng Linux. Đặc biệt là chúng ta quan tâm đến một gói tiện ích đƣợc tích hợp hầu hết trong các bản phân phối Linux. Đó là IPtables – Nó thực hiện chức năng lọc gói ở mức lõi ( kernel ) của hệ thống. Từ đó đƣa ra một vài mô hình Firewall đơn giản dựa trên IPtables. Chƣơng 4 : Xây dựng hệ thống BKWall – Bach Khoa Firewall System. Thực hiện xây dựng hệ thống BKWall dựa trên sản phẩm mã nguồn mở SmoothWall. Ngoài ra, đồ án còn có phần phụ lục trình bày các bảng từ viết tắt sử dụng trong bài, danh mục các tài liệu tham khảo.
  10. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Chƣơng 1 : TỔNG QUAN AN TOÀN AN NINH MẠNG  Tình hình thực tế  Mô hình mạng  Các mục tiêu cần bảo vệ  Tấn công trên mạng và các chiến lƣợc bảo vệ Trong chƣơng này chúng ta sẽ trình bày các khái niệm chung về an toàn an ninh mạng, tình hình thực tế. Các mô hình mạng và các giao thức đƣợc sử dụng để truyền thông trên mạng. Các dạng tấn công, một số kỹ thuật tấn công đang đƣợc sử dụng phổ biến hiện nay, từ đó đƣa ra các chiến lƣợc bảo vệ hệ thống khỏi các nguy cơ này.
  11. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux I. Tình hình thực tế Mạng Internet – mạng toàn cầu kết nối các máy tính cung cấp các dịch vụ nhƣ WWW, E_mail, tìm kiếm thông tin là nền tảng cho dịch vụ điện tử đang ngày càng phát triển nhanh chóng. Internet đã và đang trở thành một phần không thể thiếu đƣợc trong cuộc sống hằng ngày. Và cùng với nó là những sự nguy hiểm mà mạng Internet mang lại. Theo thống kê của CERT®/CC ( Computer Emegency Response Team/ Coordination Center ) thì số vụ tấn công và thăm dò ngày càng tăng. Dạng tấn công 1999 2000 2001 2002 2003 Root Compromise 113 157 101 125 137 User Compromise 21 115 127 111 587 Từ chối dịch vụ 34 36 760 36 25 Mã nguy hiểm 0 0 4.764 265 191.306 Xóa Website 0 0 236 46 90 Lợi dụng tài nguyên 12 24 7 39 26 Các dạng tấn công khác 52 9 108 1268 535.304 Các hành động do thám 222 71 452 488.000 706.441 Tổng cộng 454 412 6.555 489.890 1.433.916 Những kẻ tấn công ngày càng tinh vi hơn trong các hoạt động của chúng. Thông tin về các lỗ hổng bảo mật, các kiểu tấn công đƣợc trình bày công khai trên mạng. Không kể những kẻ tấn công không chuyên nghiệp, những ngƣời có trình độ cao mà chỉ cần một ngƣời có một chút hiểu biết về lập trình, về mạng khi đọc các thông tin này là có thể trở thành một hacker. Chính vì lí do này mà số vụ tấn công trên mạng không ngừng ra tăng và nhiều phƣơng thức tấn công mới ra đời, không thể kiểm soát. Theo điều tra của Ernst & Young, thì 4/5 các tổ chức lớn ( số lƣợng nhân viên lớn hơn 2500 ) đều triển khai các ứng dụng nền tảng, quan trọng trong mạng cục bộ LAN. Khi các mạng cục bộ này kết nối với mạng Internet, các thông tin thiết yếu đều nằm dƣới khả năng bị đột nhập, lấy cắp, phá hoại hoặc cản trở lƣu thôn. Phần lớn các tổ chức này tuy có áp dụng những biện pháp an toàn nhƣng chƣa triệt để và có nhiều lỗ hổng để kẻ tấn công có thể lợi dụng. Những năm gần đây, tình hình bảo mật mạng máy tính đã trở lên nóng bỏng hơn bao giờ hết khi hàng loạt các vụ tấn công, những lỗ hổng bảo mật đƣợc phát hiện hoặc bị lợi dụng tấn công. Theo Arthur Wong – giám đốc điều hành của SecurityFocus – trung bình một tuần, phát hiện ra hơn 30 lỗ hổng bảo mật mới. Theo điều tra của SecurityFocus trong số 10.000 khách hàng của hãng có cài đặt phần mềm phát hiện xâm nhập trái phép thì trung bình mỗi khách hàng phải chịu
  12. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux 129 cuộc thăm dò, xâm nhập. Những phần mềm web server nhƣ IIS của Microsoft là mục tiêu phổ biến nhất của các cuộc tấn công. Trƣớc tình hình đó thì việc bảo vệ an toàn thông tin cho một hay một hệ thống máy tính trƣớc nguy cơ bị tấn công từ bên ngoài khi kết nối vào Internet là một vấn đề hết sức cấp bách. Để thực hiện các yêu cầu trên, thế giới đã xuất hiện các phần mềm khác với những tính năng khác nhau mà đƣợc gọi là Firewall. Sử dụng Firewall để bảo vệ mạng nội bộ, tránh sự tấn công từ bên ngoài là một giải pháp hữu hiệu, đảm bảo đƣợc các yếu tố : - An toàn cho sự hoạt động của toàn bộ hệ thống mạng - Bảo mật cao trên nhiều phƣơng diện - Khả năng kiểm soát cao - Mềm dẻo và dễ sử dụng - Trong suốt với ngƣời sử dụng - Đảm bảo kiến trúc mở “Biết địch biết ta, trăm trận trăm thắng” để có thể bảo vệ đƣợc hệ thống, chống lại sự tấn công của hacker, ta phải biết những mục tiêu cần bảo vệ, các kỹ thuật tấn công khác nhau, và đƣa ra chiến lƣợc bảo vệ mạng hợp lý . II. Mô hình mạng 2.1 Mô hình OSI và TCP/IP Kiến trúc mạng đƣợc mô tả theo hai dạng mô hình OSI và TCP/IP nhƣ hình vẽ dƣới đây. FTP – File Transfer Protocol SMTP – Simple Mail Transfer Protocol DSN – Domain Name Protocol SNMP – Simple Network Management Protocol ICMP – Internet Control Message Protocol ARP – Address Resolution Protocol FDDI – Fiber Distributed Data Interface RIP – Routing Information Protocol. TCP/IP thực chất là một họ giao thức cùng làm việc với nhau để cung cấp phƣơng tiện truyền thông liên mạng. Dữ liệu đƣợc truyền đi trên mạng theo sơ đồ sau :
  13. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Hình 1-1 : Kiến trúc OSI và TCP/IP Hình 1-2 : Đƣờng đi của dữ liệu qua các phần tử trên mạng 2.2 Các tầng của mô hình TCP/IP
  14. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Nhƣ trong phần trên đã giới thiệu về mô hình OSI và TCP/IP, chúng ta có thể đƣa ra sự tƣơng ứng giữa các tầng của chúng nhƣ sau : 2.2.1 Tầng truy nhập mạng - Network Acces Layer Tầng truy nhập mạng bao gồm các giao thức mà nó cung cấp khả năng truy nhập đến một kết nối mạng. Tại tầng này, hệ thống giao tiếp với rất nhiều kiểu mạng khác nhau.Cung cấp các trình điều khiển để tƣơng tác với các thiết bị phần cứng ví dụ nhƣ Token Ring, Ethernet, FDDI 2.2.2 Tầng Internet – Internet Layer Tầng Internet cung cấp chức năng dẫn đƣờng các gói tin. Vì vậy tại tầng này bao gồm các thủ tục cần thiết giữa các hosts và gateways để di chuyển các gói giữa các mạng khác nhau. Một gateway kết nối hai mạng, và sử dụng kết nối mạng bao gồm IP ( Internet Protocol ), ICMP ( Internet Control Message Protocol ) 2.2.3 Tầng giao vận - Transport Layer Tầng giao vận phân phát dữ liệu giữa hai tiến trình khác nhau trên các máy tính host. Một giao thức đầu vào tại đây cung cấp một kết nối logic giữa các thực thể cấp cao.Các dịch vụ có thể bao gồm việc điều khiển lỗi và điều khiển luồng. Tại tầng này bao gồm các giao thức Transmission Control Protocol ( TCP ) và User Datagram Protocol ( UDP ) 2.2.4 Tầng ứng dụng – Application Layer Tầng này bao gồm các giao thức phục vụ cho việc chia sẻ tài nguyên và điều khiển từ xa ( remote access ). Tầng này bao gồm các giao thức cấp cao mà chúng đƣợc sử dụng để cung cấp các giao diện với ngƣời sử dụng hoặc các ứng dụng. Một số giao thức quan trọng nhƣ File Transfer Protocol ( FTP ) cho truyền thông, HyperText Transfer Protocol ( HTTP ) cho dịch vụ World Wide Web, và Simple Network Management Protocol ( SNMP ) cho điều khiển mạng. Ngoài ra còn có : Domain Naming Service ( DNS ), Simple Mail Transport Protocol ( SMTP )
  15. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Post Office Protocol ( POP ). Internet Mail Access Protocol ( IMAP ), Internet Control Message Protocol ( ICMP ) . 2.3 Các giao thức,dịch vụ trong mạng TCP/IP 2.3.1 Các giao thức tầng mạng – Network Layer Protocols a. Internet Protocol ( IP ) Mục đích chính của giao thức IP là cung cấp khả năng kết nối các mạng con thành liên mạng để truyền dữ liệu. Vai trò của nó tƣơng tự vai trò tầng mạng trong mô hình OSI IP là giao thức kiểu “không liên kết” ( connectionless ) có nghĩa là không cần thiết lập liên kết trƣớc khi truyền dữ liệu. Đơn vị dữ liệu dùng trong giao thức IP đƣợc gọi là IP datagram có khuôn dạng bao gồm phần header và phần dữ liệu. Hình 1-3 : Cấu trúc gói tin IP ( IP datagram ) Để định danh các host trên mạng thì trong giao thức dùng địa chỉ IP có độ dài 32 bits đƣợc tách thành 4 vùng mỗi vùng 1 byte và chúng thƣờng đƣợc viết dƣới dạng các số thập phân. Ngƣời ta chia địa chỉ IP ra làm 5 lớp ký hiệu là A, B, C, D, E. Ví dụ về một địa chỉ IP : 192.168.1.1 Mỗi địa chỉ IP gồm hai phần là : địa chỉ mạng ( network id ) và địa chỉ máy trạm ( host id ). Để phân tách giữa phần network id và host id ngƣời ta dùng đến subnet mask do vậy một địa chỉ IP đầy đủ thƣờng là : 192.168.1.1/24 b. Giao thức ánh xạ địa chỉ - Address Resolution Protocol (ARP) Địa chỉ IP và địa chỉ phần cứng hay địa chỉ vật lý ( độ dài 48 bits ) là độc lập nhau. Giao thức ARP làm nhiệm vụ chuyển đổi từ địa chỉ IP sang địa chỉ vật lý khi cần thiết. Để ánh xạ từ địa chỉ IP sang địa chỉ vất lý theo hai cách là tĩnh hoặc động. ARP và RARP sử dụng phƣơng pháp ánh xạ động. Nó sử dụng các gói tin ARP request và ARP reply c. Giao thức ánh xạ ngƣợc địa chỉ - Reverse Address Resolution Protocol (RARP) Tuơng tự nhƣ ARP chỉ có điều nó sẽ ánh xạ ngƣợc từ địa chỉ vật lý (MAC) sang địa chỉ IP. Sơ đồ đơn giản sự hoạt động của giao thức nhƣ sau :
  16. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux d. IP version6 or IP next generation ( IPv6 or IPng ) IPv6 về cơ bản vẫn giống nhƣ IPv4. Sau đây là một số điểm khác biệt giữa chúng : - IP address có độ dài là 128 bits so với 32 bít của IPv4. Ví dụ một địa chỉ IPv6 flea:1075:fffb:110e:0000:0000:7c2d:a65f - IPv6 có thể tự động cấu hình địa chỉ cục bộ và địa chỉ router cục bộ giải quyết các vấn đề cấu hình và thiết lập - IPv6 có phần header đơn giản và lƣợc bỏ một số phần. Nó góp phần tăng hiệu quả quá trình dẫn đƣờng và có thể dễ dàng bổ xung một loại header mới. - Hỗ trợ cho chứng thực, bảo mật dữ liệu là một phần của kiến trúc Ipv6. e. Internet Control Message Protocol (ICMP) Vì IP là giao thức không tin cậy vì vậy phải cần đến giao thức ICMP. Giao thức này thực hiện truyền các thông báo điều khiển ( báo cáo về tình trạng lỗi trên mạng, ) giữa các gateway hay các trạm của liên mạng. Tình trạng lỗi có thể là : một datagram không thể tới đuợc đích của nó, hoặc một router không đủ bộ đệm để lƣu và chuyển một datagram. Một thông báo ICMP đƣợc tạo ra và sẽ chuyển cho IP để IP thực hiện gói ( encapsulate ) với một IP header để truyền cho trạm hay router đích. 2.3.2 Các giao thức tầng giao vận – Transport Layer Protocols Có hai giao thức tại tầng giao vận là : TCP ( Transport Control Protocol ) và UDP ( User Datagram Protocol ). Cả hai đều nằm giữa tầng ứng dụng và tầng mạng. TCP và UDP có trách nhiệm truyền thông tiến trình với tiến trình tại tầng giao vận (process – to – process) a. Transport Layer Protocol ( TCP ) TCP là một giao thức kiểu “ hƣớng liên kết “ ( connection – oriented ) nghĩa là cần phải thiết lập liên kết locgic trƣớc khi có thể truyền dữ liệu. Đơn vị dữ liệu dùng trong TCP đƣợc gọi là segment ( đoạn dữ liệu ) có khuôn dạng đƣợc mô tả dƣới đây : Hình 1-4 : Khuôn dạng của TCP segment Các tham số trong khuôn dạng trên có ý nghĩa nhƣ sau :
  17. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux - Source port ( 16bits ) : Số hiệu cổng của trạm nguồn - Destrination port ( 16bits ) : Số hiệu cổng của trạm đích - Sequence Number ( 32bits ): Số hiệu của byte đầu tiên của segment trừ khi bit SYN đƣợc thiết lập. Nếu bit SYN đƣợc thiết lập thì nó là số hiệu tuần tự khởi đầu ( ISN ) - Acknowledment Number ( 32bits ) : Số hiệu của segment tiếp theo mà trạm nguồn đang chờ nhận đƣợc và nó có ý nghĩa báo nhận tốt - Data offset ( 4bits ) : Số lƣợng từ ( 32bits ) trong TCP header. Nó có tác dụng chỉ ra vị trí bắt đầu của vùng data. - Reserved ( 6bits ) : dành để sử dụng sau này - Code bits hay các bits điều khiển ( 6bits ) theo thứ tự từ trái sang phải nhƣ sau : URG : vùng con trỏ khẩn ( Urgent Pointer ) có hiệu lực ACK : vùng báo nhận ( ACK number ) có hiệu lực PSH : chức năng PUSH RST : khởi động lại liên kết SYN : đồng bộ hoá các số hiệu tuần tự ( sequence number ) FIN : không còn dữ liệu từ trạm nguồn - Window ( 16bits ) : cấp phát credit để kiểm soát luồng dữ liệu( cơ chế cửa sổ ). Đây chính là số lƣợng các byte dữ liệu, bắt đầu từ byte đƣợc chỉ ra trong vùng ACK number, mà trạm nguồn đã sẵn sang nhận - Check sum ( 16bits ) : mã kiểm soát lỗi ( theo phƣơng pháp CRC ) - Urgent Poiter ( 16bits ) : con trỏ này trỏ tới số hiệu tuần tự của byte đi theo sau sữ liệu khẩn, cho phép bên nhận biết đƣợc độ dài của dữ liệu khẩn, chỉ có hiệu lực khi bit URG đƣợc thiết lập. - Options ( độ dài thay đổi ) : khai báo các options của TCP - Padding ( độ dài thay đổi ) : Phần chèn thêm vào header để đảm bảo đủ kích thƣớc. - TCP data : phần dữ liệu của TCP segment. b. User Datagram Protocol ( UDP ) UDP là giao thức không kết nối, không tin cậy nhƣ giao thức TCP, nó đƣợc sủ dụng thay thế TCP trong một số ứng dụng. Không giống nhƣ TCP nó không có chức năng thiết lập và giải phóng liên kết. Nó cũng không cung cấp các cơ chế báo nhận, không sắp xếp các đơn vị dữ liệu theo thứ tự đến và có thể dẫn đến tình trạng mất dữ liệu hoặc trùng dữ liệu mà không hề có thông báo lỗi cho ngƣời gửi. UDP cung cấp cơ chế gán và quản lý các số hiệu cổng để định danh duy nhất cho các ứng dụng chạy trên một trạm của mạng. Do có ít chức năng nên UDP có xu hƣớng chạy nhanh hơn so với TCP. Nó thƣờng đƣợc sử dụng cho các ứng dụng đòi hỏi độ tin cậy không cao. Khuôn dang một UDP datagram nhƣ sau :
  18. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Hình 1-5 : Khuôn dạng UDP datagram c. Các giao thức dẫn đƣờng – Routing Protocols Nhƣ chúng ta biết Internet bao gồm các mạng đƣợc kết nối bởi các routers. Khi một gói đƣợc chuyển từ trạm nguồn đến trạm đích, nó phải đi qua các routers mà các router này đƣợc gắn với trạm đích. Khoảng cách quãng đƣờng đi này đƣợc xác định khác nhau tuỳ thuộc vào từng giao thức đƣợc sử dụng. Để đƣa đƣợc các gói tin đến đích thì tại các trạm hay các router phải cài đặt các giao thức dẫn đƣờng. Tuỳ vào giải thuật đựoc sử dụng mà có các loai giao thức dẫn đƣờng khác nhau. Bao gồm các giao thức dẫn đƣờng tĩnh ( ví dụ nhƣ RIP – Routing Information Protocol ) và dẫn đƣờng động ( ví dụ nhƣ OSPF – Open Shortest Path First ) 2.3.3 Các dịch vụ tầng ứng dụng a. Dịch vụ tên miền – Domain Name System ( DNS ) Dịch vụ này cho phép định danh các phần tử trên mạng theo tên thay vì các con số trong địa chỉ IP. Hệ thống này đƣợc đựoc phân cấp và mỗi cấp đƣợc gọi là một miền ( domain) các miền đƣợc tách nhau bằng dấu chấm. Domain cao nhất là cấp quốc gia, mỗi quốc gia đƣợc cấp một tên miền riêng gồm hai ký tự ví dụ vn ( Việt Nam ), fr ( France ) và sau đó lại tiếp tục đuợc phân cấp nhỏ hơn. Việc ánh xạ giữa địa chỉ IP và các tên miền đƣợc thực hiện bởi hai thực thể có tên là : Name Resolver và Name Server. Name Resolever đƣợc cài đặt trên trạm làm việc còn Name Server đƣợc cài đặt trên một máy chủ. Name Resolver gửi yêu cầu ánh xạ địa chỉ tới Name Server. Nếu host name đƣợc tìm thấy thì địa chỉ IP tuơng ứng sẽ đƣợc gửi trả lại trạm làm việc. Sau đó trạm làm việc sẽ kết nối với host bằng địa chỉ IP này. b. Đăng nhập từ xa - TELNET Cho phép ngƣời sử dụng từ một trạm làm việc của mình có thể đăng nhập ( login ) vào một trạm ở xa thông qua mạng và làm việc y nhƣ đang ngồi tại đó. TELNET làm việc dựa trên giao thức TCP và trao đổi thông tin tại cổng 23. Để khởi động TELNET, từ trạm làm việc của mình ngƣời sử dụng chỉ việc gõ lệnh sau từ của sổ command line : telnet c. Truyền tệp – File Transfer Protocol ( FTP ) Cho phép chuyển các tệp tin từ một máy trạm này sang một trạm khác, bất kể máy đó ở đâu và sử dụng hệ điều hành gì, chỉ cần chúng đƣợc nối với nhau thông qua mạng Internet và có cài đặt FTP. Để khởi động FTP ta sử dụng câu lệnh : ftp Sau đó ta phải đăng nhập với user name và password. Khi đó chúng ta có thể thực hiện các công việc nhƣ lấy về hay tải lên một file. d. Thƣ điện tử - Electronic Mail ( E_mail ) Hiện là một dịch vụ phổ biến nhất trên mạng Internet. Nó là dịch vụ kiểu
  19. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux “ lƣu và chuyển tiếp “ ( store – and – forward ) tức là hai trạm trao đổi thƣ điện tử cho nhau không cần phải liên kết trực tiếp. Chúng đƣợc lƣu chuyển thông qua các E_mail Server Các giao thức đƣợc sử dụng cho dịch vụ thƣ điện tử bao gồm : - Simple Mail Transfer Protocol ( SMTP ) - Post Office Protocol Version 3 ( POP3 ) - Internet Message Access Protocol ( IMAP ) - Multipurpose Internet Mail Extension ( MIME ) e. Các dịch vụ tìm kiếm : Bao gồm các dịch vụ nhƣ : - Tìm kiếm file ( Archie ) - Tra cứu thông tin theo thực đơn ( Gopher ) - Tìm kiếm thông tin theo chỉ số ( WAIS ) - Tìm kiếm thông tin dựa trên siêu văn bản ( WWW ) 2.4 Các lỗ hổng trên mạng Việc sử dụng mạng Internet làm tăng nhanh khả năng kết nối, nhƣng đồng thời chứa đựng trong đó những hiểm hoạ không ngờ. Những lỗ hổng để kẻ tấn công có thể lợi dụng, gây tổn thƣơng cho hệ thống có rất nhiều. Sau đây là một vài lỗ hổng phổ biến trên cộng đồng mạng hiện nay. - Các mật khẩn yếu : Mọi ngƣời thƣờng có thói quen sử dụng mật khẩu theo tên của ngƣời thân hay những gì quen thuộc với mình. Với những mật khẩu dễ bị phán đoán, kẻ tấn công có thể chiếm đoạt đƣợc quyền quản trị trong mạng, phá huỷ hệ thống, cài đặt backdoor Ngày nay, một ngƣời ngồi từ xa cũng có thể đăng nhập vào đƣợc hệ thống cho nên ta cần phải sử dụng những mật khẩu khó đoán, khó dò tìm hơn. - Dữ liệu không đƣợc mã hoá : Các dữ liệu đƣợc truyền đi trên mạng rất dễ bị xâm phạm, xem trộm, sửa chữa Với những dữ liệu không đƣợc mã hoá, kẻ tấn công chẳng tốn thời gian để có thể hiểu đƣợc chúng. Những thông tin nhạy cảm càng cần phải phải mã hoá cẩn thận trƣớc khi gửi đi trên mạng. - Các file chia sẻ : Việc mở các file chia sẻ thông tin là một trong những vấn đề bảo mật rất dễ gặp. Điều này cho phép bất kì ai cũng có thể truy nhập các file nếu ta không có cơ chế bảo mật, phân quyền tốt. - Bộ giao thức nổi tiếng TCP/IP đƣợc sử dụng rộng rãi trên mạng hiện nay cũng luôn tiềm ẩn những hiểm hoạ khôn lƣờng. Kẻ tấn công có thể sử dụng ngay chính các qui tắc trong bộ giao thức này để thực hiện cách tấn công DoS. Sau đây là một số lỗ hổng đáng chú ý liên quan đến bộ giao thức TCP/IP o CGI Scripts: Các chƣơng trình CGI nổi tiếng là kém bảo mật. Và thông thƣờng các hacker sử dụng các lỗ hổng bảo mật này để khai thác dữ liệu hoặc phá huỷ chƣơng trình
  20. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux o Tấn công Web server: Ngoài các lỗ hổng bảo mật do việc thực thi các chƣơng trình CGI, các Web server còn có thể có các lỗ hổng khác. Ví dụ nhƣ một số Web server (IIS 1.0 ) có một lỗ hổng mà do đó một tên file có thể chèn thêm đoạn “ /” vào trong tên đƣờng dẫn thì có thể di chuyển tới mọi nơi trong hệ thống file và có thể lấy đƣợc bất kì file nào. Một lỗi thông dụng khác là lỗi tràn bộ đệm trong trƣờng request hoặc trong các trƣờng HTTP khác. o Tấn công trình duyệt Web: Do các trình duyệt Web nhƣ của Microsoft, Netscape có khá nhiều lỗ hổng bảo mật nên xuất hiện các tấn công URL, HTTP, HTML, JavaScript, Frames, Java và ActiveX. o Tấn công SMTP (Sendmail) o Giả địa chỉ IP (IP Spoofing) o Tràn bộ đệm (Buffer Overflows): có 2 kiểu tấn công khai thác lỗi tràn bộ đệm là : DNS overflow (Khi một tên DNS quá dài đƣợc gửi tới Server) và Statd overflow (khi một tên file quá dài đƣợc cung cấp). o Tấn công DNS (DNS attacks): DNS server thƣờng là mục tiêu chính hay bị tấn công. Bởi hậu quả rất lớn gây ra bởi nó là gây ách tắc toàn mạng. - Tháng 4/2004 vừa qua, Bộ An Ninh Nội Vụ Mỹ và trung tâm Điều phối An Ninh Cơ sở hạ tầng quốc gia Anh đã cảnh báo về một lỗi bảo mật TTO nghiêm trọng trong bộ giao thức TCP/IP này. Trong phần sau chúng ta sẽ xem xét các kỹ thuật tấn công dựa trên các lỗ hổng bảo mật này. III. Các mục tiêu cần bảo vệ Để có thể bảo vệ đƣợc hệ thống, chống lại sự tấn công của hacker. Chúng ta phải biết những mục tiêu cần bảo vệ, các kỹ thuật tấn công khác nhau từ đó đƣa ra các chiến luợc bảo vệ hợp lý Trong các phần dƣới đây sẽ trình bày cụ thể các vấn đề này. Có ba mục tiêu cần đƣợc bảo vệ là : Dữ liệu: là những thông tin lƣu trữ trong máy tính Tài nguyên : là bản thân máy tính, máy in, CPU Danh tiếng 3.1 Dữ liệu Mục tiêu , chính sách an toàn của một hệ thống thông tin cũng nhƣ đối với dữ liệu bao gồm : Bí mật
  21. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Toàn vẹn Sẵn sàng Thông thƣờng mọi ngƣời thƣờng tập trung vào bảo vệ tính bí mật của dữ liệu, những thông tin có tính nhạy cảm cao nhƣ thông tin về quốc phòng, chiến lƣợc kinh doanh thì đây là yếu tố sống còn. Khi dữ liệu bị sao chép bởi những ngƣời không có thẩm quyền thì ta nói dữ liệu đã bị mất tính bí mật Khi dữ liệu bị sửa đổi một cách bất ngờ bởi ngƣời không có thẩm quyền thì khi đó có thể nói dữ liệu bị mất tính toàn vẹn Tính sẵn sàng là tính chất quan trọng nhất đối với các tổ chức hoạt động cần sử dụng nhiều thông tin. Khi ngƣời sử dụng hợp pháp muốn xem dữ kiệu của mình nhƣng dữ liệu không thể đáp ứng ngay vì một lý do nào đó, khi đó ta nói dữ liệu đã mất đi tính sẵn sàng. 3.2 Tài nguyên Xét một ví dụ nhƣ sau : Ta có một máy in ( một dạng tài nguyên ), ngoài ta ra chỉ những ai có đủ thẩm quyền thì mới đƣợc sử dụng nó. Tuy nhiên, có những ngƣời không đủ thẩm quyền vẫn muốn sử dụng máy in này miễn phí. Khi đó ta nói chiếc máy in này đã bị xâm phạm Khái niệm xâm phạm là rất rộng, ví dụ nhƣ bộ nhớ, CPU, đều là tài nguyên. Khi chúng bị những ngƣời không có thẩm quyền khai thác một cách bất hợp pháp thì ta nói tài nguyên đó đã bị xâm phạm. 3.3 Danh tiếng Bảo vệ danh tiếng là một điều quá hiển nhiên đối với cả cá nhân và các tổ chức. Không chỉ trên mạng Internet mà cả trong thực tế cuộc sống hàng ngày chúng ta đều cần phải bảo vệ danh tiếng. Điều gì sẽ xảy ra nếu nhƣ một ngày nào đó tên của chúng ta đƣợc sử dụng cho những mục đích mờ ám. Và để khôi phục lại danh tiếng mà trƣớc đó đã có chắc chắn phải mất một thời gian dài và cũng có thể là không thể. IV. Tấn công trên mạng và các chiến lƣợc bảo vệ 4.1 Các dạng tấn công Có nhiều dạng tấn công khác nhau vào hệ thống, và cũng có nhiều cách phân loại các dạng tấn công này. Trong mục này, chúng ta chia các dạng tấn công làm ba phần cơ bản : Xâm nhập ( Intrusion ) Từ chối dịch vụ ( Denial of Service – DoS ) Ăn trộm thông tin ( Information thieft ) 4.1.1 Xâm nhập Tấn công xâm nhập là việc một ngƣời hay nhóm ngƣời cố gắng đột nhập hay lạm dụng hệ thống. Hacker và cracker là hai từ dùng để chỉ những kẻ xâm nhập. Hầu hết các dạng tấn công vào hệ thống nói chung là dạng xâm nhập. Với cách tấn công này, kẻ tấn công thực sự có thể sử dụng máy tính của ta. Tất cả những kẻ tấn công đều muốn sử dụng máy tính của ta với tƣ cách là ngƣời hợp pháp.
  22. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Những kẻ tấn công có hàng loạt cách để truy cập. Chúng có thể giả dạng là một ngƣời có thẩm quyền cao hơn để yêu cầu các thông tin về tên truy cập/mật khẩu của ta, hay đơn giản dùng cách tấn công suy đoán, và ngoài ra chúng còn nhiều phƣơng pháp phức tạp khác để truy cập mà không cần biết tên ngƣời dùng và mật khẩu. Kẻ xâm nhập có thể đƣợc chia thành hai loại: + Từ bên ngoài – Outsider : những kẻ xâm nhập từ bên ngoài hệ thống (xóa Web server, chuyển tiếp các spam qua e-mail servers). Chúng có thể vƣợt qua firewall để tấn công các máy trong mạng nội bộ. Những kẻ xâm nhập có thể đến từ Internet, qua đƣờng dây điện thoại, đột nhập vật lý hoặc từ các mạng thành viên đƣợc liên kết đến tổ chức mạng (nhà sản xuất, khách hàng, ). + Từ bên trong – Insider : những kẻ xâm nhập đƣợc quyền truy nhập hợp pháp đến bên trong hệ thống (những ngƣời sử dụng đƣợc ủy quyền, hoặc giả mạo ngƣời dùng đƣợc ủy quyền ở mức cao hơn ). Theo thống kê thì loại xâm nhập này chiếm tới 80%. Có hai cách thức chính để thực hiện hành vi xâm nhập Do thám - Reconnaissance : Kẻ tấn công có thể dùng các công cụ dò quét để kiểm tra hay tìm kiếm các lỗ hổng bảo mật của một mạng nào đó. Các hành động quét này có thể là theo kiểu ping, quét cổng TCP/UDP, chuyển vùng DNS, hay có thể là quét các Web server để tìm kiếm các lỗ hổng CGI Sau đây là một số kiểu quét thông dụng: . Ping Sweep – Quét Ping Phƣơng pháp này đơn giản là chỉ ping các địa chỉ IP để kiểm tra xem các host tƣơng ứng với các địa chỉ đó còn sống hay không. Các kiểu quét phức tạp hơn sử dụng các giao thức khác nhƣ SNMP Sweep cũng có cơ chế hoạt động tƣơng tự. . TCP Scan – Quét cổng TCP Kiểu này dò quét các cổng TCP mở để tìm các dịch vụ đang chạy để có thể khai thác, lợi dụng hay phá hoại. Máy quét có thể sử dụng các kết nối TCP thông dụng hoặc là các kiểu quét trộm(sử dụng kết nối mở một bên) hoặc là kiểu quét FIN (không mở cổng mà chỉ kiểm tra xem có ai đó đang lắng nghe). Có thể quét danh sách các cổng liên tục, ngẫu nhiên hoặc là đã đƣợc cấu hình. . UDP Scan – Quét cổng UDP Loại quét này khó hơn một chút vì UDP là giao thức không kết nối. Kỹ thuật là gửi 1 gói tin UDP vô nghĩa tới một cổng nào đó. Hầu hết các máy đích sẽ trả lời bằng 1 gói tin ICMP “destination port unreachable” , chỉ ra rằng không có dịch vụ nào lắng nghe ở cổng đó. Tuy nhiên, nhiều máy điều tiết các messages ICMP nên ta không thể làm điều này rất nhanh đƣợc. . OS identification – Xác định hệ điều hành Bằng việc gửi các gói tin TCP hay ICMP không đúng qui cách, kẻ tấn công có thể thu đƣợc thông tin về hệ điều hành.
  23. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux . Account Scan – Quét tài khoản o Cố gắng đăng nhập vào hệ thống với các Tài khoản (Account): o Các Tài khoản không có password o Các Tài khoản với password trùng với username hoặc là „password‟ o Các Tài khoản mặc định đã đƣợc dùng để chuyển sản phẩm o Các Tài khoản đƣợc cài cùng với các sản phẩm phần mềm o Các vấn đề về tài khoản nặc danh FTP Lợi dụng – Exploits : lợi dụng các đặc tính ẩn hoặc lỗi để truy cập vào hệ thống. Firewall có thể giúp ta ngăn chặn một số cách xâm nhập trên. Một cách lý tƣởng thì Firewall sẽ chặn toàn bộ mọi ngả đƣờng vào hệ thống mà không cần biết đến tên truy cập hay mật khẩu. Nhƣng nhìn chung, Firewall đƣợc cấu hình nhằm giảm một số lƣợng các tài khoản truy cập từ phía ngoài vào. Hầu hết mọi ngƣời đều cấu hình Firewall theo cách “one –time password “ nhằm tránh tấn công theo cách suy đoán. 4.1.2 Từ chối dịch vụ Đây là kiểu tấn công vào tính sẵn sàng của hệ thống, làm hệ thống cạn kiệt tài nguyên hoặc chiếm dụng băng thông của hệ thống, làm mất đi khả năng đáp ứng trả lời các yêu cầu đến. Trong trƣờng hợp này, nếu hệ thống cần dùng đến tài nguyên thì rất có thể hệ thống sẽ gặp lỗi. Có một số đặc điểm đặc biệt trong cách tấn công này là ngƣời bị hại không thể chống đỡ lại đƣợc kiểu tấn công này vì công cụ đƣợc sử dụng trong cách tấn công này là các công cụ mà hệ thống dùng để vận hành hằng ngày. Có thể phân biệt ra bốn dạng DoS sau : Tiêu thụ băng thông ( bandwidth consumption ) Làm nghèo tài nguyên ( resource starvation ) Programming flaw Tấn công Routing và DNS Về mặt kỹ thuật có 3 kiểu tấn công từ chối dịch vụ chính là DoS, DDoS và DRDoS. DoS – Traditional DOS Hình 1-6: Tấn công kiểu DOS và DDoS
  24. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Đơn thuần máy tấn công có bandwidth lớn hơn máy nạn nhân DDoS – Distributed DOS Sử dụng nhiều máy cùng tấn công vào một máy nạn nhân DRDoS – Distributed Reflection DOS Sử dụng các server phản xạ, máy tấn công sẽ gửi yêu cầu kết nối tới các server có bandwidth rất cao trên mạng – server phản xạ, các gói tin yêu cầu kết nối này mang địa chỉ IP giả - chính là địa chỉ IP của máy nạn nhân. Các server phản xạ này gửi lại máy nạn nhân các gói SYN/ACK dẫn tới hiện tƣợng nhân băng thông – bandwidth multiplication. Tuy nhiên với cách tấn công này, kẻ tấn công cũng không thu đƣợc thông tin gì thêm về hệ thống. Nó chỉ đơn thuần làm hệ thống tê liệt, không hoạt động đƣợc nữa mà thôi. Hình 1-7: Tấn công kiểu DRDoS 4.1.3 Ăn trộm thông tin Có một vài cách tấn công cho phép kẻ tấn công có thể lấy đƣợc dữ liệu mà không cần phải trực tiếp truy cập, sử dụng máy tính của chúng ta. Thông thƣờng kẻ tấn công khai thác các dịch vụ Internet phân phối thông tin. Các dịch vụ này có thể đƣa ra các thông tin mà ta không muốn hoặc đƣa các thông tin đến sai địa chỉ nhận. Nhiều dịch vụ Internet đƣợc thiết kế sử dụng cho các mạng nội bộ và không hề có thêm các lớp bảo vệ do đó thông tin sẽ không an toàn khi lƣu thông trên mạng Internet. Hầu hết những kẻ tấn công đều cố gắng lắng nghe để tìm kiếm các thông tin nhƣ tên truy cập/ mật khẩu. Thật không may đây lại là các thông tin dễ bị ăn cắp nhất trên mạng. Nhƣ hình vẽ dƣới đây minh họa
  25. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Hình 1-8: Mô hình ứng dụng mail trên mạng Internet Đây là đƣờng truyền các packets khi user login vào hệ thống vào một ISP, rồi gửi đi một số messages. Các packet không mã mật đƣợc truyền từ client tới ISP dialup, rồi qua ISP firewall tới các router trƣớc khi đƣợc truyền trên Internet. Mọi quá trình truyền không mã mật, các messages có thể bị chặn ở một số điểm ví nhƣ điểm đƣợc gửi đi. Một user làm cho ISP có thể giữ các packets lại. Một chuyên gia tin học cũng có thể đọc tất cả các message một cách dể dàng. Bất cứ một chuyên gia bảo dƣỡng các router nào đều có tìm ra nhiều cách để lƣu các messages lại. Và cả những nơi cung cấp các dịch vụ, họ cũng có thể xem xét các messages của user. Nếu truy nhập vào internet từ mạng LAN thay vì dialup, thì có càng nhiều ngƣời có thể xem messages hơn. Bất cứ ai trong hệ thống company trên cùng một LAN có thể đặt NIC vào và thu các packets của mạng. Hình 1-9: Kết nối Internet từ LAN Các giao thức thƣờng sử dụng cổng nhất định để trao đổi thông tin lấn nhau, và đó là điểm yếu của hệ thống giúp cho các tin tặc có thể dễ dàng lấy cắp đƣợc các thông tin quan trọng. Ví dụ : Khi user log on vào Yahoo! Mail, nhập username và password rồi ấn Submit, trong trƣờng hợp nhập thông tin chính xác thì thông tin đó đƣợc đóng gói và gửi đi. Package đầu tiên của giao thức HTTP chứa thông tin username và password đƣợc chuyển qua cổng 1149, khi đó hacker có thể truy nhập vào cổng này để lấy thông tin log on của user. Trong đó thông tin về password đƣợc truyền dƣới dạng text plain. Khi log on vào sites thì có khoảng 100-200 packets đƣợc truyền giữa user và server, trong đó có khoảng 10 packets đầu tiên có chứa thông tin về password.
  26. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Có nhiều cách để chống lại cách tấn công này. Một Firewall đƣợc cấu hình tốt sẽ bảo vệ, chống lại những kẻ đang cố gắng lấy những thông tin mà ta đƣa ra. 4.2 Một số kỹ thuật tấn công Sau đây là một số kỹ thuật tấn công phổ biến mà các hacker thƣờng sử dụng để tấn công một hệ thống.Các kỹ thuật tấn công này chủ yếu thuộc dạng tấn công xâm nhập và từ chối dịch vụ 4.2.1 Giả mạo địa chỉ IP ( IP Spoofing ) Hầu hết các giao thức sử dụng trong mạng đều theo giao thức TCP, do đó chúng ta xem xét cơ chế thiết lập kết nối của giao thức này. TCP là một giao thức hƣớng liên kết, giữa client và server muốn thực hiện kết nối để trao đổi thông tin thì chúng phải thực hiện qua ba bƣớc sau ( cơ chế bắt tay ba bƣớc ) : - Bƣớc 1 : Client gửi gói tin SYN tới server thông báo yêu cầu thiết lập kết nối. Lúc này một kết nối tiềm tàng ( potential connection ) đã đƣợc thiết lập giữa client và server. - Bƣớc 2 : Server sau khi nhận đƣợc tín hiệu SYN trên sẽ gửi lại cho client gói tin SYN/ACK xác nhận việc thiết lập liên kết - Bƣớc 3 : Client sau khi nhận đƣợc gói tin SYN/ACK trên, nó sẽ gửi tiếp cho Server gói tin ACK. Kết thúc bƣớc này giữa client và server đã hoàn thành một kết nối Hình 1-10 : Thiết lập kết nối TCP giữa client và server Nếu nhƣ một client không có yêu cầu đòi hỏi thiết lập một kết nối với server nhƣng nó lại nhận đƣợc gói tin SYN/ACK, khi đó nó sẽ gửi trả lại server gói tin RST ( reset ). Nhờ đó mà server sẽ biết đƣợc để huỷ bỏ kết nối. Chú ý rằng ngay ở bƣớc 1, khi client gửi tín hiệu SYN thì server đã dành riêng cho client này một vùng nhớ để hoạt động. Vùng nhớ này chỉ bị huỷ bỏ khi client có yêu cầu huỷ bỏ kết nối hay sau một khoảng thời gian nhất định nào đó ( gọi là thời gian Timeout ) nếu không có tín hiệu gì từ client. Timeout của từng server là khác nhau và nó nằm trong khoảng từ 75 giây đến 23 phút. Dựa vào cơ chế thiết lập kết nối trong giao thức TCP mà kẻ tấn công đƣa ra kỹ thuật sau nhằm giả mạo địa chỉ IP : Giả sử hai host X và Y tin tƣởng nhau. Kẻ tấn công ở cị trí Z, kẻ tấn công sẽ tạo ra gói tin giả mạo mình là Y để gửi tới cho X nhằm trông đợi những thông tin phản hồi lại. Tuy nhiên khi nhận đƣợc gói tin yêu cầu kết nối này thì X sẽ coi đó là gói tin do Y gửi tới do đó nó sẽ phản hồi lại cho Y và Z không thu đƣợc gì cả. Khi Y nhận đƣợc gói tin phản hồi từ X ( khi đó bits ACK đƣợc thiết lập ) thì nó sẽ gửi trả lại gói tin RST do vậy kết nối sẽ đƣơc huỷ bỏ. Kẻ tấn công không hề muốn X
  27. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux huỷ bỏ kết nối này do vậy hắn sẽ tìm cách không cho Y nhận đƣợc gói tin phản hồi này, ví dụ nhƣ dùng tấn công từ chối dịch vụ, làm Y bị tràn ngập băng thông và không thể nhận thêm thông tin gì nữa. Tuy nhiên cách làm trên mang nhiều tính chất lý thuyết, thực tế rất khó thực hiện đƣợc theo cách này. 4.2.2. SYN flooding – Tấn công tràn ngập gói tin SYN Chúng ta vẫn chú ý tới cơ chế bắt tay ba bƣớc trong quá trình thiết lập kết nối giữa hai thực thể TCP. Kẻ tấn công vẫn sử dụng một địa chỉ giả mạo để gửi gói tin SYN cho nạn nhân. Khi đó nạn nhân nhận đƣợc gói tin này ngay lập tức nó sẽ dành một phần bộ nhớ cho kết nối này. Hình 1-11 : Tấn công tràn ngập SYN (1 ) Cũng tƣơng tự nhƣ trên, khi nhận đƣợc gói tin SYN yêu cầu kết nối thì nó sẽ gửi trả lại gói tin SYN/ACK cho host có địa chỉ mà kẻ tấn công giả mạo sử dụng. Nếu nhƣ gói tin này đến đƣợc đúng host bị giả mạo thì thì nó sẽ gửi gói tin RST, kết nối sẽ bị huỷ bỏ, phần bộ nhớ mà host nạn nhân đã cung cấp cho kết nối này sẽ đƣợc huỷ bỏ. Trong trƣờng hợp này, kẻ tấn công cũng không thu đƣợc gì. Để khắc phục kẻ tấn công sẽ thực hiện nhƣ sau : địa chỉ mà chúng sử dụng để giả mạo sẽ là địa chỉ mà host của nạn nhân không thể gửi các gói tin đến đƣợc. Khi đó các gói tin SYN/ACK mà nạn nhân gửi trả lại ở bƣớc 2 trong mô hình bắt tay 3 bƣớc sẽ không thể tới đích, do đó cũng sẽ không có gói tin RST gửi lại cho nạn nhân. Nhƣ vậy, nạn nhân sẽ cứ phải chờ kết nối này cho đến khi thời gian Timeout hết. Điều đó có nghĩa là kẻ tấn công đã thnàh công trong việc chiếm dụng một phần tài nguyên hoạt động ở máy của nạn nhân. Hơn thế nữa, kẻ tấn công không chỉ gửi một gói tin SYN tới nạn nhân mà cứ sau một khoảng thời gian nhất định lại gửi một gói tin SYN tới máy nạn nhân . Kết quả là toàn bộ tài nguyên trên máy nạn nhân sẽ bị sử dụng cho việc chờ những kết nối không có thực. Hình 1-12 : Tấn công tràn ngập SYN ( 2 )
  28. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Ƣu điểm của phƣơng pháp tấn công này là chỉ cần một lƣợng băng thông nhỏ kẻ tấn công cũng có thể làm tê liệt nạn nhân. Ngoài ra các gói tin SYN mà kẻ tấn công gửi tới nạn nhân sử dụng địa chỉ giả, vì vậy rất khó có thể phát hiện ra thủ phạm. 4.2.3 ICMP flooding – Tấn công tràn ngập gói tin ICMP Ping là một chƣơng trình dùng để báo cho ngƣời sử dụng biết hai host trên mạng có thông với nhau không. Ping dựa trên giao thức ICMP. Nó cho phép ngƣời sử dụng gửi các gói tin tới một hệ thống ở xa và hiển thị khoảng thời gian từ khi gửi gói tin đến khi nhận đƣợc phản hồi từ phía nhận ( RTT : Round Trip Time ). Gói tin đƣợc gửi đi là ICMP echo request, gói tin phản hồi là ICMP echo receive Kẻ tấn công sẽ sử dụng giao thức ICMP này để tấn công nạn nhân theo cách sau : Bước 1 : Kẻ tấn công giả mạo là nạn nhân, gửi đi một lệnh Ping với địa chỉ IP là của nạn nhân và địa chỉ đích là dạng broadcast của một mạng nào đó. Sau bƣớc này tất cả các host trong mạng 10.0.0.x sẽ nhận đƣợc gói tin ICMP từ host của nạn nhân. Bƣớc 2 : Do sự nhầm lẫn nhƣ trên mà tất cả các host trong mạng 10.0.0.x đều gửi về cho nạn nhân một gói tin ICMP echo receive. Hàng loạt các gói tin dạng này là nguyên nhân gây lên hện tƣợng làm băng thông tới host của nạn nhân bị chiếm dụng. Nạn nhân sẽ không thể giao dịch với các host khác trên mạng. Hiện nay có rất nhiều công cụ thuận tiện để thực hiện kiểu tấn công này. Hình 1-13 : Tấn công tràn ngập gói tin ICMP 4.3 Các chiến lược bảo vệ mạng 4.3.1 Quyền hạn tối thiểu ( Least Privilege ) Có lẽ chiến lƣợc cơ bản nhất về an toàn ( không chỉ cho an ninh mạng mà còn cho mọi cơ chế an ninh khác ) là quyền hạ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ị hệ thống ) chỉ có những quyền hạn nhất định nhằm phục vụ cho công việc của đối tƣợng đó và không hơn nữa. Quyền hạn tối thiểu là nguyên tắc quan trọng nhằm giảm bớt những sự phô bày mà kẻ tấn công có thể tấn công vào hệ thống và hạn chế sự phá hoại do các vụ phá hoại gây ra. Tất cả mọi ngƣời sử dụng hầu nhƣ chắc chắn không thể truy cập vào mọi dịch vụ của Internet, chỉnh sửa ( hoặc thậm chí chỉ là đọc ) mọi file trên hệ thống
  29. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux của ta, biết đƣợc mật khẩu root. Tất cả mọi nhà quản trị cũng không thể biết hết đƣợc các mật khẩu root của tất cả các hệ thống. Để áp dụng nguyên tắc quyền hạn tối thiểu, ta nên tìm cách giảm quyền hạn cần dùng cho từng ngƣời, từng công việc cụ thể. 4.3.2 Bảo vệ theo chiều sâu ( Defence in Depth ) Một nguyên tắc khác của mọi cơ chế an ninh la bao ve theo chiều sâu. Đừng phụ thuộc vào chỉ một cơ chế an ninh, cho dù là nó mạnh đến đâu đi nữa. Thay vào đó là sử dụng nhiều cơ chế an ninh để chúng hỗ trợ nhau. Hình 1-14 : Bảo vệ theo chiều sâu 4.3.3 Nút thắt ( Choke Point ) Với cách xây dựng nút thắt, ta đã buộc tất cả mọi luồng thông tin phải qua đó và những kẻ tấn công cũng không là ngoại lệ. Chính nhờ đặc điểm này mà có thể kiểm tra và điều khiển các luồng thông tin ra vào mạng. Có rất nhiều ví dụ về nút thắt trong thực tế cuộc sống. Với an ninh mạng thì nút thắt chính là các Firewall đặt giữa mạng cần bảo vệ và Internet. Bất kỳ ai muốn đi vào trong mạng cần bảo vệ đều phải đi qua các Firewall này. 4.3.4 Liên kết yếu nhất ( Weakest Link ) Đối với mootj hệ thống bảo vệ thì cho dù có nhiều khâu có mức an toàn cao nhƣng chỉ cần một khâu mất an toàn thì toàn bộ hệ thống cũng sẽ mất an toàn. Những kẻ tấn công thông minh sẽ tìm ra những điểm yếu và tập trung tấn công vào đó. Cần phải thận trọng tới các điểm yếu này bởi kẻ tấn công luôn biết tìm cách để khai thác nó. 4.3.5 Hỏng an toàn ( Fail – Safe Stance ) Một điểm yếu cơ bản khác trong chiến lƣợc an ninh là khả năng cho phép hệ thống hỏng an toàn ( faile – safe ) – có nghĩa là nếu hệ thống có hỏng thì sẽ hỏng theo cách chống lại sự tấn công của đối phƣơng.Sự sụp đổ này có thể cũng ngăn cản sự truy cập của ngƣời dung hợp pháp nhƣng trong một số trƣờng hợp thì vẫn phải áp dụng chiến lƣợc này.
  30. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Hầu hết các ứng dụng hiện nay đều có cơ chế hỏng an toàn. Ví dụ nhƣ nếu một router lọc gói bị down, nó sẽ không cho bất kỳ một gói tin nào đi qua. Nếu một proxy bị down, nó sẽ không cung cấp một dịch vụ nào cả. Nhƣng nếu một hệ thống lọc gói đƣợc cấu hình mà tất cả các gói tin đƣợc hƣớng tới một máy chạy ứng dụng lọc gói và một máy khác cung cấp ứng dụng thì khi máy chạy ứng dụng lọc gói bị down, các gói tin sẽ di chuyển toàn bộ đến các ứng dụng cung cấp dịch vụ. Kiểu thiết kế này không phải là dạng hỏng an toàn và cần phải đuợc ngăn ngừa. Điểm quan trọng trong chiến lƣợc này là nguyên tắc, quan điểm của ta về an ninh. Ta có xu hƣớng hạn chế, ngăn cấm hay cho phép? Có hai nguyên tắc cơ bản mà ta có thể quyết định đến chính sách an ninh : + Mặc định từ chối : Chỉ quan tâm những gì ta cho phép và cấm tất cả những cái còn lạl + Mặc định cho phép : Chỉ quan tâm đến những gì mà ta ngăn cấm và cho qua tất cả những cái còn lại. 4.3.6 Tính toàn cục ( Universal Participation ) Để đạt đƣợc hiệu quả cao, hầu hết các hệ thống an toàn đòi hỏi phải có tính toàn cục của các hệ thống cục bộ. Nếu một kẻ nào đó có thể dễ dàng bẻ gãy một cơ chế an toàn thì chúng có thể thành công bằng cách tấn công hệ thống tự do của ai đó rồi tiếp tục tấn công hệ thống nội bộ từ bên trong. Có rất nhiều hình thức làm cho hỏng an toàn hệ thống và chúng ta cần đƣợc báo lại những hiện tƣợng lạ xảy ra có thể liên quan đến an toàn của hệ thống cục bộ. 4.3.7 Đa dạng trong bảo vệ ( Diversity of Defence ) Ý tƣởng thực sự đằng sau “đa dạng trong bảo vệ” chính là sử dụng các hệ thống an ninh của nhiều nhà cung cấp khác nhau nhằm giảm sự rủi ro về các lỗi phổ biến mà mỗi hệ thống mắc phải. Nhƣng bên cạnh đó là những khó khăn đi kèm khi sử dụng hệ thống bao gồm nhiều sản phẩm của những nhà cung cấp khác nhau nhƣ : Cài đặt, cấu hình khó hơn, chi phí sẽ lớn hơn, bỏ ra nhiều thời gian hơn để có thể vận hành hệ thống. Chúng ta hãy thận trọng với ý tƣởng đa dạng này. Vì khi sử dụng nhiều hệ thống khác nhau nhƣ vậy chƣa chắc đã có sự đa dạng trong bảo vệ mà còn có thể xảy ra trƣờng hợp hệ thống này hạn chế hoạt động của hệ thống khác mà không hỗ trợ nhau nhƣ ta mong muốn. 4.3.8 Đơn giản ( Simplicity ) Đơn giản là một trong những chiến lƣợc an ninh vì hai lý do sau : Thứ nhất : Với những gì đơn giản thì cũng có nghĩa là dễ hiểu, nếu ta không hiểu về phần nào đó, ta không thể chắc chắn liệu nó có an toàn không. Thứ hai : Sự phức tạp sẽ tạo ra nhiều ngóc nghách mà ta không thể quản lý nổi, nhiều thứ sẽ ẩn chứa trong đó mà ta không biết.Rõ ràng, bảo vệ một căn hộ dễ dàng hơn nhiều bảo vệ một toà lâu đài lớn!.
  31. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Chƣơng 2 : INTERNET FIREWALL
  32. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux  Khái niệm Firewall  Các chức năng cơ bản của Firewall  Kiến trúc Firewall  Bảo dƣỡng Firewall Trong chƣơng này chúng ta sẽ nghiên cứu vể Internet Firewall : Thế nào là một Firewall, các chức năng cơ bản của một Firewall, kiến trúc của một Firewall khi triển khai một hệ thống mạng an toàn và cuối cùng là công việc bảo dƣỡng một Firewall. I. Khái niệm 1.1 Khái niệm Firewall là một phần mềm hay thiết bị phần cứng hoặc sự kết hợp giữa chúng đƣợc thiết kế với mục đích : chống lại những rủi ro, nguy hiểm từ phía ngoài vào mạng nội bộ. Nó thƣờng đƣợc đặt giữa mạng nội bộ mà ta cần bảo vệ với mạng Internet và thực hiện ngăn cấm một số lƣu thông mạng.
  33. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Hình 2-1 : Vị trí Firewall trên mạng Theo cách bố trí này thì tất cả các luồng thông tin đi vào mạng nội bộ từ Internet hay ngƣợc lại, đi từ mạng nội bộ ra Internet đều phải qua Firewall. Nhờ vậy Firewall có thể kiểm soát đƣợc các luồng thông tin, từ đó đƣa ra các quyết định cho phép hay không cho phép. Cho phép hay không cho phép ở đây là dựa trên chính sách an ninh do ngƣời quản trị Firewall đặt ra. 1.2 Ưu, nhược điểm của Firewall 1.2.1 Ƣu điểm : Firewall có thể làm rất nhiều điều cho an ninh của mạng. Thực tế những ƣu điểm khi sử dụng Firewall không chỉ ở trong lĩnh vực an ninh a. Firewall là điểm tập trung giải quyết các vấn đề an ninh Quan sát vị trí cuả Firewall trên hình chúng ta thấy đây là một dạng nút thắt. Firewall cho ta khả năng to lớn để bảo vệ mạng nội bộ bởi công việc cần làm chỉ tập trung tại nút thắt này. Việc tập trung giải quyết tại một điểm này còn cho phép có hiệu quả cả về mặt kinh tế. b. Firewall có thể thiết lập chính sách an ninh Có rất nhiều dịch vụ mà mọi ngƣời muốn sử dụng vốn đã không an toàn. Firewall đóng vai trò kiểm soát các dịch vụ này. Nó sẽ thiết lập chính sách an ninh cho phép những dịch vụ thoả mãn tập luật trên Firewall đang hoạt động. Tuỳ thuộc vào công nghệ lựa chọn để xây dựng Firewall mà nó có khả năng thực hiện các chính sách an ninh với hiệu quả khác nhau. c. Firewall có thể ghi lại các hoạt động một cách hiệu quả Do mọi luồng thông tin đều qua Firewall nên đây sẽ là nơi lý tƣởng để thu thập các thông tin về hệ thống và mạng sử dụng. Firewall có thể ghi chép lại những gì xảy ra giữa mạng đƣợc bảo vệ và mạng bên ngoài. 1.2.2 Nhƣợc điểm Firewall có thể bảo vệ mạng có hiệu quả nhƣng nó không phải là tất cả. Firewall cũng tồn tại các nhƣợc điểm của nó a. Firewall không thể bảo vệ khi có sự tấn công từ bên trong
  34. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Nếu kẻ tấn công ở phía trong Firewall, thì nó sẽ không thể giúp gì đƣợc cho ta. Kẻ tấn công sé ăn cắp dữ liệu, phá hỏng phần cứng, - phần mềm, sửa đổi chƣơng trình mà Firewall không thể biết đƣợc. b. Firewall không thể bảo vệ được nếu các cuộc tấn công không đi qua nó Firewall có thể điều khiển một cách hiệu quả các luồng thông tin, nếu nhƣ chúng đi qua Firewall. Tuy nhiên, Firewall không thể làm gì nếu nhƣ các luồng dữ liệu không đi qua nó. Ví dụ cho phép truy cập dial – up kết nối vào hệ thống bên trong của Firewall? Khi đó nó sẽ không chống lại đƣợc sự tấn công từ kết nối modem Có thể do việc cài đặt backdoor của ngƣời quản trị hay những ngƣời sử dụng trình độ cao. c. Firewall không thể bảo vệ nếu như cách tấn công hoàn toàn mới lạ Firewall đƣợc thiết kế chỉ để chống lại những kiểu tấn công đã biết. Nếu một Firewall đƣợc thiết kế tốt thì cũng có thể chống lại đƣợc những cuộc tấn công theo cách hoàn toàn mới lạ. Ngƣời quản trị phải cập nhật những cách tấn công mới, kết hợp với kinh nghiệm đã biết để có thể bổ xung cho Firewall. Ta không thể cài Firewall một lần và sử dụng mãi mãi. d. Firewall không thể chống lại Virus Firewall không thể giúp cho máy tính chống lại đƣợc Virus. Mặc dù nhiều Firewall đã quét những luồng thông tin đi vào nhằm kiểm tra tính hợp lệ của nó với các tập luật đặt ra. Tuy nhiên Firewall chỉ kiểm tra đƣợc địa chỉ nguồn, địa chỉ đích, số hiệu cổng cuả gói tin này chứ không thể kiểm tra đƣợc nội dung của nó. Đó là chƣa kể đến có rất nhiều dạng Virus và nhiều cách để Virus ẩn vào dữ liệu. Tiếp theo chúng ta xem xét các chức năng cơ bản cuả Firewall. Có thể nói một Firewall thực sự cần phải có ít nhất một trong các chức năng sau :  Khả năng lọc gói ( Packet Filtering ) : Firewall sẽ kiểm tra phần header của các gói tin và đƣa ra quyết định là cho phép qua hay loại bỏ gói tin này theo tập luật đã đƣợc cấu hình.  Application Proxy : Với khả năng này thì Firewall sẽ kiểm tra kỹ lƣỡng header của gói tin hơn nhƣ khả năng hiểu giao thức cụ thể mà ứng dụng sử dụng  Chuyển đổi địa chỉ mạng ( Network Address Translation – NAT ) : Để các máy bên ngoài chỉ thấy một hoặc hai địa chỉ mạng của firewall còn các máy thuôc mạng trong có thể lấy các giá trị trong một khoảng bất kỳ thì các gói tin đi vào và đi ra cần đƣợc chuyên đổi địa chỉ nguồn và đia chỉ đích.  Theo dõi và ghi chép ( Monitoring and Logging ) : Với khả năng này cung cấp cho ngƣời quản trị biết điều gì đang xẩy ra tại Firewall, từ đó đƣa ra những phƣơng án bảo vệ tốt hơn. Ngoài ra thì một Firewall còn có thể có một số chức năng mở rộng khác nhƣ :  Data Caching : Bởi vì có những yêu cầu về các Website là hoàn toàn giống nhau của các ngƣời dùng khác nhau nên việc Caching dữ liệu sẽ giúp quá trình trả lời nhanh và hiệu quả hơn  Lọc nội dung ( Content Filter ): Các luật của Firewall có khả năng ngăn chặn các yêu cầu trang Web mà nó chứa các từ khoá, URLs hay các dữ liệu khác nhƣ video streams, image  Instrustion Detection : Là khả năng phát hiện các cuộc xâm nhập, tấn công
  35. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux  Các chức năng khác : khả năng phát hiện và quét virus Phần dƣới đây chúng ta sẽ xem xét kỹ lƣỡng ba chức năng cơ bản của một Firewall đó là Packet Filtering, Application Proxy và Network Address Translation II. Các chức năng cơ bản của Firewall 2.1 Packet Filtering 2.1.1 Khái niệm Packet Filtering là một chức năng cơ bản của một firewall, nó là một kỹ thuật an ninh mạng hoạt động ở tầng mạng, bằng cách điều khiển dữ liệu vào hoặc ra một mạng máy tính. Packet Filtering sẽ định tuyến một cách có chọn lọc các gói tin tuỳ thuộc theo chính sách an ninh do ngƣời quản trị đặt ra. Lọc gói thông thƣờng có tốc độ rất cao bởi nó chỉ kiểm tra phần header của các gói tin mà không kiểm tra phần dữ liệu trong đó. Vì kĩ thuật gói thƣờg có tốc độ nhanh, mềm dẻo và trong suốt với ngƣời dùng nên ngày nay hầu hết các router đều có trang bị khả năng lọc gói. Một router sử dụng bộ lọc gói đƣợc gọi là screening router Dƣới đây là mô hình một screening router trong mạng Hình 2-2 : Screening Router sử dụng bộ lọc gói Nhƣ đã giới thiệu ở chƣơng trƣớc thì bất kể một gói tin nào cũng có phần header của nó. Những thông tin trong phần header bao gồm các trƣờng sau : - Địa chỉ IP nguồn - Địa chỉ IP đích - Giao thức hoạt động - Cổng TCP ( UDP ) nguồn - Cổng TCP ( UDP ) đích - ICMP message type Bộ lọc gói sẽ dựa vào những thông tin này để đƣa ra quyết định cuối cùng cho phép hay không cho phép gói tin đi qua. Ngoài ra, bộ lọc gói còn có thể xác định thêm các thông tin khác không có trong header của gói tin nhƣ : - Giao diện mạng mà gói tin từ đó đi tới ( ví dụ trong Linux là eth0 ) - Giao diện mạng mạng mà gói đi đến ( ví dụ là eth1 )
  36. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Trên thực tế thì các Server hoạt động cho các dịch vụ Internet thƣờng tập trung vào một cổng nào đó, do vậy để đơn giản ta chỉ cần cấu hình tập luật lọc gói tin của router theo số hiệu cổng tƣơng ứng là có thể ngăn chặn đƣợc các kết nối. Ví dụ với server HTTP : cổng mặc định là 80, với server FTP : cổng 23 Do vậy với Screening router thì ngoài chức năng nhƣ một router bình thƣờng là dẫn đƣờng cho các gói tin nó còn có khả năng lọc các gói tin đi qua nó. Screening router sẽ đọc gói tin một cách cẩn thận hơn từ đó đƣa ra quyết định cho phép hay không cho phép gói tin tới đích. Việc cho phép hay không cho phép các gói tin đi qua phụ thuộc vào các luật lọc gói mà screening router đƣợc cấu hình. Từ đó ta có các cách thực hiện chức năng lọc gói : Lọc gói dựa vào địa chỉ, lọc gói dựa vào loại dịch vụ hay cổng, lọc gói theo cả địa chỉ và cổng Lọc gói theo địa chỉ Là cách đơn giản nhất, lọc theo cách này giúp chúng ta điều hƣớng các gói tin dựa theo địa chỉ nguồn hoặc đích mà không cần biết các gói tin này thuôc giao thức nào. Ta thấy ngay ở đây các rủi ro với cách lọc gói dựa theo địa chỉ :là việc kẻ tấn công sử dụng địa chỉ IP giả mạo để vƣợt qua module lọc gói và truy cập các máy trong mạng nội bộ cần bảo vệ. Có hai kiểu tấn công dựa trên việc giả mạo địa chỉ IP đó là source address và man in the middle. Cách giải quyết vấn đề này là sử dụng phƣơng pháp xác thực ngƣời dùng đối với các gói tin. Lọc gói dựa theo dịch vụ Hầu hết các ứng dụng trên mạng TCP/IP hoạt động trên một Socket bao gồm địa chỉ IP và một số hiệu cổng nào đó.Do vậy việc lọc các gói tin dựa trên dịch vụ cũng chính là việc lọc các gói tin dựa trên số hiệu cổng. Ví dụ nhƣ các ứng dụng Web theo giao thức HTTP thƣờng hoạt động trên cổng 80, dịch vụ Telnet hoạt động trên cổng 23, Việc lọc gói có thể dựa vào địa chỉ cổng nguồn hay địa chỉ cổng đích hoặc cả hai. Các rủi ro xảy ra đối với việc lọc gói dựa trên số hiệu cổng đó là : rất nhiều các ứng dụng theo mô hình server/client hoạt động với số hiệu cổng ngẫu nhiên trong khoảng từ 1023 – 65535. Khi đó việc thiết lập các luật theo cách này là rất khó khăn và có thể để cho các gói tin nguy hiểm đi qua mà chặn lại các gói tin cần thiết. 2.1.2 Các hoạt động của Packet Filtering Sau khi thực hiện kiểm tra một gói tin, Packet Filtering có thể thực hiện một trong các công việc sau : - Cho phép gói tin đi qua: nếu gói tin thoả mãn các điều kiện trong cấu hình của bộ lọc gói, gói tin sẽ đƣợc chuyển tiếp tới đích của nó - Loại bỏ gói tin : nếu gói tin không thoả mãn các điều kiện trong cấu hình của Packet Filtering thì gói tin sẽ bị loại bỏ - Ghi nhật ký các hoạt động Ta không cần thiết phải ghi lại tất cả các gói tin đƣợc cho phép đi qua mà chỉ cần ghi lại một số hoạt động của một số gói tin loại này. Ví dụ ghi lại các gói tin bắt đầu của một kết nối TCP để có thể theo dõi đƣợc các kết nối TCP đi vào và đi ra khỏi mạng cần boả vệ. Đặc biệt là ghi lại các gói tin bị loại bỏ , ta cần theo dõi các gói tin nào đang cố gắng đi qua trong khi nó bị cấm.
  37. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux 2.1.3 Ƣu, nhƣợc điểm của Packet Filtering a. Ưu điểm - Trong suốt - Có thể lọc bất cứ dịch vụ nào dùng các giao thức mà Firewall hỗ trợ - Chỉ cần một Screening Router là có thể bảo vệ cả mạng : Đây là một ƣu điểm chính của Packet Filtering vì nó là đơn lẻ, không phải thay đổi các host trong mạng bảo vệ khi thay đổi qui mô của mạng. - Không nhƣ Proxy nó không yêu cầu phải học cách sử dụng b. Nhược điểm - Cần phải hiểu rõ mạng đƣợc bảo vệ và các giao thức đƣợc sử dụng trên mạng - Không có sự xác thực ngƣời sử dụng, việc lọc gói tin chỉ dựa trên địa chỉ mạng của hệ thống phần cứng - Không che giấu kiến trúc bên trong của mạng cần bảo vệ - Không bảo vệ chống lại các yếu điểm của các dịch vụ không lọc - Với giao thức DHCP thì kết quả lọc sẽ không chuẩn xác - Một số giao thức không phù hợp với bộ lọc gói. 2.2 Proxy 2.2.1 Khái niệm Các host có đƣờng kết nối trực tiếp với mạng bên ngoài để thực hiện cung cấp một số dịch vụ cho các host khác trong mạng cần bảo vệ đƣợc gọi là các Proxy. Các Proxy thực sự nhƣ hoạt động nhƣ các gateway đối với các dịch vụ. Do vậy nó còn đƣợc gọi là các Application – level gateways Tính trong suốt đối với ngƣời dùng là lợi ích của Proxy. Proxy sẽ thu thập các yêu cầu dịch vụ của các host client và kiểm tra các yêu cầu này nếu thoả mãn thì nó đƣa đến các server thích hợp sau đó nhận các trả lời và trả lại cho client. Hình 2-3 : Proxy Server
  38. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Proxy chạy trên Dual-home host hoặc Bastion host. Tất cả các host trong mạng nội bộ muốn truy cập vào Internet đều phải qua Proxy, do đó ta có thể thực hiện một số chính sách an ninh cho mạng nhƣ ghi log file, đặt quyền truy nhập 2.2.2 Ƣu nhƣợc điểm của Proxy a. Ưu điểm - Dễ định nghĩa các luật an toàn - Thực hiện xác thực ngƣời sử dụng - Có thể che dấu đƣợc kiến trúc bên trong của mạng cần bảo vệ - Tính trong suốt với ngƣời sử dụng - Dễ dàng ghi lại các log file b. Nhược điểm - Yêu cầu ngƣời quản trị hệ thống cao hơn Packet Filtering - Không sử dụng đƣợc cho các dịch vụ mới - Mỗi dịch vụ cần một một Proxy riêng - Proxy không thực hiện đƣợc đối với một số dịch vụ 2.2.3 Các hoạt động của Proxy Thông thƣờng các dịch vụ, Proxy yêu cầu phần mềm Proxy tƣơng ứng với phía Server, còn đối với phía client, nó đòi hỏi những điều sau : - Phần mềm khách hàng ( Custom client software ) : Theo cách tiếp cận này thì khi có yêu cầu từ khách hàng thì phần mềm này sẽ kết nối với Proxy chứ không kết nối trực tiếp với Server và chỉ cho Proxy biết địa chỉ của Server cần kết nối. - Thủ tục ngƣời sử dụng ( Custom user procedures ) : tức là ngƣời sử dụng dùng phần mềm client tiêu chuẩn để kết nối với Proxy server và yêu cầu nó kết nối đến server thực sự. 2.2.4 Phân loại Proxy Có rất nhiều tiêu chí để phân loại các Proxy, có thể chia Proxy ra các loại sau : - Application-level & Circuit –level Proxy Là một dạng Proxy mà nó biết đƣợc các ứng dụng cụ thể mà nó phục vụ. Application – Level Proxy hiểu và thông dịch các lệnh ở giao thức tầng ứng dụng. Ví dụ nhƣ ứng dụng Sendmail. Circuit –level Proxy là một Proxy có thể tạo ra đƣờng kết nối giữa client và server mà không thông dịch các lệnh của giao thức ở tầng ứng dụng. Một dạng Circuit- level Proxy phổ biến là hybrid proxy gateway. Nó có vai trò nhƣ nhƣ một proxy với mạng phía ngoài nhƣng lại nhƣ một packet filtering đối với mạng phía trong. Nhìn chung thì Application – level Proxy sử dụng thủ tục ngƣời sử dụng còn Circuit-level Proxy sử dụng phần mềm client. Application – level Proxy có thể nhận các thông tin từ bên ngoài thông qua các giao thức tầng ứng dụng còn Circuit –level Proxy không thể thông dịch các đƣợc các giao thức tầng ứng dụng và cần phải cung cấp thêm thông tin để có thể cho dữ liệu đi qua. Ƣu điểm của nó là cung cấp dịch vụ cho nhiều giao thức khác nhau. Hầu hết các Circuit-level Proxy đều ở dạng Proxy tổng quát, tức là có thể phù hợp với hầu hết các giao thức. Nhƣng nhƣợc điểm của nó là cung cấp ít các đii\ều khiển trên Proxy và dễ dàng bị đánh lừa bằng cách gán các dịch vụ phổ biến vào các cổng khác các cổng mà chúng thƣờng sử dụng. - Generic Proxy & Dedicated Proxy
  39. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Mặc dù hai khái niệm Application –level Proxy và Circuit-level Proxy thƣờng đƣợc sử dụng nhƣng chúng ta vẫn thƣờng phân biệt giữa “Dedicated Proxy Server:”và “Generic Proxy Server” hay Proxy chuyên dụng và Proxy tổng quát. Một Dedicate Proxy Server chỉ phục vụ cho một giao thức , còn Generic Proxy Server lại phục vụ cho nhiều giao thức. Ta thấy ngay Application –level Proxy là một dạng Dedicate Proxy Server còn Circuit-level Proxy là một dạng Genneric Proxy Server. - Proxy thông minh Một Proxy server có thể làm nhiều việc hơn là chỉ đơn giản chuyển tiếp các yêu cầu từ client – Proxy đó đƣợc gọi là Proxy server thông minh. Ví dụ nhƣ CERN HTTP Proxy hay Squid Proxy có khả năng cache dữ liệu do đó khi có nhiều request cho cùng một dữ liệu thì không phải ra bên ngoài nữa mà có trả kết quả đã đƣợc cache ngay cho ngƣơpì sử dụng. Vì vậy có thể tiết kiệm đƣợc thời gian à chi phí đƣờng truyền. Các proxy này cung cấp các khả năng ghi nhật ký và điều khiển truy nhập tốt hơn là thực hiện bằng các biện pháp khác. 2.2.5 Sử dụng Proxy với các dịch vụ Internet Do Proxy can thiệp vào nhiều quá trình truyền thông giữa ckient và server,do đó nó phải thích ứng đƣợc với nhều dịch vụ. Một vài dịch vụ hoạt động một cách đơn giản, nhƣng khi có thêm Proxy thì nó hoạt động phức tạp hơn rất nhiều. Dịch vụ lý tƣởng để sử dụng Proxy là tạo kết nối TCP chỉ theo một hƣớng, có bộ lệnh an toàn. Do vậy thực hiện Proxy cho giao thức TCP hoàn toàn đơn giản hơn so với giao thức UDP, riêng với giao thức ở tầng dƣới nhƣ ICMP thì hầu nhƣ không thực hiện đƣợc Proxy. 2.3 Network Address Translation Hình 2-4: Chuyển đổi địa chỉ mạng Ban đầu NAT đƣợc đƣa ra để tiết kiệm các địa chỉ IP. Bởi địa chỉ IP có 32 bít cấp cho các đơn vị sẽ trở lên cạn kiệt nhanh chóng Nhƣng NAT đã đem lại một số tác dụng bất ngờ so với mục đích ban đầu khi thiết kế nó. Với NAT tất cả các máy tính thuộc mạng trong có một địa chỉ IP thuộc một dải các địa chỉ IP riêng ví dụ 10.0.0.0/8 mà các dịa chỉ này không sử dụng trên mạng Internet. Khi một máy thuộc mạng trong muốn kết nối ra Internet thì NAT computer sẽ thay thế địa chỉ IP riêng ( ví dụ 10.65.1.7) bằng địa chỉ IP đƣợc nhà ISPs cung cấp chẳng hạn.( ví dụ 23.1.8.3 )và khi đó gói tin sẽ đƣợc gửi đi với địa
  40. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux chỉ IP là 23.1.8.3 và khi nhận tin thì nó thay đổi đại chỉ IP đích để chúng ta thu đƣợc : 10.65.1.7 Ta có mô hình của Network Address Translation nhƣ hình trên. Sở dĩ NAT tiết kiệm tài nguyên địa chỉ IP vì địa chỉ cho các host trong mạng nội bộ của các tổ chức có thể hoàn giống nhau. Trong trƣờng hợp có nhiều hơn một máy tính trong mạng nội bộ cần kết nối ra ngoài Internet đồng thời thì máy tính NAT phải có nhiều địa chỉ IP công cộng, với mỗi địa chỉ này cho một máy tính trong mạng nội bộ. Với các dịch vụ NAT ngày nay thì máy tính NAT chỉ cần một địa chỉ IP công cộng bởi vì ngoài việc biến đổi địa chỉ IP thì nó còn thay đổi số hiệu cổng và mỗi máy trong mạng cục bộ sẽ đƣợc thay đôi với một số hiệu cổng khác nhau. Vì có khoảng 65355 số hiệu cổng khác nhau nên một máy tính NAT có thể quản lý một mạng cục bộ vói hàng ngàn máy tính. Kỹ thuật thay đổi số hiệu cổng đƣợc gọi là Chuyển đổi dịa chỉ cổng mạng – Network Address Port Translation ( NAPT ). Qua đây ta cũng thấy tính bảo mật của NAT đó là : Nó có khả năng dấu đi địa chỉ IP của các máy tính thuộc mạng cần bảo vệ. Đây cũng chính là một ƣu điểm mà firewall đã tận dụng, khi đó thế giới bên ngoài chỉ có thể thấy giao diện mạng với địa chỉ IP công cộng. 2.4 Theo dõi và ghi chép ( Monitoring and Logging ) Mục đích của theo dõi và ghi chép là giúp ngƣời quản trị biết các module trong hệ thống Firewall có hoạt động đúng nhƣ mong đợi hay không? Có chắc chắn rằng Packet Filtering lọc các gói tin có tin cậy? NAT có dấu đƣợc các địa chỉ IP của các host trong mạng nội bộ không? Proxy ứng dụng có chia rẽ đƣợc mạng bên trong cần bảo vệ với mạng bên ngoài không ? Ngoài ra nó còn cho ta biết các kết nối hiện tại trong hệ thống, thông tin về các gói tin bị loại bỏ, máy tính nào đang cố gắng xâm nhập vào hệ thống của ta. Sau đây là bốn lý do để Firewall thực hiện chức năng theo dõi và ghi chép :  Các thông tin báo cáo hữu ích : Chúng ta muốn tổng hợp các thông tin để biết hiệu năng của hệ thống Firewall, các thông tin trạng thái và thậm chí là sự thay đổi các account của ngƣời dùng với các dịch vụ.  Phát hiện xâm nhập : Nếu để một hacker thâm nhập vào mạng của chúng ta hacker này có đủ thời gian ở lại trong đó thực hiện các hành động gây tổn thƣơng cho hệ thống. Sự theo dõi thƣờng xuyên các log files có thể giúp phát hiện các manh mối để đƣa ra các chứng cứ giúp phát hiện sự xâm nhập vào mạng của chúng ta.  Khám phá các phƣơng pháp tấn công mới : Khi chúng ta phát hiện thành công sự xâm nhập thì chúng ta vẫn cần phải chắc chắn rằng hacker đã dừng lại và không thể thực hiện lại một lần nữa theo đúng cách mà hắn đã dùng lúc trƣớc. Điều này yêu cầu chúng ta phải phân tích kỹ càng tất cả các log files. Với hy vọng rằng chúng ta sẽ phát hiện ra các dấu vết mà hacker từ đó đi vào mạng của ta và lần đầu tiên xâm nhập vào mạng của ta là khi nào. Cũng từ những thông tin phân tích đƣợc chúng ta có thể phát hiện ra các ứng dụng Trojan horse mà nó đƣợc cài đặt trong hệ thống của chúng ta.  Các chứng cứ pháp lý : Một lợi ích mở rộng của các log files là tạo ra các chứng cứ có tính pháp lý. Các log files là các chứng cứ cho biết lần đầu
  41. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux xâm nhập hệ thống của hacker và những hành động tiếp theo của hacker tác động vào hệ thống. III. Kiến trúc Firewall Khi triển khai một Firewall trên một mạng thực tế thì sẽ có rất nhiều cách để xây dựng lên một hệ thống dựa theo các chức năng hay có thể nói là các thành phần cơ bản của một Firewall.Dƣới đây chúng ta sẽ tìm hiểu các dạng kiến trúc cơ bản của Firewall là : . Bastion host . Dual – home host . Screened host . Screened subnet Ngoài ra còn một số kiến trúc kết hợp hay biến thể từ các kiến trúc cơ bản trên. 3.1 Bastion host Bastion host của mạng nội bộ là vị trí tiếp xúc với môi trƣờng mạng bên ngoài.Mọi kết nối từ bên ngoài vào và ngƣợc lại đều phải qua Bastion host. Do vậy Bastion host luôn là mục tiêu tấn công số một, và đây đƣợc coi là một vị trí sống còn đối với một mạng. Với một hệ thống Firewall không phải chỉ có một Bastion host mà có thể có nhiều Bastion host ở nhiều vị trí khác nhau. Số lƣợng và vị trí của chúng là tuỳ vào yêu cầu thực tế và mục đích Bastion host có thể đƣợc sử dụng mhƣ một dạng kiến trúc Firewall. 3.1.1 Những nguyên tắc chính của một Bastion host Có hai nguyên tắc chính khi thiết kế và xây dựng một Bastion host : - Đơn giản - Luôn trong tình trạng sẵn sàng để Bastion host bị tấn công a. Đơn giản Với một Bastion host đơn giản thì việc bảo đảm an toàn cho nó càng dễ. Bất kỳ dịch vụ nào của Bastion host đều có thể tồn tại lỗi phần mềm hay lỗi cấu hình, những lỗi này có thể là nguyên nhân của các vấn đề an ninh. Do đó Bastion host hoạt động với càng ít nhiệm vụ thì càng tốt. Chỉ nên hạn chế một số ít các dịch vụ trên Bastion host đi kèm với cơ chế quyền hạn tối thiểu. b. Luôn trong tình trạng sẵn sàng để Bastion host bị tấn công Bất kì sự bảo vệ nào thì bastion host cũng sẽ có lúc bị tấn công và đổ vỡ. Phải đặt ra tình trạng xấu nhất có thể xảy ra với Bastion host, đồng thời lên kế hoạch để phòng việc này xảy ra. Trong trƣờng hợp Bastion host bị sụp đổ, cần phải có biện pháp để kẻ tấn công không tiếp tục làm hại đến mạng nội bộ bên trong.Một trong các cách là cấu hình cho các host bên trong mạng nội bộ không tin tƣởng tuyệt đối vào bastion host. Cần xem xét kĩ tới các dịch vụ mà bastion host cung cấp cho các host trong mạng nội bộ, kiểm tra độ tin cậy và quyền hạn của từng dịch vụ đó. Có nhiều cách để thực hiện điều này, ví dụ nhƣ cài đặt bộ lọc gói giữa Bastion host và các host bên trong hoặc cài mật khẩu cho từng host.
  42. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux 3.1.2 Các dạng Bastion host Có rất nhiều cách cấu hình Bastion trong một mạng. Ngoài hai kiểu cấu hình chính của Bastion host là screened host và các host cung cấp dịch vụ trên screen network, ta còn có nhiều dạng Bastion host. Cách cấu hình các dạng Bastion host này cũng tƣơng tự nhƣ hai dạng trên, ngoài ra nó còn có những yêu cầu đặc biệt. Sau đây là một số mô hình Bastion : - Nonrouting Dual- honed host - Victim Machine - Internal Bastion host a. Nonrouting Dual- honed host Một Nonrouting Dual- honed host có nhiều kết nối mạng đến nhƣng không truyền dữ liệu qua các kết nối đó. Bản thân mỗi host loại này cũng có thể là một firewall hoặc một bộ phận của firewall. b. Victim Machine Với một dịch vụ mới mà chúng ta chƣa đảm bảo an toàn cho nó, thì việc lựa chọn một Victim Machine là hoàn toàn hợp lý. Không có thông tin gì đặc biệt trên Victim Machine và cũng không có quyền truy nhập các host khác từ Victim Machine. Ta chỉ cung cấp một cách tối thiểu để có thể sử dụng đƣợc các dịch vụ mà ta mong muốn trên Victim Machine. Nếu có thể chỉ cung cấp các dịch vụ không an toàn, chƣa đƣợc kiểm định nhằm ngăn ngừa các tác động bất ngờ. 2.3.4 Vị trí của Bastion host trên mạng Bastion host nên đƣợc đặt ở vị trí không có các luồng thông tin bí mật. Hầu hết các giao tiếp mạng Ethernet và Token ring có thể hoạt động ở chế độ pha tạp, trong chế độ này chúng có thể bắt tất vả các gói tin trên mạng kết nối với chúng. Một số giao diện mạng khác nhƣ FDDI lại không thể bắt đƣợc tất cả các gói tin, nhƣng tuỳ vào kiến trúc mạng mà chúng có thể bắt đƣợc một số gói tin không chỉ định đến. Khả năng này rất hữu ích cho việc phân tích mạng, kiểm tra và gỡ rối ví dụ nhƣ sử dung chƣong trình tcpdump. Nhƣng điều này sẽ là nguy hiểm nhƣ thế nào nếu kẻ tấn công sử dụng nó vào mục đích rình mò, can thiệp vào các luồng dữ liệu trên mạng. Cần phải sự phòng trƣờng hợp xấu nhất là Bastion host bị tổn thƣơng , trong trƣờng hợp này ta không muốn kẻ tấn công sử dụng Bastion host để can thiệp vào các luồng thông tin. Một trong các phƣơng án giải quyết vấn đề trên là không đặt Bastion host trong mạng nội bộ mà ta đƣa nó vào mạng vành đai. Tất cả các luồng thông tin trong mạng nội bộ sẽ chỉ nằm trong mạng nội bộ, không thể quan sát từ phía mạng vành đai. Tất cả các Bastion host trên mạng vành đai chỉ thấy các gói tin từ nó ra Internet và từ Internet vào nó. Sử dụng mạng vành đai kết hợp kết hợp với các router lọc gói giữa chúng và mạng nội bộ sẽ giúp thêm nhiều ƣu điểm. Nó hạn chế sự lộ diện của mạng nội bộ với mạng bên ngoài. Hoặc có thể đặt Bastion host tại một vị trí trên mạng ít bị nhòm ngó hơn. Ví dụ : có thể đặt một Bastion trên một hub 10base thông minh, hoặc một Ethernet Switch hay một mạng ATM. Nếu thực hiện theo phƣơng án này thì cần đảm bảo không host nào tin tƣởng tuyệt đối vào Bastion host.
  43. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Tóm lại cách tốt nhất là cô lập Bastion host với mạng nội bộ. Phƣơng án khả thi là đặt nó trên mạng vành đai. Theo cách này mạng nội bộ vẫn đƣợc bảo vệ kể cả trong trƣờng hợp Bastion host bị tổn thƣơng. Chú ý : Không cho phép các tài khoản của ngƣời sử dụng trên Bastion host: Nếu có thể không cho phép bất kì tài khoản của ngƣời sử dụng nào trên Bastion host. Vì các lý do sau: + Việc tổn thƣơng của chính các tài khoản này + Việc tổn thƣơng của các dịch vụ phuc vụ cho các tài khoản này + Giảm tính ổn định, tin tƣởng của Bastion host + Khó phát hiện kẻ tấn công + Bastion host có thể bị tổn thƣơng chỉ vì sự sơ ý của ngƣời nào đó 3.2 Dual –home host Xây dựng dựa trên một máy tính dual – home tức là cód ít nhất là hai card mạng ( chú ý rằng máytính này phải đƣợc huỷ bỏ khả năng dẫn đƣờng ). Nó hoạt động nhƣ một router giữa các mạng mà nó kết nối cí vai trò qƣyết định các gói tin từ mạng này sang mạng khác. Hệ thống bên trong và bên ngoài đều có thể kết nối với Dual – home host nhƣng không thể kết nối trực tiếp với nhau. Hình 2-5: Kiến trúc Dual –home host Kiến trúc này tƣơng đối đơn giản: một Dual – home host đứng giữa, kết nối với mạng bên ngoài và mạng bên trong. Dual – home host cung cấp khả năng điều khiển ở mức cao. Tuy nó có kiến trúc đơn giản nhƣng để khai thác triệt để các ƣu điểm của nó ta cần phải làm rất nhiều việc. 3.3 Screened host Screened host cung cấp các dịch vụ từ một host có kết nối chỉ với mạng nội bộ. Xây dựng dựa trên một Bastion host và một Screening Router. Bastion host đƣợc đặt trong mạng nội bộ, Packet Filtering trên Screening Router đƣợc cài đặt làm sao cho bastion host là host duy nhất trong mạng nội bộ mà các host ngoài Internet có thể kết nối tới, thậm chí là chỉ cho một số dạng kết nối nhất định nào đấy. Bất kỳ host bên ngoài nào muốn kết nối tới hệ thống bên trong
  44. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux đều phải qua bastion host. Vì lý do trên mà bastion host cần đƣợc bảo vệ thật cẩn thận. Packet Filtering cho phép bastion host kết nối tới những điểm cho phép ở mạng ngoài Packet Filtering đƣợc cấu hình để thực hiện các nhiệm vụ sau: + Cho phép các host phía trong khác ( không phải là bastion ) kết nối đến các host bên ngoài để thực hiện dịch vụ nào đó. + Chặn tất cả các kết nối đến các host ở mạng nội bộ ( các host này sử dụng Proxy server thông qua bastion host ) Hình 2-6: Kiến trúc Screen host Do kiến trúc screen host cho gói tin di chuyển từ Internet vào mạng nội bộ nên sẽ có nhiều rủi ro hơn so với kiến trúc Dual – home host. Mặc dù vậy thực tế thì kiến trúc Dual – home host có thể bị hỏng và các gói tin đi vào mạng nội bộ . Hơn nữa việc bảo vệ một router dễ dabgf hơn so với một host vì vậy kiến trúc này sẽ an toàn hơn, tiện lợi hơn. 3.4 Screened Subnet Đƣợc xây dựng bằng cách thêm vào kiến trúc Screen host mạng vành đai nhằm cách ly mạng nội bộ với mạng bên ngoài Internet.
  45. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Hình 2-7: Kiến trúc Screen subnet Kiến trúc này khắc phục nhƣợc điểm của kiến trúc Screen host- ở đó bastion host nằm trong mạng nội bộ và một khi bastion host bị tổn thƣơng thì toàn bộ mạng cần bảo vệ sẽ bị tổn thƣơng ( nếu có sự tin tƣởng tuyệt đối giữa các host với bastion host ). Bằng cách cách ly bastion host trên mạng vành đai, có thể giảm đƣợc các nguy cơ trong trƣờng hợp bastion host bị đột nhập. Với kiến trúc Screen subnet đơn giản nhất : hai screening router kết nối tới mạng vành đai. Một router ( interior router ) ở vị trí mạng vành đai và mạng nội bộ, router còn lại ( exterior router ) nằm giữa mạng vành đai và mạng Internet. Để có thể đột nhập vào mạng nội bộ thì kẻ tấn công phải vƣợt qua cả hai router này. Và nếu trƣờng hợp chiếm đƣợc bastion host thì vẫn phải vƣợt qua Interior router. Tuỳ vào yêu cầu cụ thể mà ngƣời ta có thể sử dụng một hay nhiều mạng vành đai. Các thành phần cơ bản của kiến trúc screened subnet a. Mạng vành đai Mạng vành đai là một lớp bảo vệ đƣợc thêm vào giữa mạng nội bộ và mạng bên ngoài. Nếu kẻ tấn công đột nhập đƣợc vào Firewall của ta thì mạng vành đai cho ta thêm một lớp bảo vệ nữa. Nếu kẻ tấn công chiếm đƣợc bastion host trên mạng này thì hắn cũng chỉ có thể tìm kiếm đƣợc thông tin trên bastion host mà thôi. Tất cả luồng thông tin mạng vành đai có thể xuất phát/đến từ bastion host hoặc xuất phát/đến từ Internet. Do hoàn toàn không có luồng thông tin từ mạng nội bộ đi qua mạng vành đai nên mạng nội bộ sẽ ăn toàn trong cả trƣờng hợp bastion bị tổn thƣơng. b. Bastion host Trong kiến trúc screen subnet, bastion host đƣợc thêm vào ở mạng vành đai. Đây là điểm liên lạc quan trọng để nhận các kết nối từ bên ngoài. Các dịch vụ phía ngoài ( từ client bên rong đến server Internet ) đƣợc xử lý theo một trong hai cách sau đây : + Cài đặt Packet Filtering trên cả exterior router và interior router và cho phép các client trong mạng nội bộ truy cập trực tiếp các server mạng ngoài. + Cài đặt Proxy server trên bastion host và cho phép client trong mạng truy cập gián tiếp tới các server ở mạng ngoài . Có thể cài đặt Packet Filtering và cho phép những kết nối với Proxy trên bastion host, nhƣng ngăn chặn những kết nối trực tiếp giữa client trong mạng nội bộ với server bên ngoài. Trong cả hai trƣờng hợp thì Packet Filtering cho phứp bastion host kết nối tới các server hay host phía bên ngoài Internet. c. Interior router Còn có tên khác là choke-router- bảo vệ mạng nội bộ từ mạng Internet và mạng vành đai.Thực tế exterior cho phép hầu hết các kết nối từ mạng vành đai ra ngoài, và thực hiện chức năng lọc gói cho Firewall. Các dịch vụ mà interior cho phép giữa bastion host và các host trong mạng nội bộ không giống nhƣ các dịch vụ mà exterior router cho phép giữa mạng vành đai và mạng Internet. Lý do về sự hạn chế các dịch vụ giữa bastion host và mạng nội bộ là giảm số lƣợng các host bị tấn công khi bastion host bị tổn thƣơng. d. Exterior router
  46. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Còn có tên khác là access router dùng để bảo vệ cả mạng nội bộ và mạng vành đai. Thực tế , nó cho phép hầu hết các kết nối từ mạng vành đai ra ngoài, và thực hiện rất ít việc lọc các gói tin. Chỉ có những luật lọc gói thực sự đặc biệt trên exterior mới bảo vệ các host và mạng vành đai. Những luật còn lại thƣờng là sự lặp lại các luật trên interior router. Trên exterior có thể cài đặt Proxy để hỗ trợ các kết nối từ bastion host ra ngoài. 3.5 Một số kiến trúc biến thể khác Phần trên là một số kiến trúc phổ biến của Firewall. Tuy vậy vẫn còn rất nhiều kiến trúc khác. Các kiến trúc này là tổ hợp của các thành phần cơ bản của một Firewall nhằm đáp ứng khả năng linh hoạt và bảo mật. Các tổ hợp này có thể là : Sử dụng nhiều Bastion host Kết hợp interior router và exterior router Sử dụng nhiều exterior router Sử dụng nhiều mạng vành đai Nhƣng bên cạnh đó cần phải tránh một vài tổ hợp sau : Kết hợp Bastion host và interior router Sử dụng nhiều interior router trong mạng vành đai IV. Bảo dưỡng Firewall Sau khi thiết kế và cài đặt một Firewall phù hợp với yêu cầu, nhiệm vụ đƣợc đặt ra thì công việc quan trọng tiếp theo là bảo trì, bảo dƣỡng Firewall đó. Có ba nhiệm vụ quan trọng trong công việc này là : Quản lý Firewall Kiểm tra hệ thống Firewall Luôn luôn cập nhật cho Firewall Trong đó có nhiều công việc bảo dƣỡng Firewall có thể thực hiện tự động hoá đƣợc. 4.1 Quản lý Firewall Quản lý Firewall giúp cho Firewall của ta đƣợc an toàn và sáng sủa. Có ba công việc mà ta cần phải làm là : - Sao lƣu Firewall - Quản lý các tài khoản - Quản lý dung lƣợng đĩa 4.1.1 Sao lƣu Firewall Đó là việc sao lƣu lại các thông tin cấu hình của hệ thống để đề phòng trƣờng hợp cần khôi phục lại các thông tin cấu hình này. 4.1.2 Quản lý các tài khoản Quản lý các tài khoản bao gồm các công việc : Thêm tài khoản mới, sửa đổi tài khoản hoặc xoá bỏ một tài khoản . đây là một công việc tất yếu trong công tác bảo mật. Với một hệ thống Firewal thì việc quản lý tốt tài khoản đóng góp một phần không nhỏ cho tính an toàn của hệ thống.
  47. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux 4.1.3 Quản lý dung lƣợng đĩa Dữ liệu luôn có xu hƣớng đầy lên trong không gian đĩa ngay cả khi không có ngƣời sử dụng nào trong hệ thống. Ngƣời quản trị luôn phải kiểm tra hệ thống để trả lời các thắc mắc sau: + Liệu các chƣơng trình đang hoạt động trong hệ thống có phải là chƣơng trình “ của sau” do kẻ tấn công cài đặt hay không? + Liệu các dữ liệu lƣu trữ trong đĩa có an toàn hay tiềm ẩn những nguy cơ mất an ninh. 4.2 Kiểm tra hệ thống Một trong các công việc quan trọng khác giúp bảo dƣỡng Firewall là kiểm tra hệ thống. Để thực hiện ngƣời quản trị cần trả lời các câu hỏi sau, mà công việc chủ yếu là kiểm tra kỹ lƣỡng các log files để lấy ra các thông tin hữu ích phục vụ cho công việc quản trị của mình. - Liệu Firewall đã bị tổn thƣơng chƣa? - Kẻ tấn công đang sử dụng dạng tấn công nào vào Firewall của ta - Firwall đã làm việc theo đúng trình tự chƣa? - Firewall đã cung cấp đủ các dịch vụ mà ngƣời sử dụng yêu cầu Khi kiểm tra các log files ngƣời quản trị cần quan tâm đến các vấn đề sau: Những thông tin cần quan tâm: + Các gói tin bị huỷ bỏ, các kết nối bị ngăn cấm + Với các kết nối đi qua Bastion host thì cần ghi lại các thông tin về thời gian kết nối, giao thức đƣợc sử dụng, thông tin ngƣời sử dụng + Các thông báo lỗi của hệ thống Các dấu hiệu Có rất nhiều các dấu hiệu cần quan tâm nhƣ khi có một kết nối thành công thì cần có các hành động cần thiết nhƣ cập nhật các log files, có dấu hiệu là một cuôc tấn công không? Chúng ta có thể liệt kê các dấu hiệu đáng nghi ngờ của một cuộc tấn công + Truy cập nhiều lần bằng một tài khoản hợp lệ nhƣng sai mật khẩu + Các gói tin, câu lệnh khác thƣờng mà ta không giải thích đƣợc + Các gói tin gửi theo dạng multicast hay broadcast + Các truy nhập thành công từ các site không mong đợi 4.3 Luôn cập nhật cho Firewall Điểm quan trọng cuối cùng trong chiến lƣợc bảo dƣỡng Firewall là luôn luôn cập nhật cho nó . Bởi lẽ mỗi ngày mỗi giờ trôi qua có rất nhiều các cuộc tấn công xẩy ra và trong đó luôn có những cuộc tấn công với những hình thức phƣơng pháp mới.Và một lí do nữa đó là đảm bảo hệ thống luôn sẵn sàng với khả năng tốt nhất Khi cập nhật cho hệ thống Firewall cần chú ý một số vấn đề sau : + Không quá nóng vội, hấp tấp trong việc cập nhật + Không thực hiện sửa các lỗi mà ta không gặp + Thận trọng với các bản vá mà nhà cung cấp đƣa ra Trong trƣờng hợp không sử dụng các bản vá không cần thiết nhƣng thận trọng với các bản vá mà ta sử dụng bởi có thể các bản vá này liên quan với nhau.
  48. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Chƣơng 3 : HỆ ĐIỀU HÀNH LINUX  Tổng quan về hệ điều hành Linux  Kết nối mạng trong Linux  IPtables
  49. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Các vấn đề đƣợc đề cập trong chƣơng này là tìm hiểu một cách tổng quan về hệ điều hành Linux, vấn đề kết nối mạng trong môi trƣờng hệ điều hành Linux Tiếp theo là tìm hiểu về IPTables- một công cụ phục vụ cho việc thiết lập một hệ thống Firewall trên nền hệ điều hành Linux. I. Tổng quan hệ điều hành Linux 1.1 Sơ lược về Linux Hệ điều hành Linux là hệ điều hành kiểu phân chia thời gian có hỗ trợ xử lý tƣơng tác, nó đƣợc bắt nguồn từ hệ điều hành Unix.Mà nó đƣợc sử dụng từ các máy PCs đến các máy Mainframe. Nó là một hệ điều hành mã nguồn mở nên trên thị truờng tồn tại rất nhiều dòng sản phẩm hệ điều hành Linux ( tiêu biểu là dự án GNUs, hệ điều hành Linux với giao diện đồ hoạ Red Hat ( Fedora ), SuSe ) Hệ thống đƣợc viết trên ngôn ngữ bậc cao nên dễ đọc, dễ hiểu, dễ thay đổi cài đặt trên nhiều loại thiết bị phần cứng mới. Hỗ trợ đa ngƣời dùng và đa tiến trình, mỗi ngƣời dùng có thể thực hiện nhiều chƣơng trình mỗi chƣơng trình có thể có nhiều tiến trình. Che dấu đi cấu trúc máy đối với ngƣời dùng, có thể viết chƣơng trình chạy trên các điều kiện phần cứng khác nhau. User Interface Users Library Utility Prograns (Shell, editor, ) System Call Standard Library Interface (Open, close, read, write ) Linux Operating System ( Kernel mode ) Hardware ( CPU, memory, disks, 1.2 Môi trường Linux Các thành phần chính của hệ điều hành Linux : o Windows & Graphic User Interface o Shell o Lệnh và tiện ích o Các bộ điều khiển thiết bị o Kernel
  50. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux 1.2.1. Kernel: Là thành phần chính của hệ điều hành. Nhiệm vụ chính của Kernel là : o Quản lý tài nguyên quản lý bộ nhớ, v.v o Quản lý hệ thống các tập tin, thƣ mục có thể là cục bộ hay từ xa o Quản lý các deamon thƣờng trú o Quản lý bộ nhớ ảo : để thực thi đồng thời nhiều tiến trình trong khi dung lƣợng bộ nhớ có hạn, Linux phải tổ chức một vùng trên đĩa nhƣ một vùng bộ nhớ( bộ nhớ ảo). Kernel phải “swap” dữ liệu giữa bộ nhớ và bộ nhớ ảo. o Quản lý quá trình :Nhö ñaõ bieát vì Linux laø moät heä ñieàu haønh ña chöông do ñoù vieäc quaûn lyù caùc quaù trình ñoàng thôøi raát phöùc taïp. Noù phaûi quaûn lyù vieäc khôûi taïo vaø keát thuùc caùc quaù trình cuõng nhö caùc tranh chaáp coù theå xaûy ra. o Quaûn lyù caùc boä ñieàu khieån thieát bò. o Quaûn lyù maïng: bao goàm nhieàu thieát bò phaàn cöùng khaùc vaø caùc thuû tuïc khaùc. o Quaûn lyù vieäc khôûi ñoäng vaø döøng maùy. 1.2.2. Bộ điều khiển thiết bị: Linux thể hiện các thiết bị vật lý nhƣ các tập tin đặc biệt. Một tập tin đặc biệt sẽ có một điểm vào trong thƣ mục và có một tên tập tin. Do đó Linux cho phép ngƣời sử dụng định nghĩa tên thiết bị. Các thiết bị đƣợc chia làm hai loại : ký tự và khối - Thiết bị ký tự đọc và ghi dòng các ký tự( ví dụ các thiết bị đầu cuối ) - Thiết bị khối đọc và ghi dữ liệu trong các khối có kích thƣớc cố định (ví dụ ổ đĩa) Thiết bị có thể đổi tên nhƣ đổi tên tập tin. Thƣ mục chứa các điều khiển thiết bị là /dev 1.2.3. Lệnh và tiện ích: Các lệnh và tiện ích của Linux rất đa dạng Một lệnh của Linux códạng: $tên lệnh [các chọn lựa][các đối số] 1.2.4. Shell: Là bộ xử lý lệnh của ngƣời sử dụng,nó cho phép ngƣời sử dụng tạo các lệnh rất phức tạp từ các lệnh đơn giản. Chúng ta có thể coi shell nhƣ một ngôn ngữ lập trình cấp cao. Các chức năng chính của shell là: Linux shell: o Kiểm soát I/O và đổi hƣớng o Các biến môi trƣờng o Thực hiện lệnh o Thƣ viện lệnh nội tại o Tên tập tin mở rộng o Ngôn ngữ lập trình và môi trƣờng Hiện nay ngƣời ta sử dụng ba loại shell, tuỳ theo loại mà có cú pháp khác nhau :
  51. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Bourne-Shell : là shell cơ bản nhất,nhanh,hiệu quả nhƣng ít lệnh C-Shell : giống nhƣ Bourne-Shell nhƣng cung cấp thêm các cấu trúc điều khiển, history, bí danh Korn-Shell : Kết hợp cả Bourne-Shell và C-Shell 1.2.5. Windows và Graphic User Interface: Giao tiếp đồ hoạ và cửa sổ là một khả năng rất mạnh của hệ điều hành Linux, nó cho phép hệ điều hành giao tiếp thân thiện hơn với ngƣời sử dụng. Hiện nay Linux cài đặt X-WINDOW( X11 ) là môi trƣờng quản lý đồ hoạ lý tƣởng. Trong Sun thì sử dụng với tên gọi là OpenWin. 1.3 Lập trình Shell script 1.3.1. Shell là gì : Vai trò của Shell là chuyển đổi các lệnh đƣợc ngƣời sử dụng nhập vào thành các lệnh của hệ điều hành. Ví dụ : $ sort –n phonelist > phonelist.inorder Sẽ sắp xếp các dòng trong file phonelist theo thứ tự số và đặt kết quả trong tệp phonelist.inorder. Khi ta nhập dòng lệnh thì Shell sẽ chuyển đổi chúng nhƣ minh hoạ sau: Hình 3-1: Mô hình chức năng Shell 1.3.2. Các loại Shell : Do Linux là hoàn toàn tự do, mã nguồn mở nên cũng có rất nhiều các bản Shell khác nhau. Hiện nay có một số bản Shell chính chạy dƣới Linux sau : Bourne Again shell ( BASH ), Bourne shell ( SH ), C shell ( CSH ), Korn shell ( KSH ), TSH : C shell cải tiến, ZSH : Z shell Để biết shell đang dùng là gì hãy sử dụng câu lệnh sau : $ echo $SHELL 1.3.3. Viết và chạy các chƣơng trình shell : Ở mức đơn giản thì chƣơng trình shell là một tệp chứa các câu lệnh shell hay Linux. Ví dụ nhƣ ta muốn mount một phân vùng FAT32 của Windows ta thực hiện một chƣơng trình shell nhƣ sau : $ mkdir /mnt/windows $ mount –t –vfat /dev/hda3 /mnt/windows Lƣu chúng vào một file text ví dụ nhƣ : seewwinflinux.txt Để chạy seewwinflinux.txt ta có một số cách nhƣ sau: $ chmod +x seewwinflinux Và để chạy ta chỉ gọi seewwinflinux.txt từ dòng lệnh Hoặc ta truyền nó nhƣ một tham số :
  52. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux Ví dụ với tcsh : $ tcsh seewwinflinux Hoặc dùng lệnh (.) seewwinflinux 1.3.4. Các cấu trúc lệnh cơ bản của shell : . Câu lệnh điều kiện + Câu lệnh if : + Câu lệnh case : . Câu lệnh lặp + Câu lệnh for + Câu lệnh while + Câu lệnh until + Câu lệnh repeat . Câu lệnh shift : Lệnh shift sẽ dịch các tham số trên dòng lệnh ( các tham số mà ta gõ khi gọi lệnh sẽ đƣợc lƣu trong các biến có tên là các số 1,2, )một vị trí sang phải hay có thể chỉ định số vị trí dịch chuyển. Cú pháp nhƣ sau : Dịch một vị trí : shift Dịch số vị trí đƣợc chỉ định : shift number . Một số toán tử dùng trong câu lệnh test hay biểu thức điều kiện : + Các toán tử cho xâu ký tự + Các toán tử cho kiểu files và directory + Các toán tử logic + Các toán tử cho số nguyên . Sử dụng chƣơng trình con hay hàm trong shell script Shell cho phép ta định nghĩa các hàm của riêng mình, các hàm này cũng đƣợc đối xử nhƣ các hàm trong C và các ngôn ngữ lập trình khác, các hàm làm cho chƣơng trình rõ rang,sáng sủa hơn và có bố cục dễ hiểu hơn, mặt khác tránh đƣợc việc viết các đoạn mã trùng lặp nhau. Cú pháp của một hàm trong shell nhƣ sau : function-name ( ) { command1 command2 commandN return } Khi tạo xong các hàm ta có thể gọi hàm nhƣ sau : fname [arg1 arg2 arg3 ] Khi các tham số đƣợc truyền cho hàm thì nó cũng nhƣ các tham số vị trí dòng lệnh nhƣ các chƣơng trình shell bình thƣờng khác. Ta cần chú ý rằng sau khi restart lại computer thì hàm của chúng ta cũng mất do các hàm chỉ tồn tại trong một phiên làm việc. Để khắc phục vấn đề này thì chúng ta cần lƣu các hàm vào file trong thƣ mục sau : ( chú ý phải đăng nhập với tƣ cách là root )
  53. Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux II. Kết nối mạng trong Linux 2.1 Giới thiệu Trong phần này chúng ta sẽ trình bày tổng quan về kết nối mạng trong Linux bao gồm các vấn đề: Thiết bị, trình điều khiển, giao diện mạng, Các đƣờng kết nối mạng trong Linux. 2.2 Thiết bị, trình điều khiển và giao diện mạng Trƣớc hết là khái niệm về thiết bị phần cứng, ví dụ card Ethernet. Đó là một tập hợp các thiết bị điện tử, các chip điều khiển đƣợc cắm vào máy tính thông qua một khe cắm mở rộng. Để có thể truy cập vào thiết bị phần cứng thì hạt nhân phải đƣợc phải đƣợc cài đặt một số hàm đặc biệt gọi là trình điều khiển. Chẳng hạn với các thiết bị thuộc họ Ethernet thì có các trình điều khiển Becker.Việc truyền thông giữa trình điều khiển và thiết bị thông qua một vùng nhớ vào ra ( I/O ). Vùng nhớ này đƣợc thƣờng đƣợc ánh xạ địa chỉ lên các thanh ghi vào ra. Các lệnh cũng nhƣ dữ liệu trao đổi giữa chúng đều đƣợc truyền qua các thanh ghi trên. Hạt nhân truy cạp vào các trình điều khiển thiết bị thông qua các giao diện. Các giao diện cung cấp các hàm vào ra giống nhau cho tất cả các dạng thiết bị phần cứng, ví dụ nhƣ nhận hay truyền một gói tin. Các giao diện đƣợc định danh bởi các tên. Các tên này đƣợc định nghĩa bên trong hạt nhân. Giao diện Ethernet có tên là eth0, eth1 Chỉ có giao diện SLIP là đƣợc gán tên động mỗi khi kết nối SLIP dựoc thiết lập thì một giao diện tƣơng ứng sẽ đƣợc gán cho cổng nối tiếp. Kernel Networking code Giao diện mạng eth0 eth1 eth2 eth3 Trình điều SMC Driver 3Com Driver khiển Thiết bị Networking Hardware Hình 3-2: Giao diện, trình điều khiển và thiết bị Một số giao diện trong Linux : + lo Giao diện loopback, nó đƣợc sử dụng cho mục đích thử nghiệm. Trong hạt nhân luôn luôn có một trình điều khiển cho giao diện này + ethn Là giao diện cho card mạng Ethernet thứ n + 1. Đây là tên chung cho