Tự động hóa việc cập nhật bảng luật lọc gói cho các firewall mã nguồn mở
16 N. K. Tuấn, N. T. Thuận, Phan Long / Tạp chí Khoa học và Công nghệ Đại học Duy Tân 03(40) (2020) 16-25
03(40) (2020) 16-25
Tự động hóa việc cập nhật bảng luật lọc gói cho các firewall
mã nguồn mở
Automating the update of packet filtering rules for open source firewalls
Nguyễn Kim Tuấna,b*, Nguyễn Trung Thuậna,b, Phan Longa,b
Kim Tuan Nguyena,b*; Trung Thuan Nguyena,b; Long Phana,b
aKhoa Công nghệ Thông tin, Trường Đại học Duy Tân, Đà Nẵng, Việt Nam
bViện Nghiên cứu và Phát triển Công nghệ Cao, Trường Ðại học Duy Tân, Ðà Nẵng, Việt Nam
aFaculty of Information Technology, Duy Tan University, Da Nang, 550000, Vietnam
bInstitute of Research and Development, Duy Tan University, Da Nang, 550000, Vietnam
(Ngày nhận bài: 20/05/2020, ngày phản biện xong: 12/06/2020, ngày chấp nhận đăng: 27/6/2020)
Tóm tắt
Trong các hệ thống bảo mật mạng doanh nghiệp dựa vào Intrusion Detection System (IDS) và Firewall (tường lửa bảo
mật), thông thường, nhiệm vụ của IDS là theo dõi tất cả dòng traffic vào/ra mạng, để từ đó phát hiện và đưa ra cảnh báo
về các dòng traffic bất thường, về các gói tin có nguy cơ mang theo mã độc. Dựa vào những những thông tin cảnh báo
này, người quản trị an ninh mạng sẽ thiết kế các luật chính sách mới, tiến hành cập nhật lại bảng luật lọc gói của
Firewall, nhờ đó firewall có thể ngăn chặn kịp thời các dòng traffic không mong muốn. Trong bài báo này, chúng tôi đề
xuất và triển khai một mô hình mới về sự kết hợp trong hoạt động giữa IDS và Firewall, nó cho phép IDS tự động cập
nhật bảng luật lọc gói của firewall mỗi khi phát hiện có sự bất thường. Điều này giúp việc bảo vệ mạng trước các tấn
công từ Internet trở nên tức thời hơn.
Từ khóa: Tường lửa bảo mật; Bảng luật lọc gói; Hệ thống phát hiện xâm nhập; Nghe lén; Lọc gói tin.
Abstract
In enterprise network security systems that rely on IDS (Intrusion Detection System) and Firewall, it is the typical task
of IDS to monitor all incoming/outgoing network traffic, thereby detecting and giving warnings about abnormal traffic
streams, packets which are at risk of bringing malicious code. Based on the warning information, the network system
administrator will design new policy rules, update the packet filtering rules of the Firewall, so that the firewall can
prevent unwanted traffic in time. In this paper, we propose and deploy a new model of the association between the
operation of IDS and Firewall, which allows IDS to automatically update the firewall filter rule table whenever it
detects anomalies. This helps to protect the network from Internet attacks.
Keywords: Firewall; rule table; intrusion detection system; sniff; packet capture.
traffic, mọi packet vào/ra mạng, để từ đó có thể
phát hiện ra các xâm nhập trái phép và các
packet, có thể đến từ các nguồn hợp pháp, có
nguy cơ mang theo mã độc vào mạng [1].
1. Đặt vấn đề
Trong mô hình bảo mật mạng doanh nghiệp,
hệ thống phát hiện xâm nhập (IDS) đóng vai trò
quan trọng. Nó có nhiệm vụ giám sát mọi dòng
*Corresponding Author: Kim Tuan Nguyen; Faculty of Information Technology, Duy Tan University, Da Nang,
550000, Vietnam; Institute of Research and Development, Duy Tan University, Da Nang, 550000, Vietnam.
Email: nguyenkimtuan@duytan.edu.vn
N. K. Tuấn, N. T. Thuận, Phan Long / Tạp chí Khoa học và Công nghệ Đại học Duy Tân 03(40) (2020) 16-25 17
Khi đã xác định được hành động bất thường từ
một traffic nào đó thì IDS tiến hành ngay các
công việc cần thiết như lưu giữ thông tin liên
quan đến sự bất thường, hay gửi thông tin cảnh
báo về sự bất thường đến các hệ thống liên
quan, trong đó có cả người quản trị an ninh của
mạng. Cần lưu ý rằng, IDS chỉ làm nhiệm vụ
phát hiện và đưa ra cảnh báo, còn việc xử lý sự
bất thường là do các bộ phận khác. Điều này
thường được thực hiện bởi firewall thông qua
sự điều khiển bảng luật của người quản trị an
ninh mạng. Rõ ràng công đoạn này có vẻ thụ
động, cần có thời gian để cập nhật bảng luật,
nên cần được xem xét cải tiến để nâng cao hiệu
quả trong công tác bảo vệ mạng của tổ chức,
doanh nghiệp [2].
Theo đó, IPTables vừa thực hiện nhiệm vụ
điều khiển truy cập mạng, vừa sẵn sàng nhận
lệnh thay đổi bảng luật lọc gói từ Sniffer. Các
dòng traffic, các packet sau khi qua được
firewall IPTables sẽ được hướng tới Sniffer,
Sniffer bắt lại và lấy ra các thông tin cần thiết
từ chúng, từ đó phân tích, thống kê và dự báo,
để xác định nguồn gốc của traffic, của packet
có hành động đáng nghi ngờ. Và rồi thực hiện
cập nhật bảng luật của IPTables một cách tự
động và tức thời. Từ đây, firewall IPTables sẽ
ra quyết định điều khiển truy cập theo bảng luật
mới này. Đây là mục tiêu hoạt động của mô
hình chúng tôi đề xuất.
Thuận lợi của các firewall mã nguồn mở,
trong đó có IPTables, là ta có thể cập nhật bảng
luật (chính xác là file luật lọc gói) của nó theo
cơ chế dòng lệnh, điều này được thực hiện dễ
dàng từ chương trình Python. Đây là một trong
những lý do khiến chúng tôi nghĩ đến việc tự
động hóa việc cập nhật bảng luật lọc gói cho
các firewall mã nguồn mở.
Có thể nói, bộ lọc gói và bảng luật lọc gói là
hai trong ba thành phần chính của các firewall
lọc gói. Từ chính sách điều khiển truy cập
mạng, đội quản trị an ninh mạng sẽ xây dựng
bảng luật lọc gói cho firewall. Bộ lọc gói dựa
vào bảng luật này để làm cho chính sách truy
cập mạng có hiệu lực. Điều này có nghĩa, mức
độ kịp thời trong việc ngăn chặn các dòng
traffic không mong muốn của firewall phụ
thuộc rất lớn vào khả năng nhận định tình hình
truy cập mạng để đưa ra luật mới và tốc độ cập
nhật bảng luật cho firewall của người quản trị
an ninh mạng. Như vậy, nếu chúng ta xây dựng
được một hệ thống hỗ trợ firewall, mà nó có
khả năng cao trong việc phát hiện các dòng
traffic, các packet có hành động đáng ngờ và
lập tức cập nhật bảng luật lọc gói cho firewall
một cách tự động thì firewall sẽ làm tốt hơn
nhiệm vụ của mình trong ngăn chặn kịp thời
các traffic không mong muốn. Các HIDS phần
mềm tự tạo có thể làm tốt nhiệm vụ hỗ trợ này.
2. Kiến thức liên quan
Trong phần này chúng tôi xin được dẫn lại
những kiến thức cơ bản nhất, một cách cô đọng
nhất, về hai hệ thống an ninh mạng không thể
thiếu trong các mạng doanh nghiệp có tính an
ninh cao hiện nay, đó là Firewall và IDS. Điều
này là cần thiết để chúng ta dễ dàng thấy được
ý nghĩa của sự kết hợp trong hoạt động giữa
chúng trong mô hình mạng mà chúng tôi đề
xuất ở bài báo này (ở phần III).
2.1. Nguyên lý hoạt động của Packet filtering
firewall
Firewall là thiết bị điều khiển truy cập mạng,
nó đóng vai trò như cổng vào/ra mạng (thường
gọi là gateway mạng). Theo đó, mọi dòng
traffic đi vào/đi ra giữa mạng bên ngoài, thường
là Internet, và mạng nội bộ của doanh nghiệp
đều phải chịu sự kiểm soát và điều khiển của
Firewall. Firewall dựa vào chính sách truy cập
mạng, được thiết kế dưới dạng Bảng luật chính
Cả Firewall và IDS đều có thể là thiết bị
phần cứng, hoặc chương trình phần mềm.
Trong mô hình đề xuất của chúng tôi, firewall
được chọn là công cụ mã nguồn mở IPTables.
IDS là chương trình Sniffer được chúng tôi xây
dựng từ ngôn ngữ Python. Đây được xem là
đóng góp chính của bài báo này.
18 N. K. Tuấn, N. T. Thuận, Phan Long / Tạp chí Khoa học và Công nghệ Đại học Duy Tân 03(40) (2020) 16-25
sách, và các thông tin liên quan chứa trong
dòng traffic/chứa trong gói tin - thường là IP
Address, Protocols và Port number - để quyết
định cho phép một traffic/một packet nào đó có
được phép đi qua nó hay không.
Từ sơ đồ mạng, ta có thể thấy được chính
sách truy cập mạng của mạng doanh nghiệp này
là như sau: Cho phép các gói tin từ Internet chỉ
được đi vào vùng mạng 192.168.2.0/24 - vùng
DMZ của mạng doanh nghiệp - không được
phép đi vào vùng mạng 192.168.1.0/24, vùng
mạng người dùng bên trong. Tuy nhiên, mọi
dòng traffic từ vùng mạng người dùng và vùng
mạng DMZ đều có thể đi ra mạng Internet.
Chính sách này được người quản trị an ninh
mạng chuẩn hóa thành các luật lọc gói, rồi xây
dựng thành Bảng luật lọc gói (được minh họa
trên sơ đồ) và sau đó là cài đặt vào firewall.
Mỗi khi muốn thay đổi chính sách điều khiển
truy cập mạng thì người quản trị an ninh mạng
phải cập nhật lại Bảng luật lọc gói cho firewall
thì chính sách mới đó mới có hiệu lực.
Nếu xét về nguyên lý hoạt động thì firewall
được chia làm hai loại chính. Đó là, firewall lọc
gọi (Packet filtering firewall), hoạt động tương
ứng tại tầng Network của mô hình mạng OSI
hay TCP/IP, và firewall tầng ứng dụng
(Application layer firewall), còn gọi là Proxy,
hoạt động tương ứng tại tầng’ Application của
mô hình mạng kể trên. Các mạng doanh nghiệp
hiện nay thường sử dụng loại firewall được
thiết kế từ sự kết hợp nguyên lý hoạt động của
hai loại firewall này.
Có thể nói, 3 thành phần chính của firewall
lọc gói là: Đơn vị điều khiển việc vào/ra của
các tin; Bộ lọc khảo sát gói, thường gọi là Bộ
lọc gói; và Bảng luật lọc gói. Bảng luật lọc gói,
được người quản trị an ninh mạng cài vào
firewall, nó là cơ sở để Bộ lọc gói ra quyết định
cho phép gói tin đến firewall có được đi qua nó
để hướng đến đích của gói tin hay không.
Khi một gói tin TCP/IP đến firewall lọc gói,
Bộ lọc gói sẽ tách lấy những thông tin cần thiết
trong header của gói tin này, như: Địa chỉ IP
nguồn, địa chỉ IP đích, Port nguồn, Port đích và
Protocols, sau đó tiến hành so khớp những
thông tin có được với các luật (Rule) trong
Bảng luật lọc gói (Rule Table). Khi sự “khớp”
được tìm thấy tại một luật nào đó thì Bộ lọc gói
sẽ ra quyết định, cho phép (Allow) gói tin đi
qua hoặc từ chối (Deny) không cho gói tin đi
qua, dựa vào thông tin được ghi ở cuối dòng
luật này (thường được ghi tại cột Allow/Deny ở
cuối Bảng luật).
Hình 2.1 là sơ đồ minh họa mạng doanh
nghiệp, trong đó có sử dụng firewall lọc gói
như là một gate của mạng, mọi gói tin từ mạng
Internet vào mạng bên trong và từ mạng bên
trong ra Internet đều phải đi qua firewall.
Firewall lọc gói có nhiều ưu điểm so với các
loại firewall khác như tốc độ cao, dễ cài đặt và
chi phí thấp. Nhưng nó cũng có nhiều nhược
điểm như không hiểu các giao thức tầng ứng
dụng, không phân biệt được gói tin tốt/gói tin
xấu, việc tạo và cập nhật bảng luật phụ thuộc
hoàn toàn vào con người và hoàn toàn không có
cơ chế xác thực người dùng và nguồn gốc của
các gói tin đến firewall.
Có thể thấy, hiệu quả sử dụng firewall trong
việc ngăn chặn những dòng traffic, những gói tin
không mong muốn đi vào/đi ra mạng nội bộ là
Hình 2.1: Sơ đồ mạng với sự xuất hiện của firewall
N. K. Tuấn, N. T. Thuận, Phan Long / Tạp chí Khoa học và Công nghệ Đại học Duy Tân 03(40) (2020) 16-25 19
phụ thuộc lớn vào người quản trị an ninh mạng.
Họ có nhiệm vụ tạo ra Bảng luật cho firewall và
cập nhật bảng luật này khi phát hiện thấy cần
phải thay đổi chính sách truy cập mạng để bảo
vệ mạng. Firewall chỉ có nhiệm vụ làm cho
chính sách an ninh mạng cho hiệu lực.
IDS có một số ưu điểm như, dễ triển khai
trong một mạng doanh nghiệp sẵn có mà không
ảnh hưởng đến mạng hiện tại, có thể đưa ra
cảnh báo về bất thường một cách tức thời và ở
nhiều dạng khác nhau. Khả năng phát hiện
dòng traffic bất thường và hành động đáng ngờ
của IDS có thể giúp hệ thống và quản trị viên
phát hiện và ngăn chặn hiệu quả nhiều cuộc tấn
công vào mạng. Quản trị viên hệ thống dễ dàng
thay đổi “cái gì cần giám sát” của IDS thông
qua việc thay đổi “tập signature” của nó (với
loại Signature-based IDS). Ngoài ra, IDS còn
có thể ghi nhật ký giám sát (log), phát hiện và
báo cáo về sự thay đổi của các tập tin quan
trọng chứa tại các máy tính bên trong mạng nội
bộ. Tuy nhiên IDS cũng còn vài hạn chế như:
IDS có thể đưa ra cảnh báo nhầm (false
positive) hoặc không đưa ra cảnh báo (false
negative) về sự bất thường, sự đáng ngờ đối với
hệ thống, điều này có thể ảnh hưởng tiêu cực
đến hoạt động bình thường của hệ thống. Khả
năng phân tích các gói tin bị mã hóa của IDS
cũng hạn chế, nó cũng không giúp phát hiện ra
nguồn gốc của một cuộc tấn công vào mạng.
IDS cũng có thể bị tấn công DoS, tấn công
“đánh lừa” như những hệ thống an ninh
mạng/dịch vụ mạng khác.
2.2. Nguyên lý hoạt động của Intrustion Detection
System
Theo [3], IDS là hệ thống giám sát truy cập
mạng, nó có thể là thiết bị phần cứng hoặc là
ứng dụng phần mềm. Nó có nhiệm vụ theo dõi
các dòng traffic đi vào/đi ra mạng, hoặc một
máy tính trong mạng, để phát hiện và đưa ra lời
cảnh báo cho các bộ phận liên quan về các truy
cập bất thường, các truy cập không được phép
vào hệ thống mạng hoặc vào các máy tính nào
đó trong mạng.
Chúng ta nên có sự phân biệt rõ giữa hai hệ
thống an ninh mạng IDS và IPS (Intrustion
Prevention System, còn gọi là Hệ thống ngăn
chặn xâm nhập mạng). Cả hai đều thực hiện việc
đọc và phân tích các gói tin mạng, rồi so sánh
với “tập signature” (còn gọi là tập chữ ký, hay
tập luật) về những mối đe dọa (thread), những
cuộc tấn công đã biết. Trong khi IDS chỉ phát
hiện và đưa ra cảnh báo về những packet bất
thường thì IPS được xem là hệ thống điều khiển
truy cập, nó có thể chấp nhận (accept) hoặc từ
chối (reject) một packet nào đó dựa trên tập luật
cho trước. IDS cần con người và/hoặc một hệ
thống khác xem kết quả và đưa ra hành động xử
lý tiếp theo, trong khi đó IPS chỉ cần tập luật về
Hình 2.2: Sơ đồ mạng với sự xuất hiện của NIDS
và HIDS
Trong thực tế, IDS có thể theo dõi và phân
tích mọi hoạt động của user và system, có thể
thực hiện audit các tập tin system, các tập tin
configuration và cả Hệ điều hành. Nó cũng có
thể đánh giá sự toàn vẹn của các tập tin system
và tập tin data, có thể phát hiện lỗi trong cấu
hình hệ thống, nó còn có thể phát hiện và đưa
ra cảnh báo nếu phát hiện hệ thống gặp nguy
hiểm. Đặc biệt, IDS có thể tiến hành phân tích
các mẫu (pattern) dựa trên các cuộc tấn công đã
biết.
20 N. K. Tuấn, N. T. Thuận, Phan Long / Tạp chí Khoa học và Công nghệ Đại học Duy Tân 03(40) (2020) 16-25
các mối đe dọa đã biết được cập nhật thường
xuyên, để bổ sung các mối đe dọa mới.
đáng ngờ, các hành động nguy hại với “thân
chủ” của nó thì HIDS sẽ gửi cảnh báo đến các
hệ thống liên quan hoặc đến người quản trị hệ
thống để họ có hướng xử lý tiếp theo. HIDS
còn được yêu cầu để theo dõi các tập tin quan
trọng trên host mà nó đang thực hiện nhiệm vụ
giám sát, nếu phát hiện thấy các tập tin này bị
thay đổi hoặc bị xóa thì nó phải gửi cảnh báo
đến các hệ thống liên quan.
Trong mô hình mạng doanh nhiệp, IDS có
thể đặt giữa firewall và router (kết nối Internet):
Khi cần IDS giám sát traffic cả đi vào và đi ra
trên toàn mạng; có thể đặt trong vùng DMZ:
Khi chỉ cần IDS giám sát traffic đi vào vùng
DMZ; hoặc có thể đặt sau firewall (ngay trước
mạng bên trong): Khi cần IDS giám sát traffic
giữa mạng bên trong với Internet và với vùng
DMZ. Thông thường các HIDS được đặt ngay
tại mỗi server trong vùng DMZ để giám sát và
cảnh báo các truy cập bất thường, các hành
động đáng ngờ vào các server này.
Nếu dựa vào phương pháp phát hiện xâm
nhập (hoạt động) của IDS thì nó gồm loại:
Signature-based IDS (IDS dựa trên “tập
signature”) và Anomoly-based IDS (IDS dựa
trên sự “bất thường”).
Signature-based IDS: IDS loại này dựa vào
tập signature (chữ ký) cho trước - đây chính là
cơ sở dữ liệu về các mối đe dọa và các cuộc tấn
công đã biết - để nhận định dòng traffic nào có
biểu hiện bất thường hay có những hành động
đáng ngờ, bằng cách, “so khớp” dữ liệu phân
tích được từ các dòng traffic đến với dữ liệu ghi
trong tập signature. Loại IDS này có chức năng
tương tự các phần mềm Antivirus, nó được sử
dụng khá phổ biến và hiệu quả. Nhưng sự hiệu
quả của IDS lại phụ thuộc vào tập signature, vì
thế nó hoàn toàn bị động trước những “bất
thường mới” và những loại “tấn công mới”.
Ngoài ra, nếu tập signature lớn cũng sẽ ảnh
hưởng đến băng thông của mạng.
Một cách chung nhất IDS được chia thành 5
loại: Host-based IDS (HIDS), Network-based
IDS (NIDS), Protocol-based IDS (PIDS),
Application Protocol-based IDS (APIDS) và
Hyber IDS (HyIDS). Nếu xét về vị trí của IDS
trong mạng hay phạm vi, trên toàn mạng hay
chỉ trên một máy tính, giám sát dòng traffic của
IDS thì nó được chia thành 2 loại chính là
HIDS và NIDS.
NIDS: Loại IDS này thường được đặt tại
một vị trí xác định nào đó trong mạng mà tại đó
nó có thể theo dõi tất cả dòng traffic đi vào/đi
ra tất cả các thiết bị trong mạng. NIDS quan sát
và phân tích một cách liên tục mọi dòng traffic
trên toàn bộ vùng mạng của nó, rồi so khớp với
tập signature về các mối đe dọa, về các cuộc tấn
công đã biết. Một khi có một sự “khớp” được
xác định hoặc một sự bất thường được nhận ra
thì NIDS sẽ gửi lời cảnh báo về những hành
động bất thường này đến các hệ thống liên
quan, đặc biệt, là đến người quản trị an ninh
của hệ thống mạng.
Anomoly-based IDS: IDS loại này được sử
dụng để quan sát những dòng traffic mà ẩn chứa
trong đó những “bất thường mới”, những loại
“tấn công mới”. Nó quan sát những dòng traffic
được chỉ định để tìm ra “sự bình thường”, đây là
một trong những cơ sở để IDS phát hiện ra sự
bất thường. Trong thực tế, phương pháp này đòi
hỏi IDS phải có “trí tuệ” cao thì mới có thể hoàn
thành tốt nhiệm vụ phát hiện về những traffic,
những packet bất thường mà hệ thống chưa được
biết trước đó. Hiện nay, để có được một IDS có
“trí tuệ” cao thì nó phải được xây dựng theo
hướng tiếp cận Machine learning.
HIDS: Loại IDS này được sử dụng để theo
dõi các gói tin đi vào/đi ra các host riêng lẻ
trong mạng. HIDS thường được đặt ngay tại
các máy tính, các thiết bị mà nó nhận nhiệm vụ
theo dõi. Khi phát hiện thấy các hành động
N. K. Tuấn, N. T. Thuận, Phan Long / Tạp chí Khoa học và Công nghệ Đại học Duy Tân 03(40) (2020) 16-25 21
Có thể thấy, khác nhau cơ bản giữa hai loại
IDS này là, signature-based IDS dựa vào tập
signature đã biết để phát hiện sự bất thường,
trong khi đó, anomaly-based IDS, dựa vào
những traffic “bình thường” làm cơ sở để phát
hiện ra sự bất thường.
Hình 2.2 là sơ đồ minh họa mạng doanh
nghiệp, trong đó sử dụng cả NIDS và HIDS.
Trong mạng này, các HIDS được đặt tại các
server trong vùng DMZ (Web, File, Mail), để
phát hiện sự truy cập bất hợp pháp hoặc bất
thường có thể đến với các server này. NIDS
Hình 3.1 Sơ đồ mạng với sự kết hợp giữa firewall
được đặt sau firewall để quan sát tất cả dòng
traffic đi vào/đi ra mạng bên trong.
và HIDS
Trong mô hình này:
Hoạt động của loại Signature-based IDS là
như sau, khi có một dòng traffic mạng đi qua nó,
IDS sẽ copy traffic này lại, rồi tách lấy những
thông tin cần thiết trong header và/hoặc payload
từ những traffic này. Sau đó IDS tiến hành "so
khớp" những thông tin này với cơ sở dữ liệu
chứa tập signature về những mối đe dọa biết
trước. Nếu một sự "khớp" được tìm thấy thì IDS
sẽ gửi cảnh báo đến các hệ thống liên quan. Khi
IDS nhận định rằng có một sự bất thường mới
hay một mối đe dọa mới từ những dòng traffic
qua nó thì cơ sở dữ liệu này cũng sẽ được cập
nhật để chuẩn bị cho những lần "so khớp" sau
này. Với loại Anomaly-based IDS, đầu tiên nó
quan sát tất cả dòng traffic đi qua, thu thập thông
tin liên quan để tìm ra “sự bình thường”. Sau đó
dựa vào “sự bình thường” này để phát hiện ra
những dòng traffic ẩn chứa trong đó “sự bất
thường”. Loại IDS này mang lại hiệu quả cao
trong việc phát hiện những mối đe dọa mới,
những cuộc “tấn công mới”. Tuy nhiên, IDS
phải có “trí tuệ” thì mới làm tốt việc này.
Firewall chịu trách nhiệm điều khiển truy
cập cho toàn mạng. Về cơ bản, firewall chỉ cho
phép các kết nối từ Internet vào vùng DMZ,
cấm các kết nối từ Internet vào vùng mạng
người dùng bên trong. Nhưng mọi kết nối từ
bên trong mạng đi ra thì đều được phép. Chúng
tôi sử dụng phần mềm tường lửa mã nguồn mở
IPTables để xây dựng firewall này. Bảng luật
lọc gói ban đầu được xây dựng thông qua các
lệnh cho phép của IPTables.
IDS chịu trách nhiệm quan sát dòng traffic
đi vào vùng DMZ. Nếu IDS phát hiện thấy sự
bất thường hay hành động đáng ngờ từ dòng
traffic hay packet nào đó thì nó sẽ báo cáo điều
này đến các thành phần/đối tượng liên quan.
Đặc biệt, Sniffer có thể tự động cập nhật bảng
luật lọc gói trên IPTables. Chúng tôi sử dụng
thư viện Scapy của ngôn ngữ Python để xây
dựng chương trình Sniffer thực hiện chức năng
và nhiệm vụ này của IDS.
Điểm mới của mô hình đề xuất này là chúng
tôi đã tạo được kết nối trong hoạt động và thực
hiện nhiệm vụ được giao giữa chương trình
Sniffer với tường lửa mã nguồn mở IPTables:
Một khi đã xác định được nguồn gốc của dòng
traffic hoặc packet được cho là bất thường hay
được cho là có hành động đáng ngờ thì Sniffer
3. Mô hình đề xuất
3.1. Mô hình mạng
Mô hình đề xuất về sự kết hợp hoạt động
giữa firewall và HIDS của chúng tôi được thể
hiện ở Hình 3.1 sau đây:
22 N. K. Tuấn, N. T. Thuận, Phan Long / Tạp chí Khoa học và Công nghệ Đại học Duy Tân 03(40) (2020) 16-25
3.2. Công việc liên quan
lập tức gửi lệnh đến IPTables để cập nhật lại
bảng luật lọc gói của nó. Firewall IPTables sẽ
hoạt động theo bảng luật lọc gói mới này để
ngăn chặn những dòng traffic, những gói tin
không mong muốn đi vào mạng.
Đầu tiên chúng tôi thực hiện các công việc
cần thiết để đưa mạng, theo thiết kế, của mô
hình đề xuất đi vào hoạt động. Chúng tôi tiến
hành xây dựng Bảng luật lọc gói của tường lửa
IPTables theo chính sách truy cập mạng đã đưa
ra, trong đó, chúng tôi hướng mọi dòng traffic
sau khi đã vượt qua được tường lửa IPTables
thì phải đi qua IDS, máy chạy chương trình
Sniffer.
Ưu điểm của mô hình đề xuất là rất rõ, ngoài
chức năng thông thường của một IDS chuyên
dụng, Sniffer hoàn toàn chủ động trong việc
thay đổi bảng luật lọc gói trên tường lửa
IPTables một cách tức thời và tự động. Điều
này không những giúp kịp thời ngăn chặn
những ý đồ phá hoại mạng của tổ chức từ
Internet mà còn giúp giảm công sức của người
quản trị an ninh mạng.
Đóng góp chính của chúng tôi ở đây không
chỉ là đề xuất mô hình mới trong sự kết hợp
giữa IDS và Firewall mà còn là xây dựng được
chương trình Sniffer từ Python. Chương trình
Sniffer gồm các function chính sau đây:
def update_rule1(black,Port):
cmd = 'iptables -A FORWARD -i
ens33 -o
Function process_packet (): Đây là
function khá quan trọng của Sniffer, nó có
nhiệm vụ sao chép tất cả các packet đi qua các
port được chỉ định (đã được chỉ ra ở các tập tin:
Listports và Blacklist). Sau đó tách lấy các
thông tin cần thiết từ header của packet này
như: Loại gói tin (TCP hay UDP), địa chỉ IP
nguồn, Port nguồn… Dữ liệu này sẽ là đầu vào
cho function test_for_active.
ens38 -p tcp -d 192.168.10.50 --dport
"'+Port+'" -m string --algo bm --string
"'+black+'" -j DROP'
p = paramiko.SSHClient()
p.set_missing_host_key_policy
(paramiko.
AutoAddPolicy())
username=user1,
p.connect(add1,
password=pass1)
Function test_for_active (): Thực hiện
chức năng so khớp thông tin của các packet
nhận được từ process_packet với thông tin lưu
trong Listports và Blacklist. Nếu tìm thấy sự
khớp từ một traffic hay packet nào đó thì
Sniffer tiến hành đếm sự xuất hiện của chúng,
nếu số lần này chạm ngưỡng đã được xác định
thì test_for_active sẽ tiến hành cập nhật bảng
luật của IPTables để firewall này ngăn chặn các
traffic này lại, không cho đi vào mạng.
Function này còn có nhiệm vụ phát hiện và
cảnh báo những về dòng traffic đáng ngờ, đó
thường là những dòng traffic được gửi đến
Sniffer một cách ồ ạt từ một địa chỉ IP hoặc từ
nhiều địa chỉ IP.
stdin, stdout, stderr =
p.exec_command(cmd)
print
"…………………………………", Port
#---------------------------------------------------
def update_rule2 (ipsrc):
cmd = 'iptables -A FORWARD -i
ens33 -o
ens38 -p tcp -s '+ipsrc+'
-d address2 -j DROP'
p = paramiko.SSHClient()
p.set_missing_host_key_policy
(paramiko.
AutoAddPolicy())
username=user2,
p.connect(add2,
password=pass2)
stdin, stdout, stderr =
p.exec_command(cmd)
Function setup_logfile (): Thiết lập các
thông số liên quan đến tập tin nhật ký (logfile)
mà Sniffer sử dụng để lưu thông tin về những
Hình 3.2 Đoạn code chính của chương trình
N. K. Tuấn, N. T. Thuận, Phan Long / Tạp chí Khoa học và Công nghệ Đại học Duy Tân 03(40) (2020) 16-25 23
traffic, packet mà nó được chỉ định cần phải
chú ý trong quá trình quan sát.
Kết quả đúng như mong đợi, trong một
khoảng thời gian xác định, nếu có lượng lớn
packet đi vào Sniffer mà payload của nó có chứa
cùng một string đã ghi trong blacklist thì ngay lập
tức những packet này sẽ bị chặn bởi IPTables.
Ngoài ra, chúng tôi còn xây dựng 1 class và
2 chương trình hỗ trợ:
Class limitedPool: Class này gồm function
init_ và function _setup_queues. Function init_
thực hiện việc khởi tạo các hàng đợi cho các
ThreadPool, được sử dụng trong trường hợp xử
lý đa luồng. Ở đây chúng tôi chọn kích thước
hàng đợi tối đa là 10000 (chứa được 10000
thread). Function _setup_queues được sử dụng
để thiết lập các thông số về hàng đợi.
Kiểm thử lọc theo IP nguồn (kịch bản 2):
Kịch bản này nhằm kiểm tra phản ứng của
Sniffer khi có quá nhiều kết nối đến từ một
nguồn có địa chỉ IP xác định. Sniffer phải xác
định được đây là kết nối đáng ngờ và IPTables
phải chặn được những traffic xuất phát từ địa
chỉ IP này.
Kết quả là, trong một khoảng thời gian xác
định, nếu có lượng lớn traffic đi vào Sniffer mà
có cùng một địa chỉ IP nguồn thì ngay lập tức
dòng traffic này sẽ bị chặn bởi IPTables.
Nhờ sự hỗ trợ này của Python [4] mà Sniffer
có thể xử lý được tất cả packet tới nó, cho dù có
đến 10000 packet được gửi đến đồng thời.
Chương trình update_rule_iptables.py:
Được xây dựng dựa trên giao thức SSH, được
Sniffer sử dụng để gửi lệnh đến IPTables, yêu
cầu tường lửa này cập nhật bảng luật để chặn
các packet có chứa các string mà Sniffer cho
rằng nó có nguy cơ làm tổn hại đến hệ thống
mạng bên trong.
Kiểm thử ngăn chặn tấn công
SYN_Flood (kịch bản 3): Kịch bản này yêu
cầu Sniffer phải phản ứng khi có quá nhiều gói
tin TCP_SYN gửi đến nó (nghi ngờ có tấn công
DoS dạng SYN_Flood). Trong tình huống này
Sniffer sẽ phải gửi yêu cầu đến IPTables, nhờ
nó chặn các dòng traffic chứa gói tin
TCP_SYN, công việc còn lại là của IPTables.
Hai function này được Sniffer sử dụng để
gửi lệnh thay đổi bảng luật của IPTables, để
IPTables kịp thời ngăn chặn những dòng traffic,
những packet không mong muốn đi vào mạng
bên trong.
Không ngoài dự đoán, trong một khoảng thời
gian xác định, nếu có lượng lớn packet
TCP_SYN đi vào Sniffer thì lập tức dòng traffic
có packet khởi tạo này bị chặn bởi IPTables.
Trong quá trình kiểm thử, chúng tôi cũng đã
tiến hành đánh giá hiệu quả phối hợp hoạt động
giữa Sniffer và IPTables. Ở đây, chúng tôi sử
dụng công cụ Tcpdump và Wireshark để kiểm tra
kết quả lọc và chặn packet của mô hình đề xuất:
Và chương trình report2email.py: Được xây
dựng trên nền giao thức SMTP, được sử dụng để
Sniffer gửi email với nội dung về cảnh báo bất
thường đến cho người quản trị an ninh mạng.
3.3. Kiểm thử và đánh giá mô hình đề xuất
Đối với việc lọc string: Trong khoảng thời
gian xác định chúng tôi tấn công vào IPTable
bằng cách tạo và gửi đến IPTables khoảng hơn
1000 packet, trong đó có một lượng lớn vượt
ngưỡng cho phép, packet có chứa string đã được
yêu cầu Sniffer theo dõi (ở đây là lệnh “ls –ls”).
Chúng tôi tiến hành đồng thời dump các packet
trên firewall và trên server chạy Sniffer. Sau đó
tiến hành phân tích hai kết quả dump được thì
Chúng tôi đã tiến hành kiểm thử mô hình
đề xuất theo 3 kịch bản như sau:
Kiểm thử lọc string (kịch bản 1): Kịch
bản này nhằm kiểm tra sự phối hợp giữa Sniffer
với IPTables trong việc cảnh báo và ngăn chặn
những dòng packet mà trong đó có chứa một
string thuộc diện cần lưu ý và đã được chỉ ra ở
blacklist.
24 N. K. Tuấn, N. T. Thuận, Phan Long / Tạp chí Khoa học và Công nghệ Đại học Duy Tân 03(40) (2020) 16-25
thấy rằng: Có hơn 1000 packet đến firewall
nhưng chỉ có hơn 800 packet đến được server.
Trong quá trình “bắt tay 3 bước” TCP, thông
thường, cứ mỗi khi bên đích nhận được một
packet [TCP_SYN] thì nó phải gửi ngay một
packet phản hồi [TCP_RST, ACK]. Nhưng ở
đây, do nghi ngờ hệ thống bị tấn công DoS theo
dạng SYN_Flood nên Sniffer đã yêu cầu
IPTables hạn chế hồi đáp các packet khởi tạo
kết nối [TCP_SYN]. Điều này đã được kiểm
chứng bởi Tcpdump.
Hình 3.3a Các packet nhận được trên tường lửa
IPTables
Đối với việc lọc theo IP nguồn: Thử
nghiệm này được tiến hành tương tự như “lọc
string” nhưng ở đây yêu cầu Sniffer phát hiện và
ngăn chặn sự bất thường đến từ những dòng
traffic đến từ cùng một địa chỉ IP nguồn. Kết
quả dump và phân tích các packet nhận được tại
IPTables và Sniffer được thể hiện ở hai hình sau:
Hình 3.3b Các packet nhận được trên server Sniffer
Như vậy, Tcpdump đã cho thấy, trước sự
quan sát và hành động của Sniffer và IPTables
thì các packet (một lượng lớn) có chứa string
“ls – ls” đã bị chặn lại ở IPTable.
Đối với việc ngăn chặn tấn công
SYN_Flood: Chúng tôi thực hiện tấn công vào
mạng đề xuất bằng cách tạo và gửi một lượng lớn
packet TCP_SYN từ bên ngoài, qua IPTables,
đến server Sniffer. Sau đó chúng tôi tiến hành
dump các packet đến/đi ở Sniffer. Kết quả dump
được nhìn thấy trên Tcpdump như sau:
Hình 3.5a Các packet nhận được trên tường lửa
IPTables
Hình 3.5b Các packet nhận được trên server Sniffer
Như vậy, Tcpdump đã cho thấy, nhờ sự quan
sát và hành động của Sniffer và IPTables mà
các packet xuất phát từ IP: 10.7.7.100 (với
lượng lớn) đã bị chặn lại ở IPTables.
Hầu hết các sản phẩm firewall mã nguồn mở
đều cho phép tương tác với nó thông qua cơ
chế dòng lệnh, nên việc chúng tôi sử dụng
IPTables trong các kịch bản thử nghiệm và
đánh giá của mình vẫn không làm mất tính tổng
quát của mô hình đề xuất.
Hình 3.4 Các packet TCP_SYN và RST, ACK
N. K. Tuấn, N. T. Thuận, Phan Long / Tạp chí Khoa học và Công nghệ Đại học Duy Tân 03(40) (2020) 16-25 25
Từ kết quả đánh giá, chúng tôi tin tưởng
rằng hệ thống đề xuất hoàn toàn có thể đóng vai
trò phát hiện và xâm nhập trái phép vào mạng
nội bộ doanh nghiệp như các hệ thống IDS và
firewall riêng lẻ khác trên thị trường sản phẩm
an toàn thông tin.
mạng, nếu không có “trí tuệ” cao thì IDS khó
có thể xác định chính xác một packet nào đó là
có mang theo mã độc hay không. Hạn chế của
Sniffer của chúng tôi là “trí tuệ” của nó còn
thấp. Trong tương lai chúng tôi sẽ cải thiện “trí
tuệ” của Sniffer bằng cách xây dựng nó theo
hướng tiếp cận Machine learning [5].
4. Kết luận
Trong bài báo này, chúng tôi đề xuất và đã
triển khai thành công một mô hình mới trong
việc kết hợp hoạt động giữa IDS và firewall mã
nguồn mở IPTables. Chúng tôi cũng đã xây
dựng được chương trình Sniffer đảm nhận vai
trò IDS của hệ thống mạng. Sự cập nhật bảng
luật này là hoàn toàn tự động nên có tính tức
thời rất cao.
Tài liệu tham khảo
[1] Kanika & Urmila, “Security of Network Using IDS
and Firewall”, International Journal of Scientific
and Research Publications, vol. 3, iss. 6, June 2013.
“Improving network intrusion detection system
performance
through
quality
of
service
Computer and System Sciences, pp. 981-999, vol.
81, iss. 6, September 2015.
Tính chính xác trong việc đưa ra nhận định
về các hành động đáng ngờ của một IDS vừa
phụ thuộc vào việc thu thập và phân tích thông
tin, từ những dòng traffic vào/ra mạng, vừa phụ
thuộc vào khả năng thống kê và dự báo của nó.
Có thể nói, “trí tuệ” của bộ phận này quyết định
rất lớn đến độ chính xác trong việc nhận định
dòng traffic nào là có hành động đáng ngờ
trong số rất nhiều dòng traffic đi qua IDS. Cũng
vậy, với khả năng “giả mạo” và “đánh lừa”
ngày càng cao của hacker trên không gian
[3] D. Ashok Kumar & S.R Venugopala, “Intrusion
Detection Systems: A review”, International Journal
of Advanced Research in Computer Science, vol. 8 ,
no. 8, Octorber 2017.
Science & Engineering, pp. 348-353, August 2018.
Hashida,“Intrusion detection model using machine
learning algorithm on Big Data environment”,
Journal of Big Data, no. 34, September 2018.
Bạn đang xem tài liệu "Tự động hóa việc cập nhật bảng luật lọc gói cho các firewall mã nguồn mở", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
tu_dong_hoa_viec_cap_nhat_bang_luat_loc_goi_cho_cac_firewall.pdf

