Probleme bei der Snort Installation

Hallo,

ich habe Probleme bei der Installation von Snort auf Ubuntu 10.04 auf einem vServer. Ich möchte das ganze mit apt-get installieren, und ich komme auch in die verschiedenen Installationsmasken. Als Interface habe ich "venet0" und "venet0:0" zur Auswahl, und habe mich für "venet0:0" entschieden, da das andere auf der inet addr: 127.0.0.1 läuft, und damit nach meinem Verständnis nicht infrage kommt.
Als IP habe ich die inet addr von "venet0:0" angegeben, CIDR ist /32.

Ausgabe des Fehlercodes nach diesen Angaben:

Code:
eth0: error fetching interface information: Device not found
* Stopping Network Intrusion Detection System  snort                            
* No running snort instance found
* Starting Network Intrusion Detection System  snort                    [fail]
invoke-rc.d: initscript snort, action "start" failed.

Danach bricht das post-installation script mit einem Fehler ab.

Ich frage mich aber, wieso Snort versucht auf eth0 zu arbeiten, ich habe doch ausdrücklich ein anderes Interface angegeben?

Ein bekannter von mir, der mich überhaupt auf den Trichter mit Snort gebracht hat, hat die Einstellungen wie oben beschrieben auf einem Ubuntu 10.04 durchgeführt, wenn auch auf einem dedicated Server, und bei ihm läuft alles reibungslos. Auf meinem Server habe ich zwar zzt. keine Kunden liegen, und ich teile ihn mir mit einem Kollegen nur für Webentwicklung und ein bisschen Subversion, demnach möchte ich Snort installieren, um es mal gemacht und gesehen zu haben, aber noch vor der Installation aufgeben wollte ich dann doch nicht :rolleyes:

Wo seht ihr den Fehler? Habe ich etwas grundlegendes falsch verstanden oder übersehe ich einfach etwas? Muss ich wegen dem vServer irgend etwas anders machen?
 
Poste doch mal bitte den Inhalt der folgenden Datei:
/etc/network/interfaces

Und die Ausgabe von:
Code:
sudo ifconfig
 
Okay, einmal die ifconfig Ausgabe:

