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 hồn tồ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õi sự kết nối, có khả năng kiểm tra nhiều trạng thái của
packet. Nó làm việc này cho UDP và ICMP tốt nhất là kết nối TCP, 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 u cầu có thể là tín hiệu của sự tấn cơng hoặc cửa saụ
* 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
CHƯƠNG 4: CÁC GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG
chain.
* Phân biệt rõ ràng giữa lọc packet và NAT (Nework Ađress 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 tồn hơn Firewall có ít trạng tháị
* 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.
4.5.1.2 Các bảng (Tables) và chuỗi luật (Chain) của Iptables
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 trạ 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ác Chain) đượ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 Manglẹ
Mỗi bảng chứa tập hợp các chuỗi luật (các Chain) mặc định và các hành động (các Rules). 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.
Với ba bảng FILTER, MANGLE, NAT và các chain trong mỗi bảng, người quản trị có thể tạo ra các rules cho phép các gói tin vào ra hệ thống (được bảo vệ bằng iptables) tuỳ theo ý muốn của mình.
4.5.1.2.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ỉ rạ 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 ngun bên ngồi thì
packet được gửi đến IP NAT, IP NAT sẽ thay đổi địa chỉ nguồn của packet bằng
CHƯƠNG 4: CÁC GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG
- 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.