Upload
atoni789
View
31
Download
3
Embed Size (px)
Citation preview
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
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
- 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.
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à
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
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.
- 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.
+ MASQUERADING: là một kỹ thuật đặc biệt của SNAT (Many to
One NAT).
+ …
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
- 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
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.
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.
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
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
+ 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
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
-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
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.
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
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
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ả ế ộ
-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ứ