1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO THỰC TẬP-NGHIÊN CỨU VỀ IPTABLES

15 693 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 314,73 KB

Nội dung

Cơ chế xử lý packet trong iptables: Tất cả mọi dữ liệu đều được kiểm tra khi đi qua iptables, quá trình kiểm tra này được thực hiện một cách tuần tự từ entry đâu đến entry cuối bằng cách

Trang 1

I GIỚI THIỆU VỀ IPTABLES

Iptables là một chương trình chạy ở không gian người dùng Iptables là một firewall được tích hợp sẵn trong hệ điều hành Linux, do Netfilter Organiztion viết ra nhằm tăng tính bảo mật trên

hệ thống Linux

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

 Sử dụng firewall cho mail server, web server, DNS server

 Đảm bảo tính năng của Router như NAT, chuyển tiếp cổng (port forwarding)

để vừa bảo vệ hệ thống mạng, vừa cho phép một web server công khai địa chỉ

IP firewall

 Tích hợp tốt với Linux kernel, cải thiện sự tin cậy và tốc độ chạy iptables

 Có khả năng phân tích các packet một cách hiệu quả, cho phép firewall theo dõi các kết nối thông qua nó

 Tính năng lọc gói (packet filtering) dựa trên địa chỉ MAC và các cờ trong TCP Header Từ đó, giúp hệ thống ngăn chặn việc tấn công từ bên ngoài và bảo mật

hệ thống nội bộ

 Cung cấp chi tiết các tùy chọn để ghi nhận sự kiện hệ thống, ghi chép hệ thống (System logging) cho phép việc quản lí truy cập hệ thống

 Hỗ trợ việc tích hợp các chương trình Web Proxy chẳng hạn như Squid

 Ngăn chặn các kiểu tấn công từ chối dịch vụ

1 Cơ chế xử lý packet trong iptables:

Tất cả mọi dữ liệu đều được kiểm tra khi đi qua iptables, quá trình kiểm tra này được thực hiện một cách tuần tự từ entry đâu đến entry cuối bằng cách sử dụng các bảng tuần tự xây dựng sẵn (queues) Có 3 loại bảng này gồm:

 Mangle: chịu trách nhiệm thay đổi các bits chất lượng dịch vụ ( quality of service bits) trong TCP header như TOS (type of service), TTL (time to live)

và Mark

Hình 1: Quá trình xử lí gói tin trong bảng Mangle

 Filter: chịu trách nhiệm lọc gói dữ liệu Gồm 3 quy tắc nhỏ (Chain) để giúp thiết lập các nguyên tắc lọc gói, gồm:

Trang 2

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

 Input chain: lọc gói khi đi vào trong server

 Output chain: lọc gói khi đi ra khỏi server

Hình 2: Quá trình xử lý gói tin trong bảng Filter

 NAT (Network Address Translation): thực thi các chức năng chuyển đổi địa chỉ IP, gồm 2 loại:

 Pre-routing chain: NAT tử ngoài vào trong nội bộ Quá trình NAT sẽ thay đổi địa chỉ đích của gói dữ liệu khi cần thiết trước khi thực hiện cơ chế routing

 Post-routing chain: NAT từ trong ra ngoài Quá trình NAT sẽ thay đổi địa chỉ nguồn của gói dữ liệu khi cần thiết sau khi thực hiện cơ chế routing

Hình 3: Quá trình xử lý gói tin trong bảng NAT

Bảng 1: Các loại queues và chain cùng chức năng của nó

Loại

queues

Chức năng của queuse

Quy tắc xử lý gói

Filter Lọc gói

FORWARD

Lọc gói dữ liệu đi đến các server khác kết nối trên các NIC (Network Interface Controller) của firewall

INPUT Lọc gói khi đi đến firewall

OUTPUT Lọc gói khi đi ra khỏi firewall

Trang 3

Network Address

Translation (biên

dịch địa chỉ

mạng)

