MỤC LỤC
LỜI CẢM ƠN 1
LỜI NÓI ĐẦU 2
CHƯƠNG I: CÁC MỐI ĐE DỌA AN MẠNG VÀ MỘT SỐ GIẢI PHÁP 4
1.1 Tầm quan trọng của bức tường lửa 4
1.2 Đối tượng bảo vệ của bức tường lửa 4
1.2.1 Bảo vệ dữ liệu 4
1.2.2 Bảo vệ các tài nguyên trên mạng 5
1.2.3Bảo vệ uy tín, danh tiếng của công ty 5
1.3. Một số mối đe dọa an ninh mạng 5
1.3.1.Tấn công truy nhập mạng 5
1.3.2. Tấn công theo kiểu khai thác mạng: 6
1.3.3.Tạo cửa hậu, xóa nhật ký: 8
1.3.4 Tấn công từ chối dịch vụ 8
1.3.5 Giả mạo địa chỉ IP: 9
1.3.6 Đùa nghịch, quấy rối: 10
1.3.7 Phá hoại: 10
1.3.8 Gián điệp: 10
1.3.9 Vô ý hay thiếu hiểu biết của con người: 10
1.3.10 Tấn công vào yếu tố con người: 10
CHƯƠNG II:TỔNG QUAN FIREWALL 11
2.1. Một số khái niệm : 11
2.2.Chức năng: 11
2.2.1. Khả năng của hệ thống firewall 12
2.2.2. Những hạn chế của firewall 13
2.3. Phân loại bức tường lửa (Firewall) 13
2.3.1. Firewall lọc gói 14
2.3.2. Bức tường lửa ứng dụng(Application firewall) 16
2.3.3. Bức tường lửa nhiều tầng 18
2.4. Một vài kiến trúc firelwall 18
2.4.1 Screening Router 18
2.4.2 Dual-Homed Host 19
2.4.3. Bastion Host (máy chủ pháo đài) 20
2.4.4. Screened host (máy chủ sang lọc) 21
2.4.5. Screened Subnet (mạng con) 21
CHƯƠNG III: IPTABLES TRONG LINUX 24
3.1 Giới thiệu IPTABLES - IPCHAINS - so sánh 24
3.1.1 Giới thiệu Ipchains : Ipchains - quản trị IP Firewall 24
3.1.2 Giới thiệu Netfilter/Iptables 25
3.2 Cài đặt Iptables trong Kernel 27
3.3 Cài đặt ứng dụng phần người dùng (user-land) 30
3.4. Cách thức packet qua Firewall. 31
3.5. Các bảng và chuỗi luật 33
3.5.1 Bảng Nat 33
3.5.2 Bảng lọc (filter) 35
3.5.3 Bảng mangle 36
CHƯƠNG IV : ỨNG DỤNG Firewall 38
4.1 Sử dụng Iptable 38
4.1.1 Các file cấu hình 38
4.1.2 Các thao tác trong toàn bộ chuỗi luật 38
4.1.3 luật đơn 39
4.1.4 Mô tả bộ lọc 40
4.1.5 Mô tả hành động 44
4.2.1 Ứng dụng Iptables làm masquerading 48
4.2.2 Ứng dụng IPTABLES làm NAT 55
4.2.3 Phần mềm ứng dụng Iptables/Netfilter trong Linux. 63
KẾT LUẬN 64
PHỤ LỤC 65
TÀI LIỆU THAM KHẢO 66
66 trang |
Chia sẻ: netpro | Lượt xem: 2735 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng mô hình bảo vệ mạng bằng bức từong lửa iptable của linux, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
nghĩa. Với điều này packets sẽ được chuyển tới socket cục bộ, thậm chí chúng được gửi đến host ở xa.
3.1.2 giới thiệu netfilter/Iptables
3.1.2.1 Giới thiệu Iptables
Hình 3.1 vị trí Netfilter/Iptables trong Kernel Linux 2.4.
Iptables là một tường lửa ứng dụng lọc gói dữ liệu rất mạnh, có sẵn bên trong kernel Linux 2.4.x và 2.6.x. Netfilter/Iptable gồm 2 phần là Netfilter ở trong nhân Linux và Iptables nằm ngoài nhân. Iptables được dùng để quản lý các quy tắc lọc gói tin bên dưới cơ sở hạ tầng của Netfilter.Hệ thống con Netfilter của Linux 2.4x cho phép cài đặt, duy trì, và kiẻm tra các quy tắc lọc gói tin trong Kernel. Netfilter làm việc trực tiếp trong nhân, nhanh và không làm giảm tốc độ của hệ thống.
Nó là một giải pháp lọc gói tin mới, cao cấp hơn so với những gì có sẵn đối với Linux Kernel trước 2.4x. Netfilter cung cấp 1 số ưu điểm và hiện nay nó đã trở thành một giải pháp mạnh mẽ và hoàn thiện hơn để giúp bạn bảo vệ các mạng cộng tác.
Tuy nhiên, Netfilter cũng không phải là một giải pháp hoàn toàn mới. Nó là một khung làm việc để xử lý các gói tin khi chúng đi qua các thành phần của Kernel. Netfilter bao gồm:
* Xây dựng bức tường lửa dựa trên cơ chế lọc gói stateless và stateful
* Dùng bảng NAT và masquerading chia sẻ sự truy cập mạng nếu không có đủ địa chỉ mạng.
* Dùng bảng NAT để cài đặt transparent proxy
* Có khả năng theo dõ sự kết nối, có khả năng kiểm tra nhiều trạng thái của packet. Nó làm việc này cho UDP và ICMP tốt nhất là kết nối TCP, thí dụ tình trạng đầy đủ của lọc ICMP chỉ cho phép hồi âm khi có yêu cầu phát đi, chứ không chặn các yêu cầu nhưng vẫn chấp nhận hồi âm với giả sử rằng chúng luôn đáp lại lệnh ping. Sự hồi âm không do yêu cầu có thể là tín hiệu của sự tấn công hoặc cửa sau.
* Xử sự đơn giản của các packet thoả thuận trong các chains (một danh sách các nguyên tắc) INPUT, OUTPUT, FORWARD. Trên các host có nhiều giao diện mạng, các packet di chuyển giữa các giao diện chỉ trên chain FORWARD hơn là trên 3 chain.
* Phân biệt rõ ràng giữa lọc packet và NAT (Nework Address Translation)
* Có khả năng giới hạn tốc độ kết nối và ghi nhật ký. Bạn có thể giới hạn kết nối và ghi nhật ký ồ ạt để tránh sự tấn công từ chối dịch vụ (Deinal of service).
* Có khả năng lọc trên các cờ và địa chỉ vật lý của TCP.
* Là một Firewall có nhiều trạng thái, nên nó có thể theo dõi trong suốt sự kết nối, do đó nó an toàn hơn Firewall có ít trạng thái.
* Iptables bao gồm một vài bảng, mỗi bảng với một chính sách (police) mặc định và các nguyên tắc trong chain xây dựng sẵn.
3.1.2.2 So sánh Iptables và Ipchains
- Sự khác biệt đầu tiên mà chúng ta có thể thấy là tên của các chain xây dựng sẵn chuyển từ chữ thường sang chữ hoa.
- Cờ “-i” bây giờ có nghĩa là giao diện đi vào (incoming interface) và chỉ làm việc trong chain INPUT và FORWARD. Các nguyên tắc trong chain OUTPUT hoặc FORWARD trước đây sử dụng “-i” được thay đổi thành “-o”.
- Các cổng của TCP và UDP bây giờ cần đưa ra “- source-port hoặc –sport/--destination-port hoặc dport” được đặt sau “-p tcp” hoặc “-p udp”.
- Cờ TCP –y bây giờ là –syn phải được đặt sau “-p tcp”.
- DENY đích, bây giờ là DROP.
- Tên chain có thể lên đến 16 ký tự.
- REJECT và LOG bây giờ chúng có thể riêng biệt với kernel.
- Iptables có một hệ thống con cho NAT riêng biệt
3.2 Cài đặt Iptables trong Kernel
Iptables được cấu hình trong kernel khi thực hiện cài đặt. Để chạy Iptables các lựa chọn sau đây cần thiết trong khi cấu hình hoặc một trong số những lệnh liên quan.
CONFIG_PACKET- lựa chọn này cho phép các ứng dụng và các tiện ích cần thiết để làm việc trực tiếp đến các thiết bị mạng khác nhau. Ví dụ tiện ích tcpdump hoặc snort.
CONFIG_NETFILTER- lựa chọn này yêu cầu nếu bạn dùng máy tính của bạn như là 1 Firewall hoặc gateway cho Internet cần một trình điềukhiển cho một giao diện ví dụ bộ tích hợp ethernet, PPP và SLIP interface.
CONFIG_IP_NF_CONTRACK – thành phần này cần cho theo dõi kết nối (connection tracking). Connection tracking được sử dụng trong các công việc khác (NAT và Masquerading). Nếu cần một máy Firewall trên mạng cục bộ thì cần đánh dấu lựa chọn này. Ví dụ thành phần này cần rc.fr.txt để làm việc
CONFIG_IP_FTP- thành phần này là cần thiết nếu muốn theo dõi kết nối trên các kết nối FTP. Không cần lựa chọn này nếu không dùng FTP cho Firewall hoặc gateway
CONFIG_IP_NF_IPTABLES- lựa chọn này cần thiết nếu muốn thực hiện bất kỳ loại lọc filtering, masquerading hoặc NAT. Nó thêm toàn bộ khung làm việc (framework) của Iptables vào kernel. Nếu không có lựa chọn này sẽ không thể làm được gì với Iptables
CONFIG_IP_NF_MATCH_LIMIT - lựa chọn này không thực sự cần thiết nhưng nó cung cấp khả năng làm thế nào điều khiển số lượng packet trên phút được thoả điều kiện bằng một luật. Ví dụ: -m limit –limit 3/minute. Thành phần này có thể dùng để tránh sự tấn công từ chối dịch vụ.
CONFIG_IP_NF_MATCH_MAC – cho phép các packet tương ứng với các địa chỉ vật lý MAC. Mỗi card mạng có một địa chỉ MAC riêng. Chúng ta có thể chặn các packet sử dụng địa chỉ mạng và hầu như chặn các máy tính với địa chỉ MAC vì MAC tương đối ổn định. Chúng ta không dùng lựa chọn này trong rc.Firewall.txt
CONFIG_IP_NF_MATCH_MARK – Cho phép dùng đánh dấu một packet thoả điều kiện.
CONFIG_IP_NF_MATCH_MULTIPORT – thành phần này cho phép các packet có thể thoả một dãy port đích hoặc port nguồn.
CONFIG_IP_NF_MATCH_TOS – lựa chọn này có thể cho phép các packet thoả các giá trị trong TOS. TOS là kiểu của dịch vụ (type of service). TOS cũng có thể là tập hợp các luật trong bảng mangle và theo lệnh tp/tc.
CONFIG_IP_NF_MATCH_TCPMSS - lựa chọn này cho phép các packet TCP tương ứng trên trường MSS
CONFIG_IP_NF_MATCH_STATE – đây là sự khác biệt lớn nhất so với Ipchains. Với thành phần này chúng ta có thể lọc gói tích cực (stateful) trên các gói. Ví dụ: Nếu có lưu thông hai hướng trên kết nối TCP, packet này được xem như được thiết lập. modul này dùng phổ biến trong rc.Firewall.txt.
CONFIG_IP_NF_MATCH_UNCLEAN – thành phần này sẽ thêm vào cho ta những packet IP, TCP,UDP tương ứng mà kiểu của nó không phù hợp hoặc không hợp lệ. Ví dụ chúng ta có thể huỷ các packet này nhưng không biết nó có hợp pháp hay không. Thành phần này vẫn còn đang thí nghiệm, chưa làm việc hoàn toàn trong các trường hợp
CONFIG_IP_NF_MATCH_OWNER –lựa chọn này sẽ thêm cho chúng ta khả năng thực hiện trên chủ nhân của một socket. Ví dụ: Cho phép chỉ 1 người dùng root được truy cập Internet. Thành phần này vẫn còn đang thí nghiệm chưa làm việc hoàn toàn cho tất cả mọi người.
CONFIG_IP_NF_FILTER- Thành phần này sẽ thêm vào bảng lọc cho phép thực hiện lọc ở tất cả. Trong bảng filter bạn sẽ không thấy INPUT, FORWARD, và OUTPUT chains. Thành phần này sẽ yêu cầu bạn thiết kế để thực hiện lọc các gói nhận và gửi.
CONFIG_IP_NF_TARGET_REJECT - Cho phép chúng ta chỉ rõ một thông báo lỗi ICMP được gửi trả lời từ các packet đi vào thay vì huỷ chúng.
CONFIG_IP_NF_TARGET_MIRROR - Cho phép các packet bị trả lại người gửi. Ví dụ: Nếu đặt MIRROR đích trên cổng đích trên chuỗi luật OUTPUT và ai đó cố gắn truy cập trên cổng này, chúng ta sẽ gửi trở lại người đó gói tin và cuối cùng chắc chắn người đó sẽ thấy được homepage của họ.
CONFIG_IP_NF_NAT- thành phần này cho phép chuyển đổi địa chỉ mạng và truy cập bảng NAT trong iptables, lựa chọn này đòi hỏi nếu muốn làm một port chuyển tiếp hay masquerading. Lựa chọn này không đòi hỏi cho Firewall và masquerading cho mạng cục bộ.
CONFIG_IP_NF_TARGET_MASQUERADE - thành phần này thêm hành động MASQUERADE. Lựa chọn này cho phép cấp IP động để gán địa chỉ IP cho giao diện
CONFIG_IP_NF_TARGET_REDIRECT - Mục tiêu lựa chọn này để làm việc với các ứng dụng proxy, nói cách khác chúng ta có thể làm trong suốt proxy bằng cách này
CONFIG_IP_NF_TARGET_LOG - Hành động này sử dụng cho ghi nhật ký sự kiện (LOG) với các packet do đó có thể biết được điều gì xảy ra packet. Thông tin này có ích cho kiểm tra an toàn, pháp lý và sửa lỗi.
CONFIG_IP_NF_TARGET_TCPMSS (Maximum Segment Size)- lựa chọn này được sử dụng để đếm các nhà cung cấp dịch vụ Internet và server mà ngăn chặn sự phân mảnh packet ICMP. kết quả là một số trang web có thể không được đi qua, những mail nhỏ đi qua còn những mail lớn không qua được.
CONFIG_IP_NF_COMPAT_IPCHAIN - Lựa chọn này cho phép thêm tích hợp với Ipchains khi chuyển từ Linux 2.2, 2.4 sang 2.6
CONFIG_IP_NF_COMPAT_IPFWADM - Lựa chọn này cho phép khả năng tương thích với Ipfwadm.
3.3 Cài đặt ứng dụng phần người dùng (user-land)
Trước hết giải nén packet Iptables ở đây sử dụng packet Iptables 1.2.6a và kernel 2.4. Để mở gói, thông thường dùng bzip2 – cd Iptables – 1.2.6a.tar.bz2 | tar –xvf . gói sẽ được đưa vào thư mục Iptables – 1.2.6a. sau đó, lựa chọn cấu hình và cài đặt modul mở rộng cho kernel bằng cách chạy lệnh
make pending-patches KERNEL_DIR=/usr/src/linux/
Biến KERNEL_DIR chỉ tới vị trí của mã nguồn kernel. Thông thường trong /usr/src/linux
lệnh trên chỉ trả lời các đường dẫn chắc chắn để vào kernel nhưng có thể thêm vào các đường dẫn khác bằng câu lệnh
make most-of-pom KERNEL_DIR=/usr/src/linux/
Câu lệnh trên sẽ hỏi về cách cài đặt các phần của Netfilter được gọi là Patch-0-matic, nhưng vẫn giữ lại các đường dẫn ban đầu. Các đường dẫn mà có thể bị xoá bỏ trong kernel. Chú ý rằng chúng ta có thể hỏi bởi đó là điều mà các lệnh này có thể thực hiện thực sự. Chúng hỏi bạn trước khi bất cứ cái gì bị thay đổi trong kernel source. để cài đặt tất cả trong patch-o-matic chúng ta sẽ thực hiện câu lệnh:
make patch-o-matic KERNEL_DIR=/usr/src/linux/
Một vài thao tác thêm vào sẽ phá huỷ những phần khác nếu dùng patch-o-matic
Bạn hoàn toàn có thể bỏ qua các bước trên nếu không muốn thêm vào kernel khi đó bạn không cần thực hiện các câu lệnh trên
Bạn có thể biên dịch tạo một kernel mới bằng cách dùng các đường dẫn mới được thêm vào ở trên. Cấu hình lại kernel từ các đường dẫn mới chắc chắn không thể thêm từ các lựa chọn cấu hình. Bạn có thể biên dịch các đơn vị sau khi biên dịch của chương trình user-land Iptables nếu dùng nó.
Tiếp tục biên dịch ứng dụng user-land Iptables. để biên dịch Iptables bạn đưa ra các câu lệnh đơn giản như là:
make KERNEL_DIR=/usr/src/linux/
Để biên dịch chương trình, sau đó dùng lệnh để cài đặt chúng. KERNEL_DIR vị trí nguồn của kernel.
make install KERNEL_DIR=/usr/src/linux/
Sử dụng để thay đổi Iptables, bây giờ có thể biên dịch lại hoặc cài đặt lại kernel và các thành phần.
3.4. Cách thức packet qua Firewall.
Hình 3.2 Đường đi của packet.
* FORWARD packet (chuyển packet): Một packet để cho host khác được gọi là FORWARD packet, đầu tiên nó chuyển qua chain PREOUTING (trước khi định tuyến) trong bảng mangle, tại đây packet có thể bị thay đổi thông số. Sau đó chuyển qua chain PREOUTING trong bảng NAT, đây là nơi nguyên tắc DNAT (Destination Network Addess Translation- chuyển đổi địa chỉ đích) được áp dụng vào.
- Đối với packet đi vào máy, nó sẽ qua chain INPUT. Tại chain INPUT, packet có thể được chấp nhận hoặc huỷ bỏ. Tiếp theo packet sẽ được chuyển lên cho các ứng dụng (client/server) xử lí và tiếp theo là được chuyển ra chain OUTPUT. Tại chain OUTPUT, packet có thể bị thay đổi các thông số và bị lọc chấp nhận hay bị huỷ bỏ.
- đối với packet forward qua máy, packet sau khi rời chain PREROUTING sẽ qua chain FORWARD trong bảng filter, tại chain forward chỉ những nguyên tắc lọc mới được áp vào (ACCEPT hoặc DENY).
- Sau khi packet qua chain FORWARD hoặc chain OUTPUT sẽ được chuyển qua chain POSTROUTING (sau khi định tuyến) trong bảng NAT, trong chain này các nguyên tắc SNAT (source Network Address Tranlation - đổi địa chỉ IP nguồn) được áp vào hoặc MASQUERADE, cuối cùng packet được chuyển ra giao diện bên ngoài.
* Send packet (gửi packet): packet được phát sinh trên host cục bộ, đầu tiên được chuyển sang chain OUTPUT của bảng mangle, sau đó chúng chuyển qua chain OUTPUT của bảng NAT, sau đó chuyển qua chain OUTPUT của bảng filter. Khi packet chuyển qua chain này, hệ thống xác định nơi packet được định tuyến, khi đã quyết định được định tuyến packet chuyển qua chain POSTOUTING trong bảng NAT, đây là nơi nguyên tắc SNAT được áp vào, packet chuyển qua giao diện thích hợp.
* Receive packet (Nhận packet): packet được chuyển đến host cục bộ, đầu tiên nó được chuyển đến chain PREOUTTING trong bảng mangle, sau đó được chuyển qua chain PREOUTING trong bảng NAT. Đây là nơi nguyên tắc DNAT được áp vào, sau khi nguyên tắc DNAT được áp vào thì định tuyến được quyết định, sau đó packet được chuyển qua chain OUTPUT trong bảng filter, cuối cùng packet được chuyển vào tiến trình hoặc ứng dụng thích hợp.
3.5. Các bảng và chuỗi luật
Khi một gói tin đầu tiên tới Firewall, phần cứng sẽ tiếp nhận nó và sau đó chuyển tiến trình điều khiển thiết bị tương ứng trong nhân hệ điều hành. Sau đó, gói tin sẽ bắt đầu đi qua một loạt các bước trong nhân hệ điều hành, trước khi nó được gửi tới ứng dụng cục bộ hoặc là được chuyển tiếp đến máy tính khác hay chịu tác động nào đó của nhân hệ điều hành. Một mặt mạnh của Iptables là ở chỗ nhiều bảng có thể được sử dụng để quyết định “số phận” của một gói tin nào đó, phụ thuộc vào kiểu của gói tin đang được kiểm tra. Và hành động được thực hiện trên gói tin đó.
Bảng mặc định, bảng filter, có chứa các chuỗi luật được xây dựng sẵn: INPUT, OUTPUT, và FORWARD. Theo mặc định Iptables chứa hai bảng bổ sung dùng để thực hiện các công việc lọc gói xác định. Bảng NAT và bảng Mangle.
Mỗi bảng chứa tập hợp các chuỗi luật mặc định và các hành động. Khi các chuỗi luật được thảo mãn, thì các hành động đã được áp dụng vào gói tin. Các hành động có thể khác nhau tương ứng với mỗi bảng hoặc thậm chí là chuỗi mà nó chiếm giữ. Tuy nhiên, người dùng cũng được phép định nghĩa những chuỗi luật mới trong các bảng.
3.5.1 Bảng Nat
chỉ được sử dụng để chuyển đổi địa chỉ tĩnh hoặc động trên những gói tin. Nói cách khác, nó chỉ được dùng để chuyển đổi trường địa chỉ nguồn hay trường địa chỉ đích của gói tin, tuỳ theo luật được chỉ ra. Các gói tin trong một dòng dữ liệu (stream) chỉ đi qua bảng này một lần. giả sử gói đầu tiên của một dòng dữ liệu được cho phép (chỉ có gói đầu tiên trong một dòng dữ liệu sẽ vấp phải chuỗi này). Phần gói còn lại trong dòng dữ liệu sẽ được tự động thay đổi địa chỉ và sẽ phải chịu cùng các tác động như gói đầu tiên.
- Khi một máy bên trong mạng nội bộ truy cập vào tài nguyên bên ngoài thì packet được gửi đến IP NAT, IP NAT sẽ thay đổi địa chỉ nguồn của packet bằng một địa chỉ hợp lệ trong dãy địa chỉ được cấp trên Internet nếu còn.
- Khi một máy của mạng bên ngoài truy cập tài nguyên của mạng cục bộ qua IP NAT, khi packet đến IP NAT nó sẽ thay đổi địa chỉ đích của packet bằng một địa chỉ của mạng nội bộ.
Để chuyển đổi trường địa chỉ nguồn hoặc đích trong packet chúng ta sử dụng 3 chuỗi luật được xây dựng sẵn:
chuỗi luật Preouting: dùng để chuyển đổi địa chỉ các gói tin ngay sau khi đi vào Firewall.
Chuỗi luật PosROUting: Dùng để thay đổi địa chỉ gói tin trước khi chúng ra khỏi Firewall.
Chuỗi luật OUTPUT: Dùng để thay đổi địa chỉ các gói tin được phát sinh cục bộ (trên Firewall) trước khi định tuyến.
Các hành động thực hiện trong bảng này là:
- DNAT dùng trong trường hợp bạn có một địa chỉ ip chung (public) và muốn chuyển hướng các truy nhập vào Firewall tới một số máy khác (ví dụ trên DMZ). Nói cách khác, chúng ta thay đổi địa chỉ đích của gói tin và dẫn đường cho nó tới một số máy tính khác.
Hình 3.3: NAT tĩnh
- SNAT được dùng để thay đổi địa chỉ nguồn của các gói tin. Để làm ẩn các phần trong mạng cục bộ hoặc DMZ… Ví dụ nếu một Firewall biết được địa chỉ IP ở ngoài, nhưng cần thay thế địa chỉ IP của mạng cục bộ bằng địa chỉ của Firewall. với hành động này Firewall sẽ tự động SNAT và De-SNAT các gói tin, do đó để có khả năng thực hiện kết nối từ LAN đến Internet. ví dụ nếu dùng 192.168.0.0/netmask, các gói tin sẽ không bao giờ đến được Internet, bởi vì IANA đã điều chỉnh những mạng này là private và chỉ dùng trong các LAN độc lập.
Hình 3.4: NAT động
- MASQUERADE được dùng giống như là SNAT, nhưng hành động MASQUERADE thực hiện tính toán ít hơn. Vì mỗi lần hành động MASQUERADE bắt gặp (hit) một gói tin nó sẽ tự động kiểm tra địa chỉ IP để dùng thay vì thực hiện các thao tác như SNAT - chỉ dùng một địa chỉ IP được cấu hình đơn. MASQUERADE làm cho nó có thể thực hiện tốt với địa chỉ IP DHCP động mà ISP của bạn có thể cung cấp cho PPP,PPPoE hoặc SLIP các kết nối đến Internet.
3.5.2 Bảng lọc (filter)
Bảng filter dùng để lọc các gói tin. Chúng ta có thể kiểm tra và lọc các gói tin tương ứng và lọc gói chúng theo cách mà chúng ta muốn. Đây là nơi chúng ta thật sự thực hiện hành động trên các gói tin và kiểm tra nội dung của gói tin và loại bỏ (DROP) hoặc chấp nhận(ACCEPT) chúng.Có 3 chuỗi luật được xây dựng sẵn trong bảng này là:
- Input được áp dụng cho tất cả các gói tin đến Firewall.packet cho host được chuyển qua chain input. Chú ý rằng tất cả các gói tin đến máy này đều phải thông của chuỗi input, không cần biết đến giao tiếp mạng nào hay hướng đến của chúng.
- FORWARD được áp dụng trên tất cả các gói tin sẽ đi qua Firewall (các gói tin không được phát sinh trên máy Firewall và có đích đến ngoài máy Firewall). Là packet được nhận bởi host mà nó được định cho một host khác thì nó sẽ được chuyển sang chain này.
- OUTPUT được áp dụng cho tất cả các gói tin được phát sinh từ các tiến trình cục bộ tức là packet được tạo từ host và chuyển cho host khác thì được chuyển qua chain output.
* Phần lớn tất cả các hành động áp dụng lên gói tin đều có thể được sử dụng trong chuỗi luật này tuy nhiên những hành động đã được nêu ở phần trên chỉ có thể được sử dụng trong bảng riêng của nó.
3.5.3 Bảng mangle
Được sử dụng để thay đổi thông tin của gói tin. Ta có thể thay đổi nội dung gói tin và phần header của gói tin đó. Bảng này gồm 5 chuỗi luật được xây dựng sẵn.
- PREOUTING: được sử dụng để thay đổi gói tin khi chúng vừa vào Firewall và trước khi chúng qua bước quyết định dẫn đường.
- POSTROUTING: được sử dụng để thay đổi thông tin gói tin ngay sau khi tất cả các quyết định dẫn đường được thực hiện.
- INPUT: được sử dụng để thay đổi thông tin gói tin sau khi chúng đã được dẫn tới bản thân máy cục bộ, nhưng trước khi được gửi tới tiến trình ứng dụng.
- FORWARD: được sử dụng để thay đổi thông tin gói tin sau khi chúng đã sang bước quyết định dẫn đường đầu tiên, nhưng trước khi chúng chịu tác động của quyết định dẫn đường cuối cùng.
- OUTPUT: được sử dụng để thay đổi thông tin của các gói tin được phát sinh cục bộ trước khi chúng được chuyển sang bước quyết định dẫn đường.
Chúng ta không sử dụng bảng này để thực hiện lọc gói tin và cũng không thực hiện chuyển đổi địa chỉ NAT hay masquerading trong bảng này. Các hành động có thể được sử dụng trong bảng này bao gồm:TOS, TTL, MARK, chúng chỉ hợp lệ trong bảng mangle.
- TOS: dùng xác lập một byte (8 - bit) TOS (Type of service) trong phần tiêu đề IP của gói tin. Nó không thực sự hoàn hảo trên thực tế nó không sử dụng trên internet và hầu hết các router không quan tâm đến giá trị trong trường này, và đôi khi chúng thực hiện sai trên thông tin chúng nhận được.
- TTL: dùng thay đổi trường TTL (Time To Live) của gói tin tương kết.
- MARK: dùng xác lập các giá trị cho trường điểm đặc biệt cho gói tin. Những điểm này được nhận diện bởi các chương trình iprouter2 để thực hiện dẫn đường khác nhau trên gói phụ thuộc vào mark mà chúng có. Chúng ta cũng có thể giới hạn băng thông và class based queuing trên những mark này.
Kết Chương:
Trong chương vừa rồi chúng ta đã tìm hiểu về bức tường lửa trong Linux. Và trong đó có một số Firewall được cấu hình và hoạt động trên nền console nhỏ và tiện dụng đó là Ipchains và Iptables. Ipchains có sẵn trong kernel Linux 2.2x và Linux 2.0x ipfwadm. Còn Netfilter/Iptables có thể cấu hình ở mức độ cao và có nhiều đặc tính hơn Ipchains. Bên cạnh đó Iptables cũng có nhiều ứng dụng, như là cài đặt, duy trì và kiểm tra IP Firewall, IP Nat hay IP Masquerading. Chương tiếp theo dành để nói về một số những ứng dụng đó, đó là dùng Iptables để làm IP Masquerading, IP Nat, và một số phần mềm ứng dụng.
CHƯƠNG IV : ỨNG DỤNG Firewall
4.1 Sử dụng Iptable
4.1.1 Các file cấu hình
- Để khởi động, ngừng hoặc khởi động lại Iptables có thể dùng lệnh sau:
/etc/rc.d/init.d/Iptables start : khởi động iptables.
/etc/rc.d/init.d/Iptables stop : ngừng iptables.
/etc/rc.d/init.d/Iptables restart : khởi động lại iptables.
- Để cấu hình Iptables thì dùng file :
/etc/sysconfig/iptables.
4.1.2 Các thao tác trong toàn bộ chuỗi luật
Một đặc trưng rất hữu dụng của Iptables là khả năng nhóm các nguyên tắc quan hệ với nhau vào cùng một chain, có thể đặt tên chain bất kỳ mà bạn muốn, nhưng để phân biệt với chain đã xây dựng sẵn nên đặt tên chain bằng chữ thường. Tên chain có thể lên tới 16 ký tự.
- Tạo chain mới: dùng tuỳ chọn ‘-N’ hoặc ‘new-chain’.
- Xoá chain: Dùng tuỳ chọn ‘-X’ hoặc ‘delete-chain’.
Có một cặp giới hạn xoá chain: xoá rỗng và không là mục tiêu của bất kỳ nguyên tắc nào. Không thể xoá một trong ba chain được xây dựng sẵn. Nếu không chỉ rõ chain thì tất cả các chain do người dùng định nghĩa sẽ bị xoá nếu có thể.
- Liệt kê một chain: Có thể liệt kê tất cả các nguyên tắc trong một chain bằng lệnh ‘-L’. ‘refcnt’ được liệt kê cho mỗi chain do người dùng định nghĩa có số của nguyên tắc có chain như là hành động của nó. Chain này phải rỗng trước khi có thể xoá chúng. Nếu tên chain bị bỏ qua thì tất cả chain được liệt kê ngay cả chain rỗng.
* Có 3 tuỳ chọn có thể đi cùng với ‘-L’
‘-n’ rất hữu dụng để ngăn chặn Iptables cố gắng tìm kiếm địa chỉ IP, nếu dùng DNS như mọi người thì sẽ là nguyên nhân lớn nếu DNS không được cài đặt đúng hoặc có lọc yêu cầu DNS ở ngoài. Nó cũng là nguyên nhân port TCP và UDP xuất ra một số khác hơn tên.
‘-v’ cho xem chi tiết tất cả các nguyên tắc như đếm số packet và số byte, so sanh TOS và giao diện, nếu không thì giá trị này bị bỏ qua. Số lượng packet và số lượng byte được hiển thị sử dụng các hậu tố ‘K’, ‘M’, ‘G’ mô tả cho 1000, 1000000, 1000000000.
Sử dụng cờ ‘-x’ sẽ in ra tất cả các số.
- Khởi động lại bộ đếm: Nó hữu dụng cho reset bộ đếm. Được thực hiện với lựa chọn ‘-Z’ hoặc ‘--zero’. Vấn đề với cách tiếp cận này là thỉnh thoảng cần biết giá trị bộ đếm tức thời trước khi reset lại bộ đếm.
- Cài đặt chính sách: Chúng ta chú thích toàn bộ cái gì xảy ra khi một packet vào cuối một chain được xây dựng sẵn khi chúng ta thảo luận làm thế nào một packet đi qua các chain trước đó. Trong trường hợp này, chính sách của chain xác định số phận của packet. Chỉ những chain được xây dựng sẵn (INPUT, OUTPUT, FORWARD) mới có chính sách, bởi vì nếu packet rơi vào cuối chain của người dùng định nghĩa thì nó duyệt trở lại chain trước. Chính sách có thể là ACCEPT hoặc DROP.
4.1.3 luật đơn
Đây là công việc hàng ngày của việc lọc packet, vận hành các nguyên tắc. Với các lệnh hay sử dụng là thêm (-A), chèn (-I), xoá (-D) và thay thế (-R) là mở rộng của các khái niệm này.
Mỗi nguyên tắc là một tập hợp các điều kiện mà packet phải gặp, và phải làm gì nếu gặp chúng. Ví dụ nếu bạn muốn huỷ tất cả các packet ICMP đến từ địa chỉ 127.0.0.1 thì trong trường hợp này điều kiện giao thức phải là ICMP địa chỉ nguồn phải là 127.0.0.1 và hành động là ‘DROP’. Và câu lệnh thực hiện sẽ là
# iptables –A INPUT –s 127.0.0.1 –p icmp –j DROP
Thêm 1 nguyên tắc vào chain INPUT, một nguyên tắc chỉ định cho các packet từ 127.0.0.1 ‘-s 127.0.0.1’ với giao thức icmp ‘-p icmp’ và nhảy đến huỷ ‘-j DROP’
Chúng ta có thể xoá một nguyên tắc bằng một trong hai cách. Nếu chúng ta biết đó là luật duy nhất trong chain INPUT, chúng ta có thể dùng số của nguyên tắc để xoá.
# iptables –D INPUT 1 : Xoá nguyên tắc 1 trong chain input
Cách thứ hai là làm giống như lệnh thêm nguyên tắc nhưng thay –A thành –D. Lệnh này cho phép chúng ta xoá một nguyên tắc trong chain có nhiều nguyên tắc
# iptables –D INPUT –s 127.0.0.1 –p icmp –j DROP
cú pháp –D phải chính xác giống như các lựachọn –A (hoặc –I hoặc –R). Nếu có nhiều nguyên tắc giống nhau trong một chain thì nguyên tắc đầu tiên sẽ bị xoá.
4.1.4 Mô tả bộ lọc
Chúng ta sử dụng ‘-p’ để chỉ định giao thức và ‘-s’ để chỉ định địa chỉ nguồn nhưng có các lựa chọn khác để chúng ta có thể sử dụng để chỉ định những đặc tính của packet. Sau đây là các tuỳ chọn cơ bản
- Chỉ định IP nguồn (‘-s’ ‘--source’ hoặc ‘--src’) và IP đích (‘-d’ ‘--destination’ hoặc ‘--dst’) có thể sử dụng theo 4 cách: Thông thường là dùng tên đầy đủ ‘localhost’ hoặc ‘www.linuxhq.com’. Cách thứ 2 là chỉ rõ địa chỉ IP ‘127.0.0.1’. Cách 3 và cách 4 cho phép chỉ ra một nhóm địa chỉ IP ví dụ 199.95.207.0/24 hoặc 199.95.207.0/255.255.255.0. Cả hai đều chỉ định địa chỉ IP từ 199.95.207.0 tới 199.95.207.255. Trong trường hợp đặc biệt để chỉ định địa chỉ IP ‘/0’ chúng ta dùng câu lệnh: # iptables -A input -s -j DENY
- Chỉ định ngược: Có nhiều cờ, bao gồm ‘-s’ hoặc ‘-d’ có
Các file đính kèm theo tài liệu này:
- Xây dựng mô hình bảo vệ mạng bằng bức từong lửa iptable của linux.docx