Mô hình xử lý của Snort, MySQL, Base

Một phần của tài liệu Tìm hiểu và triển khai Snort SnortSam (Trang 85 - 106)

6.2. Cài đặt Snort và SnortSam

Các gói chính:  pcre, pcre-devel.  flex.  bison  zlib, zlib-devel.  gcc, gcc-c++, make  daq-1.1.1  libdnet  snortrules-snapshot-2931  snort-2.9.3.1

73  barnyard2-1.9

Cơ sở dữ liệu: MySQL:  mysql, mysql-server.  mysql-devel Gói hỗ trợ quản trị:  httpd.  php and php-devel.  php-cli  php-pear  php-gd  php-mysql Công cụ quản trị:  base-1.4.5  adodb517  php-image-graph và php-image-canvas

6.2.1. Cài đặt các gói bắt buộc và Snort

Tạo thư mục cho việc cài đặt:

# cd /usr/src # mkdir snorttemp # cd snorttemp Tải tất cả các gói về: # wget http://www.snort.org/dl/snort-current/snort- 2.9.3.1.tar.gz # wget http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz # wget http://www.snort.org/sub-rules/snortrules-snapshot- 2931.tar.gz/<oinkcode> -O snortrules-2931.tar.gz

74 # wget http://www.snort.org/dl/snort-current/daq-1.1.1.tar.gz # wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz # wget http://www.securixlive.com/download/barnyard2/barnyard2- 1.9.tar.gz Giải nén các gói: # ls # tar -xzvf daq-1.1.1.tar.gz # tar -xzvf libdnet-1.12.tgz # tar -xzvf libpcap-1.3.0.tar.gz # tar -xzvf snort-2.9.3.1.tar.gz # tar -xzvf snortrules-2931.tar.gz # tar -xzvf barnyard2-1.9.tar.gz

Kiểm tra các gói đã giải nén và sau bước này có thể xóa các tập tin nén vừa được tải về. Cài đặt libpcap. # cd libpcap-1.3.0 # ./configure # make # make install # cd /usr/lib64/ # rm libpcap.so.1 # rm libpcap.so.1.0.0 # ln -s /usr/local/lib/libpcap.so.1.3.0 /usr/lib64/libpcap.so.1.3.0 # ln -s /usr/lib64/libpcap.so.1.3.1 /usr/lib64/libpcap.so.1 # ln -s /usr/lib64/libpcap.so.1 /usr/lib64/libpcap.so Cài đặt libdnet: # cd libdnet-1.12

75

# ./configure && make && make install

Cài đặt daq:

# cd daq-1.1.1

# ./configure && make && make install

Cài đặt Snort từ mã nguồn.

# cd snort-2.9.3.1

# ./configure --enable-zlib -–enable-sourcefire && make && make install

# groupadd snort

# useradd –g snort snort –s /sbin/nologin

Tạo các thư mục. # mkdir /etc/snort # mkdir /etc/snort/rules # mkdir /etc/snort/preproc_rules # mkdir /etc/snort/so_rules # mkdir /usr/local/lib/snort_dynamicrules # mkdir /var/log/snort

# chown –R snort:snort /var/log/snort

Copy các tập tin cần thiết và các luật.

# cd snort-2.9.3.1/etc # cp * /etc/snort # cd ../../ # cd rules # cp * /etc/snort/rules # cd ../preproc_rules # cp * /etc/snort/preproc_rules

76

# cp ../so_rules/precompiled/RHEL-6-0/x86_64/2.9.3.1/* /usr/local/lib/snort_dynamicrules

# touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules

Chỉnh sửa tập tin cấu hình

# vi /etc/snort/snort.conf

Tập tin cấu hình của Snort về cơ bản sẽ được chia thành từng phần như sau.  Thiết lập các biến mạng.

 Cấu hình bộ giải mã.

 Cấu hình cơ bản bộ phát hiện xâm nhập (detection engine).  Cấu hình nạp các thư viện động.

 Cấu hình các tiền xử lý (preprocessors)  Cấu hình các output plug-ins..

 Tùy chỉnh các thiết lập về các luật.

 Tùy chỉnh tiền xử lý và và bộ giải mã luật. (preprocessors and decode rule).  Tùy chỉnh các thiết lập chia sẻ đối tượng luật.