PREROUTING Thay đổi địa chỉ đích của gói tin trước khi thực hiện cơ chế routing Sử dụng

Destination NAT (DNAT)

POSTROUTING

Thay đổi địa chỉ nguồn của gói tin sau khi thực hiện cơ chế routing Sử dụng Source NAT (SNAT)

OUTPUT

NAT sử dụng cho các gói tin xuất phát

từ firewall Rất ít khi sử dụng trong môi trường SOHO (Small Office – Home Office)

Mangle Chỉnh sửa TCP

header

PREROUTING POSTROUTING OUTPUT

INPUT FORWARD

Điều chỉnh các bit qui định chất lượng dịch vụ trước khi dẫn đường Rất ít khi

sử dụng trong môi trường SOHO (Small Office – Home Office)

 Mô hình mô tả đường đi của một gói dữ liệu:

Trang 4

Hình 4: đường đi của một gói dữ liệu khi qua Firewall

Đầu tiên, gói dữ liệu đi đến mạng A, tiếp đó nó được kiểm tra bởi Mangle Table PREROUTING Chain (nếu cần) Tiếp theo là kiểm tra gói dữ liệu bởi Nat Table ‘s PREROUTING Chain để

Trang 5

kiểm tra xem gói dữ liệu có cần DNAT hay không ? DNAT sẽ thay đổi địa chỉ đích của gói dữ liệu, rồi chuyển gói dữ liệu đi

Nếu gói dữ liệu đi vào một mạng được bảo vệ, nó sẽ được lọc bởi FORWARD Chain của Filter Table, và nếu cần gói dữ liệu sẽ được SNAT trong POSTROUTING Chain để thay đổi IP nguồn trước khi vào mạng B

Nếu gói dữ liệu được định hướng vào bên trong Firewall, nó sẽ được kiểm tra bởi INPUT Chain trong Mangle Talbe, và nếu gói dữ liệu qua được các kiểm tra của INPUT Chain trong Filter Table, nó sẽ vào trong các chương trình của Server bên trong Firewall

Khi Firewall cần gói dữ liệu ra ngoài Gói dữ liệu sẽ được dẫn và đi qua sự kiểm tra của

OUTPUT Chain trong Mangle Table (nếu cần), tiếp đó là kiểm tra trong OUTPUT Chain của NAT Table để xem DNAT (DNAT sẽ thay đổi địa chỉ đến) có cần hay không và OUTPUT Chain của Filter Table sẽ kiểm tra gói dữ liệu nhằm phát hiện các gói dữ liệu không được phép gửi đi Cuối cùng trước khi gói dữ liệu được đưa ra lại Internet, SNAT và QoS sẽ được kiểm tra trong POSTROUTING Chain

2 Một số khái niệm trong Iptables:

 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, FORWARD

 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

 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ư trong bảng sau:

Bảng 2: Miêu tả các target thường dùng trong iptables

dữ liệu đó và chuyển tiếp

nó vào một ứng dụng cuối hoặc hệ điều hành để xử

lý tiếp tục

dữ liệu đó và gói dữ liệu

bị chặn lại, loại bỏ

sẽ đưa vào syslog để kiểm tra Iptables tiếp tục xử lý gói với quy luật kế tiếp

log-prefix “string”

Iptables sẽ thêm vào log message một chuỗi do người dùng định sẵn Thông thường là để thông

Trang 6

báo lý do loại bỏ gói tin.

nhưng nó sẽ gởi trả lại cho phía người gởi một thông báo lổi rằng gói tin đã bị chặn và loại bỏ

reject-with qualifier Tham số qualifier sẽ cho biết loại thông báo gởi trả lại phía gửi Qualifier gồm các loại sau:

Icmp-port-unreachable (default)

Icmp-net-unreachable Icmp-host-unreachable Icmp-proto-unreachable Icmp-net-prohibited Icmp-host-prohibited Tcp-reset

