PHPMyAdmin (Datenbankverwaltung)

Installation von PHPMyAdmin auf dem PI 

apt-get install phpmyadmin

und danach den Anweisungen auf dem Bildschirm folgen.

Als Webserver wählen wir Apache aus und vergeben ein Kennwort für
die Datenbank und für die Weboberfläche.

Nach der Installation ist PhpMyAdmin unter
http://IP-Adresse/phpmyadmin
erreichbar.

Grundeinrichtung des PI

Einrichtung des Raspberry Pi

Im 1. Schritt nehmen wir die Grundeinrichtung des Raspberry PI vor.

Dazu brauchen wir die Software DiskImager für Windows und das aktuellste Image (Raspbian “wheezy”) von RaspberryPi.org.
Im Diskimager wählen wir nur die SD-Karte und das gerade geladene Image aus.

Die SD-Karte sollte wenn möglich eine Class 10 SD-Karte sein, wenn wir den
Raspberry als Webserver betreiben wollen.
Meine Empfehlung ist hier eine
SanDisk Class 10 Ultra SDHC 8GB, die es schon für ~ 10 € gibt (Schreibrate 35MB/s)
oder eine  
Sandisk Extreme Pro SDHC 8GB für ~ 20 €, (Schreibrate 95 MB/s ).
Die SD-Karte kann die Bootzeit und diverse Prozesse enorm beschleunigen.
Hier solle nicht gespart werden! 

Danach flashen wir das geladene Image auf die SD-Karte, packen diese in den Raspberry-Pi.
Nach dem Booten wird auch gleich das Setup gestartet.

Mit der IP des des Raspberry (ifconfig) starte ich Putty und melde mich am PI an.
Eine 'neuere' Version von Putty ist Kitty.

Benutzername ist 'pi'
Kennwort ist 'raspberry'

Zudem empfehle ich den Download von WinScp, um Dateien vom Computer
und dem Raspberry auszutauschen.

Danach wechsle ich zu root mit sudo su und rufe die Konfiguration mit raspi-config auf.
  • Expand RootFS aufrufen
  • configure Keyboard- Set keyboard layout = Sprache des Keybords beantwortet man 2 mal mit "German". Die Frage, ob per Control+Alt-Backspace, den X-Server beendet werden soll, sollte man mit "Yes" beantworten.
  • Change Password
  • change_locale - Set locale = Hier de_DE ISO-8859-1 auswählen mit Leertaste 
  • .Im nächsten Fenster en_GB auswählen.
  • Memory Split einstellen auf 16 MB (Über Terminal brauchen wir keine Grafik ...)
  • Overclock auf Turbo (Es wird nur hochgetaktet wenn die Leistung benötigt wird. Bei Webanwendungen lief bei mir alles doppelt so schnell mit dieser Einstellung. Manche Benutzer melden jedoch Probleme mit der SD-Karte bei dieser Geschwindigkeit. Die CPU würde sich zurücktakten wenn Sie zu heiß werden würde.). Durch das Takten auf 1 GHz laufen die Gleitkommaberechnungen um ca. 64 % und die Integerberechnungen um ca. 52 % schneller. Zudem ist der Speicher rund 55 % schneller als zuvor. Alles in allem ein richtiger Kraftprotz mit diesen Einstellungen. Meine 2 Pi´s laufen sehr stabil mit diesen Einstellungen (kein Kühlkörper).
  • Danch mit Finish einen neustart durchführen.
Nach dem neustart Updaten wir den Pi auf eine aktualisierte Version mit:

sudo su
apt-get update 
apt-get upgrade
apt-get install lsb-release git-core

wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update

rpi-update


echo "" >> /etc/apt/sources.list
nano /etc/apt/sources.list
und fügen den kopierten Inhalt von: 
ein.

STRG+O + STRG + X

und zum Abschluss der Grundkonfiguration noch ein  
init 6

An diesem Punkt der Konfiguration empfehle ich eine Sicherung des aktuellen Systems
mithilfe von Diskimager. Dazu einfach den Pfad unter Source eintragen und auf Lesen
drücken (z.B: C:\Wheezy_Update_1.bin).Sollte etwas schief laufen wollen wir nicht wieder Stunden warten bis alle Updates abgeschlossen sind.

Links: how-to-raspberry-pi-web-server