Sửa đổi những dòng sau đây.

ipvar HOME_NET 172.16.0.0/24 ipvar EXTERNAL_NET !$HOME_NET var RULE_PATH /etc/snort/rules

var SO_RULE_PATH /etc/snort/so_rules

var PREPROC_RULE_PATH /etc/snort/preproc_rules output unified2: filename snort.log, limit 128 dynamicpreprocessor directory

77

dynamicengine

/usr/local/lib/snort_dynamicengine/libsf_engine.so

dynamicdetection directory /usr/local/lib/snort_dynamicrules

Start và kiểm thử hệ thống.

# cd /usr/local/bin # snort –V

Trường hợp bị lỗi liên quan đến các thư viện chạy lệnh sau và thử lại Snort.

# ldconfig # snort -V

# snort -c /etc/snort/snort.conf --dump-dynamic- rules=/etc/snort/so_rules

6.2.3. Cấu hình MySQL Server

# cd /usr/bin

# /etc/init.d/mysqld start

# mysqladmin –u root password ‘password’

# mysql -u root -p # Hệ thống sẽ nhắc nhở đặt password trong quá trình cài đặt

mysql> create database snort; # Tạo cơ sở dữ liệu để lưu trữ các tập tin log của snort.

mysql> CREATE USER snort@localhost;# Tạo user mới cho snort.

mysql> SET PASSWORD for

snort@localhost=PASSWORD('snortpass');# Tạo password cho Snort

user.

mysql> GRANT INSERT, SELECT on root.* to snort@localhost;#

Gán quyền cho user.

mysql> GRANT CREATE, INSERT, SELECT, DELETE, UPDATE on

78

mysql> exit # đăng xuất

# cd /usr/bin # Di chuyển vô thư mục cài đặt MySQL.

# mysql -D snort -u root -p < /usr/src/snorttemp/barnyard2- 1.9/schemas/create_mysql

Chạy câu lệnh sau để tạo bảng dữ liệu, nhập mật khẩu khi được yêu cầu. Kiểm tra bảng dữ liệu vừa được tạo.

# mysql -u root -p (nhập mật khẩu khi được yêu cầu)

mysql> use snort; mysql> show tables;

exit;

6.2.4. Cài đặt và cấu hình Barnyard2

Cài đặt Barnyard2 từ mã nguồn.

# ./configure --with-mysql -–with-mysql-

libraries=/usr/lib64/mysql && make && make install

Bước tiếp theo là tạo các thư mục và di chuyển tập tin cấu hình. Giả sử đang đứng ở thư mục chứa mã nguồn Barnyard2.

# cp etc/barnyard2.conf /etc/snort # Copy tập tin cấu hình của

Barnyard2 đặt vào thư mục cấu hình của Snort.

# mkdir /var/log/barnyard2 # chmod 666 /var/log/barnyard2

# touch /var/log/snort/barnyard2.waldo

# cp sid-msg.map /etc/snort # Với tập tin sid-msg.map nằm trong thư mục etc của gói luật tải về.

Bước tiếp theo là chỉnh sửa tập tin cấu hình của Barnyard2 để chương trình có thể ghi dữ liệu xuống MySQL. Lưu ý là t ập tin c ấu hình của Barnyard2 gồm có phần chính đó là: phần khai báo biến, phần cấu hình input và cấu hình output.

79

# vi /etc/snort/barnyard2.conf

Xác định vị trí đến các tập tin quan trọng của Snort.

config reference_file: /etc/snort/reference.config

config classification_file: /etc/snort/classification.config config gen_file: /etc/snort/gen-msg.map

config sid_file: /etc/snort/sid-msg.map

Cấu hình thư mục sẽ chứa các output log.

config logdir: /var/log/barnyard2

Cấu hình phần hostname và card mạng.

config hostname: localhost config interface: eth0

Chỉnh sửa đường dẫn đến tập tin waldo.

config waldo_file: /var/log/snort/barnyard2.waldo

Cấu hình phần output ghi ra cơ sở dữ liệu MySQL.

Comment tùy chọn alert_fast vì mặc định Barnyard2 sẽ bật tùy chọn này. Thêm một dòng mới để ghi vô cơ sở dữ liệu.

output database: log, mysql, user=snort password=snortpass dbname=snort host=localhost

