28
Bài tìm hiểu về Firewall trong linux - iptables MỤC LỤC 1. Giới thiệu 2. Cấu trúc các loại bảng trong iptables 3. Các khái niệm trong iptables 4. Quá trình xử lý packet trong iptables 5. Các tham số chuyển mạch quan trọng trong iptables 6. Sử dụng user defined chains 7. Cấu hình iptables 8. Lưu file cấu hình iptables 9. Phục hồi file cấu hình bị mất

Ip Tables

Embed Size (px)

Citation preview

Page 1: Ip Tables

Bài tìm hiểu về Firewall trong linux - iptablesMỤC LỤC

1. Giới thiệu

2. Cấu trúc các loại bảng trong iptables

3. Các khái niệm trong iptables

4. Quá trình xử lý packet trong iptables

5. Các tham số chuyển mạch quan trọng trong iptables

6. Sử dụng user defined chains

7. Cấu hình iptables

8. Lưu file cấu hình iptables

9. Phục hồi file cấu hình bị mất

Page 2: Ip Tables

IPTABLES

1. Giới thiệu

- Trong môi trường Linux phần mềm firewall phổ biến và cơ bản nhất là

iptables.

- Iptables do Netfilter Organiztion viết ra để tăng tính năng bảo mật trên hệ

thống Linux.

- Iptables cung cấp các tính năng sau:

+ Tính năng lọc gói (packet filtering)

+ Tính năng NAT (network address translation)

+ Và một số tính năng quản lý chất lượng gói tin (packet mangling)

- Iptables hoạt động ở tầng 3 trong mô hình OSI. Do đó iptables ACCEPT,

DROP… các packet đi qua nó.

- 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 1. Thành phần của iptables

- Trong Centos file cấu hình Iptables nằm trong /etc/sysconfig/iptables.

- Các lệnh start, stop và restart iptables

NetfilterIPTABLESS

TẬP LUẬT

LINUX KERNEL

Page 3: Ip Tables

- Xem tình trạng của iptables

2. Cấu trúc các loại bảng trong iptables

Tất cả các packet được kiểm tra bởi iptable bằng các bảng tuần tự

được xây dựng sẵn (queues). Các loại bảng này tương ứng với các tính

năng được iptable cung cấp. Có bốn loại bảng gồm:

Hình 2. Các loại bảng trong iptables

o _FILTER: Chịu trách nhiệm lọc packet. Nó bao gồm 3 nguyên tắc để

thiết lập lọc packet.

Page 4: Ip Tables

Hình 3. bảng _Filter

Forward: lọc gói khi đi đến server khác.

Input: lọc gói tin đi vào trong server.

Output: lọc gói tin đi ra khỏi server.

o _NAT: chia làm 2 loại

Hình 4. bảng _NAT

Pre-routing chain: NAT từ ngoài vào trong nội bộ. Quá trình NAT

sẽ thực hiện trước khi thực thi cơ chế routing. Điều này thuận lợi

cho việc đổi địa chỉ đích để địa chỉ tương thích với bảng định tuyến

của firewall. Kỹ thuật này được gọi là Destination NAT - DNAT (thay

đổi địa chỉ đích của gói tin).

Post-routing chain: NAT từ trong ra ngoài. Quá trình NAT sẽ thực

hiện sau khi thực hiện cơ chế định tuyến. Quá trình này nhằm thay

đổi địa chỉ nguồn của gói tin. Kỹ thuật này được gọi là Source NAT –

SNAT (thay đổi địa chỉ nguồn của gói tin). Kỹ thuật này có thể là

Page 5: Ip Tables

one-to-one (tương đương Static NAT) hoặc many-to-one (tương

đương Dynamic Nat).

o _Mangle: chịu trách nhiệm thay đổi các bits chất lượng dịch vụ trong

TCP Header như ToS (Type of Service), TTL (Time To Live)…

Trường ToS (Type of Service): 8bit

Hình 5. Trường ToS

3 bit đầu P2P1P0 được gọi là các bit IP precedence: định ra

mức độ ưu tiên của gói tin (IP datagram) từ thấp đến cao.

bit T2 (T2=1): Yêu cầu truyền gấp