SNORT mit SNORBY (Intrusion Detection System)

Installation von Snort auf dem PI

Webserver installieren:

apt-get update
apt-get install apache2 apache2-utils apache2.2-bin apache2.2-common libapache2-mod-php5

MySQL Datenbankserver installieren:

apt-get install mysql-client mysql-common mysql-server libmysqlclient-dev

während der Installation müssen Sie ein Passwort für den User 'root' vergeben.
Dieses Kennwort wird uns noch lange begleiten...

Installation von Abhängigkeiten:

apt-get install g++ make autoconf automake libtool flex bison gcc libnet1 libnet1-dev libcrypt-ssleay-perl libpcre3 libpcre3-dev libphp-adodb libssl-dev libtool libwww-perl ntp php5-cli php5-gd php5-mysql php-pear

Installation von Abhängigkeiten für SNORT:

cd /usr/src
wget http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz
wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz
wget http://www.snort.org/dl/snort-current/daq-1.1.1.tar.gz

tar -zxf libpcap-1.3.0.tar.gz
tar -zxf libdnet-1.12.tgz
tar -zxf daq-1.1.1.tar.gz

rm *.tgz && rm *.tar.gz

cd libpcap-1.3.0 &&./configure --prefix=/usr --enable-shared && make && make install
cd ../libdnet-1.12 &&  ./configure --prefix=/usr --enable-shared && make && make install
cd ../daq-1.1.1 && ./configure && make && make install

Library-Pfad aktualisieren:

echo >> /etc/ld.so.conf /usr/lib 
echo >> /etc/ld.so.conf /usr/local/lib && ldconfig

Snort installieren und einrichten:

cd /usr/src
wget http://nbhcrew.de/zmod/downloads/Configs/snort.conf
wget http://nbhcrew.de/zmod/downloads/Configs/local.rules
wget http://nbhcrew.de/zmod/downloads/Configs/barnyard2.conf
wget http://www.snort.org/dl/snort-current/snort-2.9.3.1.tar.gz -O snort-2.9.3.1.tar.gz 

