6 Các công trình nghiên cứu liên quan
3.3 Vấn đề của Snort và khả năng triển khai
3.3.1 Lợi ích của Snort
Snort mang lại nhiều lợi ích phù hợp cho nhiều công ty vì nhiều lý do: + Giá cả.
Là một phần mềm mã nguồn mở nên không phải tốn chi phí về bản quyền.
+ Ổn định, nhanh, mạnh mẽ.
Snort nhỏ gọn, nhanh, không chiếm dụng nhiều băng thông đường truyền. + Tính năng tiền xử lý.
Dùng để xử lý trước các thông điệp (message) trong mạng ở thời gian thực, làm tăng khả năng nhận dạng các gói tin khả nghi, tăng khả năng nhận diện kẻ tấn công dùng các kĩ thuật tấn công nhằm đánh lạc hướng IDS.
+ Tính uyển chuyển.
Có thể dễ dàng thiết lập những luật (rules) cho Snort phù hợp với thực trạng của công ty. Có thể dùng các công cụ để quản lý tập trung như ACID, BASE hay SnortCenter. Nhiều Scripts có thể được tích hợp để mở rộng chức năng Snort có thể tạo những danh sách điều khiển truy cập (Access Control List) tự động. Trong phạm vi luận văn này, tác giả đi sâu về sự kết hợp Snort với BASE sau đó tích hợp vào giao diện quản lý chung của Cacti và phát báo động qua giao diện BASE, Email và SMS. Ngoài ra còn kết hợp Snort với phần mềm nguồn mở Fwsnort để chống lại các cuộc tấn công xâm nhập. Các luật trong
46
Snort được Fwsnort chuyển thành các luật trong Iptables để ngăn chặn một số dạng tấn công.
+ Được hỗ trợ bởi cộng đồng mã nguồn mở.
Snort là sản phẩm nguồn mở nên được hỗ trợ rất nhiều bởi cộng đồng người sử dụng mã nguồn mở.
3.3.2 Đánh giá tập luật của Snort
Tập luật trên Snort được cập nhật thường xuyên nên khả năng phát hiện các dấu hiệu tấn công là khá tốt. Người quản trị mạng cũng có thể tự bổ sung những luật mới vào tập luật đã có sẵn. Vì vậy, tập luật của Snort có tính mở. Do đó Snort rất phù hợp cho việc nghiên cứu và phát triển. Có rất nhiều sản phẩm thương mại trên thị trường phát triển từ Snort: Sourcefire, O2Security, Astaro
3.4 Fwsnort chuyển đổi tập luật từ Snort sang Iptables
Fwsnort hay cũng được gọi là Firewall Snort là phần mềm nguồn mở có chức năng chuyển các luật trong Snort thành các luật trong Iptables. Sự kết hợp này giúp cho những xâm nhập được Snort phát hiện sẽ được ngăn chặn bởi Iptables tạo thành Hệ thống phát hiện và phòng chống xâm nhập (IDS/IPS)
3.5 Hệ thống giám sát trạng thái hoạt động thiết bị và dịch vụ - Nagios
Nagios là một phần mềm mã nguồn mở hỗ trợ trong việc giám sát hoạt động của các thiết bị và các dịch vụ trong mạng. Nagios giúp giám sát hoạt động một số thiết bị trung tâm trong mạng như Server, Switch, Router,... Đồng thời kết hợp với bộ phận phát cảnh báo qua SMS, phát cảnh báo trong trường hợp một thiết bị ngưng hoạt động hoặc một dịch vụ mạng ngưng hoạt động. Nagios giám sát các thiết bị mạng thông qua các giao thức ICMP, SNMP, … để theo dõi trạng thái hoạt động của các thiết bị. Đồng thời, Nagios còn cho phép thiết lập cơ chế giám sát hoạt động của các dịch vụ mạng. Các dịch vụ phổ biến được giám sát như: HTTP FTP, SMTP, POP3, …
Hình 3.2 Mô hình dịch vụ Nagios giám sát[8]
Để giám sát các host Windows, chúng ta có thể sử dụng trực tiếp thông qua giao thức SNMP hoặc sử dụng phần mềm NSClient++ (tích hợp SNMP) để thu thập thông tin hơn từ máy Windows.
Hình 3.3 Mô hình theo dõi các dịch vụ trên Windows qua NSClient[13] Cũng tương tự như vậy, chúng ta có thể sử dụng SNMP để giám sát các máy Linux qua việc cài đặt gói NRPE (tích hợp SNMP) để giám sát host và các dịch vụ trên máy Linux.
48
Bên cạnh việc giám sát các máy chủ hệ điều hành Windows và Linux, Nagios còn giám sát việc hoạt động của các thiết bị mạng khác như Router, Switch, Printer
Hình 3.5 Nagios giám sát máy in[13] Giám sát Router, Switch
Hình 3.6 Nagios giám sát Router và Switch[13]
Các dịch vụ mạng phổ biến như: HTTP, FTP, SMTP, POP3 ..v…v… cũng sẽ bị giám sát bởi Nagios.
Hình 3.7 Nagios giám sát dịch vụ mạng và thiết bị mạng.
Ngoài ra Nagios còn vẽ sơ đồ hiển thị trạng thái hoạt động của các host đang tham gia trong hệ thống mạng.
Hình 3.8 Sơ đồ trạng thái các host hoạt động trên mạng.
Ngoài khả năng giám sát các thiết bị, dịch vụ mạng. Khi được tích hợp cùng với phần mềm Cacti, Nagios sẽ có thêm một vài tính năng trong đó đáng kể nhất vẫn là gửi cảnh báo bằng email, SMS cảnh báo các thay đổi trong hệ thống thông qua một gateway SMS.
50
Hình 3.9 Nagios gửi cảnh báo qua email hoặc SMS
Tham số trạng thái hệ thống được sử dụng làm đối số trong việc gửi cảnh báo bao gồm:
- Tham số dịch vụ: $SEVERVICESTATE$, $SERVICESTATETYPE$, SERVICCEATTEMMPT$
- Tham số cho host: $HOSTSTATE$, $HOSTSTATETYPE$, $HOSTSTATEATTEMP$.
3.6 Hệ thống giám sát lưu lượng – Cacti
Cacti là một phần mểm nguồn mở hỗ trợ trong việc giám sát các lưu lượng mạng. Cacti trong hệ thống được dùng để giám sát lưu lượng qua các Switch trung tâm, Router và các Server và lưu lượng kết nối giữa các thiết bị trong hệ thống mạng. Hoạt động của Cacti được thể hiện như sau:
Hình 3.10 Mô hình hoạt động của Cacti
Thu thập dữ liệu: Cacti thu thập dữ liệu thông qua poller. Poller là một ứng dụng hoạt động theo những khoảng thời gian xác định. Trong Unix/Linux thì Poller được thiết lập từ chương trình lập lịch crontab. Cacti thể hiện lưu lượng qua các đồ thị trực quan, thời gian thực. Điều này giúp cho người quản trị theo dõi được tình trạng hoạt động của các thiết bị và dịch vụ trong hệ thống và phát hiện những bất thường xảy ra. Những bất thường này có thể là những dấu hiệu của tấn công xâm nhập hoặc sự quá tải của một số thiết bị mạng trong hệ thống.
Cacti sử dụng giao thức SNMP để thu thập thông tin từ các thiết bị, lưu trữ thông tin và vẽ hình trên các đồ thị.
Hình 3.11 Trao đổi thông tin SNMP giữa Cacti và thiết bị[9]
Lưu trữ dữ liệu: để có thể tạo ra những đồ thị về trạng thái hoạt động của các thiết bị cần giám sát, Cacti phải cần thu thập và lưu trữ dữ liệu. Nếu là một hệ thống mạng lớn thì yêu cầu phải có phương pháp quản lý dữ liệu cho việc theo dõi trạng thái hoạt động của thiết bị. Trong mô hình thực nghiệm của luận văn này, dữ liệu thu thập được từ SNMP được lưu trữ vào cơ sở dữ liệu của MySQL.
Hình 3.12 Dữ liệu Cacti thu thập được qua SNMP[9]
Trình bày dữ liệu: Sử dụng công cụ RRDTool đề trình bày dữ liệu dưới dạng các đồ thị với cơ sở dữ liệu thu thập được từ SNMP và được lưu trữ trong database.
52
Cacti có khả năng giám sát lưu lượng vào/ra các cổng của thiết bị cần theo dõi; giám sát mức độ hoạt động của CPU và bộ nhớ; cho phép đưa sơ đồ mạng trực quan vào hệ thống và tương tác với mô hình này. Ngoài ra, Cacti phát báo động khi có sự cố, các sự cố này được chỉ ra cho hệ thống như: có một thiết bị đang giám sát ngưng hoạt động, lưu lượng vượt quá một ngưỡng được thiết lập trước…
Hình 3.13 Cacti mô tả lưu lượng bằng đồ thị thời gian thực[9]
Mặc định Cacti có ít tính năng, trong cấu hình mặc định Cacti chỉ hổ trợ 2 mục là Console và Graph. Trong đó, phần Console cho phép điều chỉnh các thông số như chọn thiết bị cần giám sát lưu lượng và hiển thị đồ thị lưu lượng trong phần Graph. Một đặc điểm quan trọng của Cacti là cho phép tích hợp nhiều thành phần khác, cũng như nhiều phần mềm khác vào nó. Đây là một đặc điểm quan trọng cho việc thực hiện ý tưởng thực hiện trong luận văn này là tạo nên một hệ thống tích hợp hỗ trợ trong việc giám sát mạng. Trong luận văn này, tích hợp thêm một số thành phần sau vào Cacti:
- Realtime: hỗ trợ Cacti lấy thông tin theo thời gian thực – lập lịch cho chương trình lấy thông tin từ các thiết bị mạng cần giám sát.
- Settings: Tích hợp thêm một số công cụ cấu hình các tính năng nâng cao. - Manage: Giám sát tình trạng các thiết bị mạng. Phát báo động bằng âm
thanh khi một host ngưng hoạt động.
- Weathermap: cho phép vẽ sơ đồ mạng và giám sát lưu lượng giữa các thiết bị mạng trong hệ thống.
- BASE: Giám sát Snort bằng giao diện Web.
- Nagios: Giám sát cho tiết các host và các dịch vụ mạng. - SSL: sử dụng port 443 (https) khi truy xuất vào Cacti.
Hình 3.14 Cấu hình trong ../var/www/cacti/include/global.php
3.7 Hệ thống báo động qua SMS – Gnokii
Gnokii là một phần mềm mã nguồn mở cho phép giao tiếp với thiết bị GMS/GPRS để phục vụ cho việc nhắn tin SMS.
Tùy vào loại GSM/GPRS được dùng chúng ta có cách can thiệp vào cấu hình Gnokii khác nhau. Trong mô hình thực nghiệm của đề tài sử dụng GSM/GPRS kết nối với máy Linux qua cổng COM. Thiết bị được tiếp nhận qua /dev/ttyS0.
54
Cú pháp sử dụng cho việc nhắn tin qua SMS là:
printf <message> | gnokii --sendsms <số điện thoại>
Cú pháp này được đưa vào chương trình Nagios để hệ thống gửi tự động tin nhắn SMS khi có sự cố (được thiết lập trước) xảy ra. Thiết lập cảnh báo SMS cho Snort trong file SnortNotify.conf
Hình 3.15 Thiết lập cảnh báo SMS cho Snort trong file SnortNotify.conf Các thông số dùng đề cảnh báo và lệnh phát cảnh báo từ Snort (phát cảnh báo xâm nhập), Nagios (phát cảnh báo tình trạng hoạt động của các host và dịch vụ).
3.8 Mô hình đề xuất kết hợp Snort, Fwsnort, Nagios, Cacti
Trong mô hình đề xuất này tạo ra một sự kết hợp các tính năng và quản lý với một giao diện chung trên Cacti. Các thành phần được tích hợp (plugin) và giao diện quản lý của Cacti.
Hệ thống chia thành ba khối chức năng:
+ Bộ phận phát hiện và phòng chống xâm nhập mạng
+ Bộ phận giám sát trực quan hệ thống: giám sát lưu lượng qua các cổng của Router, Switch, Server, hoạt động của CPU, Bộ nhớ,… ;giám sát các một số
dịch vụ mạng: HTTP, FTP,… và giám sát trạng thái hoạt động của các thiết bị mạng.
CHƯƠNG 4: PHÁT TRIỂN ỨNG DỤNG HỆ THỐNG GIÁM SÁT VÀ PHÁT HIỆN XÂM NHẬP MẠNG DỰA TRÊN MÃ NGUỒN MỞ
Trong chương này, trình bày mô hình đề xuất kết hợp giữa Snort, Fwsnort, Nagios và Cacti tạo ra một hệ thống giám sát mạng một cách trực quan và tiện lợi.
Một số chức năng chính của hệ thống giám sát này là: - Phát hiện các xâm nhập mạng dựa vào Snort - Phòng chống xâm nhập dựa vào Fwsnort
- Theo dõi hoạt động của các thiết bị mạng như Router, Switch, Server và hoạt động của một số dịch vụ mạng thông qua các đồ thị dựa vào Cacti và Nagios
- Phát cảnh báo trong trường hợp có xâm nhập, thiết bị mạng ngưng hoạt động hoặc dịch vụ mạng ngưng hoạt động cho người quản trị mạng qua các hình thức: báo động bằng, web, E-mail và tin nhắn SMS qua điện thoạt di động.
4.1 Mô hình cài đặt thực nghiệm
Hình 4.1 Mô hình cài đặt thực nghiệm Chức năng của Hệ thống giám sát:
- Cảnh báo qua Web, Email và SMS khi thực hiện tấn công vào hệ thống Web server
- Báo động SMS khi một host (Server, Router, Switch…) hoặc một dịch vụ mạng ngưng hoạt động.
- Giám sát lưu lượng mạng qua các cổng giao tiếp trên Router, Switch, Server…hiển thị qua các đồ thị trực quan, thơi gian thực. Giám sát lưu lượng giữa các thiết bị kết nối với nhau một cách trực quan.
4.2 Cài đặt thực nghiệm
Các chương trình phần mềm chính được sử dụng trong hệ thống giám sát: - Snort.
58 - Cacti.
- Nagios.
- SMS Gateway. - Sendmail.
Quá trình cài đặt thực nghiệm được thực hiện theo qui trình tuần tự sau:
4.2.1 Cài đặt Gnokii
Sử dụng phần mềm nguồn mở Gnokii để kết nối đến GSM/GPRS modem. Trong chương trình thực nghiệm này, GSM/GPRS modem kết nối nối máy Cacti server qua cổng COM1 (/dev/ttyS0).[4]
# ./configure # gmake
# gmake install
Sau khi cài đặt xong Gnokii, thiết lập file cấu hình với các thông số sau: -Sử dụng tập lệnh AT: Model AT
-Kiểm tra kết nối đến GSM modem: #gnokii –identify
// Kiểm tra gửi tin nhắn SMS qua dòng lệnh:
#print <message> | gnokii –sendsms <số điện thoại>
Hoặc
#echo <message> | gnokii –sendsms <số điện thoại>
Chi tiết cài đặt và cấu hình Gnokii được trình bày cụ thể trong phụ lục A bài báo cáo này.
4.2.2 Cài đặt Snort
Để cài đặt Snort yêu cầu cần phải cài đặt các gói môi trường như sau: # install mysql, mysql-bench, mysql-server, mysql-devel, mysqlclient10, php- mysql, httpd, gcc, pcre-devel, gd, php-gd, mod_ssl, glib2-devel, gcc-c++, libpcap-devel, php-pear[12]
Các bước cài đặt:
httpd: cài đặt quản lý bằng giao diện web
mysql: tạo CSDL snort để lưu trữ thông tin về những dấu hiệu tấn công mạng.
+ Cài đặt, cấu hình Snort, cập nhật các rules: thiết lập các thông số về địa chỉ mạng cần giám sát (trong trường hợp này là 192.168.7.0/24), thiết lập đường dẫn đến CSDL snort, gán quyền truy xuất cho user snort.
+ Cài đặt, cấu hình adodb và BASE để giám sát Snort qua giao diện Web. + Cài đặt báo động cho Snort khi có tấn công:
Các thông tin thu thập từ Snort và các sự kiện theo dõi được hoạt động theo thời gian thực và được ghi lại trong MySQL. Hệ thống báo động thường xuyên cập nhật các thông tin từ database. Các thông tin cảnh báo được trích ra từ database và đặt vào biến $emailmessage. Thông điệp này được chuyển tới người quản trị mạng qua SMS và E-mail.
+ Gửi thông điệp từ $emailmessage qua SMS
Open (MAIL, “|sendsms –sendsms 0983929445\n”); Printf MAIL “$emailmessage”;
Close(MAIL);
60
open(MAIL, “|$sendmail –t –oi”) printf MAIL, “From: $sender\n”; printf MAIL “Return-Path: $return\n”; printf MAIL “To: $to\n”;
printf MAIL “Subject: $subject\n”; print MAIL “$emailmessage”;
+ Dùng crontab lập lịch cho chương trình lấy thông tin cảnh báo từ Snort chạy 1 phút 1 lần:
+ Nội dung file lập lịch chỉ tới file SnortNotify.pl:
*/1 * * * * /var/snortnotify-v2.1/SnortNotify.pl
+ Khởi động Snort:
#snort –c /etc/snort/etc/snort.conf -i eth0
Chi tiết các bước cài đặt Snort được thể hiện trong phụ lục B. Hướng dẫn cài đặt và cấu hình Snort.
4.2.3 Cài đặt Fwsnort
Trước khi tiến hành cài đặt Fwsnort ta phải cài đặt iptablet lên hệ thống trước, mục đích của Iptablet là sẽ xử lý các cảnh báo của snort và cũng như snort, iptablet của có những tập rule để hoạt động.
[iptablesfw]# tar xfj fwsnort-1.1.tar.bz2 [iptablesfw]# cd /usr/local/src/fwsnort-1.1 [iptablesfw]# ./install.pl
[+] mkdir /etc/fwsnort
[+] mkdir /etc/fwsnort/snort_rules
[+] Installing the IPTables::Parse Perl module
[+] Would you like to download the latest Snort rules from http://www.bleedingsnort.com?
([y]/n)? y
--22:01:11-- http://www.bleedingsnort.com/bleeding-all.rules => `bleeding-all.rules'
Resolving www.bleedingsnort.com... 69.44.153.29
Connecting to www.bleedingsnort.com[69.44.153.29]:80... connected. HTTP request sent, awaiting response... 200 OK
Length: 292,192 [text/plain]
100%[======================================>] 292,192 109.94K/s
22:01:17 (109.77 KB/s) - `bleeding-all.rules' saved [292,192/292,192]
[+] Copying all rules files to /etc/fwsnort/snort_rules [+] Installing snmp.rules [+] Installing finger.rules [+] Installing info.rules [+] Installing ddos.rules [+] Installing virus.rules [+] Installing icmp.rules [+] Installing dns.rules [+] Installing rpc.rules [+] Installing backdoor.rules [+] Installing scan.rules [+] Installing shellcode.rules [+] Installing web-client.rules [+] Installing web-cgi.rules
62
[+] Installing exploit.rules
[+] Installing attack-responses.rules [+] Installing web-attacks.rules
[+] Installing fwsnort.8 man page as /usr/share/man/man8/fwsnort.8 [+] Compressing manpage /usr/share/man/man8/fwsnort.8
[+] Copying fwsnort.conf -> /etc/fwsnort/fwsnort.conf [+] Copying fwsnort -> /usr/sbin/fwsnort
[+] fwsnort will generate an iptables script located at: /etc/fwsnort/fwsnort.sh when executed.
[+] fwsnort has been successfully installed!
Thực hiện đổi các tập luật (rule) trong snort thành những tập luật trong iptable để hoạt động.
Ví dụ: đối với công cụ tấn công Ddos Trin00 có rule_ID trong snort là 237
alert udp $EXTERNAL_NET any -> $HOME_NET 27444 (msg:"DDOS Trin00