Tải bản đầy đủ (.pdf) (19 trang)

Đề tài tìm hiểu về tường lửa và netfilter

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (961.92 KB, 19 trang )

Trường Đại học Bách Khoa Hà Nội
Viện CNTT-TT

Quản trị mạng
Đề tài: Tìm hiểu về tường lửa và Netfilter
Thành viên:

MSSV:

1. Đậu Văn Thắng
2. Vũ Văn Hưng

20112678
20111656

Giáo viên hướng dẫn: Trần Hoàng Hải

Hà Nội : 10/07/2015


Nội Dung
I. Tìm hiểu về firewall .................................................................................................................................... 3
1. Giới thiệu............................................................................................................................................... 3
2. Các tính năng bảo vệ ............................................................................................................................. 3
2.1 Bảo vệ máy tính cá nhân ................................................................................................................. 3
2.2 Thiết lập phạm vi an ninh mạng ...................................................................................................... 3
3. Các hoạt động của Firewall ................................................................................................................... 3
3.1. Quản lý và kiểm soát luồng dữ liệu trên mạng .............................................................................. 3
3.2. Xác thực quyền truy cập ............................................................................................................... 4
3.3. Hoạt động như một thiết bị trung gian.......................................................................................... 5
3.4. Bảo vệ tài nguyên ........................................................................................................................... 5


3.5. Ghi nhận và báo cáo các sự kiện .................................................................................................... 5
4. Firewall mềm......................................................................................................................................... 5
5. Firewall cứng ......................................................................................................................................... 6
6. Các loại Firewall .................................................................................................................................... 6
6.1. IP Packet Filtering – Bộ lọc gói tin .................................................................................................. 6
6.2. Circuit-Level Gateway .................................................................................................................... 8
6.3. Application Level Firewalls - Cổng ứng dụng ................................................................................. 8
7. Cấu hình Firewall................................................................................................................................. 10
II. Tìm hiểu về Netfilter. .............................................................................................................................. 12
1. Định nghĩa. .......................................................................................................................................... 12
2. Cơ sở của Netfilter. ............................................................................................................................. 13
3. Lịch sử. ................................................................................................................................................ 14
4. Các module chính của Netfilter........................................................................................................... 14
4.1. Giới thiệu về Iptables. .................................................................................................................. 15
4.2. Tìm hiểu về Nat (Network address translation). .......................................................................... 16
4.3. Tìm hiểu về Connection Tracking. ................................................................................................ 17


I. Tìm hiểu về firewall
1. Giới thiệu
-

Firewall( Tường lửa) là rào chắn mà một số cá nhân, tổ chức, doanh nghiệp, cơ
quan nhà nước lập ra nhằm ngăn chặn người dùng mạng Internet truy cập các
thông tin không mong muốn hoặc/và ngăn chặn người dùng từ bên ngoài truy nhập
các thông tin bảo mật nằm trong mạng nội bộ.

-

Là thiết bị phần cứng hoặc phần mềm hoạt động trong môi trường máy tính nối

mạng để ngăn chặn một số liên lạc bị cấm bởi chính sách an ninh của cá nhân hay
tổ chức

2. Các tính năng bảo vệ
2.1 Bảo vệ máy tính cá nhân

-

Cách gọi khác là “Tường lửa bảo vệ” nhằm bảo vệ cho máy tính cá nhân hay
mạng cục bộ, tránh sự xâm nhập, tấn công từ bên ngoài

2.2 Thiết lập phạm vi an ninh mạng

-

Hay còn gọi là “Tường lửa ngăn chặn” thường được các nhà cung cấp dịch vụ
Internet thiết lập và có nhiệm vụ ngăn chặn không cho máy tính truy cập một số
trang web hay máy chủ nhất định, thường dùng với mục đích kiểm duyệt Internet.

3. Các hoạt động của Firewall
3.1. Quản lý và kiểm soát luồng dữ liệu trên mạng

Việc đầu tiên và cơ bản nhất mà tất cả các firewall đều có là quản lý và kiểm soát luồn dữ
liệu trên mạng, firewall kiểm tra các gói tin và giám sát các kết nối đang thực hiện và sau
đó lọc các kết nối dựa trên kết quả kiểm tra gói tin và các kết nối được giám sát.


