Und das ganze noch als PDF.
Kategorie: Computer
Gentoo Webapp Update Check
Folgendes Skript verwende ich gerade, um die Versionen der installierten Webapps unter Gentoo zo prüfen:
#!/bin/bash
echo "Non-latest webapps installed: "
echo
for i in `webapp-config --list-installs`
do
verline=$((`/usr/bin/eix -el \`cat $i/.webapp | grep WEB_PN | awk -F'"' '{print $2}'\` | grep -n 'Homepage:' | awk -F':' '{print $1}'`-1))
latever=`/usr/bin/eix -el \`cat $i/.webapp | grep WEB_PN | awk -F'"' '{print $2}'\` | head -n $verline | tail -n 1 | awk -F'(' '{print $1}' | sed 's/Installed versions://' | awk -F' ' '{print $1}'`
webver=`cat $i/.webapp | egrep "^WEB_PVR" | awk -F'"' '{print $2}'`
if [ "$webver" != "$latever" ]
then
echo "========== Web-App installed in $i =========="
cat $i/.webapp | egrep "^WEB_PN|^WEB_PVR|^WEB_INSTALLEDDATE|^WEB_HOSTNAME|^WEB_INSTALLDIR"
echo
/usr/bin/eix -e `cat $i/.webapp | grep WEB_PN | awk -F'"' '{print $2}'`
host=`echo $i | awk -F'/' '{print $5 "." $4}'`
vdir=`echo $i | awk -F'/' '{print "/" $2 "/" $3 "/" $4 "/" $5 "/"}'`
instdir=`echo $i | awk -F'/' '{print $7}'`
app=`cat $i/.webapp | grep WEB_PN | awk -F'"' '{print $2}'`
sflag=
if [ "`echo $i | awk -F'/' '{print $6}'`" == "htdocs-secure" ]
then
sflag="--secure"
fi
echo "please check following line and update with: "
echo "webapp-config -U -h $host -D vhost_root=\"$vdir\" -d $instdir $app $latever $sflag"
echo
echo "================================================================================"
echo
fi
done
Just remember:
- Passwords are like Underwear… Change yours often.
- Passwords are like Underwear… Don’t leave yours lying around.
- Passwords are like Underwear… Don’t share them with friends.
- Passwords are like Underwear… Be mysterious.
- Passwords are like Underwear… The longer the better.
Ich bin letztes Wochenende sehr günstig für Zwecke an einen Consolenserver für mein kleines Lab gekommen. Problem: Passwort unbekannt. Wenn man sich den Bootvorgang des Geräts auf der Konsole jedoch mal anschaut, erkennt man, dass dort ein embedded Linux läuft. Da gibt es ja den Single User Mode. Folgende Anleitung verhilft nun zu einem neuen Root-Passwort auf einem ACS (in meinem Fall 4):
- Beim Erscheinen der Ausgabe „Linux/PPC“ die Leertaste drücken und „single“ (ohne Anführungszeichen) eingeben und mit Enter abschicken
- am erscheinenden Root-Prompt das Kommando „passwd“ eingeben, das neue Passwort zweimal eingeben
- WICHTIG: speichern der Änderung mit „saveconf“ (hat etwas gedauert bis ich darauf kam)
- reboot
Anschliessend ist der Konsolenserver mit dem neuen Passwort über die üblichen Schnittstellen nutzbar (SSH, Telnet, Web)
Apache SSL einrichten
Unter Gentoo sind die Default-Regeln für die SSL-Konfiguration des Apache Web Servers nach den letzten Enthüllungen über abgehörte Daten und mögliche Schwachstellen der Algorithmen nicht mehr als sicher zu betrachten. Mit folgenden Einstellungen lässt sich die Verschlüsselungsqualität wieder auf ein zur Zeit sicheres Niveau heben:
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCompression off
SSLCipherSuite EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:EDH+aRSA:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS
Den eigenen Webserver kann man unter https://www.ssllabs.com/ssltest/index.html auf sichere SSL-Konfiguration prüfen lassen.
Zur Erklärung der einzelnen Optionen:
- SSLProtocol: SSLv2 und SSLv3 werden deaktiviert, da die Protokolle nicht mehr dem aktuellen Sicherheitsstandard entsprechen. Es kann hier zu Problemen mit IE unter Windows XP kommen (Client kann sich nicht mehr verbinden). Das ist zumindest in meiner Umgebung aber kein Problem, da unter Windows XP vom IE auf kein (SNI Server Name Identification, http://en.wikipedia.org/wiki/Server_Name_Indication) unterstützt wird, diese Technik jedoch auf meinen Webservern exzessiv genutzt wird.
- SSLHonorCipherOrder: Damit wird beim SSL-Handshake die Cipher-Priorisierung vom Server und nicht mehr vom Client gemacht
- SSLCompression: Damit wird der CRIME-Angriff (http://en.wikipedia.org/wiki/CRIME_(security_exploit) ) unterbunden
- SSLCipherSuite: Hier werden die von Apache zu unterstützenden Verschlüsselungsverfahren gelistst, seit apache 2.2.26 können hier auch die EC-Verfahren (Elliptische Kurven, http://de.wikipedia.org/wiki/Elliptic_Curve_Cryptography ) verwendet werden
Unter Gentoo bitte darauf achten, dass OpenSSL nicht mit dem USE-Flag „bindist“ gebaut wird, andernfalls sind die EC-Verfahren nicht verfügbar. Ohne „bindist“ sollte nach Eingabe des Kommandos
openssl ciphers -v
etwa folgendes Ergebnis erscheinen: fsm / # openssl ciphers -v
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384
ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-ECDSA-AES256-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
SRP-DSS-AES-256-CBC-SHA SSLv3 Kx=SRP Au=DSS Enc=AES(256) Mac=SHA1
SRP-RSA-AES-256-CBC-SHA SSLv3 Kx=SRP Au=RSA Enc=AES(256) Mac=SHA1
DHE-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
DHE-DSS-AES256-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(256) Mac=SHA256
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1
DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(256) Mac=SHA1
DHE-DSS-CAMELLIA256-SHA SSLv3 Kx=DH Au=DSS Enc=Camellia(256) Mac=SHA1
ECDH-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(256) Mac=AEAD
ECDH-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(256) Mac=AEAD
ECDH-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(256) Mac=SHA384
ECDH-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256) Mac=SHA384
ECDH-RSA-AES256-SHA SSLv3 Kx=ECDH/RSA Au=ECDH Enc=AES(256) Mac=SHA1
ECDH-ECDSA-AES256-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256) Mac=SHA1
AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD
AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256
AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
CAMELLIA256-SHA SSLv3 Kx=RSA Au=RSA Enc=Camellia(256) Mac=SHA1
PSK-AES256-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=AES(256) Mac=SHA1
ECDHE-RSA-DES-CBC3-SHA SSLv3 Kx=ECDH Au=RSA Enc=3DES(168) Mac=SHA1
ECDHE-ECDSA-DES-CBC3-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=3DES(168) Mac=SHA1
SRP-DSS-3DES-EDE-CBC-SHA SSLv3 Kx=SRP Au=DSS Enc=3DES(168) Mac=SHA1
SRP-RSA-3DES-EDE-CBC-SHA SSLv3 Kx=SRP Au=RSA Enc=3DES(168) Mac=SHA1
EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1
EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1
ECDH-RSA-DES-CBC3-SHA SSLv3 Kx=ECDH/RSA Au=ECDH Enc=3DES(168) Mac=SHA1
ECDH-ECDSA-DES-CBC3-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=3DES(168) Mac=SHA1
DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1
PSK-3DES-EDE-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=3DES(168) Mac=SHA1
KRB5-DES-CBC3-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=SHA1
KRB5-DES-CBC3-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=MD5
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256
ECDHE-RSA-AES128-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
ECDHE-ECDSA-AES128-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1
SRP-DSS-AES-128-CBC-SHA SSLv3 Kx=SRP Au=DSS Enc=AES(128) Mac=SHA1
SRP-RSA-AES-128-CBC-SHA SSLv3 Kx=SRP Au=RSA Enc=AES(128) Mac=SHA1
DHE-DSS-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256
DHE-DSS-AES128-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(128) Mac=SHA256
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
DHE-DSS-AES128-SHA SSLv3 Kx=DH Au=DSS Enc=AES(128) Mac=SHA1
DHE-RSA-SEED-SHA SSLv3 Kx=DH Au=RSA Enc=SEED(128) Mac=SHA1
DHE-DSS-SEED-SHA SSLv3 Kx=DH Au=DSS Enc=SEED(128) Mac=SHA1
DHE-RSA-CAMELLIA128-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(128) Mac=SHA1
DHE-DSS-CAMELLIA128-SHA SSLv3 Kx=DH Au=DSS Enc=Camellia(128) Mac=SHA1
ECDH-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(128) Mac=AEAD
ECDH-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(128) Mac=AEAD
ECDH-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(128) Mac=SHA256
ECDH-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(128) Mac=SHA256
ECDH-RSA-AES128-SHA SSLv3 Kx=ECDH/RSA Au=ECDH Enc=AES(128) Mac=SHA1
ECDH-ECDSA-AES128-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=AES(128) Mac=SHA1
AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD
AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
SEED-SHA SSLv3 Kx=RSA Au=RSA Enc=SEED(128) Mac=SHA1
CAMELLIA128-SHA SSLv3 Kx=RSA Au=RSA Enc=Camellia(128) Mac=SHA1
IDEA-CBC-SHA SSLv3 Kx=RSA Au=RSA Enc=IDEA(128) Mac=SHA1
PSK-AES128-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=AES(128) Mac=SHA1
KRB5-IDEA-CBC-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=IDEA(128) Mac=SHA1
KRB5-IDEA-CBC-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=IDEA(128) Mac=MD5
ECDHE-RSA-RC4-SHA SSLv3 Kx=ECDH Au=RSA Enc=RC4(128) Mac=SHA1
ECDHE-ECDSA-RC4-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=RC4(128) Mac=SHA1
ECDH-RSA-RC4-SHA SSLv3 Kx=ECDH/RSA Au=ECDH Enc=RC4(128) Mac=SHA1
ECDH-ECDSA-RC4-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=RC4(128) Mac=SHA1
RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1
RC4-MD5 SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5
PSK-RC4-SHA SSLv3 Kx=PSK Au=PSK Enc=RC4(128) Mac=SHA1
KRB5-RC4-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=SHA1
KRB5-RC4-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=MD5
EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH Au=RSA Enc=DES(56) Mac=SHA1
EDH-DSS-DES-CBC-SHA SSLv3 Kx=DH Au=DSS Enc=DES(56) Mac=SHA1
DES-CBC-SHA SSLv3 Kx=RSA Au=RSA Enc=DES(56) Mac=SHA1
KRB5-DES-CBC-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=DES(56) Mac=SHA1
KRB5-DES-CBC-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=DES(56) Mac=MD5
EXP-EDH-RSA-DES-CBC-SHA SSLv3 Kx=DH(512) Au=RSA Enc=DES(40) Mac=SHA1 export
EXP-EDH-DSS-DES-CBC-SHA SSLv3 Kx=DH(512) Au=DSS Enc=DES(40) Mac=SHA1 export
EXP-DES-CBC-SHA SSLv3 Kx=RSA(512) Au=RSA Enc=DES(40) Mac=SHA1 export
EXP-RC2-CBC-MD5 SSLv3 Kx=RSA(512) Au=RSA Enc=RC2(40) Mac=MD5 export
EXP-KRB5-RC2-CBC-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC2(40) Mac=SHA1 export
EXP-KRB5-DES-CBC-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=DES(40) Mac=SHA1 export
EXP-KRB5-RC2-CBC-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=RC2(40) Mac=MD5 export
EXP-KRB5-DES-CBC-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=DES(40) Mac=MD5 export
EXP-RC4-MD5 SSLv3 Kx=RSA(512) Au=RSA Enc=RC4(40) Mac=MD5 export
EXP-KRB5-RC4-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(40) Mac=SHA1 export
EXP-KRB5-RC4-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(40) Mac=MD5 export
Da VDR und mein Raspberry Pi sich nicht so gut verstehen, versuche ich TVHeadend unter Gentoo an’s Laufen zu bekommen. TVHeadend sucht automatisch, sobald man einen Satelliten-Mux eingerichtet hat, alle weiteren Muxe und die darin enthaltenen Sender. Allerdings sind hier viele dabei, die verschlüsselt sind (Sky, HD+, …). Das ganze Zeug interessiert mich herzlich wenig, deshalb hier ein einfacher Weg, diese Sender zu deaktivieren:
root-at-tvsrv: /etc/tvheadend/dvbtransports# grep -l -r "\"scrambled\": 1" . | xargs -e sed -i 's/\"disabled\": 0/\"disabled\": 1/g'
Wer auch noch das zugehörige EPG deaktivieren möchte, gibt noch folgenden Befehl ein:root-at-tvsrv: /etc/tvheadend/dvbtransports# grep -l -r "\"scrambled\": 1" . | xargs -e sed -i 's/\"dvb_eit_enable\": 1/\"dvb_eit_enable\": 0/g'
Gedankenstütze Zertifikatswechsel
Da meine Zertifikate ausgelaufen sind, hier mal ein paar Notizen zum Wechsel der Zertifikate. Ich verwende Zertifikate von StartSSL.com (kostenlos für private Nutzung) für verschiedene Dienste (u.a. Webserver, Mail-Server, LDAP-Server, Datenbanken, …).
- Umkodieren des Key-Files um das Passwort zu entfernen:
openssl rsa -in server.key -out server.key-out
- Prüfen, ob Key und Zertifikat zusammenpassen:
(openssl x509 -noout -modulus -in server.pem | openssl md5 ;\
openssl rsa -noout -modulus -in server.key | openssl md5) | uniq - Zusammenbauen eines „chained certificates“, welches alle Intermediate- und Root-Zertifikate enthält:
cat server.crt sub.class1.server.ca.pem ca.pem > server.crt-chained
- Dienste entsprechend für die Nutzung der neuen Zertifikate konfigurieren
- Testen der Verbindung zu den Diensten, Beispiele:
- IMAPS (kein StartTLS)
Bei mir ergibt sich folgender Output:openssl s_client -connect DNSNAME:993 | openssl x509 -text | grep -E "Not (Before|After)"
sieht gut aus …Not Before: Aug 28 21:59:14 2013 GMT
Not After : Aug 30 13:47:19 2014 GMT - SMTP bzw. andere StartTLS-fähige Dienste:
Ausgabe muss gleich sein wie obenopenssl s_client -connect DNSNAME:25 -starttls smtp | openssl x509 -text | grep -E "Not (Before|After)"
- IMAPS (kein StartTLS)
Ermitteln von Datenbankgrößen
Ich habe gerade versucht, rauszufinden, wie groß die einzelnen Datenbanken meiner DBMS-Instanzen sind. Etwas Command Line Fu ergibt dann folgendes:
- PostgreSQL:
#! /bin/bash
e=$(/usr/bin/psql -tAl | cut -d\| -f1)
/usr/bin/psql -c "SELECT pg_database.datname, pg_database_size(pg_database.datname), pg_size_pretty(pg_database_size(pg_database.datname)) FROM pg_database ORDER BY pg_database_size DESC;" -d ${e} - MySQL:
#! /bin/bash
mysql -u root -p -e 'select table_schema "Database",round(sum(data_length+index_length)/1024/1024,4) "Size (MB)" from information_schema.tables group by table_schema;'
OpenLDAP und Zertifikate
Ich bin gerade beim Aufsetzen eines neuen LDAP-Servers darauf gestoßen: es gibt ja einen Unterschied in der Namensgebung der Cipher-Suiten zwischen OpenSSL und GnuTLS.
So z.B. existieren bei GnuTLS die verschiedenen Sammlungen (HIGH, MEDIUM, …) nicht, sondern müssen explizit aufgezählt werden. Aus HIGH:MEDIUM:-SSLv2 wird dann folgendes:
TLS_ANON_DH_AES_256_CBC_SHA1:TLS_DHE_RSA_AES_256_CBC_SHA1:
TLS_DHE_DSS_AES_256_CBC_SHA1:TLS_RSA_AES_256_CBC_SHA1:
TLS_ANON_DH_AES_128_CBC_SHA1:TLS_DHE_RSA_AES_128_CBC_SHA1:
TLS_DHE_DSS_AES_128_CBC_SHA1:TLS_RSA_AES_128_CBC_SHA1:
TLS_ANON_DH_3DES_EDE_CBC_SHA1:TLS_DHE_RSA_3DES_EDE_CBC_SHA1:
TLS_DHE_DSS_3DES_EDE_CBC_SHA1:TLS_RSA_3DES_EDE_CBC_SHA1:
TLS_ANON_DH_ARCFOUR_MD5:TLS_RSA_ARCFOUR_SHA1:TLS_RSA_ARCFOUR_MD5
Da mir das definitiv zu unübersichtlich wird, habe ich mich dann doch entschlossen, dem OpenLDAP-Server GnuTLS wieder abzugewöhnen und OpenSSL zu verwenden. Unter Gentoo genügt es, dafür dem OpenLDAP-Paket das USE-Flag „-gnutls“ zu setzen…