[ENC]BladeXP's Blog

Was die Welt nicht alles braucht!

Einträge in der Kategorie „Arch”

Goodbye OpenOffice.org

geschrieben von encbladexp am 22.01.2011 09:38:00.

Ich habe gestern Abend meine ganzen privaten PCs von OpenOffice.org auf LibreOffice umgestellt.

Für meine Clients auf Basis von Archlinux ging das ohne große Arbeit, da es direkt im extra Repository ist. Für Windows musste ich natürlich wieder das Installationspaket runterladen usw...

Beachten muss man das man OpenOffice und LibreOffice (zumindest bei Arch) nicht gleichzeitig installieren kann da einige Dateien schon im Paket von OpenOffice drin sind. Subjektiv gesehen kommt mir die Startzeit (erster Start) von LibreOffice kürzer vor als die von OpenOffice. Abgesehen davon habe ich noch nicht viel gemerkt, was erstmal ja auch gut ist.

pacman etwas erleichtern

geschrieben von encbladexp am 16.01.2011 10:20:00.

Gerade auf Systemen die nur wenig freien Speicherplatz auf der Festplatte haben lohnt es sich ab und an den Paketcache von pacman zu leeren. Man sollte das aber nur machen wenn gerade alles perfekt läuft, idr. verwendet man den Cache nämlich für Downgrades von kaputten bzw. nicht funktionierenden Paketen.

Das ganze steht auch in der Manpage, ist also kein wirklicher Geheimtipp: sudo pacman -Scc

IMAP sicher über Android

geschrieben von encbladexp am 01.01.2011 12:32:00.

Bei Android ist ja Standardmäßig kein CACert im Zertifikatsmanager als Root-CA hinterlegt.

Bei vielen Webdiensten ist ein Verzicht auf ordentliche HTTPS-Sicherheit vielleicht noch akzeptabel, spätestens bei Mails auf dem eigenen Server aber vollkommen inakzeptabel!

Man hat nun verschiedene Möglichkeiten das Problem zu lösen:

  • CACert Root Certificate in den Zertifikatsmanager importieren: Umständlich
  • VPN verwenden: Möglich
  • IMAP über SSH mit ConnectBot tunneln: Einfach
Das Tunneln über ConnectBot geht natürlich nur wenn man Shellzugriff auf den Server hat, was bei einem eigenen Rootserver ja der Fall ist.

Man richtet sich ConnectBot ganz normal, wie jeden anderen SSH Clienten ein. Ich selbst bevorzuge ein Passwortloses Login über das integriert Public Key Verfahren welche mit einer Passphrase geschützt sind.

Im nächsten Schritt baut man den Tunnel auf, hierzu einfach auf die Verbindung im ConnectBot gehen (langer Druck mit dem Finger) und dann die Portforwardings bearbeiten, folgende benötigen wir für IMAP und SSH:

  • SMTP von 1125 auf 127.0.0.1:25
  • IMAP von 1143 auf 127.0.0.1:143

Sobald man jetzt eine Verbindung zu diesem Host aufbaut wird automatisch auch die Portweiterleitung aktiviert. Im Mailclient wird jetzt immer 127.0.0.1 (alternativ auch gerne localhost) als Server verwendet, der Port für IMAP ist dann die 1143 und für SMTP nimmt man 1125. Die Verbindung zum Server ist aber nicht Verschlüsselt, das übernimmt ja der gute alte ConnectBot für uns. Ob man für den Postausgangssserver (SMTP) ein Passwort benötigt kommt auf die Konfiguration des Mailservers an, oft benötigt man kein Login wenn man über SSH zugreift, da es sich dann um eine lokale Verbindung hat die meistens in der my_networks vom Postfix schon erlaubt ist.

Abgesehen davon kann man den Mailclient wie gewohnt verwenden und konfigurieren, einen Nachteil möchte ich aber nicht verschweigen: Automatische Mailchecks oder Aktionen die ausgeführt werden wenn kein ConnectBot im Hintergrund läuft funktionieren mit dieser Lösung natürlich nicht. Wird dies benötigt muss man also auf den umständlichen Weg das CACert Certificate importieren.