– Packet inspection (kiểm tra gói tin) là quá trình chặn và xử lý dữ liệu trong một gói tin
để xác định xem nó được phép hay không được phép đi qua firewall. Kiểm tra gói tin có
thể dựa vào các thông tin sau:

-

Địa chỉ IP nguồn

-

Port nguồn.

-

Địa chỉ IP đích

-

Port đích

-

Giao thức IP

-

Thông tin trong header (sequence numbers, checksums, data flags, payload
information…)

– Connections và state: Khi hai TCP/IP host muốn giao tiếp với nhau, chúng cần thiêt lập
một số kết nối với nhau. Các kết nối phục vụ hai mục đích. Thứ nhất, nó dùng để xác
thực bản thân các host với nhau. Friewall dùng các thông tin kết nối này để xác định kết
nối nào được phép và các kết nối nào không được phép.Thứ hai, các kết nối dùng để xác
định cách thức mà hai host sẽ liên lạc với nhau (dùng TCP hay dùng UDP…).

– Stateful Packet Inspection (giám sát gói tin theo trạng thái): Statefull packet inspection
không những kiểm tra gói tin bao gồm cấu trúc, dữ liệu gói tin … mà kiểm tra cả trạng
thái gói tin.
3.2. Xác thực quyền truy cập

-

Firewall có thể xác thực quyền truy cập bằng nhiều cơ cấu xác thực khác nhau.
Thứ nhất, firewall có thể yêu cầu username và password của người dùng khi người
dùng truy cập (thường được biết đến như là extended authentication hoặc xauth).
Sau khi firewall xác thực xong người dùng, firewall cho phép người dùng thiết lập
kết nối và sau đó không hỏi username và password lại cho các lần truy cập sau
(thời gian firewall hỏi lại username và password phụ thuộc vào cách cấu hình của
người quản trị). Thứ hai, firewall có thể xác thực người dùng bằng certificates và
public key. Thứ ba, firewall có thể dùng pre-shared keys (PSKs) để xác thực người
dùng.


3.3. Hoạt động như một thiết bị trung gian

Khi user thực hiện kết nối trực tiếp ra bên ngoài sẽ đối mặt với vô số nguy cơ về bảo mật
như bị virus tấn công, nhiễm mã độc hại… do đó việc có một thiết bị trung gian đứng ra
thay mặt user bên trong để thực hiện kết nối ra bên ngoài là cần thiết để đảm bảo an toàn.
Firewall được cấu hình để thực hiện chức năng này và firewall được ví như một proxy
trung gian.

3.4. Bảo vệ tài nguyên

Nhiệm vụ quan trọng nhất của một firewall là bảo vệ tài nguyên khỏi các mối đe dọa bảo
mật. Việc bảo vệ này được thực hiện bằng cách sử dụng các quy tắc kiểm soát truy cập,

kiểm tra trạng thái gói tin, dùng application proxies hoặc kết hợp tất cả để bảo vệ tài
nguyên khỏi bị truy cập bất hợp pháp hay bị lạm dụng. Tuy nhiên, firewall không phải là
một giải pháp toàn diện để bảo vệ tài nguyên của chúng ta.
3.5. Ghi nhận và báo cáo các sự kiện

Ta có thể ghi nhận các sự kiện của firewall bằng nhiều cách nhưng hầu hết các firewall sử
dụng hai phương pháp chính là syslog và proprietaty logging format. Bằng cách sử dụng
một trong hai phương pháp này, chúng ta có thể dễ dàng báo cáo các sự kiện xẩy ra trong
hệ thống mạng.

4. Firewall mềm
-

-

Là những firewall được cài đặt trên một hệ điều hành. Firewall mềm bao gồm các
sản phẩm như SunScreen firewall, IPF, Microsoft ISA server, Check Point NG,
Linux’s IPTables …Firewall mềm thường đảm nhận nhiều vai trò hơn firewall
cứng, nó có thể đóng vai trò như một DNS server hay một DHCP server.
Ưu điểm: việc thay đổi và nâng cấp thiết bị phần cứng là tương đối dễ dàng và
nhanh chóng.
Nhược điểm: được cài đặt trên một hệ điều hành và do đó khả năng có lỗ hổng
trên hệ điều hành này là có thể xẩy ra. Khi lỗ hổng được phát hiện và được cập
nhật bản vá lỗi, rất có thể sau khi cập nhật bản vá lỗi cho hệ điều hành thì firewall
không hoạt động bình thường như trước, do đó cần tiến hành cập nhật bản vá cho
firewall từ nhà cung cấp sản phẩm firewall.


