Kryptographie und IT-Sicherheit Datum: 1. Juni 2016 Kryptographie und IT-Sicherheit: Beschreibung: Snort Demo Zusammenfassung Dieses Dokument beinhaltet Informationen, wie Snort installiert und konfiguiert wurde. Die Arbeit wurde von Christian Barthel, Cornelia Mayer und Simone Oblasser erstellt. Installation Snort wurde einmal auf einem Internetserver installiert, um eine langfristige Aufnahme von Netzwerkpaketen zu ermöglichen. Um Snort Regeln zu testen, wurde Snort zusätzlich in einer virtuellen Testumgebung installiert. Die Installation fand auf einem Ubuntu GNU/Linux Rechner statt und benutzt eine MySQL Datenbank, um die Pakete zu speichern. Diese Datenbank wird dann von BASE (Basic Analysis and Security Engine) benutzt um eine graphische Auswertung zu ermöglichen: # # # # apt-get apt-get apt-get apt-get install install install install build-essentials mysql-server snort-mysql acidbase Alternativ kann Snort auch aus den Original-Quelldateien kompiliert werden: # # # # # # # wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz tar xfvz daq-2.0.6.tar.gz ./configure && make && make install wget https://www.snort.org/downloads/snort/snort-2.9.8.0.tar.gz tar xfvz snort-2.9.8.0.tar.gz cd snort-2.9.8.0 ./configure && make && make install Um die Korrektheit der Installation zu testen ruft man snort –version auf. Konfiguration Je nach Installationsverfahren kann es notwendig sein, die Konfigurationsdateien manuell zu erstellen. Die folgenden Befehle kopieren die initalen Konfigurationsdateien aus den Originalquellen: Revision ∶ 1.1 1 von 4 , # # # # # mkdir /etc/snort mkdir /etc/snort/rules mkdir /etc/snort/preproc_rules cp snort-2.9.8.0/etc/*.conf* /etc/snort cp snort-2.9.8.0/etc/*.map /etc/snort Bei Ubuntu wurden bereits Snort Regeln mitgeliefert und in /etc/snort/rules/ installiert: attack-responses.rules community-smtp.rules backdoor.rules community-sql-injection.rules bad-traffic.rules community-virus.rules chat.rules community-web-attacks.rules [... noch weitere Regeln ...] icmp.rules imap.rules info.rules local.rules shellcode.rules smtp.rules snmp.rules sql.rules Besitzt man keine Regeln oder möchte man diese ergänzen, dann kann man sich die offiziellen Snort Regeln organisieren für die man ein oinkcode Code benötigt: # ftp -o snortrules-snapshot-2973.tar.gz \ https://www.snort.org/reg-rules/snortrules-snapshot-2973.tar.gz/<oinkcode> # tar -C /etc/snort -xzf snortrules-snapshot-2973.tar.gz rules preproc_rules Möchte man sich nicht bei Snort anmelden, dann kann man die freien Regeln von Emerging Threat benutzen. Diese installiert man so: # ftp http://rules.emergingthreats.net/open/snort-2.9.0/emerging.rules.tar.gz # tar -C /etc/snort -xzf emerging.rules.tar.gz Eigene Regeln Interessant ist auch das Erstellen eigener Regeln. Snort beinhaltet eine eigene, umfangreiche Sprache um Signaturen zu erstellen. Dazu erstellt man die Datei local.rules in /etc/snort/rules/ und fügt dann in der snort.conf diese Datei mittels include ein: include $RULES/local.rules Nun kann die Datei local.rules mit eigenen Regeln aktiviert werden. Für die Demo wurden 2 einfache Regeln erstellt: # file: local.rules alert icmp any any -> $HOME_NET any \ (msg:"ICMP test"; sid:10000001; rev:001;) alert tcp any any -> any 80 \ (msg: "http url break in "; sid:10000002; content:"/bin/ps"; http_uri;) Revision ∶ 1.1 2 von 4 , Ausführung Um Snort zu starten können die Befehle • Sniffer Modus: Zeichnet alle Pakete auf und gibt sie auf der Konsole aus: # snort -dev • Packet Logger Modus: Zeichnet alle Pakete auf und speichert diese in Logdateien im Ordner log: # snort -dev -l ./log/ • NIDS Modus: Zeigt Alerts an und informiert über potentielle Angriffe. Mit -A console können die Warnungen auf der Konsole angezeigt werden: # snort -dev -l ./log/ -h 192.168.1.0/24 -c /etc/snort/snort.conf Startet man Snort im NIDS Modus mit den eigenen Regeln, dann kann man durch einen ICMP Ping oder einen HTTP Request von einem zweiten Computer aus die Alerts testen: # ping 10.0.0.138 ^C # telnet 10.0.0.138 80 GET /bin/ps HTTP/1.1 .... Das Snort System zeigt dann: Commencing packet processing (pid=29596) 04/04-23:31:13.079851 [**] [1:100000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.139 -> 10.0.0.138 04/04-23:31:37.000088 [**] [1:1328:6] WEB-ATTACKS /bin/ps command attempt [**] [Classification: Web Application Attack] [Priority: 1] {TCP} 10.0.0.139:37055 -> 10.0.0.138:80 BASE BASE ist eine Möglichkeit, Snort Alerts abzufragen und zu stukturieren. Es hilft dabei, Auffälligkeiten zu entdecken und Reports über den Netzwerkstatus zu erstellen. Snort hat dabei die Alerts und Paketdaten in eine MySQL Datenbank geladen. Von dort greift dann BASE darauf zu und ermöglicht es, mittels PHP Skripte umfangreiche Abfragen zu erstellen und graphisch aufzubereiten. Es ist weiters auch möglich, sich spezielle Alert-Gruppen zu definieren sodass man immer gut informiert ist, was im Netzwerk passiert. Das Testsystem wurde im Internet ca. 1 Monat betrieben und konnte bis dahin 1 kleinere DoS Attacke aufnehmen und insgesamt gab es 560 Alerts. Revision ∶ 1.1 3 von 4 , Revision ∶ 1.1 4 von 4 ,