BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

pf-Logdatei auslesen

Benutzt man die pf-Firewall so können zum Beispiel alle geblockte Pakete aufgezeichet werden. Dazu muss auf FreeBSD der pf-Log-Mechanismus in der /etc/rc.conf aktiviert werden:

pflog_enable="YES"

Regeln in der pf-Konfiguration, die das Schlüsselwort log enthalten, zeichnen nun die Pakete auf, welche auf die Regel zutreffen:

block log all

Die Logdatei kann nun mit Hilfe von tcpdump(1) ausgelesen werden:

# tcpdump -n -e -ttt -r /var/log/pflog

Auch können die aufgezeichneten Pakete in Echtzeit betrachtet werden:

# tcpdump -n -e -ttt -i pflog0

Mehr Informationen findet man in der Manpage pflogd(8).

Comments (3)  Permalink

Aktuelle sendmail-Aliase anzeigen

Mit Hilfe von Aliasen lassen sich im sendmail-Daemon Mailweiterleitungen einrichten. Dabei werden die Aliase in der Datei /etc/mail/aliases konfiguriert und mit Hilfe von newaliases(1) die /etc/mail/aliases.db Datenbank erstellt, aus welcher die Aliase vom sendmail-Daemon ausgelesen werden.

# newaliases 
/etc/mail/aliases: 28 aliases, longest 35 bytes, 314 bytes total

Möchte man den Inhalt der aliases.db auslesen, falls z.B. die aliases-Datei nicht mehr vorhanden ist, kann praliases aufgerufen werden, wodurch die aktuelle Aliases-Konfiguration angezeigt wird:

# praliases 
root:admin1@example.org,admin2@example.org
beat:beat@example.org
postmaster:root
hostmaster:root
abuse:root
[...]

Im FreeBSD und OpenBSD Basissystem ist praliases bereits vorhanden. Mehr Informationen zu paraliases findet man in der Manpage praliases(8).

 Permalink

Aktuelle Zeit einer Zeitzone anzeigen

Mit Hilfe von zdump läst sich die aktuelle Zeit einer bestimmten Zeitzone anzeigen. Dazu muss einfach der Name der Zeitzone oder die Namen der Zeitzonen an zdump übergeben werden:

# zdump CET UTC America/Toronto
CET Sat Jul 26 10:29:26 2008 CEST
UTC Sat Jul 26 08:29:26 2008 UTC
America/Toronto Sat Jul 26 04:29:26 2008 EDT

Die Zeitzonen, welche abgefragt werden können, findet man unter /usr/share/zoneinfo/. Sowohl auf FreeBSD als auch auf OpenBSD ist zdump im Basissystem vorhanden. Mehr Informationen zu zdump findet man in der Manpage zdump(8).

 Permalink

Zeit in OpenBSD auf einem Multiboot-System

Benutzt man OpenBSD auf einem Multiboot-System und die Hardware Uhr ist nicht auf UTC eingestellt, kann es sein, dass die Zeit falsch dargestellt wird, obwohl die Zeitzone richtig eingestellt ist. Um dies zu ändern, kann dem OpenBSD Kernel der Zeitunterschied der Hardware Uhr zu UTC mitgeteilt werden:

# date
Tue Oct 30 21:49:21 CET 2007
# config -ef /bsd
OpenBSD 4.2 (GENERIC) #375: Tue Aug 28 10:38:44 MDT 2007
deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
Enter 'help' for information
ukc> timezone -60
timezone = -60, dst = 0
ukc> quit
Saving modified kernel.

Nach einem Neustart des Systems stimmt nun auch die Uhrzeit:

# date
Tue Oct 30 20:51:36 CET 2007

Mehr Informationen zu den Möglichkeiten von config findet man in der Manpage config(8).

 Permalink

Datei vollständig löschen

Möchte man auf FreeBSD und OpenBSD eine Datei vollständig löschen, so dass sie nicht wieder herstellbar ist, kann die -P Option von rm verwendet werden. Diese überschreibt die Datei zuerst mit 0x00, dann mit 0xff und danach wieder mit 0x00, bevor die Datei gelöscht wird.

Allerdings dauert das Löschen mit der -P Option einiges länger als das Löschen ohne:

# ls -l testdatei
-rw-r--r-- 1 beat users 1073741824 31 Jul 17:12 testdatei
# /usr/bin/time -h rm testdatei
0,15s real 0,00s user 0,15s sys

# ls -l testdatei2
-rw-r--r-- 1 beat users 1073741824 31 Jul 17:13 testdatei2
# /usr/bin/time -h rm -P testdatei2
1m27,78s real 0,03s user 4,07s sys

Mehr Informationen zu rm findet man in der Manpage rm(1).

 Permalink

Vorhandene Datei beim Verschieben nicht überschreiben

Verschiebt man auf FreeBSD und OpenBSD eine Datei in ein Verzeichnis, in dem schon eine gleichnamige Datei existiert, so wird diese standardmässig überschrieben:

# mkdir ordner
# echo inhalt1 > ordner/testdatei
# echo inhalt2 > testdatei2
# mv testdatei2 ordner/testdatei
# cat ordner/testdatei
inhalt2