Chạy Snort và Barnyard2.

# cd /usr/local/bin

# snort –u snort –g snort-c /etc/snort/snort.conf –i eth0 # barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort/ - f snort.log -w /var/log/snort/barnyard2waldo

Để Snort và Barnyard2 tự động khởi động khi khởi động máy. Thêm vào trong file rc.local đoạn sau.

80

/usr/local/bin/snort -u snort -g snort -c /etc/snort/snort.conf -i eth0

/usr/local/bin/barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo

6.2.5. Cài đặt BASE

Về cơ bản việc cấu hình đã xong, tuy nhiên để cho việc phân tích log và theo dõi các cảnh báo được thuận tiện ta sẽ cài thêm BASE. BASE là một plug-in chạy trên nền web vì vậy ta sẽ cần cài đặt và cấu hình web server hỗ trợ php.

Cài đặt BASE: #wget http://downloads.sourceforge.net/project/secureideas/BASE/bas e-1.4.5/base-1.4.5.tar.gz # wget http://sourceforge.net/projects/adodb/files/adodb - php5-only/adodb-517-for-php5/adodb517.tgz # tar -xzvf base-1.4.5.tar.gz # tar -xzvf adodb517.tgz # cp -r adodb5 /var/www # cp -r base-1.4.5 /var/www/html/base # cd /var/www/html/base # cp base_conf.php.dist base_conf.php # vi base_conf.php ... $BASE_urlpath = "/base"; $DBlib_path = "/var/www/adodb5/"; $DBtype = "mysql"; $alert_dbname = "snort"; $alert_host = "localhost"; $alert_port = "3306";

81

$alert_user = "snort"; $alert_password = "snortpass"; ...

Truy cập vào http://ip-address/base/base_main.php để thiết lập BASE. Để hỗ trợ BASE hiển thị ở chế độ đồ họa ta cần cài đặt thêm các gói sau:

# cd /usr/bin

# pear install image_graph-alpha # pear install Numbers_Roman

# pear install Numbers_Words-beta # pear install image_canvas-alpha # apachectl restart

6.2.6. Cài đặt SnortSam

Tải source libtool về và cài đặt. http://ftpmirror.gnu.org/libtool/libtool-2.4.2.tar.gz

# tar –xzvf libtool-2.4.2.tar.gz # cd libtool-2.4.2

# ./configure –prefix=/usr # make && make install

Tải mã nguồn của SnortSam về tại địa chỉ

http://www.snortsam.net/files/snortsam/snortsam-src-2.70.tar.gz

# tar –xzvf snortsam-src-2.70.tar.gz # chmod +x makesnortsam.sh

# ./makesnortsam.sh

Thêm SnortSam như một plug-in của Snort. Tải tập tin patch của snortsam tại

82

# patch -p1 < ../snortsam-2.9.3.1.diff # sh ./autojunk.sh

# ./configure –enable-zlib –enable-sourcefire # make && make install

Copy tập tin nhị phân của snortsam vào /usr/local/bin

Việc cài đặt và biên dịch đã hoàn tất. Tiếp theo sẽ cần cấu hình SnortSam.

# cp <path_to>/snortsam-src/etc/snortsam.conf.example /etc/snortsam.conf # vi /etc/snortsam.conf ... port <666> accept <host>/<mask>,<key> fwsam <host>

iptables <adapter> <logoption>

email <smtpserver>:<port> <recipient> <sender> ...

Cấu hình lại Snort, sẽ phải cấu hình ở hai nơi đó là file cấu hình snort.conf và các luật mà muốn ứng động SnortSam.

Snort.conf

Thêm dòng này vào trong tập tin cấu hình của snort.

output alert_fwsam: {SnortSam Station}:{port}/{password}

Dòng này sẽ xác định địa chỉ IP mà SnortSam đang chạy, port lắng nghe và mật khẩu. Mật khẩu ở đây là defaultkey được cấu hình trong snortsam.conf nếu không cấu hình có thể bỏ qua.

Rule file

83

who: src, source, dst, dest, destination IP address.

time: 'days', 'months', 'weeks', 'years', 'minutes',

'seconds', 'hours'.

Ngoài ra các giá trị ‘0’ hoặc 'PERManent', 'INFinite', hoặc 'ALWAYS’ sẽ chặn vĩnh viễn.

