2.4. Các chế độ hoạt động của Snort 2.4.1 Chế độ sniffer và chế độ log 2.4.1 Chế độ sniffer và chế độ log
Để chạy Snort ở chế độ sniffer sử dụng tham số -v.
$ snort –v
Tùy chọn này chỉ cho phép hiển thị các IP và TCP/UDP/ICMP header, ngoài ra không còn thêm gì khác. Nếu muốn hiển thị thêm dữ liệu ở tầng ứng dụng phải thêm tùy chọn –d.
25
Tùy chọn này sẽ cho phép hiển thị cả phần dữ liệu và tiêu đề của gói tin. Nếu muốn hiển thị nhiều hơn các thông tin khác ví dụ như phần header ở tầng data-link thêm tùy chọn –e.
$ snort –vde hoặc $ snort –d –v –e
Ưu điểm của snort so với các ứng dụng bắt gói tin khác là:
Có thể lưu các tập tin log sau khi sniffer gói tin xuống cơ sở dữ liệu như MySQL hoặc PostgreSQL.
Tập tin log có thể hiện thị ở dạng ASCII theo t ừng địa chỉ IP riêng biệt, giúp dễ dàng phân tích.
Ngoài ra tập tin log cũng có thể được lưu trữ dưới dạng tập tin nhị phân theo định dạng của tcpdump.
Để chạy Snort ở chế độ logger sử dụng tham số -l.
$ snort –dev –l /home/user/log
Câu lệnh trên cho phép sau khi bắt các gói tin, lưu trữ chúng dưới dạng tập tin log. Ngoài ra có thể lưu trữ các tập tin log dựa trên các địa chỉ IP truy c ập. Ví dụ câu lệnh sau sẽ cho phép ta bắt, in ra màn hình và lưu trữ lại các gói tin TCP/IP cũng với tiêu đề ở tầng data-link, dữ liệu của gói tin của tất cả các gói tin đi vào từ địa chỉ của lớp mạng C.
$ snort –dev –l /hom/user/log -h 192.168.1.0/24
Trường hợp muốn chạy snort ở chế độ logger lưu trữ các tập tin log ở dạng nhị phân có thể sử dụng tùy chọn –b, và sử dụng tùy chọn –r để đọc các tập tin nhị phân được ghi lại.
$ snort –l /log –b
$ snort –dv –r packet.log
2.4.2 Chế độ NIDS
Để khởi chạy Snort ở chế độ phát hiện xâm nhập mạng không cần bắt tất cả các gói tin.
26
$/snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf
Tham số -c được sử dụng để chỉ định tập tin cấu hình của snort. Mặc định các tập tin log sẽ được lưu trữ tại /var/log/snort. Khi chạy ở chế độ NIDS có thể bỏ tùy chọn –v để tăng tốc độ, do không cần thiết phải bắt các gói tin và in ra màn hình.
2.5. Giới thiệu về SnortSam
Chức năng của Snort chỉ là phát hiện xâm nhập và cảnh báo cho người quản trị biết về những xâm nhập đó, nó không thể ngăn chặn các cuộc tấn công đó. Để thực hiện được chức năng ngăn chặn một cách chủ động (active response) có thể sử dụng các plug-in dành cho Snort như SnortSam, Fwsnort hay snort_inline để làm điều này. Các plug-in đó sẽ thay đổi hoặc chặn các lưu lượng mạng dựa trên địa chỉ IP (SnortSam), dựa trên giao thức ở tầng Transport (Fwsnort) hay ở tầng Application (Snort_inline).
Một điểm cần lưu ý là một hệ thống ngăn chặn xâm nhập ngoài việc ngăn chặn các gói tin đi vào hệ thống nó còn có thể thay đổi trực tiếp các gói tin đó khi chúng được chuyển qua mạng. Bởi vậy Fwsnort và snort_inline được xếp vào hệ thống ngăn chặn xâm nhập (IPS) còn SnortSam chỉ được xếp vào hệ thống phản ứng chủ động (Active Response System)
Nội dung phần này sẽ tìm hiểu về SnortSam một plug-in của Snort cho phép tự động chặn các địa chỉ IP dựa trên các tường lửa như:
Checkpoint Firewall-1 Cisco PIX firewalls
Cisco Routers (sử dụng ACL)
Former Netscreen, now Juniper firewalls
IP Filter (ipf), trên các dòng Unix-like OS ví dụ FreeBSD FreeBSD's ipfw2 (phiên bản 5.x)
27 Linux IPchains
Linux IPtables Linux EBtables
WatchGuard Firebox firewalls 8signs firewalls trên Windows
MS ISA Server firewall/proxy trên Windows CHX packet filter
Ali Basel's Tracker SNMP thông qua SNMP-Interface-down plug-in.
SnortSam bao gồm hai phần riêng biệt. Một phần là một tập hợp của các sửa đổi trong tập tin mã nguồn, mở rộng Snort bằng cách thêm một mô-đun output mới đó là: alert_fwsam. Phần còn lại là một tác nhân sẽ giao tiếp trực tiếp với tường lửa gọi là agent. Tác nhân này có thể đ ặt ngay trên chính các tường lửa nếu tường lửa đó là iptables, hoặc trên pf nếu hệ thống là BSD hoặc trên Checkpoint’s Firewall-1 nếu hệ thống là Windows. Đối với các tường lửa phần cứng như Cisco PIX thì tác nhân này của SnortSam phải đặt trên một máy riêng biệt rành riêng để giao tiếp với PIX. Về phương thức ho ạt động. Snort sẽ giám sát các luồng lưu lượng trên mạng, và khi một luật của Snort được kích hoạt (gặp một traffic phù hợp), Snort sẽ gửi đầu ra cho mô-đun fwsam. Mô-đun fwsam sau đó sẽ gửi một tin nhắn mã hóa tới cho agent
được đặt trên tường lửa. Agent này sẽ kiểm tra xem tin nhắn đó có phải được gửi
tới từ một nguồn có thẩm quyền hay không, nếu đúng nó sẽ giải mã thông điệp vừa nhận được và kiểm tra xem các địa chỉ IP nào được yêu c ầu chặn. SnortSam sẽ rà soát xem các địa chỉ IP đó có nằm trong danh sách trắng (white-list) hay không. Nếu IP đó không nằm trong danh sách trắng, SnortSam sẽ yêu cầu tường lửa chặn địa chỉ IP đó trong một khoảng thời gian đã được định nghĩa từ trước.
2.5.1. Snort Output Plug-in
Phần Output yêu cầu chỉnh sửa cả ở tập tin cấu hình và luật của Snort. Phần output này sẽ giao tiếp với agent trên tường lửa thông qua giao thức TCP hoạt động ở port 898. Phần output plug-in này hỗ trợ mã hóa giao tiếp với phần agent với một khóa
28
đã được định nghĩa trước trong tập tin cấu hình. Thuật toán mã hóa SnortSam đang sử dụng là Twofish.
Đối với tập tin cấu hình snort.conf thêm dòng này vào:
output alert_fwsam: 192.168.10.1/sn0r3sam
Đối với các luật sẽ thêm tùy chọn fwsam và thời gian vào sau mỗi luật. Ví dụ, muốn chặn một địa chỉ IP nào đó với khoảng thời gian là một giờ sẽ thêm chuỗi
:fwsam:src, 1 hour;”
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WEB-CGI /wwwboard/passwd.txt access";
flow:to_server,established;
uricontent:"/wwwboard/passwd.txt"; nocase;
reference:arachnids,463; reference:cve,CVE 1999-0953; reference:nessus,10321; reference:bugtraq,649;
classtype:attempted-recon; sid:807; rev:7; fwsam: src, 1 hour;)
2.5.2. Blocking Agent
Phần này sẽ có trách nhiệm tương tác trực tiếp với các tường lửa thay cho phần output plug-in trên Snort. Nếu Snort phát hiện một cuộc tấn công phù hợp với bất kỳ một quy tắc nào như trong ví dụ trên nó sẽ thiết lập một phiên mã hóa TCP để gửi một thông điệp chứa các IP nguồn từ các gói tin gây ra cảnh báo + thời gian mà địa chị IP đó bị cấm.
Vì phiên mã hóa TCP đó sẽ giao tiếp thông qua port 898 (ho ặc bất cứ port nào được cấu hình) nên cầm đảm bảo là tường lửa cho phép giao tiếp trên port này. Trạng thái của tất cả các địa chỉ IP bị cấm sẽ được đặt trong tập tin /var/log/snortsam.state. Tập tin cấu hình của SnortSam đặt tại /etc/snortsam.conf dưới đây là một số tùy chọn quan trọng có thể được sử dụng trong tập tin cấu hình.
accept: Cho phép các cảm biến cụ thể của Snort có thể giao tiếp với phần
agent trên tường lửa. Nhiều cảm biến cũng có thể được cấu hình với tùy chọn này cùng với các khóa dùng để mã hóa riêng: accept <host>/<mask>,<key>
29
defautlkey: Thiết lập khóa mặc định được sử dụng cho tất cả các cảm biến.
port: Thiết lập port lắng nghe từ các cảm biến của Snort. Mặc định là port
TCP 898.
dontblock: Chỉ định một host hoặc một mạng mà SnortSam sẽ bỏ qua ngay
cả khi phát hiện một cuộc tấn công từ nguồn này.
logfile: Chỉ định đường dẫn lưu logfile mà SnortSam sẽ ghi. Tập này cũng
liệt kê tất cả các địa chỉ IP mà SnortSam đã chặn kèm theo thời gian chặn. daemon: Chạy agent như một dịch vụ.
bindip: Giới hạn phần agent trên tường lửa lắng nghe trên một địa chỉ IP với
một card mạng nhất định. Điều này làm giảm khả năng tấn công các agent vì giới hạn số đường kết nối tới các agent đó.
<firewall><interface>: Chỉ định loại tường lửa cụ thể mà agent đang chạy
trên đó và cổng giao tiếp mà các luật nên thêm vào.
keyinterval <time>: Tùy chọn này cho phép các agent yêu c ầu hoặc tạo các
khóa mã hóa mới sau mỗi khoảng thời gian nào đó. Mặc định nếu không thiết lập là 4 tiếng.
email <smtpserver>:<port> <recipient> <sender>: Tùy chọn này cho phép xác định máy chủ email. Khi một địa chỉ nào đó bị block, SnortSam sẽ gửi thông báo tới địa chỉ email được cấu hình.
Ví dụ: accept 192.168.20.3, sn0r3sam bindip 192.168.20.1 iptables eth0 logfile /var/log/snortsam.log daemon
30
CHƯƠNG 3
PREPROCESSORS VÀ OUTPUT PLUG-INS
3.1. Preprocessors
Như trong chương phía trên, chúng ta đã có những hiểu biết cơ bản về cấu trúc và cách làm việc của Snort. Ngoài ra cũng có cái nhìn tổng quát về preprocessors trong Snort. Vậy chức năng chính của preprocessor là gì?
Preprocessors được giới thiệu lần đầu trong phiên bản 1.5 của Snort. Ban đầu nó được biết đến với chức năng bình thường hóa các giao thức mạng. Ngày nay,
preprocessor không chỉ đảm nhiệm chức năng bình thường hóa các giao thức nữa mà nó còn có thể phát hiện xâm nhập dựa trên sự bất thường và tạo ra những cảnh báo riêng. Trong thực tế Snort nổi bật với chức năng phát hiện xâm nhập dựa theo mẫu và các dấu hiệu có sẵn. Các plug-in preprocessors được bổ sung vào ngoài mục đích tạo đầu ra cho detection engine mà nó còn có chức năng tạo ra các c ảnh báo thông qua việc phát hiện các điểm bất thường trong các lưu lượng mạng đi vào hệ thống.
Phần này sẽ tìm hiểu một vài tiền xử lý quan trọng, đ ặc biệt là các tiền xử lý tái hợp các gói tin, một hình thức có thể giúp các attacker lẩn trốn khỏi các hệ thống phát hiện xâm nhập.
Các preprocessors cực kỳ hữu ích khi phát hiện các cuộc tấn công phân mảnh gói tin nhằm mục đích đánh lừa hệ thống phát hiện xâm nhập như Tiny Fragment Attack, Overlaping Fragment Attack, Teardrop Fragment Attack.
31