Snort menerima lalu lintas, tetapi tampaknya tidak menerapkan aturan

11

Saya telah mendengus menginstal dan menjalankan dalam mode inline melalui NFQUEUE pada gateway lokal saya (seperti saya dapat berjalan di kamar sebelah dan menyentuhnya). Saya memiliki aturan berikut di /etc/snort/rules/snort.rules:

alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:"ET CURRENT_EVENTS D-LINK Router Backdoor via Specific UA"; flow:to_server,established; content:"xmlset_roodkcableoj28840ybtide"; http_header; pcre:"/^User-Agent\x3a[^\r\n]*?xmlset_roodkcableoj28840ybtide/Hm"; reference:url,www.devttys0.com/2013/10/reverse-engineering-a-d-link-backdoor/; classtype:attempted-admin; sid:2017590; rev:2; metadata:created_at 2013_10_13, updated_at 2013_10_13;)

Aturan ini berkaitan dengan backdoor yang ditemukan di beberapa router DLink. Saya memilih aturan ini karena sepertinya mudah untuk diuji. Aturan itu sendiri ditambahkan oleh pullpork dari emergingthreats jadi saya menganggap sintaksis aturan itu benar.

Untuk pengujian, saya telah mengkonfigurasi gateway saya dengan lighttpd pada port 80 menghadap internet dan mengkonfirmasi bahwa itu dapat diakses. Kemudian, pada mesin jarak jauh, saya menjalankan perintah curl -A 'xmlset_roodkcableoj28840ybtide' 'http://<EXTERNAL_IP>'. Ini segera mencetak respons dari lighttpd ke konsol dan keluar. Tidak ada peringatan mendengus yang dihasilkan di gateway.

Selain itu, netfilter tampaknya hanya memanfaatkan dua dari empat proses mendengus yang saya jalankan. Saya dapat melihat ini htopketika proses mendengus pada CPU 1 dan 2 mengembangkan beban berat ketika pengujian dengan bittorrent ... tetapi proses mendengus pada CPU 0 dan 3 tetap benar-benar idle.

Apakah metodologi pengujian saya salah? Atau apakah dengusan tidak memberitahukan kapan seharusnya (yaitu karena kesalahan konfigurasi)? Di mana saya akan melihat mengapa netfilter tidak menyeimbangkan lalu lintas antara keempat antrian?

Konfigurasi

Konfigurasi Snort / Netfilter Saya

Bagian spesifik yang relevan dari rantai netfilter saya adalah:

Chain wan-fw (1 references)
 pkts bytes target     prot opt in     out     source               destination         