tar -zxf snort-2.9.3.1.tar.gz && cd snort-2.9.3.1 && rm ../*.tar.gz
./configure --enable-sourcefire && make && make install 

mkdir /etc/snort /etc/snort/rules /var/log/snort /var/log/barnyard2 /usr/local/lib/snort_dynamicrules
touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules /etc/snort/rules/local.rules
groupadd snort && useradd -g snort snort 
chown snort:snort /var/log/snort /var/log/barnyard2 
cp /usr/src/snort-2.9.3.1/etc/*.conf* /etc/snort 
cp /usr/src/snort-2.9.3.1/etc/*.map /etc/snort
cp /usr/src/snort.conf /etc/snort
cp /usr/src/local.rules /etc/snort/rules

Snort starten und einen ersten Ping-Test ausführen:

/usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

Barnyard2 installieren (Schnittstelle für Snort)

cd /usr/src && wget https://github.com/firnsy/barnyard2/tarball/master

tar -zxf master && cd firnsy-barnyard2-* 
autoreconf -fvi -I ./m4 
./configure --with-mysql && make && make install 

cp /usr/src/barnyard2.conf /etc/snort
cp schemas/create_mysql /usr/src

 MYSQL konfigurieren:

mysql -uroot -pPASS

create database snort; 

create database archive;
grant usage on snort.* to snort@localhost;
grant usage on snort.* to snort@127.0.0.1; 
grant usage on archive.* to snort@localhost; grant usage on archive.* to snort@127.0.0.1;
set password for snort@localhost=PASSWORD('PASS'); 
grant all privileges on snort.* to snort@localhost;  
grant all privileges on snort.* to snort@127.0.0.1;
grant all privileges on archive.* to snort@localhost; 
flush privileges;

use snort; 
source /usr/src/create_mysql 
exit

Testen von Snort mit Barnyard2:

/usr/local/bin/barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /etc/snort/bylog.waldo -G /etc/snort/gen-msg.map -S /etc/snort/sid-msg.map -C /etc/snort/classification.config &
Services installieren:

touch /etc/init.d/snortbarn
nano /etc/init.d/snortbarn

#! /bin/sh
#set -x
#
### BEGIN INIT INFO
# Provides: snortbarn
# Required-Start: $remote_fs $syslog mysql
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Start Snort and Barnyard
### END INIT INFO
. /lib/init/vars.sh
. /lib/lsb/init-functions
do_start()
{
log_daemon_msg "Starting Snort and Barnyard" ""
/sbin/ifconfig eth0 up
/usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0 &
/usr/local/bin/barnyard2 -q -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /etc/snort/bylog.waldo -G /etc/snort/gen-msg.map –S /etc/snort/sid-msg.map -C /etc/snort/classification.config 2> /dev/null &
log_end_msg 0
return 0
}
do_stop()
{
log_daemon_msg "Stopping Snort and Barnyard" ""
kill $(pidof snort) 2> /dev/null
kill $(pidof barnyard2) 2> /dev/null
log_end_msg 0
return 0
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_stop
do_start
;;
*)
echo "Usage: snort-barn {start|stop|restart}" >&2
exit 3
;;
esac
exit 0

chmod +x /etc/init.d/snortbarn
update-rc.d snortbarn defaults

CleanUp:

rm /var/www/index.html 
pkill snort && pkill barnyard2 
rm -rf /var/log/snort/* /var/log/barnyard2/*
sudo service snortbarn start

Nano /etc/snort/snort.conf
Zeile 553: include $RULE_PATH/snort.rules
sudo service snortbarn start
Regeln aktualisieren:

Bei www.snort.org registrieren und einen Oinkcode beschaffen .

cd /usr/src && wget http://pulledpork.googlecode.com/files/pulledpork-0.6.1.tar.gz
tar -zxf pulledpork-0.6.1.tar.gz && cd pulledpork-0.6.1
cp pulledpork.pl /usr/local/bin && cp etc/*.conf /etc/snort

Edit "/etc/snort/pulledpork.conf":

Comment out lines 22 & 26

Line 20: enter your “oinkcode” where appropriate or comment out the line if you didn’t get one above
Line 23: leave alone (uncommented) to use the Emerging Threats rule set
Line 71: change to: rule_path=/etc/snort/rules/snort.rules
Line 86: change to: local_rules =/etc/snort/rules/local.rules
Line 89: change to: sid_msg=/etc/snort/sid-msg.map
Line 112: change to: config_path=/etc/snort/snort.conf
Line 124: change to: distro=Debian-Lenny
Line 171: Uncomment and change to: enablesid=/etc/snort/enablesid.conf
Line 173: Uncomment and change to: disablesid=/etc/snort/disablesid.conf
Line 174: Uncomment and change to: modifysid=/etc/snort/modifysid.conf

/usr/local/bin/pulledpork.pl -c /etc/snort/pulledpork.conf -T -l




apt-get install Nikto
perl nikto.pl -h HOST -p PORT

Installation von SNORBY:
(geht jetzt endlich!)


echo "gem: --no-rdoc --no-ri" >> ~/.gemrc

curl -L https://get.rvm.io | bash -s stable --ruby --rails
source /usr/local/rvm/scripts/rvm
rvm autolibs enable
rvm pkg install openssl
rvm install 1.9.2 --with-openssl-dir=$HOME/.rvm/usr



aptitude install -y imagemagick wkhtmltopdf openjdk-6-jdk

aptitude install -y make unzip git libxml2-dev libxslt1-dev libmysqlclient-dev g++ libmagickcore-dev libmagickwand-dev libcurl4-openssl-dev libssl-dev apache2-prefork-dev libapr1-dev libaprutil1-dev build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion libiconv libiconv-dev

gem install rails 
gem install pdfkit
gem install rake
cd /var/www
git clone http://github.com/Snorby/snorby.git
cd config
bundle install

cp database.yml.example database.yml
cp snorby_config.yml.example snorby_config.yml


database.yml konfigurieren
sed -i "s|username:.*|username: root|g" database.yml
sed -i "s|password:.*|password: Password|g" database.yml
sed -i "s|host:.*|host: localhost|g" database.yml
sed -i "s|database:.*|database: snorby|g" database.yml


config.yml konfigurieren
sed -i "s|domain:.*|domain: localhost:3000|g" snorby_config.yml

rake snorby:setup
cd/var/www/snorby/
bundle exec rails server -e production


Dann zu der Seite:
http://IP-DES-RASPBERRY:3000 gehen

Snorby-login.png

und einloggen mit
  • Benutzername: snorby@snorby.org
  • Passwort: snorby

Links:
howto-guide-to-snort-ids-in-debian
Snorby
https://snorby.org/

Zabbix (Netzwerküberwachung)


apt-get install fping apache2 sqlite3 libsnmp-dev libcurl4-openssl-dev libapache2-mod-php5 php5-gd php5-sqlite php5-dev libiksemel-dev libsqlite3-dev php5-mysql

cd /usr/src
wget "http://sourceforge.net/projects/zabbix/files/ZABBIX Latest Stable/2.0.5/zabbix-2.0.5.tar.gz"
tar zxvf zabbix-2.0.5.tar.gz
cd zabbix-2.0.5/database/mysql

sudo adduser zabbix
sudo adduser zabbix root
sudo adduser www-data zabbix

mysql -uroot -pPASS
# drop database zabbix;
create database zabbix;
quit;

mysql -uroot -pPASS zabbix < schema.sql;
mysql -uroot -pPASS zabbix < images.sql;
mysql -uroot -pPASS zabbix < data.sql;

cd ../..
./configure --prefix=/usr --with-net-snmp --with-mysql --with-ssh2 --enable-agent --enable-server --with-libcurl
make install

mkdir /var/www/zabbix
cp -a frontends/php/* /var/www/zabbix/
chown -R www-data /var/www/zabbix

nano /etc/php5/apache2/php.ini
und mit STRG + W nach folgenden Einstellungen suchen und ersetzen

max_execution_time = 300zab
max_input_time = 300
post_max_size = 16M
date.timezone = de_de

STRG + O
STRG + X

apache2 restart

sudo cp misc/init.d/debian/zabbix-server /etc/init.d/
sudo cp misc/init.d/debian/zabbix-agent /etc/init.d/

nano /usr/etc/zabbix_server.conf
zabbix_server
nano /tmp/zabbix_server.log

Links:

Zabbix
https://www.zabbix.com/documentation/2.0

Icinga (Netzwerküberwachung) und Konfiguration mit NConf


apt-get update
apt-get upgrade

apt-get install php5 php5-cli php-pear php5-xmlrpc php5-xsl php5-pdo php5-ldap php5-soap php5-gd php5-mysql

apt-get install apache2 build-essential libgd2-xpm-dev 
apt-get install libjpeg62 libjpeg62-dev libpng12 libpng12-dev 
apt-get install snmp libsnmp5-dev

apt-get intall icinga

danach ist das Webinterface erreichbar unter:
http://IP-DES_RASPBERRY/Icinga

mit den Benutzerdaten
"icingaadmin" und ihr Kennwort

wget https://sourceforge.net/projects/nconf/files/nconf/1.3.0-0/nconf-1.3.0-0.tgz
tar -xzf  nconf-1.3.0-0.tgz
chmod 777 -R nconf
http://IP-DES_RASPBERRY/nconf
Bei der installation den MYSQL Server auswählen und Datenbank erstellen.
unter Icinga-Binarys "/usr/sbin/icinga" eintragen
rm UPDATE* -R
rm INSTALL* -R
nano config/deployment.ini
und alles bis auf nagios config unter local deployment ausdokumentieren.

mkdir /etc/nagios
chmod 777 /etc/nagios

nano /etc/icinga/icinga.cfg
und alle cfg_dir und cfg_file auskommentieren
und folgende 2 Zeilen eintragen:

cfg_dir=/etc/nagios/global
cfg_dir=/etc/nagios/Default_collector

dann mit STRG + O speichern
und mit STRG + X verlassen

jetzt auf der Weboberfläche von NConf eine Konfiguration erstellen
und auf Deploy drücken.
Danach im Terminal
service icinga restart
eingeben.
und das Resultat auf der Icinga Weboberfläche überprüfen.

Webmin (Verwaltung)

Installation von Webmin auf dem Raspery-Pi 

Für eine einfache und komfortable Verwaltung des Raspi empfehle ich die Installation von Webmin.

cd /usr/src && wget http://sourceforge.net/projects/webadmin/files/webmin/1.620/webmin_1.620_all.deb

apt-get install libauthen-pam-perl libapt-pkg-perl libio-pty-perl apt-show-versions
dpgk --install webmin_1.620_all.deb
rm webmin_1.620_all.deb

Nach der Installation ist Webmin unter:
http://IP-Adresse:10000
erreichbar.

NTOP (Netzwerkstatistik) mit NetFlow für OpenWRT am TPLink WR1043ND

Installation von NTop

Ntop  kann über:

apt-get update
apt-get upgrade

apt-get install libpcap-dev libgdbm-dev libevent-dev librrd-dev python-dev libgeoip-dev rrdtool libtool automake autoconf svn subversion

wget http://sourceforge.net/projects/ntop/files/ntop/Stable/ntop-5.0.1.tar.gz
tar -xzf ntop-5.0.1.tar.gz
cd ntop
./autogen.sh
ldconfig 
# cp /usr/local/lib/libntop* /usr/lib/
make
make install

mkdir rrd
useradd -M -s /sbin/nologin -r ntop
chown ntop:root /usr/local/var/ntop/
chown ntop:ntop /usr/local/share/ntop/
ntop -A
chown -R nobody:nogroup /usr/local/var/ntop 
/usr/local/bin/ntop -d -L -u ntop -P /usr/local/var/ntop --skip-version-check --use-syslog=daemon --set-admin-password=password

installiert werden.

oder einfacher ...

apt-get install ntop

Nach der Installation ist NTop unter der Url:
http://IP-Adresse/:3000
erreichbar.
Im Webinterface sollte der Port zwecks Überschneidungen mit SNORBY geändert werden! 

Nach dem aufrufen der Web-Oberfläche werden wir noch eine Änderungen vornehmen,
um den Datenverkehr eines WLan-APs mit OpenWRT als System zu überwachen.

Auf dem WLan-Accesspoint wechseln wir zu dem Punkt Firmware flashen und
geben als Dateiname den Pfad zu der Heruntergeladenen Firmware von openwrt.org
für den Router an. (In meinem Fall der TP-Link WR1043ND).

Nach dem Flashen und anschließeendem Reboot melden wir uns auf der Konfigurationsseite
LuCi des Openwrt an und klicken unter System-Software auf 'Update Lists', um die Paket-
listen zu aktualisieren.

im Reiter 'Available Packages" installieren wir nun das Paket 'fprobe'
für eine Abfrage per Snmp installieren wir das Paket snmpd bzw. minisnmpd gleich noch mit.

In der Oberfläche von NTop aktivieren wir nun nter Plugins-NetFlow die Netflow Schnittstelle
und unter Round Robin Database aktivieren wir dieses Plugin ebenfalls.
und fügen über Plugins-NetFlow-Configure eine Netflow-Schnittstelle hinzu.

im Terminal geben wir nun ein chmod 775 -R /var/lib/ntop
Local Collector UDP Port setzen wir auf 2055 und Set
und IP-Adresse auf 192.168.1.0/255.255.255.0 (bzw. unser lokales Netzwerk) + Set
service Restart ntop

unter Plugins-RRD-Configure tragen setzen wir nun den Dump-Interval auf 5 Sec,
bei Data to Dump wählen wir alle Schnittstellen aus und drücken auf Save References.
Jetzt wechseln wir im Admin-Menü auf die Schnittstelle Netflow1 und sehen uns
die Statistiken des Netflow-Interfaces an.


Links:

OpenWRT-Konfiguration
netzwerk-management-server-mit-raspberry-pi

FHEM (Heimautomatisierung)


FHEM Installieren

wget  http://fhem.de/fhem-5.4.deb
dpkg --install fhem-5.4.deb
apt-get -f -y install

FHEM ist nun erreichbar unter:
http://IP-DES-RASPBERRY:8083/fhem 

- CUL vom PC aus flashen
- Einrichtung des CUL
- Einrichtung einer FS20 Funksteckdose
- Einrichtung eines IR-Senders
- Aufbauen von Raumplänen mit  SweetHome3D
- Externe Steuerung von FHEM über Terminal bzw. http-get

Auf die Einrichtung von FHEM werde ich demnächst weiter 
eingehen, wenn die Zentrale Verwaltung der Heimautomatisierung
über EvaCmd funktioniert. Damit ist es auch jetzt schon möglich 
FHEM über einen anderen Webservice sowie ein PC-Frontend bzw.
Sprache zu steuern. 

Die Beschreibung zum Projekt befindet sich unter: evacmd

http://www.itbasic.de/raspberry-pi-erster-schritt-zur-hausautomation/