CHƯƠNG 6: THỰC NGHIỆM VÀ ĐÁNH GIÁ

Một phần của tài liệu xây dựng hệ thống phát hiện và phòng chống xâm nhập (NIDS) mô phỏng trên phần mềm snort (Trang 74 - 95)

Hình 6.1 Mô hình triển khai snort IDS Mô hình gồm 4 máy: attacker, snortsam, webserver, mailserver. Trong đó:

SnortSam đóng vai trò làm IDS và firewall (iptable) : www.snortsam.com

Máy webserver : www.9xshop.com bị lỗi SQL injection.

Máy mailserver : www.servermail.com cài Mdaemon làm mailserver. Máy attacker cài n m ap để scan webserver.

Cấu hình IP:

Tên computer Card1 ( VMNET 2) Card2 (VMNET 3)

Snort IP: 192.168.1.10 (eth0) SUBN: 255.255.255.0 GW: ... DNS: ... IP: 172.16.1.1 (eth1) SUBN: 255.255.0.0 GW: ... DNS: . . .172.16.1.1... Attacker IP: 192.168.1.100 SUBN: 255.255.255.0 GW: ... DNS: 192.168.1.10 None

None SUBN: 255.255.255.0 GW: 172.16.1.1 DNS: 172.16.1.1 Mail Server None IP: 172.16.1.3 SUBN: 255.255.255.0 GW: 172.16.1.1 DNS: 172.16.1.1 6.2. Cài đặt hệ thống.

(a) Cài đặt các gói phụ thuộc

o libpcap-1.0.0.tar.gz o pcre-7.9.tar.gz

(b) Cài đặt, cấu hình Snort

o Tạo thư mục “snort” trong “/etc” và “/var/log” để lưu cấu hình và ghi file log.

- mkdir /etc/snort - mkdir /var/log/snort

o Vào thư mục chứa source snort( /root/snort), tiến hành giải nén và cài đặt Snort

- Tar xzvf snort-2.8.5.3.tar.gz

- ./configure –with-mysql –enable-dynamicplugin - make && make install

o Copy toàn bộ files trong thư mục etc vừa giải nén vào /etc/snort: - cp /root/snort/etc/ /etc/snort

o Giải nén rules của snort vào /etc/snort - tar zxvf snortrules.tar.gz –C /etc/snort o Sửa files snort.conf:

- var HOME_NET any -> var HOME_NET <địa chỉ mạng> ( ví dụ:192.168.1.0/24)

