Tải bản đầy đủ (.docx) (18 trang)

Cài đặt, tiển khai snort trên linux

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 (534.28 KB, 18 trang )

0

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP. HỒ CHÍ MINH

BÁO CÁO
CƠ SỞ AN TỒN THƠNG TIN

Snort trên Linux

GVHD: Th.S Đặng Văn Thành Nhân
SVTH:

TP.Hồ Chí Minh, 2021


1

LỜI CẢM ƠN
Chúng em xin bày tỏ lịng kính trọng và biết ơn đến thầy đã tận tình giúp đỡ và
hướng dẫn chúng em hoàn thành bài báo cáo này. Nhờ sự giúp đỡ nhiệt lòng của thầy mà
báo cáo đã hồn thành đúng tiến độ đề ra.
Trong q trình thực hiện, nhóm chúng em rất cố gắng. Nhưng cũng khó tránh
khỏi những sai sót, kính mong q thầy cơ và các bạn góp ý thêm. Xin chân thành cảm
ơn!


2

Mục lục
Chương 1: TỔNG QUAN.......................................................................................3


1. Giới thiệu về Snort.............................................................................................3
1.1. Snort là gì?...................................................................................................3
1.2. Triển khai hệ thống Snort.............................................................................3
1.3. Đặc điểm của Snort......................................................................................4
1.4. Luật trong Snort...........................................................................................5
CHƯƠNG 2: THỰC NGHIỆM..............................................................................9
1. Sơ đồ hệ thống....................................................................................................9
2. Cài đặt hệ thống................................................................................................10
2.1. Cài đặt Snort trên Centos 8........................................................................10
2.2. Tiến hành demo..........................................................................................13
CHƯƠNG 3: KẾT LUẬN.....................................................................................15
1. Kết quả đạt được..............................................................................................15
2. Ưu điểm và nhược điểm...................................................................................15
3. Những hạn chế gặp phải...................................................................................16
4. Hướng phát triển...............................................................................................16


3

Chương 1: TỔNG QUAN
1. Giới thiệu về Snort
1.1. Snort là gì?
Snort là một hệ thống phịng chống và phát hiện xâm nhập dựa trên mạng
(IDS/IPS) mã nguồn mở được phát triển bởi Sourcefire. Kết hợp việc kiểm tra dấu hiệu,
giao thức và dấu hiệu bất thường, Snort đã được triển khai rộng khắp trên toàn thế giới.
Với hàng triệu lượt download và hơn 400.000 lượt người dùng đăng ký, Snort đã trở
thành tiêu chuẩn của hệ thống phòng chống và phát hiện xâm nhập.
1.2. Triển khai hệ thống Snort
1.2.1. Yêu cầu phần cứng
Rất khó để đưa ra một yêu cầu chung nhất cho phần cứng để cài đặt Snort vì điều

này còn phụ thuộc vào nhiều yếu tố khác nhau. Hai yếu tố cần quan tâm đến việc lựa
chọn phần cứng cho hệ thống Snort đó là lưu lượng traffic trên hệ thống đối với một
doanh nghiệp lớn như các ISP sẽ khác rất nhiều so với một mạng gia đình (small home).
Để xác định phần cứng cài đặt Snort cho hệ thống có thể trả lời một vài câu hỏi
sau:
 Hệ thống mạng là mạng small home, small bussiness, large enterprise hay là một
ISP.
 Lưu lượng traffic thông thường trong hệ thống là bao nhiêu?
 Lưu lượng traffic giữa hệ thống internal và mạng Internewt bên ngoài là khoảng
bao nhiêu? Và ngược lại?
 Nơi lưu trữ các cảnh báo (alerts) của Snort là ở đâu?
 Thời gian lưu trữ các cảnh báo này là bao lâu?
 Có muốn lưu trữ các gói tin liên quan đến các cảnh báo này hay không?


4

Tuy là Snort khơng có bất kỳ u cầu phần cứng đặc biệt nào, tuy nhiên nếu phần
cứng mạng thì sẽ là một số lợi điểm. Vì Snort là một hệ thống phát hiện xâm nhập dựa
trên mạng nên nếu có một đĩa cứng có dung lượng lưu trữ lớn và tốc độ truy xuất nhanh
thì Snort sẽ hoạt động một cách trơn tru, ngồi ra nếu có u cầu cao thì có thể sử dụng
RAID để lưu trữ.
Cần một card mạng (NIC) tốc độ cao để việc sniffer các gói tin trở nên dễ dàng
hơn. Ví dụ nếu tốc độ card mạng dưới 100Mb/s thì nên sử dụng một card mạng ở tốc độ
100Mb/s. Nếu tốc độ card mạng q thấp thì Snort có thể “bỏ lỡ” một vài gói tin và dẫn
đến thơng tin thu thập bị sai khác. Ngồi ra nên có thêm một card mạng khác kết nối tới
người quản trị thông qua giao thức SSH hoặc qua Web Interface, tránh việc sử dụng
chung với card mạng sniffer gói tin.
Nếu hệ thống mạng lớn, số lượng cảm biến (sensor) nhiều nên cân nhắc việc tăng
RAM cho hệ thống khơng bị lag khi xử lí qua nhiều thơng tin gửi về.