bit T1 (T1=1): Yêu cầu truyền với đường truyền chất lượng cao

bit T0 (T0=1): Yêu cầu truyền đảm bảo

2 bit cuối CU1CU2: Không dung tới

Page 6: Ip Tables

Hình 6. Quá trình xử lý packet trong bảng Mangle

o _Conntrack: dùng để theo dõi các kết nối

3. Các khái niệm trong iptables

Hình 7. Các khái niệm trong iptables

Trong mỗi bảng tuần tự sẽ chia ra thành nhiều chuỗi (chains) để

xử lý packet tùy theo tình huống (hướng đi của packets); trong mỗi chain

sẽ có các luật (rules) mà mình sẽ cấu hình để xử lý các packets tương

ứng với mỗi chain.

Page 7: Ip Tables

- Chain : là một chuỗi bao gồm nhiều Rule, mặc định các bảng có sẵn các

chain như INPUT , OUTPUT...

Bảng 1. Các loại bảng và chain cùng các chức năng

- Rule : là các luật đưa ra các điều kiện so sánh, tập hợp nhiều rule tạo

thành Chain

- Jump :là cơ chế chuyển một packet đến một target nào đó để xử lý thêm

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

- Target : là quá trình xử lý khi các gói tin đủ điều kiện. Các target được xây

dựng sẵn trong iptables như:

+ ACCEPT: chấp nhận chuyển gói tin đi qua.

+ DROP: chặn những gói tin.

+ REJECT: chặn những gói tin và báo lại cho người gửi.

+ DNAT: thay đổi địa chỉ đích của gói tin.

+ SNAT: thay đổi địa chỉ nguồn của gói tin.

Page 8: Ip Tables

+ MASQUERADING: là một kỹ thuật đặc biệt của SNAT (Many to

One NAT).

+ …

Page 9: Ip Tables

Bảng 2. Cụ thể về Target trong iptable

4. Quá trình xử lý packet trong Iptable

Hoặt động xử lý packet của iptable dựa trên các tính năng mà iptables

cung cấp cho người quan trị mạng. Xét quá trình xử lý packet tổng quát của

iptable như sau:

Hình 8. Quá trình xử lý gói tin của iptables

Page 10: Ip Tables

- Gói dữ liệu (packet) chạy trên chạy trên cáp, sau đó đi vào card mạng

(chẳng hạn như eth0).

- Đầu tiên packet sẽ qua chain 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 chain INPUT.

Tại chain 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 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 ra hay bị hủy bỏ.

- Đối với packet forward qua máy, packet sau khi rời chain PREROUTING

sẽ qua chain FORWARD.

Tại chain FORWARD, nó cũng bị lọc ACCEPT hoặc DENY.

Packet sau khi qua chain FORWARD hoặc chain OUTPUT sẽ đến chain

POSTROUTING (sau khi định tuyến).

Tại chain POSTROUTING, packet có thể được đổi địa chỉ IP nguồn

(SNAT) hoặc MASQUERADE.

- Packet sau khi ra card mạng sẽ được chuyển lên cáp để đi đến máy tính

khác trên mạng.

5. Các tham số chuyển mạch quan trọng trong iptables

Thực hiện xem file cấu hình của iptables bằng lệnh:

cat /etc/sysconfig/iptables

Page 11: Ip Tables

Hình 9. File cấu hình iptables

Ta thấy các tham số như: -p, -j, -i …chính là các tham số chuyển mạch

trong iptables.

Vậy các tham số chuyển mạch có tác dụng cho phép iptables thực hiện

các hành động sao cho phù hợp với quá trình xử lý packet.

Page 12: Ip Tables

Bảng 3. Các tham số chuyển mạch quan trọng

Ví dụ:

Ý nghĩa:

+ iptable sẽ ACCEPT các packet có protocol là TCP đến từ interface eth0

+ địa chỉ IP nguồn là bất kỳ (0/0), địa chỉ IP đích là 192.168.1.1.

Page 13: Ip Tables

Bảng 4. Các điều kiện TCP và UDP thông dụng

Ví dụ:

Ý nghĩa:

+ iptable sẽ ACCEPT các packet có protocol là TCP đến từ interface eth0