- var RULE_PATH ../rules -> var RULE_PATH /etc/snort/rules - Bỏ dấu comment (#) trước các dòng:

output alert_unified: filename snort.alert, limit 128 output log_unified: filename snort.log, limit 128

o Vào file snort.conf trong /etc/snort/rules copy tất cả các dòng chứa “include $RULE_PATH/….” vào trong file /etc/snort/snort.conf.

(c) Start Snort ở chế độ NIDS

snort –c /etc/snort/snort.conf –i <eth…> (eth… chính là tên đại diện cho

card mạng mà Snort lắng nghe). Start snort như một dịch vụ:

- Down shell script: wget http://internetsecurityguru.com/snortinit/snort. - Khi down về ta được file index.htm, ta phải sửa file này thành snortd, thêm thuộc tính execute cho snortd và copy vào thư mục /etc/init.d/

- chkconfig snortd on (Snort khởi động cùng với máy tính). - service snortd start

(d) Cài đặt webadmin để quản lý Snort bằng giao diện đồ họa.

o Cài đặt gói webmin-1.420-1.noarch.rpm

Hình 6.2 Quản lý snort bằng giao diện đồ họa

o Vào phần webadmin -> web configure add module snort-1.0.wbm.

Hình 6.3 Quản lý rules trên giao diện đồ họa

(e) Cấu hình database mysql cho Snort

o Tạo user snort:

mysql> create database snort;

>Query OK, 1 row affected (0.01 sec)

mysql> grant INSERT,SELECT on root.* to snort@localhost; >Query OK, 0 rows affected (0.02 sec)

mysql> SET PASSWORD FOR snort@localhost=PASSWORD('password tự chọn');

>Query OK, 0 rows affected (0.25 sec)

mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost;

>Query OK, 0 rows affected (0.02 sec)

mysql> grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort;

>Query OK, 0 rows affected (0.02 sec) mysql> exit

>Bye

o Tạo CSDL cho snort:

+ Vào /root/snort/schema/

+ mysql –u root –p +use snort;

+source create_mysql;

o Sửa file snort.conf:

output database: log, mysql, user=snort password=<pass snort ở trên> dbname=snort host=000.000.000.000

(f) Cài đặt, cấu hình BASE để theo dõi Snort

o Giải nén base-1.3.5.tar.gz vào thư mục (apache) /var/www/html

o Vào thư mục base-1.3.5 đổi file base_conf.php.dist thành base_conf.php. o Edit file base_conf.php:

$BASE_urlpath = "/var/www/html/base-1.3.5"; $DBlib_path = "/var/www/html/adodb/ "; $DBtype = "mysql"; $alert_dbname = "snort"; $alert_host = "localhost"; $alert_port = ""; $alert_user = "snort";

$alert_password = "password snort ở trên";

o Vào browser localhost/base-1.3.5 để setup base

Hình 6.4 Phát hiện xâm nhập trên Base giao diện web

o Ping server snort với gói tin lớn (hoặc dùng các tool scan) để kiểm tra hoạt động của Snort .

Hình 6.5 Phát hiện có người Ping Trong mạng

Hình 6.7 Phát hiện chi tiết tín hiệu giao diện đồ họa

6.3. Viết một số rule cơ bản và Demo chống một số kiểu tấn công.

6.3.1. Chống SQL injection cho web server.

Có 2 cách: cấu hình lại web và viết rule cho Snort. Ở đây chúng tôi chọn cách 2, viết rule cho Snort. Mục tiêu phần này đưa ra là ban đầu admin sẽ viết 1 rule đơn giản để chống SQL injection, attacker vượt qua được rule đó để tấn công vào webserver, admin tiếp tục sửa lại rule để chống lại attacker.

Hình 6.9 Chống SQL injection cho web server o Rule đầu tiên:

alert tcp any any <> 192.168.131.10 80 (msg:"Exploit " union select "! Canh bao! "; content:"union%20select"; sid: 1000; fwsam: src, 1 min; )

Hình 6.10 Phát hiện cảnh báo SQL injection

Rule này sẽ không cho attacker sử dụng câu query “union select” trên URL.

Tuy nhiên rule này có 1 sơ hở là chỉ cấm “union select” mà không cấm “UnioN SeleCt”, hay nói cách khác là không cấm những từ dạng insensitive- case.Từ đó, attacker lợi dụng sơ hở này để vượt qua bằng cách đổi câu truy vấn

o Rule tiếp theo:

Để sửa lại lỗ hổng trên, ta sẽ thêm vào rule 1 option “nocase” để chống lại việc attacker dùng chữ hoa, thường xen kẽ.

alert tcp any any <> 192.168.131.10 80 (msg:"Exploit "union select " defend insensitive-case "; content:"union%20select";nocase; sid: 1001; fwsam: src, 1 min; )

Hình 6.11 Phát hiện tấn công lổ hỏng SQL injection

Nhìn vào rule trên ta thấy khá ổn nhưng thực ra vẫn có chỗ để attacker vượt qua được. Attacker sẽ thêm chuỗi “/**/” (dùng để chú thích trong ngôn lập trình PHP) vào giữa “union select”, bằng cách này attacker sẽ vượt qua được bộ lọc của rule.

o Rule tiếp theo:

Admin sẽ không cho attacker nhập vào các chuỗi xen giữa “union select” bằng các tách “union select” thành 2 từ riêng biệt để lọc.

alert tcp any any <> 192.168.131.10 80 (msg:"Exploit " union select " defend string between "union select"; content:"union"; nocase ; content:"select"; nocase; sid: 1002; fwsam: src, 1 min; )

6.3.2. Chống Ping of Death (Một hình thức của Dos)

Hình 6.14 Chống Ping of Death ( DoS, DDoS )

Hình 6.15 Tín hiệu cảnh báo tấn công ddos

6.3.3. Chống Scan.

Attacker dùng nmap scan webserver, snortsam phát hiện sẽ báo cho firewall block ip của máy attacker và gửi mail lên mail server.

Hình 6.16 Chống scanning port trong mạng lan

Hình 6.18 Thử nghiệm khả năng phát hiện tấn công, cấm ping, khóa IP

6.4. Cập nhật rules tự động (Updating Rules Automatically)

Trước bối cảnh hiện nay mối đe dọa an ninh luôn thay đổi: có khá nhiều lỗ hổng mới và bị khai thác liên tục được công bố. Đối với vấn đề này snort đã tạo ra cho chúng ta những rules sẳn có để cho chúng ta cập nhật, nhưng làm điều này là phải làm thủ công bằng tay là một nhiệm vụ mà không phải nhà quản trị nào có thể quản lý được. vì lý do này, phương pháp cập nhật tự động dựa vào những đoạn mã lập trình trước. nói ngắn gọn là do tính chất thương mại, chúng ta nên thảo luận về sự khác biệt giữa thuê bao VRT và quy tắc người dùng đã đăng ký. Đăng ký VRT cung cấp người dùng đã đăng ký của Snort.org với ngay lập tức truy cập nhiều nhất lên đến nay Sourcefire VRT Certified Rules có sẵn với chi phí thuê bao. Như đã được kiểm nghiệm và xác nhận bởi VRT Sourcefire là hiệu quả trong việc ngăn chặn các mối đe dọa liên quan trong quá trình ngăn chặn hiệu quả trên một hệ thống Snort. Quy định người sử dụng đầy đủ VRT chứng nhận và thử nghiệm chỉ được sử dụng 30 ngày đối với bảng không có tính phí.

Đối với người dùng gia đình và một số tổ chức, việc dùng thử 30 ngày trong thời gian này việc bảo vệ chống lại các mối đe dọa mới nhất là một nguy cơ bảo mật có thể chấp nhận được. Ngoài những rules có sẳn tại Snort.org, một số cá nhân bổ sung và các nhóm viết các rules khác nhau của nhiều dự mã nguồn mở cho Snort.

Một trong những đáng chú ý nhất là đang nổi lên mối đe dọa, một dự án mã nguồn mở hỗ trợ bởi một số người đóng góp vào danh sách gửi thư snort. Có các nguồn khác của các quy tắc trên web, một số là tự do sẵn có, những người khác với chi phí. Trước đây, Snort.org và Sourcefire đã đề nghị sử dụng Oinkmaster, nhưng bây giờ Pulled_Pork được khuyến khích người sử dụng nên dùng. Pulled_Pork có một số lợi thế qua Oinkmaster, chủ yếu là xung quanh khả năng của người sử dụng xử lý các rules cho các đối tượng chia sẻ sử dụng trên mạng. Chia sẻ đối tượng những rules đã được giới thiệu trong snort-2.6.0 vào đầu năm 2006 để cung cấp một phương tiện để che khuất các cơ chế phát hiện chính xác được sử dụng trong quy tắc và cho phép cho các tiêu chí phát hiện linh hoạt hơn.

Đối với hầu hết các phần, các quy tắc này không có gì khó hiểu là vì hợp đồng giữa Sourcefire và các nhà cung cấp phần mềm khác nhau cung cấp thông báo tiên tiến của các lỗ hổng. Ngoài ra, VRT Sourcefire cung cấp quy tắc các lỗ hổng không báo trước đã phát hiện ra thông qua nghiên cứu. Để tự động cập nhật các rules cho hệ thống của bạn, bạn sẽ cần một oinkcode.

Hình 6.19: Đăng ký account Snort.

Oinkcode". Nếu bạn sử dụng free trên oinkcodes: bạn sẽ chỉ được phép tải về các rules snort một lần một rules sau 15 phút mới được tiếp tục.

Hình 6.20: Đăng nhập vào hệ thống Sourcefire Snort.

Điều này là để ngăn chặn từ chối các cuộc tấn công dịch vụ hoặc người sử dụng suy nghĩ làm cho phần tải của snort.org không có sẵn cho người dùng khác.

Để có được Pulled_Pork chạy trên hệ thống CentOS, chúng tôi đã xây dựng ở đây, hãy làm theo các bước sau[13]:

• Download Pulled_Pork: wget http://pulledpork.googlecode.com/files/

• pulledpork-0.6.1.tar.gz

• cd /root/softsnort

• tar zxvf pulledpork-0.6.1.tar.gz

• cd pulledpork-0.6.1/etc

• vim pulledpork.conf

• Tìm oinkcode. Thay thế với oinkcode của riêng bạn.

• Find and uncomment the line that reads ips_policy=security.

• Find and change the rule_path to /etc/snort/rules/snort.rules

• Find and change local_rules path to /etc/snort/rules/local.rules

• Find and change sid_msg path to /etc/snort/sid-msg.map.

• Find and change config_path to /etc/snort/snort.conf

• Find and change sostub_path to /etc/snort/rules/so_rules.rules

• Find and change the distro to Centos-5-8

• Find pid_path. Change the statement to read “pid_path=/var/run/

• snort_eth0.pid,/var/run/barnyard2_eth0.pid”.

• save & exit.

Bây giờ chúng ta sẽ phải cài đặt CPAN, Perl toàn diện lưu trữ mạng. Nó có thể

được thực hiện từ CLI (command line interface), nhưng nó dễ dàng hơn nhiều từ giao diện bằng cách vào System > Adminstration > Add/Remove Software. Tìm kiếmCPANvà chọn sauđây[13]:

• perl-App-cpanminus • perl-parse-CPAN-meta • perl-pip

• perl-CPANPLUS

khi cài đặt, chúng sẽcầnmột số mô-đun bổsung. Để có thể chạy được chương trình nó cần những thư viện tham chiếu và thư viện lưu log sauđây:

Điều này sẽ gây ra một kịch bản cài đặt để chạy với một số câu hỏi và câu trả lời mặc định đề nghị. Chấp nhận các mặcđịnh và không được quan tâm với những gì xuất hiệnlàmộtsốthông báo lỗi.

• Install Test::More • Install Crypt::SSLeay • Install LWP::Simple • exit

Tiến hành save file pulledpork.conf và copy nó cho vào thư mục /etc/snort/

Đồng thời copy thư mục /softsnort/ pulledpork-0.6. 1/*.* /usr/local/pulledpork-0.6.1 Sau khi kiểm tra tất cả các dịch vụ hoạt động tốt bây giờ thử nghiệm các ứng dụng cập nhật rules snort tự động bằng cách chạy lệnh sau:

Hình 6.22 Cập nhật rules tự động trong snort[13].

Sau khi chạy chương trình bạn nhìn thấy “He thong tat ca cac rules duoc cap nhat thanh cong”, Pulled_Pork đã hoàn tất việc cập nhật các rules trong hệ thống hoàn toàn tự động khi hệ thống phát hiện có rules mới trên web của snort[13].

Ngoài ra chúng ta cũng có thể sử dụng crontab để cấu hình file pulledpork.conf chạy chung với hệ thống như sau:

#crontab -e

0 2 * * * /usr/local/pulledpork-0.6.1/pulledpork.pl -c /etc/snort/pulledpork.conf -H -v >> /var/log/pulledpork 2>&1 #Update Snort Rules

Hình 6.23 Hệ thống rules trong snort đã cập nhật thành công[13].

6.5. Kết luận

Chương trình được đưa vào thực nghiệm với hệ thống mạng Lan và đã thử nghiệm một số cuộc tấn công scan quét port bằng nmap phát hiện ngay cảnh báo qua Base của Snort, cho chúng ta quản lý snort bằng giao diện đồ họa và đồng thời in ra được báo báo đánh giá được hệ thống an toàn hay không và bị bao nhiêu đợt tấn công từ mạng. Cảnh báo cho thấy phát hiện tấn công khá chính xác, đồng thời phát hiện được trường hợp có máy ping vào hệ thống hoặc truy cập web từ trong ra ngoài. Đồng thời cho phép hệ thống cập nhật rules trong snort tự động khi trên hệ thống VRT sourcefire hệ thống cập nhật rules mới thì chương trình tự động kiểm tra và tự động cập nhật hệ thống[13].

CHƯƠNG 7: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Một phần của tài liệu xây dựng hệ thống phát hiện và phòng chống xâm nhập (NIDS) mô phỏng trên phần mềm snort (Trang 74 - 95)