1.2.2. Hệ điều hành
Snort có thể chạy trên nhiều nền tảng hệ điều hành khác nhau. Snort có thể chạy
trên các nền tảng x86 như GNU/Linux, FreeBSD, NetBSD và Windows. Ngồi ra nó cịn
hỗ trợ cả kiến trúc Sparc với các nền tảng hệ điều hành như: Solaris, MacOS-X, HPUX…
1.3. Đặc điểm của Snort
Ở chế độ NIDS, sau khi các gói tin đi vào và vượt qua packet sniffer, dữ liệu sẽ
được gửi thông qua bất kỳ preprocessor nào được cấu hình trong snort.conf. Dữ liệu tiếp
tục đi qua detection engine, kiểm tra xem có phù hợp với các luật trong tập tin snort.conf
hay khơng? Các gói phù hợp sẽ được gửi đến thành phần cảnh báo và ghi lại (alert and
logging) vượt qua bất kỳ out put plug-in đã được chọn, sau đó nó sẽ được ghi lại (log)
hoặc cảnh báo tùy theo cấu hình.
Kiến trúc của Snort gồm 4 phần cơ bản sau:
 The sniffer (Packet Decoder).


5

 The Preprocessor.
 The Detetion Engine.
 The Output.
Hình dưới đây cung cấp một cái nhìn dễ hiểu về kiến trúc và quy trình xử lý của Snort:

Hình 1.1. Kiến trúc và quy trình xử lý của Snort.
 Packet được đưa vào từ trục mạng chính.
 Packet được gửi thơng qua Preprocessor để xác định xem nó có phải là packet hay
khơng và có giữ nó lại hay khơng (preprocessor).
 Tiếp đến packet được sắp xếp theo theo loại, tùy theo việc có phát hiện được xâm
nhập hay khơng mà gói tin có thể được bỏ qua để lưu thơng tiếp hoặc được đưa
vào Log và cảnh báo để xử lý.
 Cuối cùng nhiệm vụ của người quản trị là xác định xem làm gì với nó (ghi lại và

lưu vào cơ sở dữ liệu).
1.4. Luật trong Snort
1.4.1. Giới thiệu
“Luật” trong Snort ta có thể hiểu một cách đơn giản nó giống như các quy tắc và
luật lệ trong thế giới thực. Nghĩa là nó sẽ có phần mơ tả trạng thái và hành động gì sẽ xảy
ra khi trạng thái đó đúng. Một trong những điểm đáng giá nhất của Snort đó là khả năng
cho phép người sử dụng có thể tự viết các luật của riêng mình hoặc tùy biến các luật có


6

sẵn cho phù hợp với hệ thống mạng của mình. Ngoài một cơ sở dữ liệu lớn mà người sử
dụng có thể download từ trang chủ của Snort, người quản trị có thể tự phát triển các luật
cho hệ thống của mình. Thay vì phải phụ thuộc vào nhà cung cấp, một cơ quan bên ngoài,
hoặc phải cập nhật khi có một cuộc tấn cơng mới hay một phương pháp khai thác lỗ hổng
mới được phát hiện. Người quản trị có thể viết riêng một luật dành cho hệ thống của
mình khi nhìn thấy các lưu lượng mạng bất thường và so sánh với bộ luật được cộng
đồng phát triển. Ưu điểm của việc tự viết các luật là có thể tùy biến và cập nhật một cách
cực kỳ nhanh chóng khi hệ thống mạng có sự bất thường.
Ví dụ: “Nếu có người cố gắng mở cửa ơ tơ thì cịi sẽ hú.”
Phân tích ở đây ta hành động “cịi hú” sẽ được thực hiện nếu có dấu hiệu là “có
người cố gắng mở cửa ơ tơ”.
Trong hệ thống mạng cũng vậy, ta không thể sử dụng ngôn ngữ tự nhiên hằng
ngày để mô tả dấu hiệu hay trạng thái của hệ thống mạng được. Ví dụ: Nếu có một kết nối
SSH có địa chỉ IP Public kết nối tới máy chủ web thì chặn lại. Mặc dù đây là một
mô tả khá cụ thể, tuy nhiên Snort lại không thể hiểu được. Luật trong Snort sẽ giúp
ta dễ dàng mô tả dấu hiệu này theo ngôn ngữ mà Snort có thể hiểu được. Để biết cách
viết một luật từ các dữ liệu của hệ thống ta cần phải hiểu cấu trúc của luật trong Snort
như thế nào. Một luật trong Snort được chia thành hai phần đó là phần header và options.
Phần header bao gồm: rule action, protocol, địa chỉ ip nguồn, địa chỉ ip đích, subnetmask,