-


Do hệ điều hành mà firewall mềm chạy trên nó không được thiết kế tối ưu cho
firewall nên firewall mềm có hiệu suất thấp hơn firewall cứng.

5. Firewall cứng
– Là những firewall được tích hợp sẵn trên các phần cứng chuyên dụng, thiết kế dành
riêng cho firewall. Các sản phẩm firewall cứng đáng chú ý như Cisco PIX, NetScreen
firewall, SonicWall Appliaces, WatchGuard Fireboxes, Nokia firewall…

- Ưu điểm:
● Trong nhiều trường hợp firewall cứng cung cấp hiệu suất tốt hơn so firewall mềm
vì hệ điều hành của firewall cứng được thiết kế để tối ưu cho firewall.
● Lợi ích điển hình khi sử dụng firewall cứng là hiệu suất tổng thể tốt hơn firewall
mềm, tính bảo mật được nâng cao, tổng chi phí thấp hơn so với firewall mềm.

- Nhược điểm:
● Firewall cứng không được linh hoạt như firewall mềm ( không thể thêm chức
năng, thêm các quy tắc như trên firewall mềm)
● Khả năng tích hợp thêm các chức năng bổ sung khó khăn hơn firewall mềm, chẳng
hạn như chức năng kiểm soát thư rác đối với firewall mềm chỉ cần cài đặt chức
năng này như một ứng dụng còn đối với firewall cứng phải có thiết bị phần cứng
hỗ trợ cho chức năng này.
6. Các loại Firewall
6.1. IP Packet Filtering – Bộ lọc gói tin

-

Bộ lọc gói tin cho phép hay từ chối packet mà nó nhận được. Nó kiểm tra toàn bộ
đoạn dữ liệu để quyết định xem đoạn dữ liệu đó có thỏa mãn một trong các số các
rules hay không. Các rules này dựa trên các thông tin ở packet header bao gồm các
thông tin sau:


❖ Địa chỉ IP nguồn (IP Source Address).
❖ Địa chỉ IP đích (IP Destination Address).
❖ Protocol (TCP, UDP, ICMP, IP tunnel)


❖ TCP/UDP source port
❖ TCP/UDP destination port
❖ Dạng thông báo ICMP (ICMP message type)
❖ Cổng gói tin đến (Incomming interface of packet)
❖ Cổng gói tin đi (Outcomming interface of packet)

Packet filtering router
Nếu rules lọc gói được thỏa mãn thì packet được chuyển qua firewall, nếu không packet
sẽ bị bỏ đi. Nhờ vậy mà firewall có thể ngăn cản được các kết nối vào các máy chủ hoặc
mạng nào đó được xác định, hoặc khóa việc truy cập vào hệ thống mạng nội bộ từ những
địa chỉ không cho phép. Ngoài ra, việc kiểm soát các cổng làm cho firewall có khả năng
chỉ cho phép một số loại kết nối nhất định vào các loại máy chủ nào đó hoặc những dịch
vụ nào đó (SSH, SMTP, FTP…) được phép mới chạy được trên hệ thống mạng cục bộ.
● ưu điểm:
- Phương pháp dùng bộ lọc gói có chi phí thấp vì cơ chế lọc gói đã có sẵn trong các
router
- Bộ lọc gói trong suốt với người sử dụng nên không yêu cầu người sử dụng phải
thao tác gì
● Nhược điểm
- Việc định nghĩa các chế độ lọc gói là một việc khá phức tạp, nó đòi hỏi người
quản trị mạng cần có hiểu biết chi tiết về các dịch vụ internet, các dạng packet
header.
- Do làm việc dựa trên header của các packet nên bộ lọc không kiểm soát được nội
dung thông tin của packet. Các packet chuyển qua vẫn có thể mang theo những

hành động với ý đồ ăn cắp thông tin hay phá hoại của kẻ xấu


6.2. Circuit-Level Gateway