Ví dụ:

alert tcp any any -> $HTTP_SERVERS 80 (msg:"WEB-MISC http directory traversal"; flags: A+; content:

"..\\";reference:arachnids,298;)

Luật này sẽ thông báo với SnortSam chặn địa chỉ truy cập tới Webserver trong vòng 15 phút.

alert tcp any any -> $HTTP_SERVERS 80 (msg:"WEB-MISC http directory traversal"; flags: A+; content:

"..\\";reference:arachnids,298; fwsam: 15 minutes;)

6.3. Thử nghiệm các kiểu tấn công 6.3.1. Scan Port 6.3.1. Scan Port

Các dạng scan port thường gặp như XMAS Scan, Null Scan, FIN Scan. Attacker sẽ đứng phía bên ngoài scan hệ thống mạng nhằm thu thập các thông tin về cổng dịch vụ được mở, phiên bản hệ điều hành, phiên bản các phần mềm trên máy chủ.

Luật Snort:

alert tcp any any -> $HOME_NET any (msg:”FIN Scan”; flags: F; sid: 1000001; fwsam:src, 1 minutes;)

alert tcp any any -> $HOME_NET any (msg:”Xmas Scan”; flags: FPU; sid: 1000002; fwsam:src, 1 minutes;)

alert tcp any any -> $HOME_NET any (msg:”NULL Scan”; flags: 0; sid: 1000003; fwsam:src, 1 minutes;)

Khi Snort phát hiện ra các dạng scan này, sẽ gửi cảnh báo tới cho agen SnortSam trên firewall và yêu cầu firewall chặn các địa chỉ này trong vòng 1 phút.

84

6.3.2 Apache Killer

Luật Snort:

alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:"ET SCAN Kingcope KillApache.pl Apache mod_deflate DoS attempt";

flow:established,to_server;content:"Range|3a|bytes=0-,5-0,5-

1,5-2,5-3,5-4,5-5,5-6,5-7,5-8,5-9,5-10,5-11,5-12,5-13,5-14"; http_header; fast_pattern:only;

reference:url,seclists.org/fulldisclosure/2011/Aug/175; classtype:attempted-dos; sid:2013472; rev:2; fwsam:src, 1 minutes;)

Attacker khai thác lỗ hổng trên các phiên bản Apache 2.0 (nhỏ hơn 2.0.65) và 2.2 (nhỏ hơn 2.2.20) nhằm tấn công từ chối dịch vụ làm tiêu tốn nhiều tài nguyên của hệ thống, khiến hệ thống bị treo.

Luật trên khi nhận được cảnh báo của Snort, iptables sẽ chặn địa chỉ nguồn trong vòng 1 phút.

6.3.3 Ping of Death

Attacker gửi các gói tin ICMP có kích thước lớn tới máy chủ nhằm chiếm đường truyền và ngăn việc cung cấp dịch vụ của máy chủ. Luật Snort sẽ kiểm tra kích thước của các gói tin ICMP được gửi tới

alert icmp any any -> $HOME_NET any (msg:”Large ICMP Packet”; dsize: >200; sid: 1000004; fwsam:src, 1 minutes;)

6.3.4 MS12-020

Lỗ hổng được attacker khai thác qua dịch vụ Terminal Service (3389) làm hệ thống bị shutdown đột ngột.

alert tcp any any -> $HOME_NET 3389 (msg:"ET EXPLOIT Microsoft RDP Server targetParams Exploit Attempt"; flow:to_server,established; content:"|03 00|"; depth:2; content:"|7f 65 82 01 94|"; distance:24; within:5;

85

byte_test:1,<,6,3,relative;

reference:url,msdn.microsoft.com/en-us/library/cc240836.aspx; reference:cve,2012-0002; classtype:attempted-admin;

sid:2014383; rev:2; fwsam:src; 1 minutes;)

6.3.5 SQL Injection

Mô hình sử dụng web application để demo dạng tấn công SQL Injection bằng cách truyền vào tham số ‘ or 1=1;#.

alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"[The system detected Sql Injection Attack-1]";

flow:to_server,established;

uricontent:"/?id";nocase;pcre:"/(((\?id=)|(\?id%3D))(\w*)(((\ ')|(\%27))((\w+)|(\W+)|(\D+)|(\d+))))/ix"; classtype:web- application-attack; sid:1000015; rev:1; fwsam:src; 1 minutes;)

