SlideShare une entreprise Scribd logo
1  sur  32
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 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
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 )
Cosa: ,[object Object]
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...)
Soluzione ISP ,[object Object],IO ASPETTO i 18
SOLUZIONE ISP ,[object Object]
Non immediata ,[object Object],[object Object],[object Object],[object Object],[object Object]
ALTRE SOLUZIONI: Ci sono molte altre soluzioni: ,[object Object]
Filtraggio a livello fw
Snort Inline
… 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: "SNORTATTACK AAMS ITALIAN LAW"; flow: to_server,established; content:"it.888.com"; reference:url,www.aams.it; classtype: policyviolation; sid:5002020; react: block, msg ; )
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.
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.
SNORT REACT ,[object Object]
Snort offre due modi alternativi di operare in Flexible Response: FlexResp e FlexResp2. ,[object Object]
SNORT REACT
HOW IT WORKS
HOW IT WORKS ,[object Object]
Potete ottimizzare il throughput usando la kernel patch PF_RING e le PCAP_RING
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
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
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
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)
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
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
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="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" CFLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" 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
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
SNORT REACT ,[object Object]
Dalla 2.8.4 non c'e' da applicare nessuna patch Editare il file: ./src/detection-plugins/sp_react.c
SNORT SP_REACT.C 313: char tmp_head[] = "HTTP/1.1 302 FOUND Location: http://serverx:80  Server:Snort/2.8.3.2 Connection:Close Content-Type:text/html";

Contenu connexe

Tendances

Introduzione all'Information Gathering
Introduzione all'Information GatheringIntroduzione all'Information Gathering
Introduzione all'Information GatheringSalvatore Lentini
 
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...Simone Onofri
 
introduzione_a_pfSense
introduzione_a_pfSenseintroduzione_a_pfSense
introduzione_a_pfSenseMassimo Giaimo
 
Buffer Overflow - Shellcode - Shatter Attack
Buffer Overflow - Shellcode - Shatter AttackBuffer Overflow - Shellcode - Shatter Attack
Buffer Overflow - Shellcode - Shatter Attackluigi capuzzello
 
Introduzione alla "Tabella Arcobaleno"
Introduzione alla "Tabella Arcobaleno"Introduzione alla "Tabella Arcobaleno"
Introduzione alla "Tabella Arcobaleno"Paolo Quartarone
 
Installazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red HatInstallazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red HatBabel
 
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...gammsystem
 
Introduzione ad ubuntu core - Qt day 2017
Introduzione ad ubuntu core  - Qt day 2017Introduzione ad ubuntu core  - Qt day 2017
Introduzione ad ubuntu core - Qt day 2017Marco Trevisan
 
Partizionamento_Dualboot_Andreapazo_LD09
Partizionamento_Dualboot_Andreapazo_LD09Partizionamento_Dualboot_Andreapazo_LD09
Partizionamento_Dualboot_Andreapazo_LD09andreapazzo
 
Assembly and Reverse Engineering
Assembly and Reverse EngineeringAssembly and Reverse Engineering
Assembly and Reverse Engineeringluigi capuzzello
 
Smau padova 2013 gianfranco tonello
Smau padova 2013 gianfranco tonelloSmau padova 2013 gianfranco tonello
Smau padova 2013 gianfranco tonelloSMAU
 
34 anni di e-mail: SMTP
34 anni di e-mail: SMTP34 anni di e-mail: SMTP
34 anni di e-mail: SMTPAntonio Prado
 
Fuzzing Techniques for Software Vulnerability Discovery
Fuzzing Techniques for Software Vulnerability DiscoveryFuzzing Techniques for Software Vulnerability Discovery
Fuzzing Techniques for Software Vulnerability Discoveryameft
 

Tendances (20)

Packet Sniffing
Packet SniffingPacket Sniffing
Packet Sniffing
 
Introduzione all'Information Gathering
Introduzione all'Information GatheringIntroduzione all'Information Gathering
Introduzione all'Information Gathering
 
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Applica...
 
Heartbleed - OpenSSL Bug
Heartbleed - OpenSSL BugHeartbleed - OpenSSL Bug
Heartbleed - OpenSSL Bug
 
Introduzione ros
Introduzione rosIntroduzione ros
Introduzione ros
 
introduzione_a_pfSense
introduzione_a_pfSenseintroduzione_a_pfSense
introduzione_a_pfSense
 
