Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"  Nicola Mondinelli Si è quella di prima...
snortattack.org Portale dove le tipologie di argomentazione  trattate coprono a 360 gradi tutte le tematiche relative alla...
Dura LEX sed LEX La legislazione (ITALIANA e non solo) ultimamente sta scoprendo internet Recentemente sono stati fatti dd...
Cosa: <ul><li>Legge CASINO' online </li><ul><ul><li>Dallo stato italiano non deve essere possibile raggiungere siti di gio...
Esempio Pratico: CNCPO -  Il CNCPO fornisce un BlackList dettagliata in forma tabellare a) IP b) IP + URL c) nome DNS serv...
Soluzione ISP <ul><li>BLOCCO da  server DNS </li><ul><ul><li>Inserisco RR falsi che risolvono i domini nella BL facendoli ...
SOLUZIONE ISP <ul><li>Facilmente aggirabile
Non immediata </li><ul><ul><li>Sia nel blacklisting che nella rimozione </li></ul></ul><li>Fault Tolerant </li><ul><ul><li...
ALTRE SOLUZIONI: Ci sono molte altre soluzioni: <ul><ul><ul><li>Proxy
Filtraggio a livello fw
Snort Inline
… </li></ul></ul></ul>Problema di Continuità di Servizio: Se il servizio di filtraggio muore blocco la connettività a tutti?
REACT: alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg: &quot;SNORTATTACK AAMS ITALIAN LAW&quot;; flow: to_serve...
SNORT REACT Una modalità particolare di uso di snort in modalità FLEX RESPONSE è appunto il detection_plugin del react. C'...
SNORT REACT React permette di “reagire” ad un match mandando in risposta un pacchetto tcp preconfezionato pronto all'uso. ...
SNORT REACT <ul><li>Solo Snort propone il funzionamento in modalità Flexible Response, tutti i dispositivi analoghi infatt...
Snort offre due modi alternativi di operare in Flexible Response: FlexResp e FlexResp2. </li><ul><li>Il “react” è presente...
SNORT REACT
HOW IT WORKS
HOW IT WORKS <ul><li>SNORT FLEX RESPONSE usa le LibPCAP e non netfilter per leggere i pacchetti, quindi: </li><ul><ul><li>...
Potete ottimizzare il throughput usando la kernel patch PF_RING e le PCAP_RING </li></ul></ul></ul>
Breve carrellata di operazioni 1. Installazione dei pacchetti propedeutici: apt-get install vim gcc make build-essential l...
Breve carrellata di operazioni Innanzitutto si scarica il PF_RING, in questo caso l’ultima versione: cd /usr/src svn co ht...
Breve carrellata di operazioni Si abilita il pfring cosicché ne venga tenuto conto nella generazione del  nuovo kernel : m...
Breve carrellata di operazioni Creiamo il file : vi /etc/modprobe.d/options inserendo la riga :  options ring num_slots=65...
Breve carrellata di operazioni Con il riavvio della macchina si verifica che il nuovo kernel venga effettivamente caricato...
Breve carrellata di operazioni A questo punto si installano le librerie  Libpfring : cd lib gcc -shared -Wl,-soname -Wl,li...
Breve carrellata di operazioni Infine, si installano le librerie  Libpcap-ring : cd /usr/src/PF_RING/userland wget http://...
Breve carrellata di operazioni A questo punto si installano le librerie  Libpfring : cd lib gcc -shared -Wl,-soname -Wl,li...
SNORT REACT <ul><li>Scaricate l'ultima versione del sorgente di snort
Dalla 2.8.4 non c'e' da applicare nessuna patch </li></ul>Editare il file: ./src/detection-plugins/sp_react.c
SNORT SP_REACT.C 313: char tmp_head[] = &quot;HTTP/1.1 302 FOUND
 Location: http://serverx:80 
 Server:Snort/2.8.3.2
 C...
Upcoming SlideShare
Loading in …5
×

Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"

756 views

Published on