Echo-reply

Destination Network Address Translation, địa chỉ đích của gói dữ liệu sẽ được viết lại

to-destination

<ipaddress>

Iptables sẽ được viết lại địa chỉ IP vào địa chỉ đích của gói dữ liệu

Network Address Translation, địa chỉ nguồn của gói dữ liệu sẽ được viết lại

to-source <ipaddress>

Iptables sẽ được viết lại địa chỉ IP vào địa chỉ nguồn của gói dữ liệu MASQUERADE Dùng để thực hiện Source

Network Address Translation, mặc định thì địa chỉ IP nguồn sẽ giống như IP nguồn của firewall

to-ports <port>

Ghi rõ tầm các port nguồn

mà port gốc có thể ánh xạ được

II CẤU HÌNH IPTABLES:

1 Cài đặt iptables:

 Iptables được cài đặt mặc định trong hệ thống Linux, packet của iptable là iptables-version.rpm hoặc iptables-version.tgz , ta có thể dùng lệnh sau để cài đặt packet này:

Đối với Red Hat:

# rpm –ivh iptables-version.rpm Đối với Debain

# apt-get install iptables

Trang 7

 Lệnh khởi động iptables:

# service iptables start

 Lệnh tắt iptables:

# service iptables stop

 Lệnh khởi động lại iptables:

# service iptables restart

 Lệnh xem tình trạng của iptables:

# service iptables status

 Lệnh save cấu hình iptables:

# service iptables save

 Để khởi động iptables mỗi khi khởi động Linux:

# chkconfig iptables on

2 Xử lý khi iptables không khởi động:

 Khi cài đặt và khởi động iptables thì ta dùng lệnh /etc/init.d/iptables start Lúc này, iptables gọi script trong file /etc/sysconfig/iptables Do đó, nếu file này không tồn tại hoặc bị lỗi thì iptables sẽ không khởi động được

 Khi thay đổi cấu hình trên iptables, ta phải dùng lệnh service iptables save để lưu lại các thông tin cấu hình Sau đó mới tiến hành restart lại iptables

 Khởi động iptables:

# service iptables start

 Tạo file iptables trống:

# touch /etc/sysconfig/iptables

 Thiết lập quyền cho file này:

# chmod 600 /etc/sysconfig/iptables

# service iptables start

3 Các tham số chuyển mạch (switching) quan trọng của iptables:

Các tham số sau cho phép iptables thực hiện các hành động sao cho phù hợp với biểu đồ xử lí gói do người dùng hoạch định sẵn

Bảng 3: Các tham số chuyển mạch (switching) quan trọng của iptables

Lệnh switching quan trọng ý nghĩa

-A ( append) Nồi thêm một quy luật nào đó vào cuối

chuỗi (chain)

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

-F ( flush) chainname Xóa hết tất cả mọi quy luật trong bảng đã

Trang 8

-I ( insert) Chèn thêm rule vào vị trí được xác định

-P ( policy) Thay đổi 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

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

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

filter, nat, mangle Nếu không chỉ định rõ ràng thì filter table sẽ được áp dụng -j <target> Nhảy đến một target nào đó khi gói dữ

liệu phù hợp quy luật hiện tại

-p <protocol-type> Chỉ định 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 interface cho các gói tin đi vào -o <interface-name> Chỉ định interface cho các gói tin đi ra sport <port> Chỉ định port nguồn của gói tin

dport <port> Chỉ định port đích của gói tin

syn (chỉ sử dụng cho –p tcp) Yêu cầu một kết nối mới

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

 ESTABLISHED: đã thiết lập connection

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

 RELATED: thiết lập connection thứ 2

 INVALID: gói dữ liệu không thể nhận dạng được do thiếu tài nguyên

icmp-type <type> Sử dụng với các tùy chọn thông dụng

như: echo-reply và echo-request

Để hiểu rõ hơn về các lệnh, ta cùng xem một số ví dụ sau:

Ví dụ 1: Tạo một chain NEWCHAIN trong bảng iptables

# iptables -N NEWCHAIN

Ví dụ 2: Xóa chain NEWCHAIN trong bảng iptables

# iptables -X NEWCHAIN

Trang 9

Ví dụ 3: Xóa các rule có trong chain INPUT.

# iptables -F INPUT

Ví dụ 4: Xóa dòng rule thứ 2 trong chain INPUT

# iptables -D INPUT 2

Ví dụ 5: Thay đổi rule mặc định cho chain INPUT là ACCEPT

# iptables –P INPUT ACCEPT

Ví dụ 6: Firewall chấp nhận cho bất kì gói tin nào có giao thức TCP đi vào

interface eth0 đến địa chỉ 192.168.1.1

# iptables -A INPUT -s 0/0 -i eth0 -d 192.168.1.1 -p tcp -j ACCEPT

Ví dụ 7: Firewall chấp nhận gói tin nào có giao thức TCP được định tuyến khi nó

đi vào interface eth0 và đi ra interface eth1 để đến đích 172.28.2.2 với port nguồn bắt đầu từ 1024 đến 65535 và port đích là 8080

# iptables -A FORWARD -s 0/0 -i eth0 -o eth1 -d 172.28.2.2 -p tcp sport

1024:65535 dport 8080 -j ACCEPT

Ví dụ 8: Firewall cho phép gửi gói tin icmp echo-request và icmp echo-reply

# iptables -A OUTPUT -p icmp icmp-type echo-request -j ACCEPT

# iptables -A INPUT -p icmp icmp-type echo-reply -j ACCEPT

Ví dụ 9: Firewall chấp nhận gói tin có giao thức TCP từ bất kì địa chỉ nào đi vào interface eth0 đến địa chỉ 172.28.24.195 qua interface eth1, source port từ 1024 đến 65535 và destination port là 8080 và 433

Khi gói dữ liệu được nhận trở lại từ 172.28.2.2, thay vì mở các port nguồn

và đích, bạn chỉ việc cho phép dùng kết nối cũ đã thiết lập bằng cách dùng tham

số -m state và state ESTABLISHED

# iptables -A FORWARD -s 0/0 -i eth0 -d 172.28.24.195 -o eth1 -p tcp sport 1024:65535 -m multiport dport 8080,433 -j ACCEPT

# iptables -A FORWARD -d 0/0 -i eth0 -s 172.28.2.2 -o eth1 -p tcp -m state state ESTABLISHED -j ACCEPT

4 Sử dụng chain tự định nghĩa (user defined chains):

Chuỗi User Defind Chains nằm trong bảng iptables Nó giúp cho quá trình

xử lý gói tốt hơn

Thay vì sử dụng các “single chain” đã được xây dựng trong iptables để xử

lý cho từng giao thức, ta có thể sử dụng User Defind Chains để định nghĩa một chain gồm nhiều chuỗi chain mô tả cho tất cả kiểu giao thức (protocol style) cho gói tin

Trang 10

Mặc khác, ta có thể dùng User Defined Chains để thay thế cho những chuỗi “long chain” bằng cách sử dụng chain chính chỉ đến các chain con

Ví dụ 10: Sáu lệnh sau giúp việc cải tiến tốc độ xử lý:

# iptables -A INPUT -i eth0 -d 192.168.10.2 -j fast-input-queue

# iptables -A OUTPUT -o eth0 -s 192.168.1.2 -j fast-output-queue

# iptables -A fast-input-queue -p icmp -j icmp-queue-in

# iptables -A fast-output-queue -p icmp -j icmp-queue-out

# iptables -A icmp-queue-in -p icmp icmp-type echo-reply -j ACCEPT

# iptables -A icmp-queue-out -p icmp icmp-type echo-request -m state state NEW -j ACCEPT

Bảng 4: Danh sách các lệnh (Queue)