PfSense Cluster
PfSense ClusterPfSense Cluster
PfSense Cluster
 
Buffer Overflow - Shellcode - Shatter Attack
Buffer Overflow - Shellcode - Shatter AttackBuffer Overflow - Shellcode - Shatter Attack
Buffer Overflow - Shellcode - Shatter Attack
 
Introduzione alla "Tabella Arcobaleno"
Introduzione alla "Tabella Arcobaleno"Introduzione alla "Tabella Arcobaleno"
Introduzione alla "Tabella Arcobaleno"
 
Installazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red HatInstallazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red Hat
 
Il nuovo Bryar.pm
Il nuovo Bryar.pmIl nuovo Bryar.pm
Il nuovo Bryar.pm
 
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
 
Introduzione ad ubuntu core - Qt day 2017
Introduzione ad ubuntu core  - Qt day 2017Introduzione ad ubuntu core  - Qt day 2017
Introduzione ad ubuntu core - Qt day 2017
 
Partizionamento_Dualboot_Andreapazo_LD09
Partizionamento_Dualboot_Andreapazo_LD09Partizionamento_Dualboot_Andreapazo_LD09
Partizionamento_Dualboot_Andreapazo_LD09
 
Assembly and Reverse Engineering
Assembly and Reverse EngineeringAssembly and Reverse Engineering
Assembly and Reverse Engineering
 
Digital Forensics
Digital ForensicsDigital Forensics
Digital Forensics
 
Smau padova 2013 gianfranco tonello
Smau padova 2013 gianfranco tonelloSmau padova 2013 gianfranco tonello
Smau padova 2013 gianfranco tonello
 
34 anni di e-mail: SMTP
34 anni di e-mail: SMTP34 anni di e-mail: SMTP
34 anni di e-mail: SMTP
 
Fuzzing Techniques for Software Vulnerability Discovery
Fuzzing Techniques for Software Vulnerability DiscoveryFuzzing Techniques for Software Vulnerability Discovery
Fuzzing Techniques for Software Vulnerability Discovery
 
Progetto Netkit
Progetto NetkitProgetto Netkit
Progetto Netkit
 

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

Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Codemotion
 
Cross compiler per uso domestico
Cross compiler per uso domesticoCross compiler per uso domestico
Cross compiler per uso domesticoBabel
 
Deployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con SaltDeployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con Saltitbabu
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Codemotion
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterMatteo Baccan
 
TOR - The Onion Router
TOR - The Onion Router TOR - The Onion Router
TOR - The Onion Router Marcello Viti
 
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)Gabriele Guizzardi
 
Virtualizzazione con Gnu/Linux e Xen
Virtualizzazione con Gnu/Linux e XenVirtualizzazione con Gnu/Linux e Xen
Virtualizzazione con Gnu/Linux e XenClaudio Cardinali
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoBabel
 
Installare i server via rete con Cobbler
Installare i server via rete con CobblerInstallare i server via rete con Cobbler
Installare i server via rete con CobblerBabel
 
Network_Forensics_Analysis_Tool.pptx
Network_Forensics_Analysis_Tool.pptxNetwork_Forensics_Analysis_Tool.pptx
Network_Forensics_Analysis_Tool.pptxManlioSantonastaso
 
Linux Day Torino 2015 applicazioni per iniziare
Linux Day Torino 2015   applicazioni per iniziareLinux Day Torino 2015   applicazioni per iniziare
Linux Day Torino 2015 applicazioni per iniziareFrancesco Tucci
 
Monitoraggio della rete con cacti
Monitoraggio della rete con cactiMonitoraggio della rete con cacti
Monitoraggio della rete con cactidalegiuseppe
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioMongoDB
 
Installazione Qt/Qt Quick per target Android
Installazione Qt/Qt Quick  per target AndroidInstallazione Qt/Qt Quick  per target Android
Installazione Qt/Qt Quick per target AndroidPaolo Sereno
 
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan
 
Nagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceNagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceBabel
 
Hacking Access Point con Firmware Open Source
Hacking Access Point con Firmware Open SourceHacking Access Point con Firmware Open Source
Hacking Access Point con Firmware Open SourceClaudio Cardinali
 

Similaire à Snort React per Webfiltering : "Soluzioni per le Leggi-Lista" (20)

Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un’architettura Raspberry Pi...
 
TuxIsAlive
TuxIsAliveTuxIsAlive
TuxIsAlive
 
