0
Tải bản đầy đủ (.doc) (51 trang)

.2 Netfilter và Iptable

Một phần của tài liệu XÂY DỰNG GIẢI PHÁP AN NINH MẠNG.DOC (Trang 43 -48 )

III.2.1 Giới thiệu

Iptables là một tường lửa ứng dụng lọc gói dữ liệu rất mạnh, miễn phí và có sẵn trên Linux. Netfilter/Iptables gồm 2 phần là Netfilter ở trong nhân Linux và Iptables nằm ngoài

nhân. Iptables chịu trách nhiệm giao tiếp giữa người dùng và Netfilter để đẩy các luật của người dùng vào cho Netfiler xử lí. Netfilter tiến hành lọc các gói dữ liệu ở mức IP. Netfilter làm việc trực tiếp trong nhân, nhanh và không làm giảm tốc độ của hệ thống.

Hình 3.1: Vị trí của iptables trong một Firewall Linux

III.2.2 Cấu trúc của iptables

Iptables được chia làm 4 bảng (table):

Bảng lọc gói (Packet filtering - filter)

Trong bảng này có 3 chuỗi INPUT(cơng đoạn nhập dữ liệu), OUTPUT (công đoạn xuất dữ liệu) và FORWARD (công đoạn truyền dữ liệu). Nếu tường lửa làm việc như thiết bị định tuyến thì chỉ chuỗi FORWARD được dùng. Lưu lượng mà mạng nhận sẽ được chuỗi INPUT xử lý và lưu lượng mà mạng gửi đi sẽ được chuỗi OUTPUT xử lý.

Bảng dịch địa chỉ (Network address translation - Nat)

Bảng này chỉ dùng cho các gói khởi đầu kết nối, các luật trong chuỗi PREROUTING được áp dụng cho các gói ngay khi hệ thống nhận được gói tin, và các luật trong chuỗi POSTROUTING sẽ được áp dụng khi các gói đã được định tuyến(after routing). các luật trong chuỗi OUTPUT được áp dụng cho các gói trước khi định tuyến (before routing). Nói chung các luật đưa vào bảng này phục vụ các mục đích dịch địa chỉ, đóng giả địa chỉ IP và thực hiện dịch vụ ủy quyền trong suốt (transparent proxying).

Bảng này dùng cho mục đính chọn các gói tin theo dấu đã được đánh trước. Nó có chuỗi- xích PREROUTING để thay đổi gói tin trước khi định tuyến, và chuỗi OUTPUT để thay đổi gói tin cụ bộ trong hệ thống.

Bảng conntrack dùng để theo dõi các kết nối.

Các luật (rules) có thể là ACCEPT (chấp nhận gói dữ liệu), DROP (thả gói), REJECT (loại bỏ gói) hoặc tham chiếu (reference) đến một chain khác.

III.2.3 Q trình chuyển gói dữ liệu qua tường lửa.

Gói dữ liệu (packet) từ mạng ngồi, sau đó đi vào giao diện mạng nối với mạng ngoài (chẳng hạn như eth0). Đầu tiên packet sẽ qua chuỗi PREROUTING (trước khi định tuyến). Tại đây, packet có thể bị thay đổi thông số (mangle) hoặc bị đổi địa chỉ IP đích (DNAT). Đối với packet đi vào máy, nó sẽ qua chuỗi INPUT. Tại chuỗi INPUT, packet có thể được chấp nhận hoặc bị hủy bỏ. Tiếp theo packet sẽ được chuyển lên cho các ứng dụng (client/server) xử lí và tiếp theo là được chuyển ra chuỗi OUTPUT. Tại chuỗi OUTPUT, packet có thể bị thay đổi các thơng số và bị lọc chấp nhận ra hay bị hủy bỏ.

Gói sau khi rời chuỗi PREROUTING sẽ qua chuỗi FORWARD. Tại chuỗi FORWARD, nó cũng bị lọc ACCEPT hoặc DENY. Gói sau khi qua chuỗi FORWARD hoặc chuỗi OUTPUT sẽ đến chuỗi POSTROUTING (sau khi định tuyến).