Circuit Level Gateway – cổng vòng – là một chức năng đặc biệt có thể thực hiện bởi một
cổng ứng dụng. Cổng vòng đơn giản chỉ là chuyển tiếp các kết nối TCP mà không thực
hiện bất kì một hành động xử lý hay lọc gói nào.
Hình sau minh họa một hành động sử dụng kết nối telnet qua cổng vòng. Cổng vòng đơn
giản chuyển tiếp kết nối telnet qua firewall mà không thực hiện một sự kiểm tra, lọc hay
điều khiển các thủ tục telnet nào. Cổng vòng làm việc như một sợi dây, sao chép các byte
giữa kết nối bên trong (inside connection) và các kết nối bên ngoài (outside connection).
Tuy nhiên vì sự kết nối này xuất hiện từ hệ thống firewall nên nó che dấu thông tin về
mạng nội bộ.

Circuit Level Gateway - Cổng vòng
Cổng vòng thường được sử dụng cho những kết nối ra ngoài. Ưu điểm lớn nhất là một
Bastion host có thể được cấu hình như là một hỗn hợp cung cấp cổng ứng dụng cho
những kết nối đến và cổng vòng cho các kết nối đi. Điều này làm cho hệ thống firewall
dễ dàng sử dụng cho người dùng trong mạng nội bộ muốn trực tiếp truy câp tới các dịch
vụ internet, trong khi vẫn cung cấp chức năng bảo vệ mạng nội bộ từ những sự tấn công
bên ngoài.
6.3. Application Level Firewalls - Cổng ứng dụng

Đây là một loại firewall được thiết kế dể tăng cường chức năng kiểm soát các loại dịch
vụ, giao thức truy cập vào hệ thống mạng. Cơ chế hoạt động của nó dựa trên cách thức
gọi là proxy service. Proxy service là các bộ code đặc biệt cài đặt trên cổng ra (gateway)
cho từng ứng dụng. Nếu người quản trị mạng không cài đặt proxy service cho một ứng



dụng nào đó, dịch vụ tương ứng sẽ không được cung cấp và do đó không thể chuyển
thông tin qua firewall. Ngoài ra, proxy code có thể được định cấu hình để hỗ trợ chỉ một
số đặc điểm trong ứng dụng mà người quản trị cho là chấp nhận được trong khi từ chối
những đặc điểm khác.

Application gateway
Một cổng ứng dụng thường được coi như là một Bastion host bởi vì nó được thiết kế đặt
biệt để chống lại sự tấn công từ bên ngoài. Những biện pháp đảm bảo an ninh của một
Bastion host là:
– Bastion host luôn chạy các version an toàn (secure version) của các phần mềm hệ điều
hành (Operating system). Các version an toàn này được thiết kế chuyên cho mục đích
chống lại sự tấn công vào hệ điều hành (Operating system) cũng như là đảm bảo sự tích
hợp firewall.
– Chỉ những dịch vụ mà người quản trị mạng cho là cần thiết mới được cài đặt trên
Bastion host, đơn giản chỉ vì nếu một dịch vụ không được cài đặt, nó không thể bị tấn
công. Thông thường, chỉ một số giới hạn các ứng dụng cho các dịch vụ telnet, DNS, FTP,
SMTP và xác thực user là được cài đặt trên Bastion host.
– Bastion host có thể yêu cầu nhiều mức độ khác nhau ví dụ như username và password
hay smart card.
Mỗi proxy được cài đặt cấu hình để cho phép truy nhập chỉ một số các máy chủ nhất
định. Điều này có nghĩa rằng bộ lệnh và đặc điểm thiết lập cho mỗi proxy chỉ đúng với
một số máy chủ trên toàn hệ thống.


Mỗi proxy duy trì một quyển nhật ký ghi chép lại toàn bộ chi tiết của dữ liệu mạng đi qua
nó. Điều này có nghĩ là bộ lệnh và đặc điểm thiết lập cho mỗi proxy chỉ đúng với một số
máy chủ trên toàn hệ thống.
Mỗi proxy đều độc lập với các proxy khác trên Bastion host. Điều này cho phép dễ dàng
cài đặt một proxy mới hay tháo gỡ một proxy.
Ưu điểm:

– Cho phép người quản trị hoàn toàn điều khiển được từng dịch vụ trên mạng, bởi vì ứng
dụng proxy hạn chế bộ lệnh và quyết định những máy chủ nào có thể truy cập bởi các
dịch vụ.
– Cổng ứng dụng cho phép kiểm tra độ xác thực rất tốt và nó có nhậy ký ghi chép lại
thông tin về truy cập hệ thống.
– Rule lọc cho cổng ứng dụng dễ dàng cấu hình và kiểm tra hơn so với bộ lọc gói.
Nhược điểm:
– Cần phải có sự cấu hình trên máy user để user truy cập vào các dịch vụ proxy. Ví dụ
telnet

7. Cấu hình Firewall
- Mô tả cho việc cấu hình Firewall trên Ubuntu
B1: Tường lửa mặc định bị vô hiệu hóa. Để kích hoạt tường lửa, nhập câu lệnh sau từ cửa
sổ lệnh:
sudo ufw enable


B2: Đặt luật cho Firewall
Giả sử ta muốn cho phép lưu lượng SSH qua cổng 22. Để làm điều này, hãy sử dụng một
trong số những câu lệnh sau:
sudo ufw allow 22 (Cho phép cả lưu lượng UDP và TCP)
sudo ufw allow 22/tcp (Chỉ cho phép lưu lượng TCP)
sudo ufw allow ssh (Kiểm tra trong file /etc/services trên hệ thống để tìm cổng mà SSH
yêu cầu và cho phép nó. Nhiều service phổ biến được liệt kê trong file này)
-

để chặn lưu lượng SSH ra mạng, gõ câu lệnh sau:

sudo ufw reject out ssh
Để xem tất cả những luật đã được tạo ra, ta sử dụng câu lệnh sau:

sudo ufw status


Để xóa một luật, thêm từ khóa delete trước luật đó. Ví dụ như, để dừng hành động chặn
lưu lượng SSH ra ngoài mạng, sử dụng câu lệnh sau:
sudo ufw delete reject out ssh
Để đặt lại tường lửa về trạng thái mặc định, sử dụng câu lệnh:
sudo ufw reset

II. Tìm hiểu về Netfilter.
1. Định nghĩa.
Netfilter là một khung bên trong của nhân Linux giúp cung cấp sự linh hoạt cho các hoạt
động mạng khác nhau để phù hợp với các xử lý khác nhau. Netfilter có các lựa chọn như:
packet filtering, network address translation, và port translation. Các phương thức của
Netfilter sẽ cung cấp các hướng dẫn cho các packets đi qua mạng cũng như việc tiến hành
ngăn chặn các packet trong phạm vi dễ bị ảnh hưởng trong mạng máy tính.
Netfilter đại diện cho một tập các hooks trong mạng máy tính (trong lập trình hooks bao
gồm một loạt các kỹ thuật sử dụng để thay đổi hoặc tăng cường hành vi của một hệ điều
hành, các ứng dụng, hoặc các thành phần phần mềm khác bằng cách chặn các chức năng
như cuộc gọi, tin nhắn hay các sự kiện giữa các thành phần phần mềm) do đó nó cho
phép xác định các modules để đăng ký hàm “callback” với ngăn xếp kernel's network
(hàm callback là hàm của người dùng được triệu gọi trong một hàm khác hay một thủ tục


trong tiến trình hoạt động, một hàm viết để triệu gọi hàm callback thì đối số của nó phải
là kiểu con trỏ cho phép khai báo hàm callback).
Sau đây là mô hình cơ bản của một một chuỗi các hooks.

Phần bên trái là nơi mà gói Packets tới: qua các kiểm tra đúng đắn đơn giản (chẳng hạn
như IP checksum), chúng sẽ qua netfilter framework là hook NF_IP_PRE_ROUTING