port nguồn, port đích. Phần options bao gồm các thơng điệp cảnh báo, thơng tin các phần
của gói tin sẽ được kiểm tra để xác định xem hành động nào sẽ được áp dụng.
Rule Option
Rule Header


7

1.4.2. Rule Header

Hình 1.2 Cấu trúc luật trong Snort
 Rule Action: Phần Header sẽ chứa các thông tin xác định ai, ở đâu, cái gì của một
gói tin, cũng như phải làm gì nếu tất cả các thuộc tính trong luật được hiện lên.
Mục đầu tiên trong một luật đó chính là phần rule action, rule action sẽ nói cho
Snort biết phải làm gì khi thấy các gói tin phù hợp với các luật đã được quy định
sẵn. Có 5 hành động mặc định trong Snort đó là: alert (cảnh báo), log (ghi lại log),
pass (cho qua), active (kích hoạt), dynamic. Ngồi ra nếu chạy Snort ở chế độ
inline cịn có thêm các tùy chọn bổ sung như drop, reject và sdrop.
 Protocol: Trường tiếp theo trong luật đó là protocol. Có 4 giao thức mà Snort hiện
đang phân tích các hành vi bất thường đó là TCP, UDP, ICMP và IP.


IP Address: Mục tiếp theo của phần header đó là địa chỉ IP. Các địa chỉ này dùng
để kiểm tra nơi đi và nơi đến của một gói tin. Địa chỉ ip đó có thể là địa chỉ của
một máy đơn hoặc cũng có thể là địa chỉ của một lớp mạng. Từ khóa “any” được
sử dụng để định nghĩa một địa chỉ bất kỳ. Một địa chỉ ip sẽ được viết dưới dạng
ip_address/netmask. Điều này có nghĩa là nếu netmask là /24 thì lớp mạng đó là
lớp mạng C, /16 là lớp mạng B hoặc /32 là chỉ một máy đơn. Ví dụ: địa chỉ
192.168.1.0/24 có nghĩa là một dải máy có địa chỉ IP từ 192.168.1.1192.168.1.255. Trong hai địa chỉ IP trong một luật Snort thì sẽ có một địa chỉ IP
nguồn và một địa chỉ IP đích. Việc xác định đâu là địa chỉ nguồn, đâu là địa chỉ

đích phụ thuộc vào “→”. Ngồi ra tốn tử phủ định có thể được áp dụng cho việc
định địa chỉ IP. Có nghĩa là khi sử dụng tốn tử này thì Snort sẽ bỏ qua việc kiểm
tra địa chỉ của gói tin đó. Tốn tử đó là “!”. Ngồi ra ta có thể định nghĩa một
danh sách các địa chỉ IP bằng cách viết liên tiếp chúng cách nhau bởi một dấu “,”.


8

 Port: Port có thể được định nghĩa bằng nhiều cách. Với từ khóa “any” giống như
địa chỉ IP để chỉ có thể sử dụng bất kỳ port nào. Gán một port cố định ví dụ như
gán kiểm tra ở port 80 http hoặc port 22 ssh. Ngoài ra ta cũng có thể sử dụng tốn
tử phủ định để bỏ qua một port nào đó hoặc liệt kê một dải các port.
 Điều hướng: Toán tử hướng “→” chỉ ra đâu là hướng nguồn, đâu là hướng đích.
Phần địa chỉ IP và port ở phía bên trái của tốn tử được coi như là địa chỉ nguồn và
port nguồn, phần bên phải được coi như địa chỉ đích và port đích. Ngồi ra cịn có
tốn tử “<>” Snort sẽ xem cặp địa chỉ/port nguồn và đích là như nhau. Nghĩa là nó
sẽ ghi/phân tích ở cả hai phía của cuộc hội thoại.
 Activate/Dynamic rule: Cặp luật này cung cấp cho Snort một khả năng rất mạnh