Schöner fände ich es wenn man Root-CAs einfacher importieren könnte, und nicht dieses umständlichen Weg gehen müsste, der noch dazu Root Rechte erfordert! Leider kann Android auch kein OpenVPN ohne Root, so macht das mit einem VPN natürlich auch keinen Spaß :-(

Arch ohne nano und vi

geschrieben von encbladexp am 27.11.2010 18:23:00.

Ich verwende schon seit ich Linux kenne nur noch den Texteditor vim, der alte vi ist mir zu staubig. Auch an nano konnte ich mich nie so recht gewöhnen, daher hier ein kurzer Tipp wie man unter Arch die beiden nicht notwendigen Editoren los wird:

pacman -R nano vi
ln -s /usr/bin/vim /usr/bin/nano
ln -s /usr/bin/vim /usr/bin/vi

Die symbolischen Links habe ich nur für die Kompatibilität mit Programmen angelegt, welche ihren Editor fest verdrahtet haben. Dies betrifft unter Arch z.b. sudo welches immer den normalen vi nehmen möchte.

S/KEY Support für Arch im AUR

geschrieben von encbladexp am 11.11.2010 22:02:00.

Ich habe heute zusammen mit Abakus die Pakete für den S/KEY bzw. OPIE Support im AUR von ArchLinux aktualisiert. Dies beinhaltet folgende Pakete:

Hinzugekommen ist 64-Bit Support, und die Pakete werden jetzt direkt aus dem Quellcode gebaut. Die älteren AUR Pakete von den Tools waren nur für 32-Bit tauglich da einfach das Debian Paket neu paketiert wurde.

Wie man S/KEY bzw. OPIE einrichtet werde ich in einem extra Artikel demnächst erklären.

Sicherheitserweiterungen

geschrieben von encbladexp am 06.11.2010 22:01:00.

Momentan gibt es im Linux Kernel 4 Sicherheitserweiterungen die alle mehr oder weniger eine MAC (Mandatory Access Control) nachrüsten. Diese sind:

  • SELinux
  • SMACK
  • TOMOYO
  • AppArmor

SELinux wird schon immer von Fedora/RedHat/CentOS verwendet, das sind auch die Leute welche hinter diesem System stehen. Die Anpassung ist natürlich bei diesen Distributionen am besten. SELinux benötigt einige Anpassungen im Userspace, was mich persönlich etwas stört.

SMACK habe ich mir bisher noch garnicht angesehen, ggf. hat jemand schon damit Erfahrungen gemacht. Soweit ich weis ist es aber auch bei keiner Distribution Standard, und auch SMACK benötigt einige Anpassungen im Userspace.

TOMOYO ist seit 2.6.30 im Kernel dabei, das ganze ist eine relativ junge Sicherheitserweiterung bei der noch einige Features fehlen. Der IMHO größte Vorteil von TOMOYO ist dass man einen schönen Live Editor (tomoyo-editpolicy) hat, mit diesem kann man den Learning Mode von TOMOYO prima überprüfen und auch neue Regeln eintragen sowie alte Löschen. Die Userspace Tools von TOMOYO sind relativ klein, so dass man fast nichts nachinstallieren muss.

AppArmor ist ein etwas älterer bekannter, welcher mit Kernel 2.6.36 auch endlich Einzug in den Standardkernel erhält. Unschön an AppArmor finde ich dass die Userspace Tools etwas fett sind, dies fällt einem aber erst auf wenn man sie zum Beispiel unter Arch installiert und massig Abhängigkeiten nachinstalliert werden.

Problematisch finde ich eigentlich nur das viele Distributionen unterschiedliche Sicherheitserweiterungen installieren. Ohne einen Standard werden viele Leute sowas einfach nicht einrichten wollen, da man es für jede Distribution neu lernen darf. Ubuntu hat z.B. AppArmor, Fedora SELinux und Arch kann TOMOYO und AppArmor, openSuSE wiederum verwendet auch AppArmor, usw...

Wenn jetzt noch GRSecurity in den Kernel kommt haben wir alle Sicherheitserweiterungen die mir bekannt sind im Kernel, doch keine einzige die irgendwie ein Standard wäre. Schade eigentlich, da geht viel Potential verloren... :-/

Gerade für Serverdienste wäre das erstmal wichtiger als Unity, Themes oder Wallpapers!

Arch Linux hat TOMOYO für 2.6.36 aktiviert

geschrieben von encbladexp am 31.10.2010 12:25:00.

Arch Linux hat ab dem Kernel 2.6.36 die Sicherheitserweiterung TOMOYO aktiviert (Feature Request), auch Debian Squeeze hat diese Sicherheitserweiterung schon aktiviert.

Ich selbst teste aktuell die ein oder andere Sicherheitserweiterung, bisher ist mir aufgefallen das TOMOYO diejenige ist welche die schlankesten Tools im Userspace benötigt. AppArmor zieht hier viele viele Abhängigkeiten nach sich was ich nicht besonders toll finde. Bei SELinux muss man sehr viel am System anpassen, dafür kann SELinux natürlich auch am meisten.

Ich plane daher für die Zukunft auf meinen Servern wenn möglich immer TOMOYO zu verwenden, natürlich werde ich auch den ein oder anderen Artikel hierüber in mein Blog schreiben.

IPSec mit Arch Linux

geschrieben von encbladexp am 26.10.2010 11:36:00.

Oft ist man gezwungen ein unverschlüsseltes Protokoll zwischen 2 Server einzusetzen. Dies ist in einem Firmennetzwerk noch vertretbar, aber über der Internet will man sowas auf gar keinen Fall machen.

Es gibt nun mehrere Möglichkeiten wie man die benötigte Verschlüsselung zwischen 2 Servern realisieren kann:

SSH
Das war früher ein sehr gängiger weg alles mit SSH zu Tunneln und dann AutoSSH & Co zu verwenden. Heute möchte man sowas eigentlich nicht mehr verwenden, es sei den es ist der einzige weg da man z.B. keine zusätzliche Software installieren darf oder man nur eingeschränkte Rechte hat.
OpenVPN
OpenVPN ist eine vor allem im OpenSource Umfeld gerne eingesetzte VPN Software. Der Vorteil von OpenVPN ist das man nur einen TCP oder UDP Port benötigt und man sich damit in der Regel fast überall "durchmogeln" kann. Der Nachteil von OpenVPN ist das jedes IP Paket fröhlich zwischen Kernel und Userspace hin und her geschoben wird, was natürlich auf die Performance geht.
IPSec
IPSec ist schon lange ein Standard wenn es um die Verschlüsselung von IP Traffic geht, der Vorteil ist das so gut wie jedes Betriebssystem irgendwie auch IPSec kann, der Nachteil ist das IPSec ein relativ komplexes Protokoll ist.

Wie der Titel dieses Beitrages schon zeigt habe ich mich für IPSec entschieden. Auf den beiden Servern läuft Arch Linux, wenn man hier und da etwas rumschraubt läuft es aber auf jeder Linux Distribution ähnlich.

Benötigte Pakete

Es muss nur das Paket ipsec-tools installiert werden, leider hat Arch noch kein Script das beim starten automatisch die Security Policy Database initialisiert. Aus diesem Grund habe ich ein Ticket aufgemacht das einen Patch für das Paket bereitstellt. Wenn man sich ipsec-tools aus dem ABS holt kann man das Paket selbst patchen, ich gehe aber davon aus das mein Patch die nächsten Tage in die normalen Repositories aufgenommen wird.

Konfiguration

Ich gehe in meiner Konfiguration davon aus das 10.0.0.1 und 10.0.0.2 die IPs der Server sind. Bei den Konfigurationsdateien muss man natürlich immer die IP Adressen vertauschen, auf beiden Servern ist die Konfiguration aber abgesehen davon identisch.

Die Security Policy Database (SPD) vom Kernel kann mit der Datei /etc/ipsec.conf konfiguriert werden. Die SPD dient dazu dem Kernel beizubringen ob er für ein bestimmtes Ziel IPSec verwenden soll, und wenn ja wie davon die Konfiguration aussieht.

#!/usr/sbin/setkey -f
flush;
spdflush;
spdadd 10.0.0.1 10.0.0.2 any -P out ipsec
        esp/transport//require;
spdadd 10.0.0.2 10.0.0.1 any -P in ipsec
        esp/transport//require;
In diesem Beispiel verwende ich zwischen beiden Servern nur eine Verschlüsselung im Transport Mode, ein vollständiger Tunnel wäre mir hier zu viel Overhead. Gleichzeitig gehen in diesem Beispiel alle IP Daten durch IPSec, d.h. auch ICMP Pakete.

Der nächste Schritt ist es racoon zu konfigurieren, racoon ist der IKE (Internet Key Exchange) Daemon welcher für IPSec nicht zwingend erforderlich ist, doch die ganze Sache ordentlich sicherer macht. Wie man IPSec ohne IKE verwendet werde ich hier nicht erklären, u.a. weil ich nicht viel von sowas halte ;-)