[1].
Sau đó chúng vào đoạn mã chuyển tiếp, chúng sẽ được quyết định sẽ được gắn vào
interface khác hay sẽ được xử lý luôn. Đoạn mã chuyển tiếp cũng có thể tiến hành xóa
packets.
Nếu nó được gắn vào interface của ban đầu, netfilter framework sẽ được gọi tới hook
NF_IP_LOCAL_IN [2], trước khi qua để được xử lý.
Nếu nó được gắn vào một interface khác, netfilter framework sẽ gọi tới hook
NF_IP_FORWARD [3].
Packet sau đó sẽ qua netfilter hook cuối cùng, hook NF_IP_POST_ROUTING [4], trước
khi được đưa vào chuỗi một lần nữa.
Hook NF_IP_LOCAL_OUT [5] sẽ được gọi cho packets được tạo ra tại địa phương. Ở
đây bạn có thể thấy sự định tuyến sau khi hook được gọi: thực tế đoạn mã chuyển tiếp sẽ
được gọi đầu tiên (để cấu hình cho IP address và một số IP options). Nếu bạn muốn thay
đổi việc chuyển tiếp, bạn phải thay đổi trường ‘skb  dst’ của bạn, có thể thực hiện bởi
mã NAT.
2. Cơ sở của Netfilter.
Hiện tại chúng ta có một số ví dụ về netfilter cho IPv4, bạn có thể nhìn thấy khi mỗi hook
được kích hoạt. Nó là bản chất của netfilter.


Kernel modules có thể đăng ký để lắng nghe tại tất cả các hooks. Một module mà đăng
ký một function phải xác định quyền ưu tiên của function đó với hook; sau đó khi
netfilter hook được gọi từ đoạn mã networking core, mỗi module đã đăng ký sẽ được gọi
trong thứ tự quyền ưu tiên, và được tự do thao tác với các packet. Module có thể nói cho
netfilter thực hiện một trong năm điều sau:
1.
2.
3.
4.
5.


NF_ACCEPT: tiếp tục chuyển đổi như bình thường.
NF_DROP: xóa packets, không tiếp tục chuyển đổi.
NF_STOLEN: đã lấy các gói tin và không được chuyển tiếp nữa.
NF_QUEUE: hàng đợi các packet (thường dùng xử lý cho userspace).
NF_REPEAT: gọi đến hook lần nữa.

Các phần khác của netfilter (xử lý hàng đợi packet) sẽ được đề cập trong các phần sau.

3. Lịch sử.
Rusty Russell bắt đầu dự án netfilter/iptables vào năm 1988. Ông cũng là tác giả của dự
án trước đó là “ipchains”. Khi dự án phát triển, ông tìm thấy một team gọi là simply
coreteam vào năm 1999. Phần mềm được tạo ra sử dụng “GNU Generar Public License”
và vào năm 2000 nó được nhập vào phiên bản 2.3.x của Linux kernel mainline.
Vào tháng 8 năm 2003 Harald Welte trở thành người điều khiển của coreteam. Vào tháng
4 năm 2004, dự án đã bị đổ vỡ do việc phân phối các phần mềm nhúng trong routers mà
không tuân thủ quy tắc của GPL. Vào tháng 12 năm 2007 Patrick McHardy, người rời
khỏi dự án trong những năm trước đã trở thành người điều khiển của coreteam.
“Trước iptables, các gói phần mềm chủ yếu cho việc tạo ra các bức tường lửa Linux là
ipchains trong Linux kernel 2.2.x và ipfwadm trong Linux kernel 2.0.x, mà lần lượt dựa
trên ipfw của BSD. Cả hai ipchains và ipfwadm thay đổi mã mạng để họ có thể thao tác
các gói dữ liệu, như Linux kernel thiếu một khuôn khổ gói điều khiển chung cho đến khi
sự ra đời của Netfilter.”
4. Các module chính của Netfilter.
Hiện nay Netfilter đưa ra 3 module chính để sử dụng là:
 Iptables
 Nat
 Connection tracking
Sau đây chúng ta sẽ cùng đi sâu vào các chức năng chính của từng module.



4.1. Giới thiệu về Iptables.

