Dernière modification 27 décembre 2016
tar xvfz libpcap-1.8.1.tar.gz
Cela va nous donner le répertoire libpcap-1.8.1, dans ce répertoire on tapera pour créer le Makefile:
./configure
A présent tapons :
make
NOTE : Les packages suivants sont nécessaires byacc et flex
Puis en tant que root
make install
Si vous avez choisi d'installer avec le package RPM, pour la suite des
opérations il vous faudra aussi installer le package de développement libpcap-devel
tar xvfz snort-2.9.9.0.tar.gz
Cela va nous créer un répertoire snort-2.9.9.0. Avant d'aller plus loin, vous devez vous assurer que la bibliothèque libpcap est bien installée. On tape d'abord :
./configure --enable-sourcefire
l'option enable-sourcefire permet de faire du monitoring de performance. Attention s'il ne trouve pas DAQ avec ce type d'erreur dans le fichier config.log
/usr/local/lib/libsfbpf.so.0: undefined symbol: yy_scan_string
cela vient de flex 2.6.2, il faudra downgrader en récupérant la version 2.6.0 par là https://github.com/westes/flex/releases qu'on décompresse en tapant
tar xvfz flex-2.6.2.tar.gz
cela donne le répertoire flex-2.6.0 dans lequel on tape
./autogen.sh
./configure
make
Puis en tant que root
make install
on reprend depuis la compilation de DAQ et on revient au répertoire de snort où on retape ./configure --enable-sourcefire puis make
Puis en tant que root
make install
on rajoute dans le fichier /etc/ld.so.conf la ligne suivante
/usr/local/lib/snort_dynamicengine
/usr/local/lib/snort_dynamicpreprocessor
/usr/local/lib/snort/dynamic_output
/usr/local/lib/snort/dynamic_preproc
puis on tape ldconfig
Pour voir si tout est OK, en tant que root on lance snort en tant
snort -V
voilà le résultat
,,_ -*> Snort! <*-
o" )~ Version 2.9.9.0 GRE (Build 56)
'''' By Martin Roesch & The Snort
Team: http://www.snort.org/contact#team
Copyright
(C) 2014-2016 Cisco and/or its affiliates. All rights reserved.
Copyright
(C) 1998-2013 Sourcefire, Inc., et al.
Using
libpcap version 1.8.1
Using PCRE
version: 8.39 2016-06-14
Using ZLIB
version: 1.2.8
si vous rencontrez cette erreur
snort: error while loading shared libraries: libdnet.1: cannot open shared object file: No such file or directory
en tant que root il faudra créer le lien suivant
ln -s /usr/local/lib/libdnet.1 /usr/local/lib/libdnet.so.1
puis on retape ldconfig
maintenant pour des raisons de sécurité on mettra en oeuvre la séparation des privilèges, on va créer un utilisateur et un groupe snort
groupadd snortsnort -options expression
Parmi les nombreuses options disponibles (accessible par snort --help) on trouve :
-b les paquets sont logués dans un fichier au format tcpdump appelé snort.log.numéro. C'est l'option qu'il faut prendre si on ne veut pas que snort perdre du temps à faire la conversion binaire->ASCII pour ne rater aucun paquets, l'option -r permet de relire ces fichiers en temps différé.
-c <cf> on utilise le fichier de règles <cf>, ce fichier indique ce que le système doit loguer.
-h <hn> on définit ici l'adresse du réseau local, cela sert uniquement pour le formatage du texte pour mettre la flèche qui va bien en fonction du sens du trafic par rapport au réseau (entrant ou sortant)
-i <if> on utilise l'interface <if>, par défaut eth0
-s Les alertes sont archivées au travers de la journalisation de systemd
-l log-dir pour définir le répertoire d'archivage pour les logs. Par défaut le répertoire est /var/log/snort
-d Pour extraire uniquement la couche transport (layer) du paquet
-v mode verbeux, les paquets apparaissent dans la console ou le shell à partir duquel a été lancée la commande, contrairement à l'option -b ça ralentit considéralement le fonctionnement de snort du coup on peut perdre des paquets, à déconseiller donc, si vous ne voulez pas perdre une miette des échanges de paquets
L'expression fixe les critères pour les paquets qui seront logués. Si
aucune expression n'est donnée, tous les paquets seront logués. Une
expression consiste en un ou plusieurs primitives, une primitive consiste
en une identité (nom ou adresse) précédée par un ou plusieurs
qualificateurs, dont il existe trois types:
- type: pour définir le type précis de l'identité, on a le choix entre host
pour une machine, net pour un réseau et port pour un port,
par défaut on utilise le type host.
Exemple: host www.breizland.bz pour l'hôte du même nom, ou encore
net 192.168.13 pour un réseau du type 192.168.13.X
- dir: pour définir la direction à partir ou vers l'identité, les
directions possibles sont src, pour en provenance de, et dst,
pour à destination de. Par défaut on prend les paquets dans les deux sens
(src et dst).
Exemple: src www.breizland.bz les paquets provenant de l'hôte www.breizland.bz,
ou encore dst port 20 les paquets à destination du ports 20 (ftp).
- proto: pour restreindre les paquets utilisant un protocole particulier,
les protocoles possibles sont : ether, fddi, ip, arp,
rarp,decnet,lat,sca,moprc,mopdl,
tcpet udp. Si aucun protocole n'est spécifié on capture les
paquets quel que soit le protocole utilisé.
Exemple: ether src www.breizland.bz les paquets utilisant ethernet
provenant de www.breizand.bz, ou encore tcp port 21, les
paquets allant ou venant du port 21 et utilisant TCP.
snort -v
voilà le résultat
Running in packet dump mode
--== Initializing Snort ==--
Initializing Output Plugins!
pcap DAQ configured to passive.
Acquiring network traffic from "eno1".
Decoding Ethernet
--== Initialization Complete
==--
,,_ -*> Snort! <*-
o" )~ Version 2.9.9.0 GRE (Build 56)
'''' By Martin Roesch & The Snort
Team: http://www.snort.org/contact#team
Copyright
(C) 2014-2016 Cisco and/or its affiliates. All rights reserved.
Copyright
(C) 1998-2013 Sourcefire, Inc., et al.
Using
libpcap version 1.8.1
Using PCRE
version: 8.39 2016-06-14
Using ZLIB
version: 1.2.8
Commencing packet processing (pid=28380)
WARNING: No preprocessors configured for policy 0.
12/26-16:39:28.532036 192.168.0.1:1900 -> 239.255.255.250:1900
UDP TTL:4 TOS:0x0 ID:36692 IpLen:20 DgmLen:367
Len: 339
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
WARNING: No preprocessors configured for policy 0.
12/26-16:39:28.533178 192.168.0.1:1900 -> 239.255.255.250:1900
UDP TTL:4 TOS:0x0 ID:36693 IpLen:20 DgmLen:312
Len: 284
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
WARNING: No preprocessors configured for policy 0.
12/26-16:39:28.539928 192.168.0.1:1900 -> 239.255.255.250:1900
UDP TTL:4 TOS:0x0 ID:36694 IpLen:20 DgmLen:303
Len: 275
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
WARNING: No preprocessors configured for policy 0.
12/26-16:39:28.539943 192.168.0.1:1900 -> 239.255.255.250:1900
UDP TTL:4 TOS:0x0 ID:36695 IpLen:20 DgmLen:377
Len: 349
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
En faisant un CTRL-C pour stopper la commande, on obtient le bilan suivant sur eno1
*** Caught Int-Signal
12/26-16:39:32.724851 192.168.0.16:910
-> 192.168.0.11:2049
TCP TTL:64 TOS:0x0 ID:17479 IpLen:20 DgmLen:248 DF
***AP*** Seq: 0x40FE9FE5 Ack: 0xA3870523 Win: 0x5DCE
TcpLen: 32
TCP Options (3) => NOP NOP TS: 27649006 25680589
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
===============================================================================
Run time for packet processing was 6.583762 seconds
Snort processed 5 packets.
Snort ran for 0 days 0 hours 0 minutes 6 seconds
Pkts/sec:
0
===============================================================================
Memory usage summary:
Total non-mmapped bytes
(arena): 782336
Bytes in mapped regions (hblkhd):
21590016
Total allocated space (uordblks):
699984
Total free space
(fordblks):
82352
Topmost releasable block (keepcost): 76400
===============================================================================
Packet I/O Totals:
Received: 235
Analyzed:
5 ( 2.128%)
Dropped:
0 ( 0.000%)
Filtered:
0 ( 0.000%)
Outstanding: 230 (
97.872%)
Injected:
0
===============================================================================
Breakdown by protocol (includes rebuilt packets):
Eth: 5
(100.000%)
VLAN:
0 ( 0.000%)
IP4: 5
(100.000%)
Frag:
0 ( 0.000%)
ICMP:
0 ( 0.000%)
UDP: 4
( 80.000%)
TCP: 1
( 20.000%)
IP6: 0
( 0.000%)
IP6
Ext: 0
( 0.000%)
IP6
Opts:
0 ( 0.000%)
Frag6:
0 ( 0.000%)
ICMP6:
0 ( 0.000%)
UDP6:
0 ( 0.000%)
TCP6:
0 ( 0.000%)
Teredo:
0 ( 0.000%)
ICMP-IP:
0 ( 0.000%)
IP4/IP4:
0 ( 0.000%)
IP4/IP6:
0 ( 0.000%)
IP6/IP4:
0 ( 0.000%)
IP6/IP6:
0 ( 0.000%)
GRE: 0
( 0.000%)
GRE
Eth: 0
( 0.000%)
GRE
VLAN:
0 ( 0.000%)
GRE
IP4: 0
( 0.000%)
GRE
IP6: 0
( 0.000%)
GRE IP6
Ext: 0
( 0.000%)
GRE
PPTP:
0 ( 0.000%)
GRE
ARP: 0
( 0.000%)
GRE
IPX: 0
( 0.000%)
GRE
Loop:
0 ( 0.000%)
MPLS:
0 ( 0.000%)
ARP: 0
( 0.000%)
IPX: 0
( 0.000%)
Eth
Loop:
0 ( 0.000%)
Eth
Disc:
0 ( 0.000%)
IP4
Disc:
0 ( 0.000%)
IP6
Disc:
0 ( 0.000%)
TCP
Disc:
0 ( 0.000%)
UDP
Disc:
0 ( 0.000%)
ICMP
Disc:
0 ( 0.000%)
All
Discard:
0 ( 0.000%)
Other:
0 ( 0.000%)
Bad Chk
Sum: 1
( 20.000%)
Bad
TTL: 0
( 0.000%)
S5 G
1: 0
( 0.000%)
S5 G
2: 0
( 0.000%)
Total:
5
===============================================================================
Snort exiting
Si vous voulez voir le contenu du paquet en plus de l'entête, vous pouvez taper:
snort -vd
voilà le résultat
Running in packet dump mode
--== Initializing Snort ==--
Initializing Output Plugins!
pcap DAQ configured to read-file.
Acquiring network traffic from "/var/log/snort/snort.log.1482767046".
--== Initialization Complete
==--
,,_ -*> Snort! <*-
o" )~ Version 2.9.9.0 GRE (Build 56)
'''' By Martin Roesch & The Snort
Team: http://www.snort.org/contact#team
Copyright
(C) 2014-2016 Cisco and/or its affiliates. All rights reserved.
Copyright
(C) 1998-2013 Sourcefire, Inc., et al.
Using
libpcap version 1.8.1
Using PCRE
version: 8.39 2016-06-14
Using ZLIB
version: 1.2.8
Commencing packet processing (pid=29179)
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
12/26-16:44:07.072743 192.168.0.16:49618 -> 192.229.220.95:80
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
TCP TTL:64 TOS:0x0 ID:9166 IpLen:20 DgmLen:40 DF
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
***A***F Seq: 0xE0C5DE43 Ack: 0xE93A9963 Win: 0xE5
TcpLen: 20
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
WARNING: No preprocessors configured for policy 0.
12/26-16:44:07.072757 192.168.0.16:54728 -> 87.248.221.254:80
WARNING: No preprocessors configured for policy 0.
TCP TTL:64 TOS:0x0 ID:15967 IpLen:20 DgmLen:52 DF
***A***F Seq: 0x1524C2C1 Ack: 0x432EE1B9 Win: 0xE5
TcpLen: 32
TCP Options (3) => NOP NOP TS: 27923354 2022426350
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
12/26-16:44:07.072762 192.168.0.16:54722 -> 87.248.221.254:80
TCP TTL:64 TOS:0x0 ID:58911 IpLen:20 DgmLen:52 DF
***A***F Seq: 0x70CC1A27 Ack: 0x919AAF6C Win: 0xE5
TcpLen: 32
TCP Options (3) => NOP NOP TS: 27923354 158057773
WARNING: No preprocessors configured for policy 0.
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
12/26-16:44:07.072768 192.168.0.16:54730 -> 87.248.221.254:80
WARNING: No preprocessors configured for policy 0.
TCP TTL:64 TOS:0x0 ID:33298 IpLen:20 DgmLen:52 DF
***A***F Seq: 0xB527E8E Ack: 0x6DDA3298 Win: 0xE5
TcpLen: 32
WARNING: No preprocessors configured for policy 0.
TCP Options (3) => NOP NOP TS: 27923354 3018475770
snort -vde
Maintenant on va loguer les paquets en tapant
snort -vde -l /var/log/snort
Maintenant si vous voulez exploiter en temps différé un fichier de log qui est enregistré en binaire au format tcpdump, vous taperez:
snort -vde -r /var/log/nom-du-fichier-format-tcpdump
Pour afficher les alertes dans /var/log/secure au moyen de systemd on tapera:
snort -vde -l /var/log/snort -s
voilà ce que ça peut donner au lancement de la commande quand on fait un journalctl -f
déc. 26 16:54:48 predator.kervao.fr
audit: ANOM_PROMISCUOUS dev=eno1 prom=256 old_prom=0 auid=4294967295
uid=0 gid=0 ses=4294967295
déc. 26 16:54:48 predator.kervao.fr kernel: device eno1 entered
promiscuous mode
déc. 26 16:54:48 predator.kervao.fr kernel: audit: type=1700
audit(1482767688.036:245): dev=eno1 prom=256 old_prom=0 auid=4294967295
uid=0 gid=0 ses=4294967295
déc. 26 16:54:48 predator.kervao.fr kernel: audit: type=1300
audit(1482767688.036:245): arch=c000003e syscall=54 success=yes exit=0
a0=4 a1=107 a2=1 a3=7ffd32d761b0 items=0 ppid=12232 pid=29854
auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0
tty=pts1 ses=4294967295 comm="snort" exe="/usr/local/bin/snort"
key=(null)
déc. 26 16:54:48 predator.kervao.fr kernel: audit: type=1327
audit(1482767688.036:245):
proctitle=736E6F7274002D766465002D6C002F7661722F6C6F672F736E6F7274002D73
déc. 26 16:54:48 predator.kervao.fr audit[29854]: SYSCALL arch=c000003e
syscall=54 success=yes exit=0 a0=4 a1=107 a2=1 a3=7ffd32d761b0 items=0
ppid=12232 pid=29854 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0
egid=0 sgid=0 fsgid=0 tty=pts1 ses=4294967295 comm="snort"
exe="/usr/local/bin/snort" key=(null)
Pour regarder maintenant un peu les paquets qui circulent lors d'une connexion PPP, on peut taper (l'adresse devant host correspond à l'adresse IP attribuée par le FAI) :
snort -h 192.168.13.0/24 -d -v host 213.228.15.14 -i ppp0
Voilà un extrait d'une session POP
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
10/16-21:31:09.048632 194.158.97.244:110 -> 213.36.44.26:1292
TCP TTL:59 TOS:0x0 ID:62404 DF
*****PA* Seq: 0xDCC4E1BD Ack: 0xF1084599 Win:
0x8218
TCP Options => NOP NOP TS: 240412927 876595
2B 4F 4B 20 50 4F 50 33 20 73 65 72 76 65 72 20 +OK POP3 server
4D 65 64 69 61 6E 65 74 2F 31 2E 31 33 20 3C 32 Medianet/1.13
<2
32 37 38 34 2E 39 37 31 37 32 34 36 36 37 40 6D 2784.971724667@m
65 64 69 61 6E 65 74 2D 31 76 2E 67 72 6F 6C 69 edianet-1v.groli
65 72 2E 66 72 3E 0D
0A
er.fr>..
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
10/16-21:31:09.058729 213.36.44.26:1292 -> 194.158.97.244:110
TCP TTL:64 TOS:0x0 ID:4594 DF
******A* Seq: 0xF1084599 Ack: 0xDCC4E205 Win:
0x7F40
TCP Options => NOP NOP TS: 876617 240412927
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
10/16-21:31:09.058988 213.36.44.26:1292 -> 194.158.97.244:110
TCP TTL:64 TOS:0x0 ID:4595 DF
*****PA* Seq: 0xF1084599 Ack: 0xDCC4E205 Win:
0x7F88
TCP Options => NOP NOP TS: 876617 240412927
55 53 45 52 20 6F 6C 69 76 69 65 72 2E 68 6F 61 USER mon-login
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
10/16-21:31:09.208661 194.158.97.244:110 -> 213.36.44.26:1292
TCP TTL:59 TOS:0x0 ID:62405 DF
******A* Seq: 0xDCC4E205 Ack: 0xF10845AE Win:
0x8218
TCP Options => NOP NOP TS: 240412944 876617
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
10/16-21:31:09.218671 194.158.97.244:110 -> 213.36.44.26:1292
TCP TTL:59 TOS:0x0 ID:62406 DF
*****PA* Seq: 0xDCC4E205 Ack: 0xF10845AE Win:
0x8218
TCP Options => NOP NOP TS: 240412944 876617
2B 4F 4B 20 6F 6C 69 76 69 65 72 2E 68 6F 61 72 +OK
mon-login
61 75 20 70 6C 65 61 73 65 20 65 6E 74 65 72
20 please enter
70 61 73 73 77 6F 72 64 0D
0A
password..
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
10/16-21:31:09.218898 213.36.44.26:1292 -> 194.158.97.244:110
TCP TTL:64 TOS:0x0 ID:4596 DF
*****PA* Seq: 0xF10845AE Ack: 0xDCC4E22F Win:
0x7F88
TCP Options => NOP NOP TS: 876633 240412944
50 41 53 53 20 73 61 78 6F 32 37 30 0D
0A PASS
mot-de-passe-en-clair..
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
10/16-21:31:09.428660 194.158.97.244:110 -> 213.36.44.26:1292
TCP TTL:59 TOS:0x0 ID:62407 DF
******A* Seq: 0xDCC4E22F Ack: 0xF10845BC Win:
0x8218
TCP Options => NOP NOP TS: 240412969 876633
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
10/16-21:31:09.638641 194.158.97.244:110 -> 213.36.44.26:1292
TCP TTL:59 TOS:0x0 ID:62408 DF
*****PA* Seq: 0xDCC4E22F Ack: 0xF10845BC Win:
0x8218
TCP Options => NOP NOP TS: 240412987 876633
2B 4F 4B 20 6F 6C 69 76 69 65 72 2E 68 6F 61 72 +OK mon-login
61 75 20 68 61 73 20 30 20 6D 65 73 73 61 67 65 has 0 message
73 20 28 30 20 6F 63 74 65 74 73 29 0D
0A s (0
octets)..*
snort peut être utilisé comme sonde pour le SIEM
Prelude.
Suricata est également un système de détection temps réel (IDS) et d'une manière générale de monitoring du réseau. Le site officiel est https://suricata-ids.org/ on installe préalablement les packages lib64yaml-devel, lib64magic-devel et lib64cap-ng-devel. On décompresse l'archive en tapant
tar xvfz suricata-3.2.tar.gz
cela donne le répertoire suricata-3.2
./configure --enable-geoip
--localstatedir=/var
make
puis en tant que root
make install
make install-full
on éditera le fichier /usr/local/etc/suricata/suricata.yaml et on veillera à bien renseigner la variable
HOME_NET:
on lance suricata en tant
suricata -c /usr/local/etc/suricata/suricata.yaml -i eno2
voilà le résultat
27/12/2016 -- 10:41:59 - <Notice>
- This is Suricata version 3.2 RELEASE
27/12/2016 -- 10:42:05 - <Notice> - all 8 packet processing
threads, 4 management threads initialized, engine started.
la trace s'enrichit dans le répertoire /var/log/suricata et en particulier dans le fichier stats.log (extrait)
------------------------------------------------------------------------------------
Date: 12/27/2016 -- 10:42:13 (uptime: 0d, 00h 00m 09s)
------------------------------------------------------------------------------------
Counter
| TM
Name
| Value
------------------------------------------------------------------------------------
capture.kernel_packets
|
Total
| 46
decoder.pkts
|
Total
| 75
decoder.bytes
|
Total
| 14033
decoder.ipv4
|
Total
| 75
decoder.ethernet
|
Total
| 75
decoder.tcp
|
Total
| 65
decoder.udp
|
Total
| 10
decoder.avg_pkt_size
|
Total
| 187
decoder.max_pkt_size
|
Total
| 398
app_layer.flow.failed_udp
|
Total
| 1
flow.spare
|
Total
| 10000
flow_mgr.rows_checked
|
Total
| 65536
flow_mgr.rows_skipped
|
Total
| 65536
4
|
Total
| 3276800
suricata peut être utilisé comme
sonde pour le SIEM Prelude.
pour plus d'info voir la doc officielle par ici http://suricata.readthedocs.io/en/latest/
[Retour page d'accueil FUNIX] | [Retour haut de la page] |