+ địa chỉ IP nguồn là bất kỳ (0/0), địa chỉ IP đích là 192.168.1.58 qua

interface eth1

+ số port nguồn là từ 1024 đến 65535, số port đích là 80

Bảng 5. Điều kiện ICMP

Ví dụ:

Ý nghĩa: iptables được cấu hình nhận echo-request và trả lời echo-reply

Page 14: Ip Tables

Bảng 6. Các điều kiện mở rộng thông dụng

Ví dụ:

Ý nghĩa:

+ iptable sẽ ACCEPT các packet có protocol là TCP đến từ interface eth0

+ địa chỉ IP nguồn là bất kỳ (0/0), địa chỉ IP đích là 192.168.1.58 qua

interface eth1

Page 15: Ip Tables

+ số port nguồn là từ 1024 đến 65535, số port đích là 80, 443

+ đến khi các packet nhận trả lại từ 192.168.1.58 thay vì mở các port

nguồn và port đích thì chỉ việc cho phép dùng các thiết lập cũ bằng cách dùng

tham số -m state và –state ESTABLISHED

6. Sử dụng user defined chains

Thay vì sủ dụng các chain đã được xây dựng trong iptables người quản trị

có thể sử dụng user defined chains để tự định nghĩa một chain cho tất cả các

loại protocol cho packet. Do đó có thể dùng user defined chains thay thế cho

các chain dài dòng bằng cách sử dụng chain chính chỉ đến nhiều chain con.

Bảng 7. Danh sách các lệnh (QUEUE)

Ví dụ:

7. Cấu hình iptables

Page 16: Ip Tables

a. Trong Centos, file cấu hình iptables nằm trong /etc/sysconfig/iptables.

Một số lệnh để bật Iptables:

#chkconfig --levels 345 iptables on

#service iptables start

Một số file cấu hình khác

/etc/sysctl.conf

/proc/sys/net/ipv4/ip_forward

/proc/net/ip_conntrack

/proc/sys/net/ipv4/ip_conntrack_max

Iptables yêu cầu load một số module sau:

iptable_nat module cho NAT.

ip_conntrack_ftp module cần cho FTP support

ip_conntrack module để theo dõi trạng thái của TCP connect.

ip_nat_ftp module cần cho việc load FTP servers sau NAT

firewall.

b. Thực hiện cấu hình Iptable:

Để cấu hình iptable có thể dung 1 trong 2 cách sau đây:

Cách 1: cấu hình bằng dòng lệnh

Cú pháp trong terminal: #iptables “nhập các câu lệnh cấu hình”

VD:

Cho phép DNS ho t đ ng:ạ ộ

#iptables -A OUTPUT -p udp -o eth0 --dport 53 --sport 1024:65535

-j ACCEPT

#iptables -A INPUT -p udp -i eth0 --sport 53 --dport 1024:65535

-j ACCEPT

M c ng cho phép WEB và SSL ho t đ ng :ở ổ ạ ộ

#iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED,RELATED

Page 17: Ip Tables

-j ACCEPT

#iptables -A INPUT -p tcp -i eth0 --dport 22 –sport 1024:65535 -m state --state

NEW -j ACCEPT

#iptables -A INPUT -p tcp -i eth0 --dport 80 –sport 1024:65535 -m state --state

NEW -j ACCEPT

Cho phép máy firewall vào WEB:

#iptables -A OUTPUT -j ACCEPT -m state --state NEW -o eth0 –p tcp -m

multiport --dport 80,443

#iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i eth0

–p tcp

Cho phép máy tính m ng n i b vào internet:ạ ộ ộ

#iptables -A INPUT -j ACCEPT -p all -s 192.168.1.0/24 -i eth1

#iptables -A OUTPUT -j ACCEPT -p all -d 192.168.1.0/24 -o eth1

Cách 2: Sử dụng đồ họa với các chain được iptables xây dựng sẵn

Trong terminal go lệnh setup chọn firewall configuration

Chọn Run Rool

Page 18: Ip Tables

Enabled chức năng iptables lên

Chọn Customize

Tiếp tục chọn các giao thức muốn thực hiện cấu hình hoặc có thể nhập số