Code:
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:446 errors:0 dropped:0 overruns:0 frame:0
          TX packets:446 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:71953 (71.9 KB)  TX bytes:71953 (71.9 KB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:127.0.0.1  P-t-P:127.0.0.1  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:4039 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3423 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2708715 (2.7 MB)  TX bytes:819826 (819.8 KB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:87.106.91.xxx  P-t-P:87.106.91.xxx  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

Und die interfaces:

Code:
auto lo
iface lo inet loopback
	address 127.0.0.1
	netmask 255.0.0.0
	broadcast 127.255.255.255
	up ip route replace 127.0.0.0/8 dev lo


# Auto generated venet0 interfaces
auto venet0
iface venet0 inet static
	address 127.0.0.1
	netmask 255.255.255.255
	broadcast 0.0.0.0
	up route add -net 191.255.255.1 netmask 255.255.255.255 dev venet0
	up route add default gw 191.255.255.1

auto venet0:0
iface venet0:0 inet static
	address 87.106.91.xxx
	netmask 255.255.255.255
 
Ich kann da grad nur ins Blaue raten. Um Snort mit einem anderen Interface als eth0 zu nutzen, brauchst du den Switch -i $nic. Bei Debian-Basierten Distributionen lässt sich so etwas meistens in /etc/default/$paketname einstellen. Existiert bei dir eine Datei /etc/default/snort (oder ähnlich), in welcher weitere Argumente angegeben werden könnten?
 
Klar, das ist leider aus der ferne schwer zu beurteilen

Das Interface nachträglich zu ändern, bzw mit dem -i Switch zu starten hatte ich auch schon überlegt. Ich habe aber lediglich eine snort.debian.conf, die Einstellungen hier drin sehen gut aus. Normalerweise sollte dort aber mehr config files liegen, durch den Abbruch des post-installation scripts ist wahrscheinlich die Installation unvollständig?

Auf jeden Fall schon mal danke für deine Mühe!

Edit: Die Ausgabe "/usr/sbin/dpkg-reconfigure: snort is broken or not fully installed" spricht sehr dafür.
 
Zuletzt bearbeitet:
In dem Fall:

Code:
sudo apt-get --purge remove snort
sudo apt-get install snort

Sollte tun...
 
Das postinst-Script kannst du ganz gemütlich umgehen, indem du das richtige in /var/lib/dpkg/info/ suchst und „exit 0“ an den Anfang schreibst (nach dem Shebang natürlich...).
 
Damit hab ich bisher nicht gearbeitet, aber gut sowas zu wissen. :thumb_up:

Was da wohl infrage kommt aus diesen Einträgen:
Code:
snort-common-libraries.list      snort-common.postinst
snort-common-libraries.md5sums   snort-common.postrm
snort-common-libraries.postinst  snort-common.templates
snort-common-libraries.postrm    snort-rules-default.conffiles
snort-common-libraries.shlibs    snort-rules-default.list
snort-common.conffiles           snort-rules-default.md5sums
snort-common.config              snort-rules-default.postrm
snort-common.list                snort-rules-default.preinst
snort-common.md5sums

müsste die snort-common.postinst sein? Habe jetzt hier und bei der snort-common-libraries.postinst das exit 0 eingetragen, Ausgabe bei Installation

Code:
invoke-rc.d: initscript snort, action "start" failed.
dpkg: error processing snort (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 snort
E: Sub-process /usr/bin/dpkg returned an error code (1)

Kann mir aber gut vorstellen, dass ich jetzt gerade was falsch verstanden habe.
 
snort-common.postinst gibts noch, eventuell ist das das Script, das da den Fehler fabriziert.

Nachtrag: schau dir das Script auf jeden Fall mal an. Da sollte ein Abschnitt sein, der ausgeführt wird, wenn --configure aufgerufen wird (was bei dir der Fall ist). Eventuell siehst du da, warum das Script failed... oder ob da irgendwie hardcoded eth0 drin steht... oder was auch immer ;)
 
Es beginnt mit

Code:
if [ -x /etc/init.d/snort ] ; then

wofür steht das -x?

Aber wie weiter oben schon gesagt, dieses Script und das snort-common-libraries.postinst sind beide mit exit 0 "kastriert", dann dürften die beiden doch garnicht mehr mit reinspielen?
 
-x bedeutet „ausführbar“. Also wenn /etc/init.d/snort ausführbar ist, dann...

Aber an dieser Stelle wüsste ich jetzt auch nicht weiter. Scheint was doof zu sein auf nem V-Server, der kein eth0 hat. Eventuell mal im Ubuntu-Forum fragen?
 
Wird wohl besser sein. Snort hat allem Anschein nach auch ein Forum, auch wenn das zzt. auf einen 404 läuft. Das Macht Mut :D

Auf jeden Fall noch mal vielen Dank, sollte ich es hinbekommen werde ich mich hier melden.
 
mhh ... ich frage mich ob das hier funktionieren könnte ...

ip link set venet0:0 name eth0


problematisch könnte das natürlich werden wenn andere "dinge" auf dem system damit rechnen dass das interface venet0:0 heißt ...
 
Mmh, das System zu ändern um es einer Software recht zu machen, finde ich ehrlich gesagt nicht so prall. Das muss ja auch irgendwie anders hinzubekommen sein, ist ja nicht so, dass niemand Snort auf VMs oder mit anderen Interfaces benutzt.
 
Das Default-Interface kannst du normalerweise in der /etc/snort/snort.conf angeben (dort wo auch die rules-files eingebunden werden).

Das Problem ist hierbei aber, dass dein Interface sich in den promiskuren Modus versetzen lassen sollte - was natürlich optimalerweise auf einer 2. (echten) NIC geschehen sollte!

Ich habe bisher die Erfahrung gemacht, dass es einfacher ist, snort händisch zu installieren, als apt dafür zu verwenden - speziell wenn du dann noch Zusatztools wie barnyard nutzen möchtest.

Ich habe auf Arbeit noch eine Step-By-Step-Anleitung, wie man Snort auf Ubuntu installiert und konfiguriert. wenn du möchtest, suche ich sie dir mal heraus.

lG
 
Hi :)

Das ist zugegebenermaßen nicht die beste Anleitung, aber sie sollte dir helfen. Ein wenig improvisieren kann aber hier und da notwendig sein. Da snort aber recht kompliziert ist, kommst du da sowieso nicht drum herum :P

Viel Spaß :)
------------------------------

1. Vorbereitung
sudo aptitude install nbtscan
sudo aptitude install apache2
sudo aptitude install php5
sudo aptitude install libapache2-mod-php5
sudo aptitude install php5-mysql
sudo aptitude install php5-gd
sudo aptitude install libphp-adodb

