EsPresto.org
- Alle
- Wiki
- Firma
- Administration
- Java
- Allgemeines
Zertifikat für Tomcat 6 keystore erneuern
Die Verlängerung eines Zertifikats im Tomcat keystore hat ein paar Stolperfallen. Hier eine Schritt für Schritt Anleitung:
CSR
Beim Zertifikatsaussteller des Vertrauens ist mit dem CSR ein neues Zertifikat zu beauftragen. Das erste CSR kann weiter verwendet werden. Liegt dieses nicht vor, muss ein neues CSR mittels keytool und aktuellem keystore erstellt werden.
CRT
Erste Stolperfalle: Kommt das Zertifikat mit sogenannten Intermediate-Zertifikaten der Zertifizierungsstelle, sind diese zuerst zu importieren! Es können mehrere Zertifikate in der Datei intermediate.crt enthalten sein.
keytool -import -alias intermed -keystore ./tomcat.keystore -trustcacerts -file ./www.mywebsite.foo-2011-12-14.intermediate.crt
Danach wird das eigentliche Zertifikat importiert. Hier lauert die nächste Stolperfalle: Das neue Zertifikat muss mit dem gleichen Alias importiert werden wie das alte.
keytool -import -alias tomcat -trustcacerts -file ./www.mywebsite.foo-2011-12-14.crt -keystore ./tomcat.keystore
In diesem Beispiel ist der Alias "tomcat".
Mittels
keytool -v -list -keystore ./tomcat.keystore
lässt sich der Alias herausfinden.
Tomcat
Ein Tomcat Neustart ist notwendig damit der neue Keystore geladen wird.
09:14 15.12.2011 | Permalink | Frank Schubert | Administration | Kommentare[0] | Tags: keytool renew intermediate zertifikat crt x509 tomcat
Logs nachtraeglich anonymisieren unter Beibehaltung des Datums
Das Problem: Webserver-Logfiles der letzten 6 Jahre mit IP-Adressen und ein schlechtes Gewissen. Die IP-Adressen müssen raus. Weiterhin soll aber das Datum (mtime) der Logfiles erhalten bleiben, da andere Skripte davon abhängen. Und natürlich liegen die Logs gepackt (gzip) vor.
Im Folgenden das Skript um IP-Adressen in gzippten Dateien nachträglich unter Beibehaltung des Datums zu anonymisieren.
- Timestamp merken im Format, welches touch akzeptiert.
- Entpacken in ein temporäres Verzeichnis.
- IP kürzen mit sed.
- Timestamp wiederherstellen mit touch.
- Packen und zurückschieben.
#!/bin/bash
# Anonymize Logfiles
# @author Frank Schubert
TMPDIR=/var/tmp/_anonymize
test -d $TMPDIR || mkdir $TMPDIR
# - file-timestamp merken (spaeter wiederherstellen)
# - entpacken in tempdir
# - anonymisieren
# - orig file timestamp wiederherstellen
# - packen und zurückschieben
# naechstes Element nach Umbruch, statt Leerzeichen
IFS=$'\n'
for param in "$@"; do
# lese timestamp der aktuellen datei + merken
TIMESTAMP=$(date --reference=$param +"%Y%m%d%H%M.%S")
cp $param $TMPDIR
gunzip $TMPDIR/$(basename $param)
# dateiname der entpackten datei; ohne ".gz"
unzipped_filename=$TMPDIR/$(basename $param .gz)
if [ -e $unzipped_filename ]; then
# ip nullen
sed --in-place -e 's/\([0-9]\{1,3\}\.[0-9]\{1,3\}\)\.[0-9]\{1,3\}\.[0-9]\{1,3\}/\1.0.0/g' $unzipped_filename
# timestamp wiederherstellen
touch -t $TIMESTAMP $unzipped_filename
gzip $unzipped_filename
mv ${unzipped_filename}.gz $param
fi
done
Nachtrag Um Logs, die gzippt in verschiedenen Ordnern liegen vom Skript bearbeiten zu lassen hilft *find*:
find . -name "*.gz" -print0 |xargs -n100 -0 ~/anonymize.sh
16:17 04.04.2011 | Permalink | Frank Schubert | Administration | Kommentare[0] | Tags: anonymisieren ip logs anonymize anon apache gzip
Reboot in Root-Shell erzwingen ohne Remote-Management-Interface
Wenn der Server hängt, z.B. weil sich GFS2-Partition partout nicht aushängen lassen will verhilft Folgendes zum Reboot der Maschine:
# echo b > /proc/sysrq-triggerKlar sein muss, dass der Reboot ohne Syncen oder Aushängen von Dateisystemen passiert. Make sure you know what you are doing!
Mehr Informationen dazu gibt es hier: kernel.org sysrq.txt
13:02 03.03.2011 | Permalink | Frank Schubert | Administration | Kommentare[0] | Tags: linux force reboot
Normalerweise ist mir ja die Benutzung eines HTTP-Servers(im Speziellen Apache) fuer die Behandlung von Zertifikaten und Weiterleitungen am liebsten. Dennoch kann es Momente geben, wo es doch vllt. etwas zu viel des Guten ist, eine zusaetzliche Anwendung wie den genannten HTTP-Server in der Funktion eines Proxies zusaetzlich zu starten...
[Mehr ...]13:10 12.05.2010 | Permalink | tobi | Administration | Kommentare[0] | Tags: java ssl https tomcat
Installation von ArchLinux auf dem HP Mini 5101
Nachdem am 24.12. um dem Weihnachtsbaum Schreibtisch ein neues Notebook lag, wartete es nur dadrauf installiert zu werden. Aber zu erst musste der eingebaute 1GB Riegel einem 2GB Riegel weichen.
Obwohl ich ein Freund von Debian/Ubuntu bin, habe ich mich für ArchLinux entschieden, das mir inzwischen sympatischer ist und zum anderen gefüht schneller ist.
Also schnell das USB Installer Image für 32-bit gezogen. Da der verbaute Atom Prozessor leider kein 64-bit kann, habe ich nach rund einem Jahr wieder ein 32-bit OS unter meinen Fingern.
Die Installation selbst verlief einwandfrei, die genaue Anleitung dazu kann man auf der Seite von ArchLinux finden.
Der nächste Schritt bestand darin, das verbaute Broadcom Modul zum laufen zu bekommen. Passenderweise gibt es im AUR das passende Paket. Also runterladen, entpacken und installieren. Nun nur noch in der /etc/rc.conf das Modul laden lassen. Bei der Gelegenheit sollte man auch noch sky2 in die Modulliste aufnehmen. Denn je nach dem welches Modul als erstes geladen werden, heißt das WLAN Interface mal eth0 oder eth1.
Nun hieß es nur noch das verbaute UMTS Modul in Betrieb zu nehmen. Dazu brauchen wir wieder zwei Pakete aus dem AUR gobi-loader und die passende Firmware. Sobald beide Pakete installiert sind, haben wir es schon fast geschafft. Wir müssen nur noch die passenden Firmware laden. Dazu genügt als root folgender Befehl: /lib/udev/gobi_loader /dev/ttyUSB0 /lib/firmware/gobi/6 Die 6 ist wichtig, da diese die Region Europa angibt. Nun sollte auch gnome-ppp bzw der Network-Manager ein neues passendes Modem finden, zumindest wenn man in der Gruppe uucp ist.
Die Webcam funktioniert auch, out of the Box, solange der User in der Gruppe video ist. Gleiches gilt für Audio. Die Laufzeit des Akkus liegt bei mir bei rund 4,5Std. Wobei ich bisher den Akku erst dreimal geladen haben. Da die Akkus ja erst nach rund 10 kompletten Ladezyklen ihre endgültige Kapazität erreichen sollen, kann sich das ja noch ändern. Aber die von HP angegeben 8 Stunden halte ich für Illusion.
Somit is das HP Mini 5101 für mich bisher das perfekte mobile Arbeitsgerät.
13:25 29.12.2009 | Permalink | Sven Winkelmann | Administration | Kommentare[3] | Tags: hp 5101 archlinux linux wwan
Einer unserer Kunden wollte als CMS unbedingt Joomla haben. Nun hat Joomla nicht unbedingt den besten Ruf im Bereich Sicherheit, also musste fastCGI her.
Im Grunde ist die Umsetzung auch recht einfach. Unter Debian müssen nur folgende Pakete zusätzlich zu Apache2 und PHP5 installiert werden: "php-xml-parser, php5-xcache, apache2-suexec, libapache2-mod-fastcgi, libapache2-mod-fcgid, php5-cgi, apache2-mpm-prefork"
Als nächstes müssen wir die php.ini unter /etc/php5/cgi/php.ini noch ein wenig anpassen. Zum einen wird mit open_basedir der Zugriff auf das Verzeichnis wo Joomla installiert werden soll begrenzt, zB /var/www/joomla. Anschließend kann man noch den safe_mode aktivieren und mit disable_functions = system, passthru, phpinfo, show_source,exec, shell_exec, popen, proc_open gesetzt einige Funktionen von PHP deaktivieren.
In der Directory Directive des zu benutzenden Verzeichnisses muss folgender Inhalf eingefügt bzw geändert werden:
FCGIWrapper In der Directory Directive des zu benutzenden Verzeichnisses:
FCGIWrapper /var/www/fcgi_php .php
AddHandler fcgid-script .php
Options Indexes FollowSymLinks MultiViews ExecCGI
/var/www/fcgi_php .php sieht wie folgt aus:
#!/bin/sh
export PHPRC="/etc/php5/cgi"
export PHP_FCGI_CHILDREN=2
export PHP_FCGI_MAX_REQUESTS=500
exec /usr/bin/php5-cgi
Der Eigentümer der PHP Dateien muss ein User mit einer UID <1000 sein.
14:51 10.06.2009 | Permalink | Sven Winkelmann | Administration | Kommentare[0] | Tags: joomla apache
Bisher hat es mich immer gestört, das Firefox im Fullscreen Modus die Adressleiste und die Tabs immer ausgeblendet hat. Über about:config kann man zum Glück das Verhalten anpassen. Der Punkt heißt: browser.fullscreen.autohide und muss auf false stehen
08:52 19.03.2009 | Permalink | Sven Winkelmann | Administration | Kommentare[0] | Tags: firefox
Vieles wurde ausprobiert aber keines konnte unseren Anforderungen bisher gerecht werden. Endlich haben wir eines gefunden, welches das bietet was wir suchen um unseren Traffic aussagekräftig auswerten zu können: pmacct.
[Mehr ...]10:57 26.02.2009 | Permalink | Frank Schubert | Administration | Kommentare[0] | Tags: traffic monitoring
Steckdosenleiste mit Webserver
Jetzt noch in meiner Hand, demnächst in einem unserer Serverschränke: die wahrscheinlich teuerste Steckdosenleiste der Welt:

Wenn ich mich nicht irre kann man Steckdosenleisten mit 8 Steckplätzen bereits für 3-5 Euro bekommen, aber bei denen muss man beim steckerziehen auch die Hände benutzen. Wenn man dieser Steckdosenleiste eine IP-Adresse zugewiesen hat, kann man jeden einzelnen Stecker per Browser „herausziehen“. Und wenn man gerne möchte, dass man der einzige bleibt der die Stecker per Browser schaltet, sichert man die Verbindung zum Steckdosenleistenwebserver mit SSL. Kostet dann insgesamt so um die 1100 Euro.|
Mit einem Webserver der kein SSL beherrscht, bekommt man diese fernsteuerbaren Steckdosenleisten bereits ab knapp 400 Euro.
16:31 26.01.2009 | Permalink | Felix Schwenzel | Administration | Kommentare[0] | Tags: ssl webserver schwenzel apache serverschrank
puppet fuer etch aus lenny backporten
Problem: Das puppet Paket in etch Version 0.20.1-1 kann hier nicht mit Updates der /etc/shadow umgehen. (Es sollen Passwörter für Logins automatisch von puppet verteilt werden.)
Das Paket in lenny kann korrekt mit /etc/shadow Updates umgehen.
Lösung: Das Paket aus lenny (z.Zt. "testing") für etch erstellen lassen ("backport").
GCC, Header usw installieren lassen:
aptitude install build-essential dpkg-dev
Apt sources.list anpassen und deb-src für lenny (z.Zt. "testing") eintragen.
Paketquellen holen und auspacken:
mkdir puppet-backport && cd puppet-backport
apt-get -t testing source puppet
Ein Verzeichnis namens puppet-<VERSION> wird angelegt. Hier "puppet-0.24.5".
In das Verzeichnis wechseln und die Abhängigkeiten für den Bau prüfen lassen:
dpkg-checkbuilddeps
Alle fehlenden Abhängigkeiten installieren bis dpkg-checkbuilddeps nichts mehr bemängelt.
Paket bauen:
dpkg-buildpackage
Die Warnungen zur Signatur der Pakete und Beschreibungen kann ignoriert werden.
Im übergeordneten Verzeichnis liegt nun das fertige Paket welches mit dpkg -i installiert werden kann.
11:37 13.01.2009 | Permalink | Frank Schubert | Administration | Kommentare[2] | Tags: puppet etch lenny debian backports
Datum von gestern mit Solaris 10
Das Solaris 'date' kennt den Parameter *-d*
-d, --date=STRING
display time described by STRING, not ‘now’
nicht.
Um das Datum von Gestern trotzdem in einer Zeile zu bekommen ist perl behilflich:
perl -e 'use POSIX; print strftime("%Y-%m-%d",localtime(time-(3600*24)))'
09:05 09.01.2009 | Permalink | Frank Schubert | Administration | Kommentare[0] | Tags: date sysadmin solaris snippet
Debian etch - SMART für SATA-Festplatten aktvieren
Die Standardkonfiguration des Pakets smartmontools mit aptitude install smartmontools ist nicht direkt geeignet für SATA-Festplatten.
Folgende Einstellungen müssen vorgenommen werden:
/etc/smartd.conf
### automatische Laufwerkserkennung auskommentieren: #DEVICESCAN -m root -M exec /usr/share/smartmontools/smartd-runner # [...] # fuer die eingebauten Laufwerke je einen Eintrag mit "-d ata" erstellen /dev/sda -a -d ata /dev/sdb -a -d ata
In /etc/default/smartmontools muss dann noch start_smartd=yes aktiviert werden.
Mit /etc/init.d/smartmontools wird der SMART-Daemon gestartet. In /var/log/syslog kann kontrolliert werden ob es funktioniert hat:
/var/log/syslog
Jul 25 10:08:03 barney smartd[6571]: smartd version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen Jul 25 10:08:03 barney smartd[6571]: Home page is http://smartmontools.sourceforge.net/ Jul 25 10:08:03 barney smartd[6571]: Opened configuration file /etc/smartd.conf Jul 25 10:08:03 barney smartd[6571]: Configuration file /etc/smartd.conf parsed. Jul 25 10:08:03 barney smartd[6571]: Device: /dev/sda, opened Jul 25 10:08:03 barney smartd[6571]: Device: /dev/sda, not found in smartd database. Jul 25 10:08:03 barney smartd[6571]: Device: /dev/sda, is SMART capable. Adding to "monitor" list. Jul 25 10:08:03 barney smartd[6571]: Device: /dev/sdb, opened Jul 25 10:08:03 barney smartd[6571]: Device: /dev/sdb, not found in smartd database. Jul 25 10:08:04 barney smartd[6571]: Device: /dev/sdb, is SMART capable. Adding to "monitor" list. Jul 25 10:08:04 barney smartd[6571]: Monitoring 2 ATA and 0 SCSI devices Jul 25 10:08:04 barney smartd[6573]: smartd has fork()ed into background mode. New PID=6573. Jul 25 10:08:04 barney smartd[6573]: file /var/run/smartd.pid written containing PID 6573
Die Anleitung sollte 1:1 auch für Ubuntu-Systeme anzuwenden sein.
10:17 25.07.2008 | Permalink | Frank Schubert | Administration | Kommentare[0]
awk sinnvoll auf /etc/snmp/snmpd.conf angewandt
Für die Aktivierung des neuen Monitoring-Slaves mussten alle SNMP-Daemons um die neue IP-Adresse erweitert werden.
All zu oft komm ich nicht in die Verlegenheit awk zu verwenden, aber hier schien es angebracht:
Die Zugriffsbeschränkung kann in /etc/snmp/snmpd.conf mit dem Eintrag rocommunity <COMMUNITY> <IP/SUBNET> konfiguriert werden.
Die Aufgabe lautete also "Füge den String rocommunity public 123.45.67.89/32 genau einmal hinzu wenn rocommunity public 98.76.54.32 gefunden wird. Alle anderen Zeilen unverändert übernehmen."
awk 'BEGIN { x=0 } /^rocommunity +public +123\.45\.67\.89\/32/ && x==0 { print \$0"\nrocommunity public 98.76.54.32/32"; x=x+1 } ! /^rocommunity +public +123\.45\.67\.89\/32/ { print \$0 }' /etc/snmp/snmpd.conf > /etc/snmp/snmpd.conf.new
Obige awk-Anweisung zählt in x wie oft die Ersetzung bereits aufgerufen wurde.
Sicher geht es auch mit sed. Wer weiss wie, kann das ja als Kommentar hinterlassen.
11:51 23.07.2008 | Permalink | Frank Schubert | Administration | Kommentare[0] | Tags: awk snmpd
pidgin icq: client-version, die sie nutzen ist zu alt
Nach einem Protokollupdate sind alle älteren Clients außen vor. Siehe dazu Die Client-Version, die Sie nutzen ist zu alt! (Pidgin),
Kopete funktioniert.
09:49 02.07.2008 | Permalink | Frank Schubert | Administration | Kommentare[0]
du: cannot access `/var/cache/apt/archives/partial': Function not implemented
Für unsere Arbeitsstationen, die über NFS booten und sich ein Rootverzeichnis teilen, werden die Cronjobs innerhalb eines chroot aufgerufen.
Dabei kam es beim Aufruf des Cronjobs /etc/cron.daily/apt zu folgenden Fehlermeldungen:
du: cannot access `/var/cache/apt/archives/partial': Function not implemented
du: cannot access `/var/cache/apt/archives/gnome-applets-data_2.22.2-0ubuntu2_all.deb': Function not implemented
du: cannot access `/var/cache/apt/archives/gnome-applets_2.22.2-0ubuntu2_i386.deb': Function not implemented
[...]
Die Lösung war einen Wrapper zu erstellen, der vor dem Aufruf der Cronjobs /proc und /sys einbindet:
#!/bin/bash
if ! mountpoint /proc >/dev/null ; then
UMOUNT_PROC=true
mount /proc
mount /sys
fi
/bin/run-parts --report /etc/cron.daily
if [ "$UMOUNT_PROC" == "true" ]; then
umount /sys
umount /proc
fi
11:33 01.07.2008 | Permalink | Frank Schubert | Administration | Kommentare[0]