Tại chuỗi POSTROUTING, gói có thể được đổi địa chỉ IP nguồn (SNAT) hoặc đóng giả địa chỉ (MASQUERADE). Gói sau khi ra giao diện mạng sẽ được chuyển để đi đến máy tính khác trên mạng ngồi.

Hình 3.2: Q trình chuyển gói dữ liệu qua Netfilter

Trong chuỗi, mỗi luật sẽ được áp dụng theo thứ tự, mỗi luật có một tập các điều kiện xác định luật có phù hợp hay khơng và tác động chỉ xảy ra khi điều kiện phù hợp. Kết thúc một chuỗi thì tác động mặc định sẽ được sử dụng, nghĩa là gói tin sẽ được phép đi qua.

Các trạng thái kết nối :

- NEW: mở kết nối mới

- ESTABLISHED: đã thiết lập kết nối

- RELATED: mở một kết nối mới trong kết nối hiện tại - CONNMARK

- MARK - INVALID - UNTRACKED

Jump (Nhảy) là cơ chế chuyển một packet đến một target (đích) nào đó để xử lý

thêm một số thao tác khác.

Targets (Đích) là hành động sẽ diễn ra khi một gói dữ liệu được kiểm tra và phù hợp

với một yêu cầu nào đó. Khi một target đã được các định, gói dữ liệu cần nhảy để thực hiện các xử lý tiếp theo. Target dùng để nhận diện và kiểm tra packet. Các target được xây dựng sẵn trong iptables như:

− ACCEPT: iptables chấp nhận chuyển gói tin đến đích.

− DROP: iptables khóa những packet.

− LOG: thơng tin của packet sẽ gửi vào syslog daemon iptables tiếp tục xử lý luật tiếp theo trong bảng mô tả luật. Nếu luật cuối cùng khơng thỏa mãn thì sẽ hủy gói tin. Với tùy chọn thơng dụng là --log-prefix=”string”, tức iptables sẽ ghi nhận lại những message bắt đầu bằng chuỗi “string”.

− REJECT: ngăn chặn packet và gửi thông báo cho sender. Với tùy chọn thông dụng là -- reject-with qualifier, tức qualifier chỉ định loại reject message sẽ được gửi lại cho người gửi. Các loại qualifer sau: icmp-port-

unreachable (default), icmp-net-unreachable, icmp-host-unreachable, icmp- proto-unreachable, …

− DNAT: thay đổi địa chỉ đích của gói tin. Tùy chọn là --to-destination

ipaddress.

− SNAT: thay đổi địa chỉ nguồn của gói tin. Tùy chọn là --to-

source <address>[- address][:<port>-<port>]

− MASQUERADING: được sử dụng để thực hiện kỹ thuật NAT (giả mạo địa chỉ nguồn với địa chỉ của interface của Firewall). Tùy chọn là [--to-ports

<port>[-<port>]],chỉ định dãy port nguồn sẽ ánh xạ với dãy port ban đầu.

III.2.5 Thực hiện lệnh trong Iptable

Switch

-t <table> Chỉ định bảng cho iptables bao gồm: filter, nat, mangle tables.

-j <target> Nhảy đến một target chain khi packet thoả luật hiện tại

-A Thêm luật vào cuối iptables chain.

-F Xoá tất cả các luật trong bảng lựa

chọn.

-p <protocol-type> Mô tả các giao thức bao gồm: icmp, tcp, udp và all

-s <ip-address> Chỉ định địa chỉ nguồn. -d <ip-address> Chỉ định địa chỉ đích.

-i <interface-name> Chỉ định “input” interface nhận packet -o<interface-name> Chỉ định “output” interface chuyền

packet ra ngoài

Một phần của tài liệu XÂY DỰNG GIẢI PHÁP AN NINH MẠNG.DOC (Trang 43 -48 )

×