Racoon wird über die Datei /etc/racoon.conf konfiguriert, in welcher Beispielsweise folgender Inhalt sein könnte:

# PSK Path
path pre_shared_key "/etc/ipsec-psk.txt";

remote 10.0.0.2 {
 exchange_mode main;
 proposal {
  encryption_algorithm aes;
  hash_algorithm sha1;
  authentication_method pre_shared_key;
  dh_group modp2048;
 }
}

sainfo address 10.0.0.2 any address 10.0.0.1 any {
 pfs_group modp2048;
 lifetime time 6 hour;
 encryption_algorithm aes;
 authentication_algorithm hmac_sha1;
 compression_algorithm deflate;
}

sainfo address 10.0.0.1 any address 10.0.0.2 any {
 pfs_group modp2048;
 lifetime time 6 hour;
 encryption_algorithm aes;
 authentication_algorithm hmac_sha1;
 compression_algorithm deflate;
}
Kleiner Hinweis noch: Bei remote muss dahinter die IP Adresse vom jeweils anderen Server stehen.

Nun muss man sich nur noch ein Password für die Verschlüsselung ausdenken und dies in die Datei /etc/ipsec-psk.txt schreiben:

10.0.0.2 strenggeheim
Auch hier muss wieder die IP zum jeweils anderen System passen, damit racoon diese Datei akzeptiert muss die Datei dem Benutzer root gehören und darf keine Rechte für andere Benutzer haben:
chown root:root /etc/ipsec-psk.txt
chmod 0600 /etc/ipsec-psk.txt