Security date 2009 -Camelug-

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
756
On SlideShare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"

  1. 1. Snort React per Webfiltering : &quot;Soluzioni per le Leggi-Lista&quot; Nicola Mondinelli Si è quella di prima...
  2. 2. snortattack.org Portale dove le tipologie di argomentazione trattate coprono a 360 gradi tutte le tematiche relative alla sicurezza: attacco/difesa Uso di Snort come soluzione alle innumerevoli problematiche di intrusione Un portale e una mailinglist Snort User Group finalizzato alla collaborazione per l'uso di Snort e la trattazione di problematiche relative alla security
  3. 3. Dura LEX sed LEX La legislazione (ITALIANA e non solo) ultimamente sta scoprendo internet Recentemente sono stati fatti ddl, promulgate leggi o disposizioni giudiziarie che mirano al blocco, oscuramento, dirottamento di servizi in internet ( 99% web )
  4. 4. Cosa: <ul><li>Legge CASINO' online </li><ul><ul><li>Dallo stato italiano non deve essere possibile raggiungere siti di giochi di azzardo non italiani o non in regola con lo stato italiano (questione di denaro ovviamente) </li></ul></ul><li>Caso The Pirate Bay </li><ul><ul><li>Dirottamento delle connessioni tramite falsi record DNS impostati presso gli ISP </li></ul></ul><li>CNCPO </li><ul><ul><li>Il Centro Nazionale Conto la Pedopornografia Online, che è gestito dalla PdS fornisce una BL agli ISP </li></ul></ul><li>DdL Anti-Blogger... </li></ul>
  5. 5. Esempio Pratico: CNCPO - Il CNCPO fornisce un BlackList dettagliata in forma tabellare a) IP b) IP + URL c) nome DNS server d) DNS + URL Ovviamente per scaricare la lista bisogna registrarsi, farsi dare un certificato digitale ecc... Altrimenti i pedofili andrebbero tutti sul sito del CNCPO per sapere quali siti visitare... (magari lo fanno...)
  6. 6. Soluzione ISP <ul><li>BLOCCO da server DNS </li><ul><ul><li>Inserisco RR falsi che risolvono i domini nella BL facendoli puntare ad un server web con una bella paginetta del tipo: </li></ul></ul></ul>IO ASPETTO i 18
  7. 7. SOLUZIONE ISP <ul><li>Facilmente aggirabile
  8. 8. Non immediata </li><ul><ul><li>Sia nel blacklisting che nella rimozione </li></ul></ul><li>Fault Tolerant </li><ul><ul><li>Se il server DNS muore, gli utenti navigano lo stesso, confidando nel secondo dns </li></ul></ul><li>Facile da implementare </li><ul><ul><li>Batch che gira di notte </li></ul></ul></ul>
  9. 9. ALTRE SOLUZIONI: Ci sono molte altre soluzioni: <ul><ul><ul><li>Proxy
  10. 10. Filtraggio a livello fw
  11. 11. Snort Inline
  12. 12. … </li></ul></ul></ul>Problema di Continuità di Servizio: Se il servizio di filtraggio muore blocco la connettività a tutti?
  13. 13. REACT: alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg: &quot;SNORTATTACK AAMS ITALIAN LAW&quot;; flow: to_server,established; content:&quot;it.888.com&quot;; reference:url,www.aams.it; classtype: policyviolation; sid:5002020; react: block, msg ; )
  14. 14. SNORT REACT Una modalità particolare di uso di snort in modalità FLEX RESPONSE è appunto il detection_plugin del react. C'e sempre stato ma non ha mai funzionato su win. >> Fixed in 2.8.4 by snortattack team.
  15. 15. SNORT REACT React permette di “reagire” ad un match mandando in risposta un pacchetto tcp preconfezionato pronto all'uso. La potenza del react e' che il pacchetto puo' essere forgiato in modo tale da intromettersi in una sessione TCP risultando valido.
  16. 16. SNORT REACT <ul><li>Solo Snort propone il funzionamento in modalità Flexible Response, tutti i dispositivi analoghi infatti operano unicamente Inline.
  17. 17. Snort offre due modi alternativi di operare in Flexible Response: FlexResp e FlexResp2. </li><ul><li>Il “react” è presente solo per FlexResp. </li></ul></ul>
  18. 18. SNORT REACT
  19. 19. HOW IT WORKS
  20. 20. HOW IT WORKS <ul><li>SNORT FLEX RESPONSE usa le LibPCAP e non netfilter per leggere i pacchetti, quindi: </li><ul><ul><li>Iptables non serve.
  21. 21. Potete ottimizzare il throughput usando la kernel patch PF_RING e le PCAP_RING </li></ul></ul></ul>
  22. 22. Breve carrellata di operazioni 1. Installazione dei pacchetti propedeutici: apt-get install vim gcc make build-essential libtool automake autoconf flex bison libpcre3-dev psmisc ethtool apache2 ntop ntpdate subversion apache2 kernel-package libncurses5-dev fakeroot wget bzip2 flex bison zlibc zlib1g-dev libnet0 libnet0-dev
  23. 23. Breve carrellata di operazioni Innanzitutto si scarica il PF_RING, in questo caso l’ultima versione: cd /usr/src svn co https://svn.ntop.org/svn/ntop/trunk/PF_RING/ Si verifica il kernel attualmente in uso: uname -a Si modifica lo script scaricato affinché generi la patch del kernel che si preferisce, in questo caso si è scelto di creare la patch per quello in uso: cd /usr/src/PF_RING/ vi mkpatch.sh edito kernel giusto VERSION=${VERSION:-2} PATCHLEVEL=${PATCHLEVEL:-6} SUBLEVEL=${SUBLEVEL:-26} Si lancia lo script che genera la patch: sh ./mkpatch.sh cd workspace/ cd linux-2.6.26-1-686-smp-PF_RING cp /boot/config-2.6.26-1-686-bigmem .config
  24. 24. Breve carrellata di operazioni Si abilita il pfring cosicché ne venga tenuto conto nella generazione del nuovo kernel : make menuconfig Si seleziona Networking -> Networking Options e ci si assicura che PF_RING socket sia abilitato. Si esce dal menù salvando le modifiche effettuate. Ora è possibile generare il pacchetto contenente il nuovo kernel e installarlo: make-kpkg clean fakeroot make-kpkg -initrd -revision=pfring.1.0 linux-image cd ../ dpkg -i linux-image-2.6.26_pfring.1.0_i386.deb L’utilizzo di questo nuovo kernel di default ad ogni boot va impostato nel seguente file: vi /boot/grub/menu.lst
  25. 25. Breve carrellata di operazioni Creiamo il file : vi /etc/modprobe.d/options inserendo la riga : options ring num_slots=65535 transparent_mode=0 Dove 65535 è la memoria occupata dal buffer ring. (scegliere a seconda della disponibilità, in caso sia maggiore bisogna cambiare nel grub la vmalloc=256M esempio di 256M)
  26. 26. Breve carrellata di operazioni Con il riavvio della macchina si verifica che il nuovo kernel venga effettivamente caricato: Reboot Copio il sorgente del ring nella directory linux: cp /usr/src/PF_RING/workspace/linux-2.6.26-1-686-smp- PF_RING/include/linux/ring.h /usr/include/linux/ cd /usr/src/PF_RING/userland Make
  27. 27. Breve carrellata di operazioni A questo punto si installano le librerie Libpfring : cd lib gcc -shared -Wl,-soname -Wl,libpfring.so.0.9.7 -o libpfring.so.0.9.7 *.o -lc cp libpfring.a libpfring.so.0.9.7 /usr/local/lib cp pfring.h /usr/local/include ln -s /usr/local/lib/libpfring.so.0.9.7 /usr/local/lib/libpfring.so ldconfig ldconfig -v |grep pfring Mediante quest’ultima istruzione si controlla che le librerie installate siano quelle corrette. La risposta deve quindi essere: libpfring.so.0.9.7 -> libpfring.so.0.9.7
  28. 28. Breve carrellata di operazioni Infine, si installano le librerie Libpcap-ring : cd /usr/src/PF_RING/userland wget http://www.tcpdump.org/release/libpcap-0.9.7.tar.gz tar -zxvf libpcap-0.9.7.tar.gz cd libpcap-0.9.7 mv pcap-int.h pcap-int.h.orig mv pcap-linux.c pcap-linux.c.orig cp ../libpcap-0.9.7-ring/pcap* . ./configure CPPFLAGS=&quot;-I/usr/local/include&quot; LDFLAGS=&quot;-L/usr/local/lib&quot; CFLAGS=&quot;-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64&quot; make && gcc -shared -Wl,-soname -Wl,libpcap.so.`cat VERSION` -o libpcap.so.`cat VERSION` *.o -lc make install && cp libpcap.so.0.9.7 /usr/local/lib
  29. 29. Breve carrellata di operazioni A questo punto si installano le librerie Libpfring : cd lib gcc -shared -Wl,-soname -Wl,libpfring.so.0.9.7 -o libpfring.so.0.9.7 *.o -lc cp libpfring.a libpfring.so.0.9.7 /usr/local/lib cp pfring.h /usr/local/include ln -s /usr/local/lib/libpfring.so.0.9.7 /usr/local/lib/libpfring.so ldconfig ldconfig -v |grep pfring Mediante quest’ultima istruzione si controlla che le librerie installate siano quelle corrette. La risposta deve quindi essere: libpfring.so.0.9.7 -> libpfring.so.0.9.7
  30. 30. SNORT REACT <ul><li>Scaricate l'ultima versione del sorgente di snort
  31. 31. Dalla 2.8.4 non c'e' da applicare nessuna patch </li></ul>Editare il file: ./src/detection-plugins/sp_react.c
  32. 32. SNORT SP_REACT.C 313: char tmp_head[] = &quot;HTTP/1.1 302 FOUND Location: http://serverx:80 Server:Snort/2.8.3.2 Connection:Close Content-Type:text/html &quot;;
  33. 33. SNORT SP_REACT.C 314: char tmp_buf1[] = &quot;<HTML><HEAD><TITLE>Snort</TITLE></HEAD><BODY BGCOLOR=&quot;#FFFFFF&quot;><CENTER><BR><H1>Snort!</H1>Version &quot;; 315: char tmp_buf2[] = &quot; Snortattack patch! <H1><BR><BR><FONT COLOR=&quot;#FF0000&quot;>You are not authorized to open this site! </FONT><BR><BR></H1><H2>&quot;; 316: char tmp_buf3[] = &quot;<BR></H2><BR></BODY></HTML>&quot;;
  34. 34. SNORT SP_REACT.C Quindi: Pagina HTML generata = char tmp_buf1[] + SNORT_VER + char tmp_buf2[] + RULE_MSGID + char tmp_buf3[] Modificate pure questi 3 buffer con il contenuto html che più vi aggrada, avendo l'accortezza di escapare tutti i caratteri che devono essere escapati, è pur sempre un sorgente C. non modificate nient'altro nel file, a meno che non siate programmatori C esperti si intende!
  35. 35. SNORT REACT alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg: &quot;SNORTATTACK AAMS ITALIAN LAW&quot;; flow: to_server,established; content:&quot;it.888.com&quot;; reference:url,www.aams.it; classtype: policyviolation; sid:5002020; react: block, msg ; ) <ul>Ma anche: </ul><ul><ul><li>uri_content
  36. 36. http_header
  37. 37. Tutti i plugin che volete :-) </li></ul></ul>
  38. 38. COMPILA SNORT cd snort-2.8.3.1 ./configure --enable-flexresp --enable-memory-cleanup --enable-linux-smpstats --enable-pthread vi src/Makefile Modifico il Makefile in modo tale che: si aggiunga la seguente riga LDFLAGS = -L/usr/local/lib -lpfring -lpcap ed esista questo testo: CPPFLAGS = -I/usr/local/include Se tutto fin qui è andato a buon fine, si esegue: make make install cd .. mkdir /var/log/snort
  39. 39. AVVIA SNORT snort -A fast -i br0 -b -d -D -c /etc/snort/snort.conf -l /var/log/snort/law/ --nolock-pidfile
  40. 40. Accorgimenti <ul><li>Batch che gira di notte </li><ul><ul><li>Generare un sid univoco per ogni rule
  41. 41. Includere nel nome della rule il sito che si sta bloccando di modo da poter capire nei log cosa state bloccando
  42. 42. Testare... </li></ul></ul></ul>
  43. 43. Documentazione online www.netfilter.org www.snort.org http://snort-inline.sourceforge.net/index.html www.snortattack.org

×