SSL Zertifikate Konvertieren (mit openssl)

In meinem Admin-Alltag kommt es sehr oft vor das ich mit verschiedenen Arten und  Formen von Zertifikaten zu tun habe. Mal zur Absicherung von Webservern, mal für Zugänge zu WLANs oder Produkten, zum Absichern von Verbindungen (MySQL / MariaDB, Cyrus, Postfix) oder zum Einbau in Anwendungen bzw. Java Keystores. In allen Fällen hat es sich bisher als sehr praktisch erwiesen diverse Konvertierungen selbst durchführen zu können. Ich möchte hier nach und nach alles vorstellen was ich bisher mehr als einmal gebraucht habe. Dabei nutze ich openssl unter Linux.

Weiterlesen

KVM VMs mit Bonding und VLANs und Cisco Switchen auf CentOS 6/7 bridgen

Wer große Rechner mit KVM und vielen VMs hat kommt vielleicht an einen Punkt an dem Ihm das Gigabit Interface nicht mehr reicht. Dann gibt es verschiedene Varianten die Bandbreite zu erhöhen.

Eine einfache Variante ist es auf ein 10 Gigabit Interface zu nutzen. Schnell einfach und schön, wenn man die Möglichkeit hat.

Alternativ kann man auch einzelne Gigabit Interfaces nutzen und die Rechner darauf verteilen. Das ist einfach und benötigt wenig Konfiguration, ist allerdings auch nur wenig flexibel und man muss immer aufpassen auf welchen Interface man einen Rechner anlegt.

Es gibt aber auch eine schicke Lösung für dieses Problem. Das Zusammenfassen von Interfacen. Dabei agieren <N> Interface wie ein einzelnes, erhöhen dabei aber die Gesamtbandbreite und sind untereinander Fehlertolerant. Ein entsprechendes Setup soll hier anhand von Cisco Switchen erläutert werden.

Weiterlesen

Zugriff auf das Filesystem innerhalb eines Xen Images

Hin und wieder kommt es leider vor, das ein Dateisystem innerhalb eines Xen Images beschädigt ist. Das kann recht problematisch werden, da man da ja nicht so einfach rankommt. Hier ein Weg wie man trotzdem noch was retten kann bzw. einen Filesystemcheck durchführen etc.:

  1. Mit kpartx -a <pfad zum image/imagename> das Image einbinden.
  2. Hat das Image einen LVM bei Punkt vier weitermachen.
  3. Hat das Image keinen LVM kann man nun via /dev/loop<device> auf die Platte zugreifen. Zum Abschluß noch Punkt 9 beachten.
  4. Bei einem Image mit LVM muss nun das System mit vgscannach neuen Devices durchsucht werden. Hat der LVM ein neues Device gefunden erhält man eine Ausgabe wie Found volume group „VolGroup00“ using metadata.
  5. Das gefundene Volume muss man nun mit vgchange -ay VolGroup00 aktivieren.
  6. Nun sind die einzelnen Partitionen unter /dev/Volgroup00/LogVol<Partitionsnummer> verfügbar.
  7. Filesystemcheck machen oder mounten: fsck.ext3 /dev/VolGroup00/LogVol00 -f   oder mount  /dev/VolGroup00/LogVol00 /mnt oder was immer man braucht.
  8. Wenn alle arbeiten abgeschlossen sind muss man dem LVM das Volume wieder wegnehmen. vgchange -an VolGroup00
  9. Nun noch das Image unmounten mit kpartx -d <pfad zum image/imagename>.

Da meistens was übles schiefgegangen ist, wenn man diese Anleitung sucht, wünsche ich allen Lesern viel Glück ;-).

 

 

Schlechte Bildqualität im Firefox

Seit geraumer Zeit hatte ich ein Problem mit der Darstellung von Bildern im Firefox. Diese sahen ziemlich pixelig und zerstört aus. Ein Kollege konnte das Problem beheben, indem er sein Profil weggeschmissen und ein neues erstellt hat. Das wollte ich aber nicht. Deswegen hab ich ewig gesucht und schließlich die verblüffend einfache Lösung gefunden:

Man gehe auf Ansicht –> Zoom –> und mache einen Haken bei „Nur Text Zoomen“

Und plötzlich sehen die ganzen Bilder nimmer so schlimm aus ;-). Zugegeben, das ist kein wirklicher Fehler, allerdings hat mich das eine ganze Weile geärgert, das ich es lieber mal hier hinschreibe, evtl. haben ja auch andere das Problem, die eine Webseite mal vergrößert und verkleinert haben.

Also, User zu dumm, aber trozdem hilfreich.

Wer UMTS nutzt, kann ein anderes Problem haben: Es gibt Proxys bei den Providern welche Grafiken komprimieren um Webseiten schneller Laden zu lassen, hier hilft oft das Drücken von CTRL-R oder das abschalten des Proxys. Hier kann euch google weiterhelfen.