Start

Hat man dies alles gemacht kann man nun IPSec starten:

/etc/rc.d/racoon start
/etc/rc.d/ipsec start
Ab jetzt wird zwischen den beiden Servern IPSec zur Verschlüsselung verwendet. Wenn alles funktioniert kann man dies natürlich in den Autostart der /etc/rc.conf packen, so dass bei jedem Sytemstart automatisch IPSec aktiviert wird.

Bitte beachtet das dies nur eine mögliche Konfiguration ist, für wirklich wichtige Daten will man statt eines PSK lieber X.509 Zertifikate einsetzen. Auch gehe ich in den Beispiel davon aus das mein Patch wirklich akzeptiert wird.

ArchLinux auf einem Hetzner vServer installieren

geschrieben von encbladexp am 25.10.2010 18:13:00.

Aktuell spiele ich mit dem Gedanken aus meinen beiden Hetzner vServern einen HA Cluster zu bauen. Da diese beiden Systeme aktuell nicht für was wichtiges genutzt werden möchte ich dies mit ArchLinux machen, womit meine Pakete immer schön aktuell wären.

Doch dazu später, erstmal muss Arch ja auf den vServer. Hierzu gibt es verschiedene Möglichkeiten, die einfachste wie ich finde ist diese hier, den der vServer von Hetzner bietet eine VNC Konsole womit jedes andere gebastel einfach zu Aufwendig bzw. Zeitintensiv wäre.

Auf gehts...

Man startet das Rescue System (Backup hat man hoffentlich schon vorher gemacht) und partitioniert die Platte wie man möchte, wichtig ist das man eine Partition mehr hat als man später braucht, oder das man eine Partition erstmal frei lässt. Diese dient nur als Datenhalte für das ISO Image der Arch Installations CD, für mehr wird diese nicht gebraucht!