mẽ. Active rule giống như alert rule nhưng khác một điểm là nó có thêm trường:
activates. Dynamic rule giống như log rule nhưng nó có thế trường: activated_by
và count.
1.4.3. Rule Options
Rule options chính là trung tâm của việc phát hiện xâm nhập. Nội dung chứa các
dấu hiệu để xác định một cuộc xâm nhập. Nó nằm ngay sau phần Rule Header và
được bọc bởi dấu ngoặc đơn “()”. Tất cả các rule options sẽ được phân cách nhau
bởi dấu chấm phẩy “;”, phần đối số sẽ được tách ra bởi dấy hai chấm “:”.
Có 4 loại rule options chính bao gồm:
- General: Tùy chọn này cung cấp thơng tin về luật đó nhưng khơng có bất cứ
ảnh hưởng nào trong quá trình phát hiện.
- Payload: Tùy chọn liên quan đến phần tải trong một gói tin.

- Non-payload: Bao gồm các tùy chọn không liên quan đến phần tải của gói
tin (header).
- Post-detection : Các tùy chọn này sẽ gây ra những quy tắc cụ thể sau khi
một luật đã được kích hoạt.


9

CHƯƠNG 2: THỰC NGHIỆM
1. Sơ đồ hệ thống
Tổng quát yêu cầu bài tốn: Sử dụng cơng cụ nào đó để phát hiện và báo cáo
những máy tính bên ngồi kết nối và sử dụng internet hoặc tấn công vào hệ thống mạng.
IDS và IPS là công cụ cần thiết cho việc phát hiện xâm nhập và ngăn chặn. Nhóm em sẽ
sử dụng và demo bằng Snort - một công cụ phổ biến và dễ sử dụng.
Do bị hạn chế về điều kiện phần cứng thật. Nhóm sẽ sử dụng phần mềm tạo máy
ảo VMware để tạo ra một máy ảo chạy Centos 8. Và dùng Window server 2012 đóng vai
là một máy client thực hiện lệnh ping hay truy cập trang web, công việc của máy Server
là ghi lại những cảnh báo đó.
Yêu cầu máy ảo sử dụng Centos 8.
Sử dụng mạng mặc định cho máy ở chế độ NAT.

Hình 2.1 Mơ hình thực nghiệm
Hệ thống demo bao gồm:
Vmware Workstation Pro 14, Centos 8, Snort 2.9.18.1 + Rule cho Snort, WinPcap
4.1.3.


10

2. Cài đặt hệ thống

2.1. Cài đặt Snort trên Centos 8.
Bước 1: Cập nhật và cài đặt các thư viện cần thiết
dnf update -y
dnf install epel-release -y
dnf install gcc gcc-c++ libnetfilter_queue libnetfilter_queue-devel git flex bison
zlib zlib-devel pcre pcre-devel libdnet libdnet-devel tcpdump libnghttp2 wget xz-devel
lzma mysql-devel* autoconf libtool zlib* libxml2 libpcap* pcre* curl daq -y
dnf --enablerepo=powertools install libdnet-devel
dnf groupinstall -y "Development Tools"
Bước 2: Cài đặt DAQ
dnf install />dnf --enablerepo=forensics install daq

 Cập nhật lại đường dẫn thư viện:


11

echo >> /etc/ld.so.conf /usr/lib
echo >> /etc/ld.so.conf /usr/local/lib && ldconfig

 kiểm tra libdnet:
ln -s /usr/lib64/libdnet.so.1.0.1 /lib64/libdnet.1

Bước 3: Cài đặt Snort
dnf

install

/>
1.centos8.x86_64.rpm


 Tạo một số thư mục để lưu cấu hình snort
mkdir -p /etc/snort/rules
mkdir /var/log/snort
mkdir /usr/local/lib/snort_dynamicrules

 Phân quyền lại cho các thư mục vừa tạo
chmod -R 5755 /etc/snort
chmod -R 5755 /var/log/snort
chmod -R 5755 /usr/local/lib/snort_dynamicrules
chown -R snort:snort /etc/snort
chown -R snort:snort /var/log/snort


12

chown -R snort:snort /usr/local/lib/snort_dynamicrules

 Tạo các tập tin cần thiết
touch /etc/snort/rules/white_list.rules
touch /etc/snort/rules/black_list.rules
touch /etc/snort/rules/local.rules
touch /var/log/snort/snort.log

 Tắt các rule không dùng
sed -i 's/include \$RULE\_PATH/#include \$RULE\_PATH/' /etc/snort/snort.conf

 Chỉnh sửa tập tin snort.conf
vi /etc/snort/snort.conf
----> chỉnh sửa các dòng