trong bảng iptables

trong bảng iptables

Fast-input-queue INPUT chain tách riêng biệt để hỗ trợ

cho những giao thức đặc biệt và chuyển các gói đến những protocol specific chains

Fast-output-queue OUTPUT chain tách riêng biệt để hỗ

trợ cho những giao thức đặc biệt và chuyển các gói đến những protocol specific chains

Icmp-queue-in Lệnh input tách riêng cho giao thức

ICMP

Icmp-queue-out Lệnh output tách riêng cho giao thức

ICMP

5 Cơ chế NAT trong iptables:

Source NAT (SNAT) và Destination NAT (DNAT) thường được dùng để chia sẽ kết nối internet giữa các máy tính trong mạng nội bộ Máy tính kết nối internet được coi là một gateway SNAT sẽ thay đổi địa chỉ nguồn của các gói tin đi ra internet bằng địa chỉ IP tĩnh internet của gateway Khi gateway nhận được các gói tin trả về internet, DNAT sẽ thay đổi địa chỉ đích của các gói tin rồi chuyển đến các máy tính trong mạng nội bộ

Trang 11

Trong iptables POSTROUTING chain của bảng NAT sẽ đảm nhận công việc SNAT SNAT có hai phần mở rộng đó là SNAT và MASQUERADE SNAT dùng cho các máy tính gateway có địa chỉ IP tĩnh Còn MASQUERADE dùng cho các máy tính gateway có địa chỉ IP động

Chúng ta có thể thiết lập SNAT trên giao diện eth1 bằng lệnh :

# iptables -t nat -A POSTROUTING -o eth1 -j SNAT to-source 192.168.10.1

Và với MASQUERADE :

# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Tương tự như vậy PREROUTING chain của bảng NAT sẽ đảm nhận công việc Destination NAT (DNAT) :

# iptables -t nat -A PREROUTING -i eth1 -p tcp dport 80 -j DNAT

to-destination 192.168.1.3:8080

Câu lệnh trên cho phép những gói tin đi vào từ interface eth1 với giao thức tcp cổng được chuyển đến địa chỉ IP 192.168.1.3 cổng 8080

6 Transparent proxying:

Transparent proxy là một cách để kiểm soát việc truy cập internet của các máy trong mạng nội bộ Transparent proxy được thiết lập để ngăn chặn những kết nối

ra ngoài và chuyển hướng chúng vào một máy tính thay thế vị trí của các máy tính ban đầu Kỹ thuật này cho phép chúng ta thiết lập proxy cho các dịch vụ mà không cần phải cấu hình trên mỗi máy tính trong mạng nội bộ

Ví dụ 11: Có một proxy HTTP được cấu hình lắng nghe trên cổng 8888, tất cả gói tin đi ra ngoài bằng giao thức HTTP qua port 80 sẽ bị chuyển hướng đến port 8888

# iptables -t nat -A PREROUTING -i eth0 -p tcp dport 80 -j REDIRECT to-port 8888

III Phòng chống tấn công và một số ví dụ về iptables:

1 Phòng chống tấn công từ chối dịch vụ (DOS):

Iptables cho phép giới hạn số lượng các gói tin phù hợp trong một giây Ta có thể chỉ định số lượng gói tin trong một thời gian theo định dạng /second, /minute, /hour, hoặc /day Hoặc sử dụng kiểu viết tắt /s thay vì /second

Trong ví dụ sau đây, gói ICMP echo requests bị giới hạn tốc độ truyền không nhiều hơn một yêu cầu trong một giây Đặc điểm này của iptables giúp ta lọc bớt các lưu lượng lớn, đây chính là đặc tính của tấn công từ chối dịch vụ (DOS) và sâu internet

# iptables A INPUT i eth0 p icmp icmptype echorequest m limit limit 1/s

-j ACCEPT

Ngày đăng: 02/06/2015, 16:47

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w