Iptables là Firewall được cấu hình và hoạt động trên nền Console rất nhỏ và tiện dụng,
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ích hợp tốt với kernel của Linux. Có khả năng phân tích package hiệu quả. Lọc package
dựa vào MAC và một số cờ hiệu trong TCP Header. Cung cấp chi tiết các tùy chọn để ghi
nhận sự kiện hệ thống. Cung cấp kỹ thuật NAT. Có khả năng ngăn chặn một số cơ chế
tấn công theo kiểu DoS.
Để cài đặt Iptables trong Linux ta sử dụng câu lệnh sau:
Trong Ubuntu: $ apt-get install ufw
Trong RedHat: $ yum install iptables
Một gói tin khi vào Iptables sẽ lần lượt đi qua 3 bảng được xây dựng sẵn đó là:
_ 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), và MARK.
_ Filter: chịu trách nhiệm lọc gói dữ liệu. Nó gồm có 3 quy tắc nhỏ (chain) để giúp bạn
thiết lập các nguyên tắc lọc gói:
Forward chain : lọc gói khi đi đến đế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 ra khỏi server.
Chain gồm nhiều luật (rule) để thao tác với các gói dữ liệu. Rule 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.
_ NAT: gồm có 2 loại:
Pre-routing chain: thay đổi địa chỉ đến của gói dữ liệu khi cần thiết.
Post-routing chain: thay đổi địa chỉ nguồn của gói dữ liệu khi cần thiết.

Trong Linux ta có các mô tả về iptables command Switch như sau:
Iptables command Switch

-t <tables>
-j<target>

Mô tả
Chỉ định bảng cho iptables bao gồm: filter, nat, mangle
tables.
Nhảy đến một target chain khi packet phù hợp luật hiện
tại


-A
-F
-p
-s<ip-address>
-d<ip-address>
-i<interface-name>
-o<interface-name>

Thêm luật mới vào cuối iptables chains.
Xóa tất cả các luật trong bảng lựa chọn.
Mô tả các giao thức bao gồm: icmp, tcp, udp và all.
Chỉ định địa chỉ nguồn.
Chỉ định địa chỉ đích.
Chỉ định “input” interface nhận packet.
Chỉ định “output” interface chuyển packet ra ngoài.

4.2. Tìm hiểu về Nat (Network address translation).

Nat dùng để chuyển đổi địa chỉ mạng. Trong Netfilter chúng ta có 2 loại Nat chính là:
Dynamic Nat:

NAT động là một trong những kĩ thuật chuyển đổi địa chỉ IP NAT (Network Address
Translation). Các địa chỉ IP nội bộ được chuyển sang IP NAT như sau:
NAT Router đảm nhận việc chuyển dãy IP nội bộ 192.168.0.x sang dãy IP mới
203.162.2.x. Khi có gói liệu với IP nguồn là 192.168.0.200 đến router, router sẽ đổi IP
nguồn thành 203.162.2.200 sau đó mới gởi ra ngoài. Quá trình này gọi là SNAT (SourceNAT, NAT nguồn). Router lưu dữ liệu trong một bảng gọi là bảng NAT động. Ngược lại,
khi có một gói từ liệu từ gởi từ ngoài vào với IP đích là 203.162.2.200, router sẽ căn cứ
vào bảng NAT động hiện tại để đổi địa chỉ đích 203.162.2.200 thành địa chỉ đích mới là
192.168.0.200. Quá trình này gọi là DNAT (Destination-NAT, NAT đích). Liên lạc giữa
192.168.0.200 và 203.162.2.200 là hoàn toàn trong suốt (transparent) qua NAT router.
NAT router tiến hành chuyển tiếp (forward) gói dữ liệu từ 192.168.0.200 đến
203.162.2.200 và ngược lại.
Đóng giả địa chỉ IP (masquerade).
Đây là một kĩ thuật khác trong NAT.

NAT Router chuyển dãy IP nội bộ 192.168.0.x sang một IP duy nhất là 203.162.2.4 bằng
cách dùng các số hiệu cổng (port-number) khác nhau. Chẳng hạn khi có gói dữ liệu IP
với nguồn 192.168.0.168:1204, đích 211.200.51.15:80 đến router, router sẽ đổi nguồn
thành 203.162.2.4:26314 và lưu dữ liệu này vào một bảng gọi là bảng masquerade động.
Khi có một gói dữ liệu từ ngoài vào với nguồn là 221.200.51.15:80, đích
203.162.2.4:26314 đến router, router sẽ căn cứ vào bảng masquerade động hiện tại để đổi
đích từ 203.162.2.4:26314 thành 192.168.0.164:1204. Liên lạc giữa các máy trong mạng
LAN với máy khác bên ngoài hoàn toàn trong suốt qua router.