Sollen gleichnamige Dateien beim Verschieben standardmässig nicht überschrieben werden, kann auf FreeBSD die -n Option verwenden:

# echo inhalt1 > ordner/testdatei
# echo inhalt2 > testdatei2
# mv -n testdatei2 ordner/testdatei
# cat ordner/testdatei
inhalt1
# cat testdatei2
inhalt2

Möchte man je nach Fall entscheiden, so kann auf FreeBSD und OpenBSD die -i Option verwendet werden. Wird nun eine gleichnamige Datei erkannt, so fragt mv zuerst nach, ob die Datei überschrieben werden soll.

# echo inhalt1 > ordner/testdatei
# echo inhalt2 > testdatei2
# mv -i testdatei2 ordner/testdatei
overwrite ordner/testdatei? (y/n [n]) n
not overwritten

Mehr Informationen findet man in der Manpage mv(1).

 Permalink

Benutzerkonto temporär deaktivieren

Soll ein Benutzerkonto temporär deaktiviert werden, so kann die Benutzershell in /sbin/nologin geändert werden. Dies kann mit chpass(1) gemacht werden:

# chpass -s /sbin/nologin <Benutzer>

Versucht sich nun ein Benutzer anzumelden, wird ihm mitgeteilt, dass dieses Benutzerkonto deaktiviert ist:

# ssh test@test
This account is currently not available.
Connection to test closed.

Soll das Benutzerkonto wieder aktiviert werden, kann dem Benutzer wieder eine gültige Shell zugewiesen werden:

# chpass -s <Shell> <Benutzer>

Sowohl nologin(8) als auch chpass(1) sind auf FreeBSD und OpenBSD im Basissystem vorhanden.

Comments (1)  Permalink

Ausführbare Binärdatei komprimieren

Will man eine ausführbare Binärdatei komprimieren, weil man auf einem Speichermedium nur beschränkt Platz hat, kann man dies mit gzexe tun. Im folgenden Beispiel befindet sich nslookup, welches 1.1MB gross ist, in einem Verzeichnis:

# ls -l
total 1104
-r-xr-xr-x 1 beat wheel 1100348 7 Jul 12:47 nslookup*
# file nslookup
nslookup: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked (uses shared libs), stripped

Nun wird die Datei komprimiert:

# gzexe nsloopkup 
nsloopkup: 58.4%
# ls -l
total 1568
-r-xr-xr-x 1 beat wheel 457492 7 Jul 12:40 nslookup*
-r-xr-xr-x 1 beat wheel 1100348 7 Jul 12:40 nslookup~*

Die ursprüngliche Datei hat nun eine Tilde am Ende des Dateinamens. Die komprimierte Datei ist über die Hälfte kleiner als das Original, kann jedoch immer noch ausgeführt werden, allerdings mit einem kleinen Performanceverlust:

# file nslookup
nslookup: Bourne shell script text executable
#./nslookup chruetertee.ch
Server: 192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
Name: chruetertee.ch
Address: 217.150.245.53

Die originale Datei kann nun gelöscht werden.

# rm nslookup~

Möchte man die originale Datei wiederherstellen, verwendet man die -d Option von gzexe:

# gzexe -d nslookup
# ls -l
total 1568
-r-xr-xr-x 1 beat wheel 1100348 7 Jul 12:54 nslookup*
-r-xr-xr-x 1 beat wheel 457492 7 Jul 12:51 nslookup~

Nun wird die komprimierte Datei mit einer Tilde markiert und kann gelöscht werden.

gzexe findet man sowohl auf FreeBSD als auch auf OpenBSD im Basissystem. Mehr Informationen zu gzexe findet man in der Manpage gzexe(1).

 Permalink

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

Monitor für den pf Paketfilter

Für den pf Paketfilter gibt es pftop, welches ähnlich wie top(1), regelmässig Informationen zum Netzwerkverkehr durch die pf anzeigt. Es kann der Status, die Verbindungsdauer und Geschwindigkeit, Verbindungen pro pf Regel und vieles mehr angezeigt werden. pftop findet man sowohl auf FreeBSD als auch auf OpenBSD in den Ports unter sysutils/pftop:

# cd /usr/ports/sysutils/pftop && make install clean

Danach kann pftop als root gestartet werden:

# pftop

pftop besteht aus verschiedenen Ansichten. Nachdem pftop gestartet wurde, kann mit v in die nächste Ansicht gewechselt werden. Mit 0 - 8 kann direkt in eine der neun Ansichten gewechselt werden. pftop kann durch q wieder beendet werden.

Im Batchmode, welchen man durch die -b Option startet, wird die Anzeige einmal auf die Standardausgabe geschrieben und pftop danach beendet. Mit der -v <Ansicht> Option kann festgelegt werden, welche Ansicht angezeigt werden soll. Gültige Argumente für die Ansicht sind: default, label, long, queue, rules, size, speed, state und time.

Mehr Informationen zu pftop findet man in der Manpage pftop(8).

 Permalink
Next1-10/44