| |||||||||||||||||||||||||||||
|
rigel.ulm.go-itservice.de
Lenovo X201 mit Debian 9.0 Stretch Hardware:
SystemkopieNachdem in Ulm noch zwei Server und in Augsburg einer wartete, klonte ich diese. Die Platte für den neuenrigel steckte in
der Workstation spica , während das Original in Ulm werkelte. Partition via fdisk, zwei Paritionen:
26,0 GB sdf1 83 4,0 GB sdf1 82 # mkfs.ext4 /dev/sdf1 # mkswap /dev/sdf2 # mount /dev/sdf1 /destdas sonst verwendete cpHOST-Skript arbeitet nur lokal, ich wollte die Platte aber nicht an wega anstecken, also den rsync von Hand: # rsync -avrtHAX --delete --progress --exclude /local --exclude /proc --exclude /sys --exclude /dev --exclude /home --exclude /media --exclude /backup --exclude /SDCARD root@wega:/ /dest/ # sed -i s/545f7845-23c5-4472-8e6b-fdcd470914fb/9174fc9c-58aa-4d65-8d0e-eec221fc7ecf/g etc/fstab # sed -i s/545f7845-23c5-4472-8e6b-fdcd470914fb/9174fc9c-58aa-4d65-8d0e-eec221fc7ecf/g boot/grub/grub.cfg # sed -i s/ac321ef7-3b28-4e9a-a7cc-01ee8f8737c1/0381627c-966a-4e1c-a5e2-7968d27bd185/g etc/fstab # sed -i s/ac321ef7-3b28-4e9a-a7cc-01ee8f8737c1/0381627c-966a-4e1c-a5e2-7968d27bd185/g boot/grub/grub.cfg # sed -i s/ac321ef7-3b28-4e9a-a7cc-01ee8f8737c1/0381627c-966a-4e1c-a5e2-7968d27bd185/g etc/uswsusp.conf # sed -i s/ac321ef7-3b28-4e9a-a7cc-01ee8f8737c1/0381627c-966a-4e1c-a5e2-7968d27bd185/g etc/initramfs-tools/conf.d/resume # scp root@ulm-goitservice.dyndns.org:/etc/hosts /dest/etc/hosts # scp root@ulm-goitservice.dyndns.org:/etc/hostname /dest/etc/hostname # scp root@ulm-goitservice.dyndns.org:/etc/mailname /dest/etc/mailname # scp root@ulm-goitservice.dyndns.org:/etc/exim4/update-exim4.conf.conf /dest/etc/exim4/update-exim4.conf.conf # scp root@ulm-goitservice.dyndns.org:/etc/resolv.conf /dest/etc/resolv.confeinige Daten von der alten Platte kopieren, diese war noch im Laptop und deshalb im Netz direkt erreichbar. Zuerst die Identitätsdaten (unter /root/.ssh, /etc/ssh) kopieren, via ssh nach ULM ssh root@ulm-goitservice.dyndns.org
und folgendes Kommando ausführen:
cpHOST / /dest IDENTITYwieder auf spica: rsync -avrtHAX root@ulm-goitservice.dyndns.org:/dest/ /dest/ scp root@ulm-goitservice.dyndns.org:/etc/init.d/obi1 /dest/etc/init.d/obi1 rsync --progress -avrtHAX root@ulm-goitservice.dyndns.org:/etc/apache2/ /dest/etc/apache2/In die /etc/apt/sources.list wird die Zeile für das Benno Repository eingefügt:
# echo "deb http://www.benno-mailarchiv.de/download/debian/ /" >> /dest/etc/apt/sources.listNun wanderte die neue Platte in einem X201 nach Ulm und wartete einige Wochen, bis ich besagten Stecker schrottete. Also wurde der neue Firewall direkt in Betrieb genommen. Zuerst hatte ich kurz Schwierigkeiten mit dem externen USB-Netzwerkadapter, der als Interface Richtung Fritzbox dient. Nachdem die globals.sh (mit Einstellungen wie Netzwerkinterface ec) als Datendate für die Firewallskripte korrigiert war, lief rigel auf Anhieb als Firewall und Proxy (mit squid).
auf Webcams über apache2-Proxy zugreifenDie von mir gekauften upCam cyclone HD S+ können über Firefox unter Linux kontrolliert werden, die Defaults (zumindest bei meinen Exemplaren):IP: 192.168.1.126 User: admin Passwort: adminDas sollte man neben Namen und Passwort für Standarduser und Gastuser sofort ändern! Um auf die Kamera über Port 80 zugreifen zu können, verwende ich den auf rigel (oder deneb und wega) sowieso installierten Apache2 Webserver als Proxy. Die Kameras sind, egal ob via LAN oder WLAN angeschlossen, uüber das entsprechende Unterverzeichnis zu erreichen, also http://USER:PASSWD@DYNDNSADRESSE/CAMNAME/tmpfs/snap.jpg für das Kamerabild selbst. Um den Apache2 als Proxy benutzen zu können, muss das Proxy-Modul aktiviert und der Apache neu gestartet werden: # a2enmod proxy proxy_http # service apache2 restartIn der Konfigurationsdatei für die von aussen zugängliche Webseite muss die Proxyfunktion ebenfalls eingebaut werden. <VirtualHost *> ServerName myulm.go-itservice.com ServerAlias DYNDNSADRESSE DocumentRoot /home/go/httpd/myulm.go-itservice.com/htdocs DirectoryIndex index.php index.html index.htm ProxyPass /alkyone http://192.168.80.81 ProxyPassReverse /alkyone http://192.168.80.81 ProxyPassReverseCookieDomain 192.168.80.81 revProxy ProxyPassReverseCookiePath / /alkyone ...Kritisch ist, dass die Zugangsdaten via http im Klartext übertragen werden, da werde ich noch irgendwie auf https bis zum Proxy umstellen. Intern kann ich http nicht ändern, die Kameras unterstützen kein https, was mir im lokalen Netz aber auch egal ist. Auch würde ich die Kameras für die endgültige Installation noch in eine DMZ packen, am Zielstandort sind sie aber sowieso zwischen Router und interner Firewall Dummerweise funktioniert die Adminoberfäche der Kameras nicht über das Unterverzeichnis des Proxy, anscheinend werden da nicht nur relative sondern auch absolute Pfade verwendet. Um erst mal wenigstens die Grundfunktionen: Bild anzeigen und Kamera schwenken verwenden zu können, habe ich die URLs aus dem Apache-Log gefischt. Der Base-URL ist immer http://USER:PASSWD@DYNDNSADRESSE/CAMNAME
Was mir an der Kamera übrigens sehr gut gefallen hat: Sie telefoniert nicht nach Hause! Zumindest ist mir im Log mit iptraf-ng nichts Verdächtiges aufgefallen.
Ich lies den Netzwerksniffer schon vor dem ersten Einschalten der Kamera über
insgesamt zwei Stunden laufen, weil ich von den China-Penants viel Schlechtes in dieser
Richtung gelesen hatte.
Apache2 als HTTPS Server mit Letsencrypt ZertifikatUm die Zugangsdaten zu den Kameras nicht grad im Klartext über das Internet zu schicken, erweiterte ich den Server mit https. Ins interne Netz benötige ich https erstmal nicht.Zuerst muss man die /etc/apt/sources.list um Stretch Backports erweitern,
das hatte ich wegen der Installation des 4.14er Kernels sowieso drin:
deb http://ftp.de.debian.org/debian/ stretch-backports mainDann den in Pyton geschriebenen Certbot aus den backports samt seinen Bibliotheken installieren. Anschliessend den Certbot starten # apt-get install python-certbot-apache -t stretch-backports # certbot --apacheDie gestellten Fragen beantworten. MAIL: MAILADRESSE Terms: A (akzeptieren) Weitergabe EFF: N [NY] HTTPS fuer? 4 (MYSUBDOMAIN.dyndns.org) Nur HTTPS: 1 (HTTP bleibt unverändert)Die Letsencrypt Zertifikate laufen typischerweise 3 Monate und können mit dem Certbot manuell mit # certbot renewoder via cronjob mit crontab -e >erneuert werden:
00 02 5 * * /usr/bin/certbot renewDer Certbot legt eine funktionierende myulm.go-itservice.com.ssl an.
Da ich aber keine Lust habe, die Virtual Host Dateien doppelt zu pflegen, habe ic
den gemeinsamen Teil in eine include-Daite (myulm.go-itservice.com.include ) ausgelagert:
ServerName myulm.go-itservice.com ServerAlias ulm-goitservice.dyndns.org DocumentRoot /home/go/httpd/myulm.go-itservice.com/htdocs DirectoryIndex index.php index.html index.htm ProxyPass /elektra http://192.168.80.82 ProxyPassReverse /elektra http://192.168.80.82 ProxyPassReverseCookieDomain 192.168.80.82 revProxy ProxyPassReverseCookiePath / /elektra <Directory /home/go/httpd/myulm.go-itservice.com/data/cgi> Options ExecCGI FollowSymLinks AllowOverride none order allow,deny allow from all </Directory> <Directory /home/go/httpd/myulm.go-itservice.com/htdocs/mydba> AllowOverride AuthConfig </Directory>in der myulm.go-itservice.com.ssl bleibt folgender Code
<IfModule mod_ssl.c> <VirtualHost *:443> include sites-available/myulm.go-itservice.com.include SSLCertificateFile /etc/letsencrypt/live/vach-goitservice.dyndns.org/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/vach-goitservice.dyndns.org/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> </IfModule>die myulm.go-itservice.com ist nur mehr rudimentär
<VirtualHost *> include sites-available/myulm.go-itservice.com.include </VirtualHost>Die Dateien liegen unter /etc/apache2/sites-available und werden
nach /etc/apache2/sites-enabled verlinkt.Falls noch nicht geschehen, muss das ssl -Modul im Apache aktiviert
und der Apache selbst auch wegen der Änderung der Konfiguration neu gestartet
werden.
# a2enmod ssl # service apache2 restartDamit das auch aus dem Internet funktioniert, muss am Router eine Weiterleitung des Ports 443 auf den Port 443 des Apache Servers (oder der Firewall) eingetragen werden. Alternativ geht natürlich auch ein anderer Port, allerdings sind aus vielen Firmennetzen nur 80 und 443 nach aussen freigegeben. Verwendet man wie ich eine eigene Firewall, muss dort der Port 443 von aussen freigeben werden! benno Mail Archiv installierenbenno PGP Key hinzufügen:# wget -O - http://www.benno-mailarchiv.de/download/debian/benno.asc | apt-key add -Benno mit apt-get oder aptitude installieren, wobei php7, apache2 und pear schon installiert waren: # apt-get update # apt-get install benno-archive benno-rest benno-web # apt-get install php-mbstringShared Secret erzeugen: echo 'PASSWORD' > /etc/benno/rest.secret chown benno.benno /etc/benno/rest.secret chmod 0440 /etc/benno/rest.secretund in den Dateien /etc/benno/benno.xml ('sharedSecret') und /etc/benno-web/benno.conf ('SHARED_SECRET') eintragen,
ebenso in der rest.conf
echo 'SHARED_SECRET = PASSWD' > /etc/benno-web/rest.confHost- und Portkonfigurationen zwischen /etc/benno/jetty.xml ('host','port') und /etc/benno-web/benno.conf ('BASE_URL') vergleichen.
Bei der kommerziellen Variante muss die Lizenzdatei nach /etc/benno/benno.lic kopiert werden, bei der Open Edition,
einfach eine leere Lizenzdatei anlegen:
# touch /etc/benno/benno.licKonfiguration /etc/benno-web/benno.conf anpassen:
USERPERMISSONS = DISABLEDbenno erwartet das Repository unter /srv/benno , auf deneb soll dies
aber unter /home/benno liegen, also einfach
# cd /srv # mv benno /homeDann in der /etc/benno/benno.xml drei Stellen anpassen. (Mit symlink gehts notfalls auch)
und benno neu starten
# /etc/init.d/benno-rest restartKontrolle, ob benno-rest bzw benno-archive läuft: # systemctl status benno-rest.service # systemctl status benno-archive.serviceim Ordner /var/log/benno sollte die Datei rest.log am Ende etwa so aussehen:
2018-01-18 18:35:33,767 INFO Starting bennorest: 2.4.2 (180112162902) / bennocore: 2.4.2 (180112085546) 2018-01-18 18:35:35,024 INFO License in /etc/benno/benno.lic is valid 2018-01-18 18:35:35,025 INFO Starting Jetty server from file /etc/benno/jetty.xml 2018-01-18 18:35:35,083 INFO Read shared secret from /etc/benno/rest.secretund die archive.log
2018-01-18 20:48:39,226 INFO Shutting down "Bennoarchive BennoMailArchiv" 2018-01-18 20:48:45,446 INFO reloading services (number of services changed) 2018-01-18 20:48:46,816 INFO Starting bennoarchive: 2.4.2 (180112090002) / bennocore: 2.4.2 (180112085546) 2018-01-18 20:48:46,816 INFO Starting management server on 127.0.0.1:2555Damit die im nächsten Schritt via fetchmail abgeholten Mails auch zugestellt
werden, ist neben einem MTA (exim4, postfix geht auch) noch ein Programm zur lokalen
Verteilung nötig, in unserem Fall procmail was ebenfalls installiert wird.
# apt-get install procmail fetchmailZur Konfiguration der korrekten Mailablage für Benno dient folgende /etc/procmailrc
ORGMAIL=/home/benno/ DEFAULT=${ORGMAIL} MAILDIR=/home/benno :0 inbox/Zum Abholen der Mails von agena12 auf rigel wird fetchmail als Daemon konfiguriert.
Dazu in der /etc/default/fetchmail
start_daemon=yesNun wird das Zertifikat von agena12 geholt und der Fingerprint in die /etc/fetchmailrc neben den abzuholenden Postfächern
eingetragen. Das Resultat der dritten Zeile ist der benötigte Fingerprint
# mkdir /etc/ssl/fetchmaild # echo "quit" | openssl s_client -connect mail.go-itservice.com:995 -showcerts 2>/dev/null | sed -ne '/BEGIN/,/END/p' >/etc/ssl/fetchmaild/mail.go-itservice.com.pem # openssl x509 -in /etc/ssl/fetchmaild/mail.go-itservice.com.pem -fingerprint -noout -md5 # vi /etc/fetchmailrc # chmod 600 /etc/fetchmailrc # chown fetchmail:root /etc/fetchmailrcdie /etc/fetchmailrc sieht dann so aus, Achtung, die Einrückungen ab der 2.Zeile sind Absicht:
poll www.wo-k.de protocol POP3 user "go-arv@go-itservice.com" there with password "PASSWD" is go ssl sslfingerprint "1A:1F:8E:5A:3E:5E:86:96:C1:FF:24:36:FE:50:5E:44" fetchall no keepDiese Zeilen werden für jedes abzuholende Postfach kopiert und die userspezifischen Daten angepaßt. fetchmail neu starten und Status prüfen: # /etc/init.d/fetchmail restart # systemctl status fetchmail.serviceNun wird eine Shellskript angelegt und mittels crontab dafür gesorgt, dass es alle 10 Minuten ausgeführt wird. Die Datei /root/bennocron.sh
sieht so aus:
#!/bin/sh for MAILFILE in `ls -1 /home/benno/inbox/new`; do /bin/chown benno "/home/benno/inbox/new/${MAILFILE}" /bin/ln "/home/benno/inbox/new/${MAILFILE}" "/home/benno/inbox/${MAILFILE}.eml" && /bin/rm "/home/benno/inbox/new/${MAILFILE}" doneexec-Flag nicht vergessen! Einfügen von gesendeten Mails dazu wird auf dem Mailserver agena12 der benno-milter installiert:
In /etc/apt/sources.list folgende Zeile für das Benno Repository einfügen:
deb http://www.benno-mailarchiv.de/download/debian /Dann benno PGP Key hinzufügen: # wget -O - http://www.benno-mailarchiv.de/download/debian/benno.asc | apt-key add -benno-milter mit apt-get oder aptitude installieren: # apt-get install benno-milter main.cf ergänzen (ganz unten einfügen) und anschliessend postfix neu starten:
... ### Benno MailArchiv Milter smtpd_milters = unix:/benno-milter/benno-milter.sock non_smtpd_milters = local:/benno-milter/benno-milter.sock #milter_default_action = accept milter_default_action = tempfailMit /root/mvsendmails , von einem cronjob regelmässig ausgeführt, werden die vom
benno-milter unter /srv/benno/inbox/ ausgeworfenen Mails analysiert und die
benötigten in das auch von getbigmails verwendete Transferverzeichnis verschoben. getbigmails
übernimmt auch den Transport der gesendeten Mails, deshalb die Umbennenung der .eml-Dateien im Skript.
Datei /root/mvsendmails auf agena12:
DOUT=/var/log/mvsendmails.log date 1>>$DOUT 2>&1 cd /srv/benno/inbox; grep "go@go-itservice.com" *.eml | grep -v "d-From:" | grep From:| sed 's/:.*//' | xargs mv -t /local/transfer/go-itservice/ 1>>$DOUT 2>&1 ...Probleme mit Abholung grosser Mails (>20 MB) Bei der Abholung via Fetchmail treten bei grossen Dateien endlose Versuche auf: Die Datei wird gelesen, aber nie abgeschlossen. Durch immer neue Leseversuche nimmt das Datenvolumen auffällig zu, ohne daß die Mail jemals in Benno importiert werden kann. Als Workarround dient eine Kombination aus find , mv und rsync .
Auf dem Mailserver agena12 läuft ein cronjob, der Dateien grässer
als 10 MB in ein Transferverzeichnis verschiebt, aus der sie ein zweiter cronjon, diesmal
auf dem lokalen benno-Server rigel , abholt und in das benno Verzeichnis verschiebt, wo
benno die grossen Dateien klaglos importiert. Die Datei /root/mvbigmails auf agena12
ist auch noch für eine andere Domäne zuständig:
DOUT=/var/log/mvbigmails.log date 1>>$DOUT 2>&1 find /var/vmail/go-itservice.com/go-arv/Maildir -mtime -14 -size +10M | xargs mv -t /local/transfer/go-itservice 1>>$DOUT 2>&1 ...Datei /root/getbigmails auf rigel:
DOUT=/var/log/getbigmails date 1>>$DOUT 2>&1 rsync -e 'ssh -p 10002' -avurt --remove-source-files root@144.76.232.98:/local/transfer/infoflip/ /home/benno/inbox/new/ 1>>/var/log/getbigmails.log 1>>$DOUT 2>&1 for MAILFILE in `ls -1 /home/benno/inbox/new/*.eml`; do TEST=${MAILFILE} DEST=${MAILFILE%.eml} /bin/mv ${MAILFILE} ${DEST} done chown root:benno /home/benno/inbox/new/* 1>>$DOUT 2>&1inzwischen werden sowohl gesendete als auch zu grosse Mails mit dem selben Shellskript abgeholt, welches beide mit unterschiedlichen Modi unterstützt. Weboberfläche Der Zugriff auf diese erfolgt mit der URL http://deneb/benno und der User-Passwort
Kombination "admin/secret". Benutzer legt der
Sysadmin mit dem Kommandozeilentool benno-useradmin an, sofern nicht mit einem zentralen Directory gearbeitet wird.
# benno-useradmin -u USER -e PRENAME.NAME@infoflip.de -p PASSWD # benno-useradmin -u ALLEUSER -e *@* -p PASSWDDer letzterer User kann alle Mails im Archiv (unabhängig von USERPERMISSONS) sehen! Vorsicht: Wegen dem Eintrag USERPERMISSONS = DISABLED kann jeder User alle Mails suchen und ansehen!
|