WARNING: include path for php has changed!
libphp-adodb is no longer installed in /usr/share/adodb.
New installation path is now /usr/share/php/adodb.
Please update your php.ini file.
Maybe you must also change your web-server configuraton.

sudo aptitude install php5-adodb
sudo aptitude install libpcap0.8-dev
sudo aptitude install libpcre3-dev
sudo aptitude install g++
sudo aptitude install bison
sudo aptitude install flex
sudo aptitude install libtool
sudo aptitude install php-pear
sudo aptitude install emacs23-nox ;-)
sudo aptitude install libmysqlclient16-dev

2. Interface Vorbereitung:
/etc/network/interfaces bearbeiten:

auto eth0
iface eth0 inet static
address 192....
netmask 255.....
network ....0
broadcast ...255
gateway 192....1

# Sniffing interface eth1
auto eth1
iface eth1 inet manual

ifconfig eth1 up
/etc/init.d/networking restart

3. Snort installieren:

wget http://www.snort.org/downloads/116
cd /usr/local
tar zxvf snort-2.8.6.1.tar.gz
cd snort-2.8.6.1/
./configure --with-mysql –enable-dynamicplugin
make
make install
snort -V
sudo mkdir /etc/snort
sudo mkdir /var/log/snort
cd /etc/snort
sudo tar xzvf snortrules-snapshot-2861.tar.gz -C /etc/snort/
sudo cp etc/* /etc/snort/
sudo useradd -g snort snort
sudo chown snort:snort /var/log/snort
cd /etc/snort
sudo touch /var/log/snort/alert
sudo chown snort:snort /var/log/snort/alert
sudo chmod 600 /var/log/snort/alert
sudo mkdir /usr/local/lib/snort_dynamicrules
sudo cp /etc/snort/so_rules/precompiled/Debian-Lenny/i386/2.8.6.1/* /usr/local/lib/snort_dynamicrules/

4. Snort konfigurieren

emacs /etc/snort/snort.conf

Ändern:
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules

HOME_NET, EXTERNAL_NET, HTTP_PORTS 80:82, ORACLE_PORTS 2521

include $RULE_PATH/rule.rules

--> Output section:
output unified2:
filename snort.log, limit=128

--> prüfen ob die Verzeichnisse korrekt gesetzt wurden
dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/
dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so
dynamicdetection directory /usr/local/lib/snort_dynamicrules

5. Snort testen

snort -v -i eth1
sudo snort -d -e -l ./snort_log/
sudo snort -vd -r snort_log/snort.log.1285291449
sudo snort -v -d -e -i eth0
sudo snort -v -d -e -i eth0 host 10.1.1.1 and port 23

--> Protokollieren auf Festplatte:
sudo mkdir /var/log/snort_test
sudo chown snort:snort /var/log/snort_test
sudo snort -c /etc/snort/snort.conf -de -i eth1 -l /var/log/snort_test

6. mysql:
mysql -p -h localhost -u root

create database snort;
grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost;

SET PASSWORD FOR snort@localhost=PASSWORD('test');
flush privileges;

cd /usr/local/snort-2.8.6.1/schemas/
mysql -u root -h localhost -p < create_mysql snort

7. BASE installieren
wget BASE - Browse Files at SourceForge.net 1.4.5.tar.gz/download

cd /var/www
sudo pear install Mail_Mime
vi /etc/php5/apache2/php.ini
; error_reporting
;Default Value: E_ALL & ~E_NOTICE

--> unter Dynamic Extensions.
extension=msql.dll
extension=gd.so

sudo emacs /etc/apache2/apache2.conf
servername snort-srv.domain.local

sudo tar xzvf base-1.4.5.tar.gz
ls -al base-1.4.5/
sudo chown -R user:group base-1.4.5/
sudo chown -R www-data:www-data base-1.4.5/
dpkg -L php5-adodb
wget ADOdb - Browse Files at SourceForge.net php5/adodb511.tgz

cd /var/www/
sudo tar xzvf adodb511.tgz

8. SNORT-Conf:
--> ändern
output database: alert, mysql, user=snort password=test dbname=snort host=localhost

sudo snort -c /etc/snort/snort.conf -i eth1
 
Hey,

vielen Dank, wirklich toll von dir! :thumb_up:

Ich werde es die Tage nochmal probieren, und dann hoffentlich von Erfolg berichten :D
 
Zurück
Oben