86

KẾT QUẢ ĐẠT ĐƯỢC

Tính khoa học:

Đạt được các mục tiêu của đề tài như kiến thức về hệ thống phát hiện xâm nhập, các kỹ thuật phát hiện xâm nhập.

Tìm hiểu được kiến trúc và cách thức hoạt động của Snort/SnortSam. Cách phân tích các tập tin log, các cảnh báo, dựa vào đó viết các luật phù hợp để phát hiện và ngăn chặn xâm nhập.

Phân tích được một số trường hợp tấn công, phân tích được một số tập luật của các dạng tấn công phổ biến.

Demo triển khai thử trong hệ thống mô hình.

Khả năng triển khai ứng dụng thực tế:

An toàn thông tin ở Việt Nam đang trở thành một vấn đề nóng bỏng nhất qua hàng loạt các vụ việc các hệ thống lớn bị tấn công. Snort là hệ thống phát hiện xâm nhập có số lượng người sử dụng rất lớn trên thế giới. Snort là phần mềm nguồn mở nên chi phí mua bản quyền là bằng 0, chỉ phải bỏ tiền để mua đầy đủ các luật hơn từ phía Sourcefire nếu cần thiết.

Ngoài ra hệ thống để cài đặt Snort cũng không yêu cầu cao, chỉ cần một máy chủ tầm trung là có thể triển khai được Snort. Nên chi phí triển khai là t hấp hơn rất nhiều so với các hệ thống phần cứng khác.

Snort có đầy đủ các tính năng kỹ thuật trong việc phát hiện xâm nhập dựa trên mẫu và dựa trên sự bất thường.

Hoàn toàn có khả năng triển khai tốt cho bất cứ hệ thống nào trong thực tế.

87

Nếu người quản trị hệ thống có kỹ năng tốt, hệ thống không cần thiết phải trả thêm 29.99$ cho người dùng cá nhân hoặc từ 399.00-499.00$ cho doanh nghiệp mỗi năm cho việc mua thêm các bộ luật.

Chi phí thấp cho một hệ thống tốt, có đầy đủ chức năng của một hệ thống phát hiện xâm nhập.

Kết hợp với các hệ thống nguồn mở khác như netfilter/iptables, hệ thống giám sát như Nagios, mod_security cho ứng dụng web có thể xây dựng một hệ thống tốt có khả năng ngăn chặn các cuộc tấn công, phân tích, theo dõi và nâng cao hiệu suất của dịch vụ với chi phí cực kỳ thấp.

Hạn chế:

Một vài hạn chế vẫn còn tồn tại trong đề tài

 Chưa cấu hình đầy đủ các luật trong iptables.

 Chưa demo được các dạng tấn công trong vùng mạng nội bộ ví dụ như ARP Spoofing hay Sniffer gói tin trong mạng nội bộ.

88

89

Kết luận

Đề tài đã đạt được một số mục tiêu như hiểu về cách thức hoạt động và cách thức phát hiện xâm nhập của hệ thống IDS. Cách bố trị một hệ thống phát hiện xâm nhập trong hệ thống mạng ra làm sao?

Nghiên cứu và hiểu cấu trúc và cách thức xử lý gói tin của Sno rt cũng như SnortSam. Hiểu rõ cấu trúc của một tập luật trong Snort. Cách thức viết một luật cho những yêu cầu cụ thể. Phân tích dữ liệu để viết luật.

Cài đặt và cấu hình thành công hệ thống, demo các hình thức xâm nhập đơn giản. Tác giả gặp một chút khó khăn trong việc triển khai mô hình trên máy ảo, sự phức tạp của mô hình mạng khó thể hiện trên hệ thống ảo.

Tác giả gặp khó khăn trong việc demo các loại hình tấn công mới hiện nay, việc demo các dạng tấn công còn ở dạng đơn giản do mục đích chỉ thử phản ứng của Snort.

Phiên bản mới nhất của Snort chưa có gói patch SnortSam phù hợp.

Một phần của tài liệu Tìm hiểu và triển khai Snort SnortSam (Trang 85 - 106)

Tải bản đầy đủ (PDF)

(106 trang)