Cross compiler per uso domestico
Cross compiler per uso domesticoCross compiler per uso domestico
Cross compiler per uso domestico
 
Deployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con SaltDeployment ripetibili e automatizzati con Salt
Deployment ripetibili e automatizzati con Salt
 
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
Succo di lampone: come ottimizzare JAVA e PHP su un'architettura Raspberry Pi...
 
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi ClusterCodemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
Codemotion 2014 : ottimizzare JAVA e PHP su un’architettura Raspberry Pi Cluster
 
LTSP
LTSPLTSP
LTSP
 
TOR - The Onion Router
TOR - The Onion Router TOR - The Onion Router
TOR - The Onion Router
 
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
Raspberry pi per tutti (workshop presso Warehouse Coworking Pesaro)
 
Virtualizzazione con Gnu/Linux e Xen
Virtualizzazione con Gnu/Linux e XenVirtualizzazione con Gnu/Linux e Xen
Virtualizzazione con Gnu/Linux e Xen
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimento
 
Installare i server via rete con Cobbler
Installare i server via rete con CobblerInstallare i server via rete con Cobbler
Installare i server via rete con Cobbler
 
Network_Forensics_Analysis_Tool.pptx
Network_Forensics_Analysis_Tool.pptxNetwork_Forensics_Analysis_Tool.pptx
Network_Forensics_Analysis_Tool.pptx
 
Linux Day Torino 2015 applicazioni per iniziare
Linux Day Torino 2015   applicazioni per iniziareLinux Day Torino 2015   applicazioni per iniziare
Linux Day Torino 2015 applicazioni per iniziare
 
Monitoraggio della rete con cacti
Monitoraggio della rete con cactiMonitoraggio della rete con cacti
Monitoraggio della rete con cacti
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
 
Installazione Qt/Qt Quick per target Android
Installazione Qt/Qt Quick  per target AndroidInstallazione Qt/Qt Quick  per target Android
Installazione Qt/Qt Quick per target Android
 
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
Matteo Baccan - Valerio Tognozzi - Novara LinuxDay 2015
 
Nagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceNagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open source
 
Hacking Access Point con Firmware Open Source
Hacking Access Point con Firmware Open SourceHacking Access Point con Firmware Open Source
Hacking Access Point con Firmware Open Source
 

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

  • 1. Snort React per Webfiltering : "Soluzioni per le Leggi-Lista" Nicola Mondinelli Si è quella di prima...
  • 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. 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.
  • 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.
  • 7.
  • 8.
  • 9.
  • 12. … Problema di Continuità di Servizio: Se il servizio di filtraggio muore blocco la connettività a tutti?
  • 13. REACT: alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg: "SNORTATTACK AAMS ITALIAN LAW"; flow: to_server,established; content:"it.888.com"; reference:url,www.aams.it; classtype: policyviolation; sid:5002020; react: block, msg ; )
  • 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. 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.
  • 17.
  • 20.
  • 21. Potete ottimizzare il throughput usando la kernel patch PF_RING e le PCAP_RING
  • 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. 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. 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. 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. 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. 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. 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="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" CFLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" 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. 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.
  • 31. Dalla 2.8.4 non c'e' da applicare nessuna patch Editare il file: ./src/detection-plugins/sp_react.c
  • 32. SNORT SP_REACT.C 313: char tmp_head[] = "HTTP/1.1 302 FOUND Location: http://serverx:80 Server:Snort/2.8.3.2 Connection:Close Content-Type:text/html";
  • 33. SNORT SP_REACT.C 314: char tmp_buf1[] = &quot;<HTML><HEAD><TITLE>Snort</TITLE></HEAD><BODY BGCOLOR=amp;quot;#FFFFFFamp;quot;><CENTER><BR><H1>Snort!</H1>Version &quot;; 315: char tmp_buf2[] = &quot; Snortattack patch! <H1><BR><BR><FONT COLOR=amp;quot;#FF0000amp;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. 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.
  • 37. Tutti i plugin che volete :-)
  • 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. AVVIA SNORT snort -A fast -i br0 -b -d -D -c /etc/snort/snort.conf -l /var/log/snort/law/ --nolock-pidfile
  • 40.
  • 41. Includere nel nome della rule il sito che si sta bloccando di modo da poter capire nei log cosa state bloccando
  • 43. Documentazione online www.netfilter.org www.snort.org http://snort-inline.sourceforge.net/index.html www.snortattack.org