BIGtheme.net http://bigtheme.net/ecommerce/opencart OpenCart Templates

Tìm hiểu về Firewall trên linux

Quản trị mạng linux – ìm hiểu về Firewall trên linux Nội dung chính:

  1. Giới thiệu iptables
  2. Mô hình xử lí logic của iptables
  3. Cú pháp iptables

1. Giới thiệu iptables

Tìm hiểu về Firewall trên linux

  • Cần quản lý những loại traffic sau:

Cho phép mọi traffic từ trong firewall (10.0.0.0/24) ra ngoài.

Cấm tất cả các traffic từ ngoài vào trong firewall, ngoại trừ những traffic sau:

TCP port 80, port 22, port 443 –> Filter

TCP port 80: forward đến web server. –> NAT

TCP port 22: forward đến file server. –> NAT

TCP port 443: forward đến file server. –> NAT

2. Mô hình xử lí logic của iptables

Tìm hiểu về Firewall trên linux

Tìm hiểu về Firewall trên linux

Tìm hiểu về Firewall trên linux

3. Cú pháp iptables

  • iptables –t table –A chain [match] [target]

table: filter (default), nat, mangle

-A chain: thêm một rule mới.

-D chain: xóa một rule.

-I chain number: chèn một rule vào dòng [number].

-R chain number: thay thế một rule ở dòng [number].

-L chain: xem các rule đã có.

-F chain: xóa mọi rule hiện có.

-N chain: định nghĩa một chain mới.

-E [old_chain] [new_chain]: đổi tên chain (chỉ có thể thay đổi với những chain do người dùng tạo ra).

  • iptables –A INPUT –p tcp –dport 22 –j ACCEPT  (–p tcp –dport 22 –> match,  –j ACCEPT — > Target)

ACCEPT: cho phép gói tin đi qua.

DROP: vứt bỏ gói tin.

QUEUE: chuyển gói tin vào hàng đợi queue.

RETURN: trả về cho chain cấp trên hoặc default policy.

LOG: ghi lại thông tin packet trong system log

–log-level

–log-prefix

–log-tcp-sequence

–log-tcp-options

–log-ip-options

TARGET

  • REJECT:

Drop gói tin, đồng thời gởi gói tin ICMP trả lời về cho người gửi. Nếu đã gửi quá nhiều lần, sẽ không gởi nữa.

–reject-with type: gửi ICMP với type chỉ định.

icmp-net-unreachable

icmp-host-unreachable

icmp-port-unreachable

icmp-proto-unreachable

  • SNAT: chỉ có thể sử dụng trong table nat trong chain POSTROUTING

–to-source address[-address][:port-port]

j SNAT –to-source 172.20.12.88

  • DNAT: chỉ có thể sử dụng trong table nat trong chain PREROUTING

–to-destination address[-address][:port-port]

-j DNAT –to-destination 10.0.0.2:80

  • MASQUERADE: là một dạng đặc biệt của SNAT.
  • REDIRECT: chuyển hướng của gói tin tới một port khác trên máy local.

-j REDIRECT –to-ports 80

Match

  • -p [!] name: chọn những packet dựa trên protocol. Protocol có thể là tên hoặc port tương ứng trong file /etc/protocols.
  • -s [!] address[/mask]: chọn những packet dựa trên địa chỉ nguồn. Address có thể là hostname hoặc địa chỉ IP.
  • -d [!] address[/mask]: cũng giống trường hợp trên nhưng là địa chỉ đích của packet.
  • -i name: chọn packet được nhận từ interface name (input).
  • -o name: chọn những packet được gửi từ interface name (output).
  • [!] –f: chọn những gói tin bị phân mảnh (từ mảnh vụn thứ hai).
  • –sport [!] [port][:port]: chọn những packet có port nguồn xác định như trên
  • –dport [!] [port][:port]: chọn những packet có port đích xác định như trên.
  • iptables –A INPUT  -p tcp –s 10.1.1.0/24  i  eth0 -d   192.168.1.1  –dport 80 -j  ACCEPT

Match icmp & mac

  • Đối với icmp (sử dụng -p icmp)

–icmp-type [!] type: chọn những packet icmp thuộc kiểu type. Type có thể chỉ định bằng số hoặc tên (iptables -p icmp -h)

  • Đối với mac (sử dụng -m)

–mac-source [!] address: chọn những packet có địa chỉ MAC nguồn là address. Address viết dưới dạng 00:60:08:91:CC:B7

Match limit

  • Đối với limit (sử dụng -m)

–limit rate: giới hạn tần suất của packet, được chỉ định bằng 1 con số và đằng sau là /second, /minute, /hour, /day. Default là 3/hour.

–limit-burst [number]: xác định số lượng packet tối đa được chấp nhận. Default là 5.

Match state

  • Module state cho phép nhận biết và chọn các packet dựa trên trạng thái kết nối của các packet đó. Iptables là stateful.

–state states: chọn gói tin có trạng thái là 1 trong các trạng thái được liệt kê ở states

Các trạng thái của một kết nối là: INVALID, ESTABLISHED, NEW, RELATED