BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Swap verschlüsseln

Möchte man den Swapbereich verschlüsseln, so kann man unter FreeBSD in der /etc/fstab die Devicebezeichnung mit einem .eli ergänzen.

# Device                Mountpoint     FStype   Options    Dump    Pass#
/dev/ad0s1b.eli none swap sw 0 0

Nach einem Neustart würde der Swapbereich von geli(8) verschlüsselt. Gemäss geli(8) sollte bei Swapbereichen zusätzlich in der /etc/rc.conf die "Detach on last close"-Option mittels -d gesetzt werden:

geli_swap_flags="-d"

Nach einem Neustart wird der Swapbereich verschlüsselt:

GEOM_ELI: Device ad0s1b.eli created.
GEOM_ELI: Encryption: AES-CBC 128
GEOM_ELI: Crypto: software

Auch die Ausgabe von swapinfo(8) zeigt nun die verschlüsselte Swappartition an:

# swapinfo 
Device 1K-blocks Used Avail Capacity
/dev/ad0s1b.eli 1048576 0 1048576 0%

Auf OpenBSD kann die Swapverschlüsselung mittels einer sysctl-Variable eingeschaltet werden. Einfach in der /etc/sysctl.conf folgenden Eintrag hinzufügen und das System neu starten:

vm.swapencrypt.enable=1
 Permalink

Swapdatei hinzufügen

Werden die vorhandenen Swap-Partitionen immer mehr gefüllt und es lassen sich keine weiteren Festplatten hinzufügen um dem System mehr Swappartitionen zur Verfügung zu stellen, so kann man eine Swapdatei erstellen, die das System als Auslagerungsspeicher benutzt. Anzeichen für zu wenig Swap- bzw. Arbeitsspeicher sind Meldungen wie diese in /var/log/messages:

swap_pager_getswapspace(4): failed
swap_pager_getswapspace(9): failed
swap_pager_getswapspace(3): failed
swap_pager_getswapspace(8): failed
swap_pager_getswapspace(2): failed
pid 95498 (httpd), uid 1003, was killed: out of swap space

Folgendes System besitzt 1GB Swap wovon 7% besetzt sind.

# swapinfo 
Device 1K-blocks Used Avail Capacity
/dev/ar0s1b 1048576 69488 979088 7%

Zuerst muss eine Swapdatei angelegt und die Berechtigungen angepasst werden. Folgendes Beispiel erstellt eine 1GB grosse Swapdatei:

# dd if=/dev/zero of=/usr/swapdatei bs=1024k count=1024
#
chmod 0600 /usr/swapdatei
Nun kann die Swapdatei dem System zur Verfügung gestellt werden:
# mdconfig -a -t vnode -f /usr/swapdatei -u 0
# swapon /dev/md0
Möchte man, dass die Swapdatei auch nach einem Neustart verwendet wird, kann folgende Zeile in die /etc/rc.conf eingetragen werden:
swapfile="/usr/swapdatei"
Nun kann mit swapinfo(8) überprüft werden, ob das System die zusätzliche Swapdatei verwendet.
# swapinfo 
Device 1K-blocks Used Avail Capacity
/dev/ar0s1b 1048576 70204 978372 7%
/dev/md0 1048576 0 1048576 0%
Total 2097152 70204 2026948 3%
 Permalink

SMTP-Tester für die Kommandozeile

Möchte man die Funktionalität eines einfachen SMTP Servers testen, kann man dies mit telnet machen. Sobald man allerdings auch Verschlüsselung und Authentifizierung des Servers testen muss, geht dies mit telnet nicht mehr. In diesem Falle hilft einem swaks weiter.

Auf FreeBSD findet man swaks unter mail/swaks:

# cd /usr/ports/www/swaks && make install clean

Nun kann mit der -s Option angegeben werden, welcher Server getestet werden soll:

# swaks -s mail.chruetertee.ch
To: beat@chreutertee.ch
=== Trying mail.chruetertee.ch:25...
=== Connected to mail.chruetertee.ch.
<- 220 mail.chruetertee.ch ESMTP Sendmail 8.13.6/8.13.6
-> EHLO daedalus.network.local
<- 250-mail.chruetertee.ch
<- 250-8BITMIME
<- 250-PIPELINING
<- 250-HELP
<- 250 SIZE 26214400
-> MAIL FROM:<beat@daedalus.network.local>
<** 553 <beat@daedalus.network.local> unable to verify address
-> QUIT
<- 221 mail16.bluewin.ch QUIT
=== Connection closed with remote host.

Nun sieht man, dass die Absenderadresse nicht aufgelöst werden konnte und deshalb die Mail nicht versandt wurde.

Im folgenden Beispiel wird die Absenderadresse mit der -f Option festgelegt und die Verbindung verschlüsselt via SSMTP versendet. Zudem muss der Benutzer authentifiziert werden:

# swaks -s mail.chruetertee.ch --protocol SSMTP -f null@chreutertee.ch -a
To: beat@chreutertee.ch
Username: beat
Password: **************
=== Trying mail.chruetertee.ch:465...
=== Connected to mail.chruetertee.ch.
=== TLS started w/ cipher DHE-DSS-AES256-SHA
<~ 220 mail.chruetertee.ch ESMTP Sendmail 8.13.6/8.13.6; Sat, 30 Jun 2007 12:47:15 GMT
~> EHLO daedalus.network.local
<~ 250-mail.chruetertee.ch Hello 192.168.1.1 [192.168.1.1], pleased to meet you
<~ 250-ENHANCEDSTATUSCODES
<~ 250-PIPELINING
<~ 250-8BITMIME
<~ 250-SIZE
<~ 250-DSN
<~ 250-ETRN
<~ 250-AUTH PLAIN LOGIN
<~ 250-DELIVERBY
<~ 250 HELP
~> AUTH LOGIN
<~ 334 asdfghjklwert
~> dfghjj==
<~ 334 qwertzuioiuz
~> sdfghjklmnbvcxyre
<~ 235 2.0.0 OK Authenticated
~> MAIL FROM:<null@chreutertee.ch>
<~ 250 2.1.0 <null@chreutertee.ch>... Sender ok
~> RCPT TO:<beat@chreutertee.ch>
<~ 250 2.1.5 <beat@chreutertee.ch>... Recipient ok
~> DATA
<~ 354 Enter mail, end with "." on a line by itself
~> Date: Sat, 30 Jun 2007 14:45:58 +0200
~> To: beat@chreutertee.ch
~> From: null@chreutertee.ch
~> Subject: test Sat, 30 Jun 2007 14:45:58 +0200
~> X-Mailer: swaks v20061116.0 jetmore.org/john/code/#swaks
~>
~> This is a test mailing
~>
~> .
<~ 250 2.0.0 l5UClFLM068527 Message accepted for delivery
~> QUIT
<~ 221 2.0.0 mail.chruetertee.ch closing connection
=== Connection closed with remote host.

swaks gibt immer die vollständige Kommunikation zwischen dem Client und dem Server aus, so können Fehler und Probleme eines SMTP-Servers erkannt werden. swaks bietet eine grosse Anzahl von Optionen, welche alle in der Manpage beschrieben sind, welche man wie folgt aufruft:

# swaks --help
 Permalink
1-3/3