25766 2960K smurfs     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID,NEW,UNTRACKED
    4  1380 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpts:67:68
 4267  246K tcpflags   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           
 3820  550K ~comb0     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate ESTABLISHED     <<=== this one for established connections ====!
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED
  937 79669 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:!0x17/0x02
   13   506 DROP       icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8 /* Ping */
    4   240 ~log0      tcp  --  *      *       <remote_server>      0.0.0.0/0            tcp dpt:80 /* Tiphares Allowed In */     <<=== this one for new connections ====!
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type BROADCAST
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type ANYCAST
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type MULTICAST
21506 2454K NFLOG      all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: up to 1/sec burst 10 mode srcip nflog-prefix  "IPv4 wan-fw REJECT " nflog-threshold 1
24808 2878K reject     all  --  *      *       0.0.0.0/0            0.0.0.0/0           [goto] 
Chain ~log0 (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    4   240 NFLOG      all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: up to 1/sec burst 10 mode srcip /* Tiphares Allowed In */ nflog-prefix  "IPv4 HTTPTest NFQUEUE " nflog-group 1 nflog-threshold 1
    4   240 NFQUEUE    all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* Tiphares Allowed In */ NFQUEUE balance 0:3 bypass cpu-fanout     <<=== passes packets to one of 4 snort processes ====!
Chain ~comb0 (4 references)
 pkts bytes target     prot opt in     out     source               destination         
 474K  196M NFQUEUE    all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate ESTABLISHED NFQUEUE balance 0:3 bypass cpu-fanout     <<=== all established connections from 'wan' are monitored by snort ====!
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0      

Kerutan tambahan:

Saya tidak yakin apakah ini terkait. Saya telah menemukan apa yang tampak sebagai sesuatu di gateway saya mengirim paket reset TCP ke IP di internet. Dan paket-paket ini tidak terkait dengan koneksi yang ada.

Mengingat bahwa ini terjadi ketika menggunakan bittorrent pada mesin di belakang gateway ini dan sebagian besar paket reset mencantumkan port torrent sebagai port sumber, satu-satunya hal yang masuk akal bagi saya adalah bahwa ini adalah pengiriman ulang yang mendengus ketika mengatur ulang sesuatu (ya? ).

Tapi saya menggunakan nfqueue daq ... jadi, jika itu mendengus, lalu mengapa mendengus mengirimkan paket-paket ini dengan cara yang dilihat netfilter sebagai koneksi baru daripada memasukkan paket langsung ke rantai netfilter dan menghubungkannya dengan yang ada koneksi yang diblokir? Dan juga, dengusan tidak diatur untuk menjatuhkan paket atau untuk mengirim ulang (hanya peringatan) ... jadi mengapa harus melakukan itu sejak awal? Karenanya mengapa saya tidak yakin ini adalah sesuatu yang dilakukan dengusan.

Informasi lainnya

Sesuai saran Lenniey, saya juga mengujinya curl -A 'asafaweb.com' http://server-ip. Ini juga tidak menghasilkan peringatan. Saya memeriksa dua kali bahwa aturan untuk ini ada di file aturan saya. Ada dua:

alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:"ET POLICY ASafaWeb Scan User-Agent (asafaweb.com)"; flow:established,to_server; content:"User-Agent|3a| asafaweb.com|0d 0a|"; http_header; reference:url,asafaweb.com; classtype:network-scan; sid:2014233; rev:2; metadata:created_at 2012_02_16, updated_at 2012_02_16;)

dan

alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:"MALWARE-CNC User-Agent ASafaWeb Scan"; flow:to_server,established; content:"User-Agent|3A| asafaweb.com"; fast_pattern:only; http_header; metadata:policy balanced-ips alert, policy security-ips drop, ruleset community, service http; reference:url,asafaweb.com; classtype:network-scan; sid:21327; rev:7;)

Saya juga memperbarui konfigurasi saya. Yang saya unggah ternyata, dan sudah lama (menunjukkan ACCEPT bukan NFQUEUE untuk aturan http netfilter).

Cliff Armstrong
sumber
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Michael Hampton
iptablesOutput tidak pernah merupakan pilihan yang baik kecuali jika Anda secara khusus tertarik pada penghitung. iptables-savelebih disukai sebagai gantinya jika Anda mengharapkan manusia untuk membacanya
poige
@poige Setuju. Pada saat itu saya hanya mengikuti rekomendasi yang datang dengan tag "iptables". Namun, di masa depan, saya mungkin akan menggunakan iptables-save.
Cliff Armstrong

Jawaban:

5

"Dipecahkan" dalam obrolan.

Setelah men-debug hampir semua hal (iptables + NFQUEUE, systemd.service dan unit drop-in, peringatan mendengus, dll.), Masalahnya berasal dari cara pengujian dilakukan.

Biasanya, mendengus sebagai IDS / IPS inline itu sendiri tidak didefinisikan untuk diperiksa untuk lalu lintas yang mencurigakan, melainkan hanya HOME_NETs (alias subnet LAN lokal), tetapi tidak pada IP publiknya sendiri. Aturan asli diuji terhadap IP publik ini dan karenanya tidak menghasilkan peringatan, karena default untuk peringatan adalah sesuatu di sepanjang baris EXTERNAL_NET any -> HOME_NET any.

Lenniey
sumber
Selain itu, karena pertanyaan utamanya hanya untuk memverifikasi bahwa metode pengujian saya valid, dan Anda adalah orang pertama yang mengonfirmasi itu ... jawaban diterima.
Cliff Armstrong
Bisakah Anda memasukkan sedikit lebih banyak dari bit relevan dalam posting ini? Idealnya orang tidak merasa seperti mereka harus membaca seluruh log obrolan untuk memastikan mereka memahami jawabannya.
Michael Hampton
@MichaelHampton sangat benar, saya menambahkan beberapa informasi. Lebih baik?
Lenniey
1
OK, sekarang saya sudah mendapatkannya. Yang berarti pembaca lain mungkin juga akan.
Michael Hampton