Es ist sinnvoll wenn man sich seine IP Konfiguration wo aufgeschrieben hat, sollte man dies vergessen haben kann man mit dem Paket ipcalc auch die Konfiguration bekommen:

ipcalc ipvomvserver/27
Der Wert hinter HostMin ist das Gateway und für was Broadcast steht kann sich hoffentlich jeder denken ;-)

Alternativ kann man natürlich auch einfach DHCP verwenden, ich selbst vermeide aber unnötige Dienste wann immer es möglich ist.

Bootloader und Installationsimage...

Nun muss nur noch das Installationsimage auf die freie Partition geladen werden:

wget -O /dev/sda3 http://ftp.uni-kl.de/pub/linux/archlinux/iso/2010.05/archlinux-2010.05-netinstall-x86_64.iso
Dabei ist es natürlich wichtig das man sowohl die URL vom Mirror als auch den Pfad zu Partition anpasst.

Ist dies erledigt fehlt eigentlich nur noch der Bootloader, dieser wird hier im Beispiel auf die Partition /dev/sda1 installiert, beachtet das ich hier auch gleich die Partition mit einem Dateisystem versehe und das mein ISO Image auf sda3 geladen wurde:

mke2fs -L Boot -m 0 /dev/sda1
mount /dev/sda1 /boot
grub-install /dev/sda
cat > /boot/grub/menu.lst << EOF
title Arch Installation
root (hd0,2)
kernel /vmlinuz26 archisolabel=ARCH_201005
initrd /archiso.img
EOF
mkdir /mnt/arch
mount /dev/sda3 /mnt/arch
cp /mnt/arch/boot/vmlinuz26 /boot/
cp /mnt/arch/boot/archiso.img /boot/
umount /mnt/arch
umount /boot
Jetzt ist eigentlich alles fertig und man kann mit reboot in das Installationssystem starten. Spätestens ab hier ist man auf die VNC Konsole von Hetzner angewiesen da die normale Arch Linux Installation keinen SSH Server startet.

Auf die Installation an sich gehe ich nicht ein, den ab jetzt ist es eine ganz normale Arch Linux Installation.

SSH Tuning

geschrieben von encbladexp am 24.08.2010 17:56:00.

Wer wie ich oft SSH verwendet und sich gerne darüber aufregt das ein Login bei großen Schlüsseln (z.b. 4096 Bit) oft lange dauert kann SSH etwas pimpen.

OpenSSH kann nämlich sog. Multiplexing, d.h. es kann mehrere Sessions zum gleichen Server über nur eine Verbindung verwalten. Der Vorteil ist das man sich nicht über jeden Channel neu Authentifizieren muss, und somit die neue Session ziemlich schnell verfügbar ist. Nachteil ist natürlich das beim Abbruch der einen TCP Verbindung auch alle Sessions auf einmal weg sind :-/

Das ganze wird folgendermaßen in der ~/.ssh/ssh_config konfiguriert:

ControlMaster auto
ControlPath /tmp/ssh-%h-%r-%p

ControlPath sorgt dafür das der Modus aktiviert wird und automatisch eine neue multiplex Session gestartet wird wenn es noch keine gibt. Als Pfad für das nötige Controlsocket wird der unter ControlPath angegebene Pfad verwendet. Die Platzhalter werden prima in der Manpage von ssh_config erklärt (man 5 ssh_config).

Wenn man in der ssh_config spezifische Einstellungen für bestimmte Hosts hat sollte man diese Einstellungen ganz oben in die Datei schreiben, so das diese für jeden Host gelten.

Mit dem neuen OpenSSH 5.6 das gestern veröffentlich wurde gibt es noch eine zusätzliche, aber sehr nützliche Option:

ControlPersist on
Was dafür sorgt das auch beim schließen der letzten noch aktiven Session die Verbindung für immer aktiv bleibt. Natürlich sollte man aus Sicherheitsgründen statt on lieber 10m Eintragen was für 10 Minuten steht.