port của giao thức trong phần Other ports và OK.

Page 19: Ip Tables

Cuối cùng là start iptables bằng lệnh: service iptables start

8. Lưu file cấu hình iptables

Sử dụng lệnh service iptables save để lưu trữ cấu hình iptables trong file

/etc/sysconfig/iptables.

Khi khởi động lại thì chương trình iptables-restore sẽ đọc lại file script

này và kích hoạt thông tin cấu hình.

Định dạng file như hình 6.

Định dạng mẫu trong file iptables cho phép giao thức ICMP, IPsec (những

gói ESP và AH), thiết lập liên kết và quay lại SSH.

Các câu lệnh hỗ trợ sao lưu và phục hồi:

iptables-restore : l nh ph c h i iptables có hai tùy ch n :ệ ụ ồ ọ

Tùy ch nọ Gi i thíchả

-c (--counters) Ph c h i b đ m gói và byte cho các ụ ồ ộ ế

rule

-n (--noflush) T t ch c năng xóa (-flush) trong ắ ứ

tables tr c khi ph c h iướ ụ ồ

iptables-save : l nh ghi l i Iptables có hai tùy ch nệ ạ ọ

Tùy ch nọ Gi i thíchả

-c (--counters) Hi n b đ m gói và byte cho các ệ ộ ế

rule

-t (--table) Ch hi n b ng đ c ch đ nhỉ ệ ả ượ ỉ ị

9. Phục hồi file cấu hình bị mất

Page 20: Ip Tables

Theo phần trên thì file cấu hình iptable được lưu trong

/etc/sysconfig/iptables. Khi các chain trong file bị mất thì có thể lấy lại

được bằng cách thực hiện xuất những chain trong iptables đã lưu trữ ra

một file văn bản. Khi cần thiết thì có thể restore lại.

Ví dụ: Xuất những chain trong iptables đã lưu trữ ra một file văn bản với

tên firewall-config

restore:

Và lưu lại:

10.Demo:

Mô hình

- Thực hiện ACCEPT/DROP từ máy window 2003 qua Centos

- Thực hiện ACCEPT/DROP kết nối SSH từ window 2003 qua Centos

CentOS192.168.253.132

Window 2003192.168.253.132

Page 21: Ip Tables

Phụ lục các lệnh hỗ trợ

Tùy ch nọ Gi i thíchả

-A (--append) Ghi thêm m t rule vào chainộ

-D (--delete) Xóa rule

-E (--rename-chain) Đ i tên chainổ

-F (--flush) Xóa t t c rule trong m t chainấ ả ộ

-I (--insert) Chèn thêm rule vào chain t i v trí ạ ị

đ c xác đ nhượ ị

-L (--list) Xem các rule trong chain

-N (--new-chain) T o m t chain m iạ ộ ớ

-P (--policy) T o rule m c đ nh cho chainạ ặ ị

-R (--replace) Thay th m t rule b ng m t rule khác ế ộ ằ ộ

t i v trí xác đ nhạ ị ị

-V (--version) Xem phiên b n c a Iptablesả ủ

-X (--delete-chain) Xóa chain

-Z (--zero) Xóa b đ m trong chainộ ế

-t Ch đ nh b ng cho iptables bao g m:ỉ ị ả ồ

filter, nat, mangle tables

-j Nh y đ n m t targetả ế ộ

Page 22: Ip Tables

-p Mô t các giao th c bao g m: icmp,ả ứ ồ

tcp, udp và all

-s Ch đ nh đ a ch ngu nỉ ị ị ỉ ồ

-d Ch đ nh đ a ch đíchỉ ị ị ỉ

-i Ch đ nh đ a ch interface cho các gói ỉ ị ị ỉ

tin đi vào

-o Ch đ nh đ a ch interface cho các gói ỉ ị ị ỉ

tin đi ra

-m multiport Ch đ nh nhi u dãy c ngỉ ị ề ổ

-m state –state Ki m tra tr ng thái:ể ạ

ESTABLISHED: đã thi t l p ế ậ

connection

NEW: b t đ u thi t l p ắ ầ ế ậ

connection

RELATED: thi t l p connection ế ậ

th 2ứ