Content Komprimierung mit mod_deflate und Apache 2

Warum soll ich meinen Content Komprimieren?

Hierfür gibt es einige Argumente:

  1. Verringerung der nötigen Bandbreite, Verkleinerung des Volumens der Seite
  2. Ggf. schneller Ladezeiten beim Nutzer
  3. Good Style ;-)

Tatsächlich ist es so, das heute viele Webseiten auf Komprimierung Ihrer Daten setzen, dies ist mit modernen CPUs und effektiven Modulen wie mod_deflate, selbst bei hochvolumigen Seiten, kein Problem mehr. Hiermit kann ohne großen Aufwand massiv Bandbreite gespart werden, da nahezu alle modernen Browser mit komprimierten Inhalten umgehen können. Nach meinen Erfahrungen kann man locker 10 bis 20% Traffic einsparen, aber auch hier ist das ganze natürlich abhängig von den lokalen Gegebenheiten.

Hier eine Beispielkonfiguration im Apache:

#Maximize Compression
DeflateCompressionLevel 9
<Location />
# Insert filter
SetOutputFilter DEFLATE

# Netscape 4.x has some problems…
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won’t work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Don’t compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary

# Make sure proxies don’t deliver the wrong content
Header append Vary User-Agent env=!dont-vary

</Location>

Mit dem Parameter „DeflateCompressionLevel“ setzt man, wie bei gzip auch, die Stärke der Kompression. 9 ist das Maximum und 1 das schwächste. Dies kann man je nach Serverleistung variieren, wobei das ganze mit mod_deflate ziemlich effizient ist und ich auch mit einem 9 nur einen sehr geringen Anstieg der Serverlast hatte (Server mit mehreren Million Zugriffen/Tag). Der Rest der Konfiguration ist 1 zu 1 aus dem Apache Handbuch kopiert und ich hatte bisher nie Probleme damit.


Date Wed, 20 Jan 2010 08:12:01 GMT
Content-Type text/html;charset=ISO-8859-15
Vary Accept-Encoding,User-Agent
Content-Encoding gzip
Content-Length 6389
Xonnection close

Hier seht Ihr nochmal wie das dann im Header, welchen Ihr mit Firebug oder ähnlichem sehen könnt, anschließend aussieht. Content-Encoding ist gzip, das Kompressionslevel kann man hier nicht sehen, dieses wird im Header nicht angegeben. Ihr könnt allerdings mal mit dem CompressionLevel Paramter rumspielen und euch dann die Content-Length anschauen.

Hier noch der Link zum Apache Manual

Init Scripte für Centos / Redhat fit machen (Chkconfig)

Init Scripte für Chkconfig

Hier bekommst Du eine kurze beschreibung wie man init Scripte für chkconfig fit macht.

Die Syntax

Für chkconfig sind folgende zwei Einträge im Init Script nötig:

  • chkconfig:
  • description:

Die description ist zwingend notwendig. Ein bischen Doku kann man schon machen.

Bei chkconfig: ist zu beachten, das man den “:“ nicht vergisst, ansonsten erkennt chkconfig den Eintrag nicht. chkconfig: hat drei Paramater, das Runlevel, die Startpriorität und die Stoppriorität. Der Runlevel besagt in welchem Runlevel der Dienst gestartet wird, also 1,2,3,4 oder 5. Die Angabe wird einfach durch die Angabe der Runlevel geamacht. Also:

chkconfig: 12345  <- Script wird in Runlevel 1,2,3,4 und 5 gestartet
chkconfig: 345 <- Übliche Variante, Script wird in Runlevel 2,4,5 gestartet

Die Startpriorität legt fest wann ein Script in den Runleveln gestartet wird. Also:

Script 1:
chkconfig: 345 20 <- Script wird in Runlevel 3,4,5 gestartet mit der Prio 20

Script 2:
chkconfig: 345 21 <- Script wird in Runlevel 3,4,5 gestartet mit der Prio 21 also später als Script 1

Die Stopprorität legt fest wann ein Script in den Runleveln gestopt wird. Also:

Script 1:
chkconfig: 345 20 80 <- Script wird in Runlevel 3,4,5 gestartet mit der Prio 20, gestopped mit der Prio 80

Script 2:
chkconfig: 345 21 79 <- Script wird in Runlevel 3,4,5 gestartet mit der Prio 21 also später als Script 1, gestopped wird es mit Prio 79 also früher als Script 1

Alles ganz einfach.

Eine Description sieht dann folgendermaßen aus:

description: Was mein Script macht

Auch nicht der Hammer. Hier sei nochmals gesagt, man braucht die description gelle Martin?

Beispiel

Hier nochmal ein komplettes Beispiel:

#! /bin/sh
#
# Mein Script
#
# chkconfig: 345 21 79
# description: Mein Script