4.3. Tìm hiểu về Connection Tracking.

Một trong những điều quan trọng hiện tại của việc xây dựng Netfilter framework là việc
theo dấu kết nối. Theo dấu kết nối cho phép kernel giữ việc theo dấu cho tất cả các kết
nối logic hoặc sessions. NAT dựa vào các thông tin này để dịch các dữ liệu liên quan theo
cùng một cách và iptables có thể sử dụng thông tin này để thực hiện như một tường lửa.

Mỗi kết nối Netfilter xác định bởi 4 trường (layer-3 protocol, source address, destination
address, layer-4 protocol, layer-4 key). Layer-4 key phụ thuộc vào phương thức vận
chuyển, cho TCP/UDP nó là số cổng, cho turnels nó thể là turnel ID. Để có thể kiểm tra
được tất cả các trường hợp cổng TCP, packets phải được chống phân mảnh.

DEMO Netfilter.
Ở đây chúng ta sẽ cùng nhau xem xét và cấu hình Iptables để thực hiện việc cài đặt
network trong Ubuntu.
Chúng ta sẽ sử dụng lệnh: sudo iptables –L để xem chi tiết thông tin của bảng Iptables.
Nếu bảng Iptables chưa được kích hoạt nó sẽ hiển thị:

Còn nếu được kích hoạt nó sẽ hiển thị thông tin các lệnh, các lựa chọn địa chỉ nguồn, và
địa chỉ đích. Sau đây là một ví dụ về Iptables được kích hoạt:


Sau đây chúng ta sẽ cùng nhau thực hiện một số câu lệnh để cấu hình tường lửa trong
Linux.
Chúng ta có địa chỉ local network là 10.0.0.8/8 và firewall sử dụng 2 card mạng, kết nối
với internet bằng card mạng eth0, và local network là eth1.
Ta có tập lệnh cấu hình sau:
1. Chố ng Syn Flooding: sudo iptables -A FORWARD -p tcp —syn -m limit —limit
1/s -j ACCEPT
2. Chố ng Scan Port: sudo iptables -A FORWARD -p tcp —tcp-flags
SYN,ACK,FIN,RST RST -m limit —limit 1/s -j ACCEPT
3. Chố ng Ping of Death: sudo iptables -A FORWARD -p icmp —icmp-type echorequest -m limit —limit 1/s -j ACCEPT
4. Cho các packet đã thiế t lâ ̣p kế t nố i tiế p tu ̣c đi qua firewall: sudo iptables -A
FORWARD -m state —state ESTABLISHED,RELATED -j ACCEPT
5. Chố ng giả ma ̣o điạ chỉ nô ̣i bô ̣ từ bên ngoài để xâm nhâ ̣p: sudo iptables -t nat -A
PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
6. Chuyể n đổ i điạ chỉ từ trong ma ̣ng nô ̣i bô ̣ ra bên ngoài (SNAT): sudo iptables -t nat

-A POSTROUTING -o eth0 -j SNAT —to 203.162.0.10
7. Chuyể n đổ i điạ chỉ của web server từ bên ngoài vào trong ma ̣ng nô ̣i bô ̣ (DNAT):
sudo iptables -t nat -A PREROUTING -d 203.162.0.9 -p tcp —dport 80 -j DNAT
—to 10.0.0.10
8. Thiế t lâ ̣p Transparent proxy bằ ng cách chuyể n hướng port 80 đế n server squid
proxy 10.0.0.9: sudo iptables -t nat -A PREROUTING -p tcp —dport 80 -j DNAT
—to 10.0.0.9:3128
9. Chỉ cho máy tiń h trong ma ̣ng nô ̣i bô ̣ có điạ chỉ card ma ̣ng 00:C7:8F:72:14 đi ra:
sudo iptables -A FORWARD -m state —state NEW -m mac —mac-source
00:C7:8F:72:14 -j ACCEPT
10. Chức năng ưu tiên thông lươ ̣ng đố i với truy câ ̣p web: sudo iptables -A
PREROUTING -t mangle -p tcp —sport 80 -j TOS —set-tos MaximizeThroughput.
Sau khi thực hiện các lệnh chúng ta sẽ sử dụng lệnh sudo iptables –L và ta có kết quả sau:




×