MỘT SỐ CÔNG CỤ AN NINH MẠNG MÃ NGUỒN MỞ
III.1 Giới thiệu
Hệ thống mạng đang trở thành những thành phần quan trọng trong thành công của doanh
nghiệp - cho dù lớn hay nhỏ. Khi mạng bị lỗi, khách hàng và các nhân viên không thể trao đổi
được với nhau, các nhân viên không thể truy cập được những thông tin cần thiết hoặc không thể sử
dụng được các tính năng in ấn hoặc email, kết quả là sản lượng và doanh thu bị giảm sút. Các công
cụ phần mềm an ninh mạng làm giảm thời gian ngừng hoạt động của mạng và làm cho các doanh
nghiệp hoạt động suôn sẻ hơn, giảm chi phí và ngăn ngừa được việc giảm doanh thu. Và đối với
các doanh nghiệp nhỏ, những người chưa bao giờ nghĩ đến một khoản ngân sách chi cho phần
mềm an ninh mạng. Một lựa chọn tối ưu để khởi đầu với phần mềm giám sát mạng miễn phí với
mã nguồn mở, giảm thời gian và chi phí cho quản trị mạng. Chương này giới thiệu một số phần
mềm an ninh, giám sát hệ thống mạng mã nguồn mở miễn phí có sẵn hiện nay.
Khi xây dựng một hệ thống an ninh mạng, các doanh nghiệp thường có những mục tiêu
chung như sau:
1. Chi phí thấp : Phần mềm giám sát hệ thống mạng có chi phí phù hợp với mô hình của doanh
nghiệp
2. Dễ dàng cài đặt và sử dụng : Phần mềm giám sát hệ thống mạng mang tính trực quan, bắt đầu
mà không phải đọc những tài liệu khô cứng và buồn tẻ.
3. Nhiều tính năng : Phần mềm giám sát hệ thống mạng có thể giám sát toàn bộ các nguồn lực, cả
những nguồn lực của hiện tại cũng như những nguồn lực có thể có trong tương lai.
Dưới đây chúng ta sẽ đi tìm hiểu một số công cụ an ninh mạng mã nguồn mở được sử dụng
phổ biến hiện nay.
III.2 Netfilter và Iptables
III.2.1 Giới thiệu
Iptables là một tường lửa ứng dụng lọc gói dữ liệu rất mạnh, miễn phí và có sẵn trên Linux.
Netfilter/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 3.1: Vị trí của iptables trong một Firewall Linux
III.2.2 Cấu trúc của iptables
Iptables được chia làm 4 bảng (table):
• Bảng lọc gói (Packet filtering - filter)
Trong bảng này có 3 chuỗi INPUT(công đoạn nhập dữ liệu), OUTPUT (công đoạn xuất dữ
liệu) và FORWARD (công đoạn truyền dữ liệu). Nếu tường lửa làm việc như thiết bị định tuyến thì
chỉ chuỗi FORWARD được dùng. Lưu lượng mà mạng nhận sẽ được chuỗi INPUT xử lý và lưu
lượng mà mạng gửi đi sẽ được chuỗi OUTPUT xử lý.
• Bảng dịch địa chỉ (Network address translation - Nat)
Bảng này chỉ dùng cho các gói khởi đầu kết nối, các luật trong chuỗi PREROUTING được
áp dụng cho các gói ngay khi hệ thống nhận được gói tin, và các luật trong chuỗi
POSTROUTING sẽ được áp dụng khi các gói đã được định tuyến(after routing). các luật trong
chuỗi OUTPUT được áp dụng cho các gói trước khi định tuyến (before routing). Nói chung các
luật đưa vào bảng này phục vụ các mục đích dịch địa chỉ, đóng giả địa chỉ IP và thực hiện dịch vụ
ủy quyền trong suốt (transparent proxying).
• Bảng lựa chọn gói – hay đánh dấu gói (Packet alteration - mangle)
Bảng này dùng cho mục đính chọn các gói tin theo dấu đã được đánh trước. Nó có chuỗi-
xích PREROUTING để thay đổi gói tin trước khi định tuyến, và chuỗi OUTPUT để thay đổi gói
tin cụ bộ trong hệ thống.
• Bảng conntrack dùng để theo dõi các kết nối.
Các luật (rules) 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.
III.2.3 Quá trình chuyển gói dữ liệu qua tường lửa.
Gói dữ liệu (packet) từ mạng ngoài, sau đó đi vào giao diện mạng nối với mạng ngoài
(chẳng hạn như eth0). Đầu tiên packet sẽ qua chuỗi 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 chuỗi INPUT. Tại chuỗi 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 chuỗi OUTPUT. Tại chuỗi 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ỏ.
Gói sau khi rời chuỗi PREROUTING sẽ qua chuỗi FORWARD. Tại chuỗi FORWARD, nó
cũng bị lọc ACCEPT hoặc DENY. Gói sau khi qua chuỗi FORWARD hoặc chuỗi OUTPUT sẽ đến
chuỗi POSTROUTING (sau khi định tuyến).
Tại chuỗi POSTROUTING, gói có thể được đổi địa chỉ IP nguồn (SNAT) hoặc đóng giả địa
chỉ (MASQUERADE). Gói sau khi ra giao diện mạng sẽ được chuyển để đi đến máy tính khác
trên mạng ngoài.
Hình 3.2: Quá trình chuyển gói dữ liệu qua Netfilter
Trong chuỗi, mỗi luật sẽ được áp dụng theo thứ tự, mỗi luật có một tập các điều kiện xác
định luật có phù hợp hay không và tác động chỉ xảy ra khi điều kiện phù hợp. Kết thúc một chuỗi
thì tác động mặc định sẽ được sử dụng, nghĩa là gói tin sẽ được phép đi qua.
Các trạng thái kết nối :
- NEW: mở kết nối mới
- ESTABLISHED: đã thiết lập kết nối
- RELATED: mở một kết nối mới trong kết nối hiện tại
- CONNMARK
- MARK
- INVALID
- UNTRACKED
III.2.4 Targets và jump
Jump (Nhảy) là cơ chế chuyển một packet đến một target (đích) nào đó để xử lý thêm một số
thao tác khác.
Targets (Đích) là hành động sẽ diễn ra khi một gói dữ liệu được kiểm tra và phù hợp với một
yêu cầu nào đó. Khi một target đã được các định, gói dữ liệu cần nhảy để thực hiện các xử lý tiếp
theo. Target dùng để nhận diện và kiểm tra packet. Các target được xây dựng sẵn trong iptables
như:
1. ACCEPT: iptables chấp nhận chuyển gói tin đến đích.
2. DROP: iptables khóa những packet.
3. LOG: thông tin của packet sẽ gửi vào syslog daemon iptables tiếp tục xử lý luật tiếp theo
trong bảng mô tả luật. Nếu luật cuối cùng không thỏa mãn thì sẽ hủy gói tin. Với tùy chọn
thông dụng là --log-prefix=”string”, tức iptables sẽ ghi nhận lại những message bắt đầu
bằng chuỗi “string”.
4. REJECT: ngăn chặn packet và gửi thông báo cho sender. Với tùy chọn thông dụng là --
reject-with qualifier, tức qualifier chỉ định loại reject message sẽ được gửi lại cho người
gửi. Các loại qualifer sau: icmp-port-unreachable (default), icmp-net-unreachable, icmp-
host-unreachable, icmp-proto-unreachable, …
5. DNAT: thay đổi địa chỉ đích của gói tin. Tùy chọn là --to-destination ipaddress.
6. SNAT: thay đổi địa chỉ nguồn của gói tin. Tùy chọn là --to-source <address>[-
address][:<port>-<port>]
7. MASQUERADING: được sử dụng để thực hiện kỹ thuật NAT (giả mạo địa chỉ nguồn với
địa chỉ của interface của Firewall). Tùy chọn là [--to-ports <port>[-<port>]],chỉ định
dãy port nguồn sẽ ánh xạ với dãy port ban đầu.
III.2.5 Thực hiện lệnh trong Iptable
IPtable command
Switch
Mô tả
-t <table> Chỉ định bảng cho iptables bao gồm: filter,
nat, mangle tables.
-j <target> Nhảy đến một target chain khi packet thoả