45 ipvar HOME_NET <Địa chỉ internal>
48 ipvar EXTERNAL_NET !$HOME_NET

104 var RULE_PATH /etc/snort/rules
105 var SO_RULE_PATH /etc/snort/so_rules


13

106 var PREPROC_RULE_PATH /etc/snort/preproc_rules
113 var WHITE_LIST_PATH /etc/snort/rules
114 var BLACK_LIST_PATH /etc/snort/rules

547 include $RULE_PATH/local.rules

521 output unified2: filename snort.log, limit 128

Bước 4: Viết rule
 vào vi /etc/snort/rules/local.rules để viết rule
alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001;
rev:001;)

2.2. Tiến hành demo
Trên máy Centos 8 ta chạy dòng lệnh:
snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i ens33

Trên Client ta ping sang máy Centos 8


14


Kết quả

.


15

CHƯƠNG 3: KẾT LUẬN

1. Kết quả đạt được
Trong quá trình thực hiện làm đề tài, chúng em đã được học thêm rất nhiều kiến
thức. Chúng em đã nghiên cứu được các kiến thức cơ bản về an ninh mạng, các kiểu tấn
công và đặc biệt là các giải pháp an ninh mạng phổ biến hiện nay. Ngồi ra, nhóm chúng
em cũng đã tìm hiểu sâu được giải pháp an ninh mạng bằng cách tìm hiểu phần mềm
Snort cùng các kiến thức cơ bản làm nền tảng để có thể xây dựng được một hệ thống phát
hiện xâm nhập IDS, mặc dù chỉ là cơ bản nhưng đó là cả nỗ lực cố gắng nghiên cứu của
nhóm.
Ngồi những kiến thức chun ngành, nhóm em cịn học được thêm cách làm việc
nhóm, cách phân chia công việc phù hợp hơn.

2. Ưu điểm và nhược điểm
Ưu điểm:
 Các giải pháp an ninh mạng hiện nay tương đổi đa dạng.
 Tính năng an ninh mạng tốt
 Dễ quản trị
 Kiến trúc an ninh không quá phức tạp.
 Dễ cài đặt, mở rộng.
 Chi phí đầu tư khơng cao.
Nhược điểm:

-

Của phần mềm Snort:
 Có thể xaỷ ra trường hợp báo động giả, tức là không có dấu hiệu bất thuờng
mà IDS vẫn báo (False Positive).
 Khơng thể phân tích được các lưu lượng mã hóa như SSH, IPSec, SSL,
v.v...


16

 NIDS địi hỏi phải ln được cập nhật các dấu hiệu tấn công mới nhất để
thực sự hoạt động hiệu quả.
 Không thể cho biết việc mạng bị tấn cơng có thành cơng hay khơng, để
người quản trị tiến hành bảo trì hệ thống.
 Một trong những hạn chế là giới hạn băng thông. Những bộ thu thập dữ liệu
phải thu thập tất cả lưu lương mạng, sắp xếp lại và phân tích chúng. Khi tốc
độ mạng tăng lên thì khả năng của bộ thu thập thơng tin cũng vậy. Một giải
pháp là đảm bảo cho mạng được thiết kế chính xác.
-

Của nhóm và bài báo cáo:
 Chưa làm snort phát thông báo trực tiếp được mà phải vào file alert.ids để
xem.
 Khả năng đọc hiểu tiếng Anh còn hạn chế, nên khó khăn trong việc tiếp cận
các tài liệu dồi dào từ nước ngồi.
 Demo cịn có phần đơn giản, chỉ là phát hiện ping.

3. Những hạn chế gặp phải
Trong q trình thực hiện đồ án, nhóm chúng em đã cho những mặt hạn chế như:

-

Hạn chế về kiến thức và kinh nghiệm thực tế.

-

Đề tài tìm hiểu khá rộng nên khó khăn trong việc tìm kiếm và chọn lọc thơng tin
chính xác.

-

Cịn gặp nhiều khó khăn trong việc làm thực nghiệm.

-

Thời gian thực hiện đồ án không ít nhưng cũng chưa đủ để tìm hiểu đầy đủ.

-

Hạn chế về thời gian thảo luận nhóm.

4. Hướng phát triển
Vì thời gian tìm hiểu cịn hạn hẹp nên thực nghiệm trên vẫn chưa hồn thiện tốt.
Trong tương lai nhóm em sẽ cố gắng tìm hiểu thêm nhiều kiến thức mới để có thể tìm
hiểu đầy đủ và tối ưu các giải pháp, đáp ứng được nhu cầu an ninh mạng.


17




×