Oct 25, 2010

PHÁT HIỆN VÀ CHỐNG XÂM NHẬP TRÁI PHÉP SỬ DỤNG SNORT


  • Giới thiệu Snort
    • Sniffer mode
    • Packet Logger mode
    • Network Instrution Detection System (NIDS)
    • Inline mode
  • Cài đặt, cấu hình Snort
    • Preprocessor
    • Output modules
  • Cấu trúc luật của Snort
    • Rule header
Rule option

  • Mode hoạt động của Snort
·         Sniffer mode: hiển thị thông tin về các packet đang di chuyển trong mạng trên màn hình console.
·         Packet Logger mode: log lại tình trạng các packet vào đĩa cứng.
·         Network Instrution Detection System (NIDS): mode hoạt động đầy đủ và phức tạp nhất.
·         Inline mode: can thiệp vào packet từ khi packet mới được chuyển vào iptables, cho phép hủy bỏ packet từ trong iptables.

Sniffer Mode

  • Hiển thị thông tin header của packet:
§  snort -v
  • Hiển thị thông tin ứng dụng đang phát sinh packet:
§  snort –v -d
  • Header của tầng datalink:
§  snort –vde
                     snort –v –d –e

Packet Logger Mode

  • Lưu thông tin xuống file:
·         snort –dev –l [filename]
  • Lưu thông tin ở dạng binary:
·         snort –l [filename] -b
  • Đọc ngược thông tin từ file binary:
·         snort –dv –r [filename]
·         snort –dv –r [filename] icmp

Network Instrution Detection System

  • Mode hoạt động phức tạp nhất, nhiều option nhất.
  • Bắt buộc phải chỉ ra file luật dùng để hoạt động (option -c)‏
·         snort –u snort –g snort –d –D –c /etc/snort
  • Mặc định của mode này là cảnh báo full alert và log lại packet theo dạng ASCII.

Inline Mode

  • Biên dịch hỗ trợ inline mode:
·         ./configure –enable-inline
  • Có 3 loại luật được sử dụng ở mode inline:
·         drop: iptables sẽ bỏ qua packet và log lại sự kiện này.
·         reject: iptables sẽ bỏ qua packet, log lại sự kiện, và thông báo đến máy tính rằng packet này sẽ không đến nơi.
·         sdrop: iptables sẽ bỏ qua packet, không thông báo đến máy đích và cũng không log lại sự kiện.
  • snort_inline –QDc ../etc/drop.conf –l /var/log/snort

Cài đặt

  • ./configure
  • make
  • make install
  • Để hoạt động ở mode NIDS cần có tập luật: snortrules.tar.gz.
  • tar –xzvf snortrules.tar.gz  -C /etc/snort
  • Sửa file /etc/snort/snort.conf

Cấu hình Snort

  • preprocessor: kiểm tra packet ngay sau khi packet được giải mã. Preprocessor được thực hiện trước tất cả các luật tìm kiếm, phát hiện khác.
·         preprocessor <name>:<option>
  • output module: linh hoạt trong việc định dạng thông báo đến người sử dụng
output <name>:<options>

  • Preprocessor:
·         Stream4
·         sfPortscan
·         Performance Monitor
·         ASN.1 Detection
  • Output modules:
·         alert_syslog
·         alert_fast
·         alert_full
·         log_tcpdump
·         csv

Cấu trúc luật của Snort

  • Rule header: rule action, protocol, địa chỉ IP nguồn và địa chỉ IP đích, port nguồn và port đích .
  • Rule option: thông điệp cảnh báo, phần thông tin để xác định packet nào sẽ bị giữ lại.
  • alert tcp any any -> any any (content:”|00 01 86 a5|”; msg: “mountd access”;)

Rule action

  • Rule action:
·         alert: cảnh báo và ghi lại packet.
·         log: ghi lại packet.
·         pass: bỏ qua packet.
·         active: cảnh báo và gọi thực thi một rule khác.
·         dynamic: ở trạng thái idle cho đến khi được một rule khác được kích hoạt.
·         drop: cho phép iptables bỏ qua packet này và log lại packet bị bỏ qua.
·         reject: cho phép iptables bỏ qua packet này, log lại packet, đồng thời gởi thông báo từ chối đến máy nguồn.
·         sdrop: cho phép iptables bỏ qua packet này nhưng không log lại packet, cũng không thông báo đến máy nguồn.
  • Định nghĩa rule type riêng phù hợp với mục đích:
 ruletype redalert
{
type alert
output alert_syslog: LOG_AUTH LOG_ALERT
output database: log, mysql, user=snort   
dbname=snort host=localhost.
}

Rule option

  • meta-data: cung cấp thông tin về rule nhưng không gây ra bất cứ ảnh hưởng nào đến quá trình phát hiện packet.
  • payload: tìm kiếm thông tin trong phần payload của packet.
  • non-payload: tìm kiếm thông tin trong phần non-payload của packet.
post-detection: xảy ra sau khi một rule được kích hoạt.                                


Meta data

  • msg: “<message text>”;
  • reference: <id system>, <id>;
  • sid: <snort rules id>;
  • classtype: <classname>;
  • priority: <priority integer> 

Payload

  • content: [!] “<context string>”;
  • nocase;
  • rawbytes;
  • depth: <number>;
  • offset: <number>;
  • distance: <byte count>;
  • uricontent: [!]<context string>;
  • isdataat: <int>;
  • byte_test: <bytes to convert>, [!] <operator>, <value>, <offset> [,relative] [,endian] [,<number type>, string];
  • byte jump

Non payload

  • ttl: time to live.
  • tos: type of service.
  • dsize: kiểm tra non-payload có lớn hơn một kích thước xác định không.
  • flag: kiểm tra TCP flag bits (F: FIN, S: SYN, R: RST, A: ACK).
  • flow: xác định chiều của kết nối.
  • window: kiểm tra tcp window size.


Post detection

  • logto: kiểm tra log lại sự kiện vào file.
·         logto: “filename”;
  • session: sử dụng để lấy sự kiện từ một TCP session.
·         session: [printable|all];
  • resp, react.

Theo: Võ Đỗ Thắng (Athena)

1 comment:

  1. Em xin chào Thầy. Hiện em đang muốn cài đặt hệ thống phát hiện xâm nhập(IDS) trên Endian Firewall mà em không biết thực hiện bằng cách nào. Rất mong nhận được hướng dẫn của Thầy. Em xin chân thành cám ơn!

    ReplyDelete