SSH-Audit

Jemand hat sich mal hingesetzt und eine Sammlung an Python-Skripten geschrieben, mit dem sich ein SSH-Server auf die verwendete Version, den Algorithmen und Sicherheitsinformationen abklopfen lässt, sowie die dazu passenden Empfehlungen ausgibt. Das Programm ist auf GitHub verfügbar und mit Python 2.6, Python 3.x und PyPy kompatibel.

ssh-audit

Link: https://github.com/arthepsy/ssh-audit

Speichermedien grundieren mit f3write / f3read

Das Thema ist zwar schon älter, aber es kommt wohl immer noch vor, dass USB-Sticks oder SD-Karten mit gefälschten Kapazitätsangaben in Umlauf gebracht werden. Auch wenn diese aus seriösen Quellen stammen, sollte man sie auf die korrekte Kapazität und Funktionsfähigkeit prüfen, bevor man darauf unwiederherstellbare Daten aufzeichnet. So schreibt beispielsweise eine Kamera fröhlich 32 GB auf eine Karte, die tatsächlich nur 8 GB fasst. Die Daten sind dann hinüber. Außerdem kann die Karte auch einfach nur defekt sein, oder die versprochene Schreibgeschwindigkeit nicht halten.

Für die gängigen Unixoiden Betriebssysteme kann man f3write / f3read benutzen. Dabei wird der Datenträger mit einem verifizierbaren Muster beschrieben und dieses wird im Anschluss wieder gelesen.

Vorher muss der Source-Code aber an einem Ort der Wahl innerhalb des Dateisystems entpackt und mit ‚make‚ kompiliert werden.

sommteck:f3-6.0 franky$ ./f3write /Volumes/USB-Stick/
Free space: 3.78 GB
Creating file 1.h2w ... OK!
Creating file 2.h2w ... OK! 
Creating file 3.h2w ... OK!
Creating file 4.h2w ... OK!
Free space: 0.00 Byte
Average writing speed: 4.40 MB/s
sommteck:f3-6.0 franky$ ./f3read /Volumes/USB-Stick/
                  SECTORS      ok/corrupted/changed/overwritten
Validating file 1.h2w ... 2097152/        0/      0/      0
Validating file 2.h2w ... 2097152/        0/      0/      0
Validating file 3.h2w ... 2097152/        0/      0/      0
Validating file 4.h2w ... 1631936/        0/      0/      0
 
  Data OK: 3.78 GB (7923392 sectors)
Data LOST: 0.00 Byte (0 sectors)
	       Corrupted: 0.00 Byte (0 sectors)
	Slightly changed: 0.00 Byte (0 sectors)
	     Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 20.70 MB/s

Idealerweise kann man vielleicht noch Aliases in der .profile erstellen, um die Tipperei auf der Konsole zu reduzieren.

Außerdem gibt es das Programm als native Cocoa-GUI-Variante. Aber diese gefällt mir persönlich nicht so gut, weil sie keine so detaillierten Statusinformationen liefert.

Update

Inzwischen kann man f3write/f3read auch mittels MacPorts und HomeBrew automatisiert installieren. Zudem ist der Quellcode auf GitHub verfügbar.

Link: https://github.com/AltraMayor/f3

Mittels Nullmodem auf eine Alix mit OpenBSD

Ich habe mir ja vor einer Ewigkeit diesen hübschen Embeddded-Computer zugelegt. Gegenüber damals bin ich aber irgendwann von Net- auf OpenBSD umgestiegen. Weil ich aber inzwischen der Auffassung bin, möglichst wenig Ballast anzusammeln und herum zuschleppen, habe ich mich weitestgehend von unnötiger Peripherie-Hardware wie Ein- und Ausgabegeräte und anderem Zeug getrennt. Nun betreibe ich diese Box in einer Umgebung, wo es weder Monitor oder Tastatur gibt. Da sie aber noch über eine hinausgeführte serielle RS-232-Schnittstelle verfügt, sollte man den Kram eigentlich auch nicht benötigen. Wenn der Rechner gerade aus Gründen nicht über ein Netzwerk erreichbar ist, so hat man dennoch die Möglichkeit via USB-Seriell-Adapter und Nullmodemkabel sich auf dem Gerät einzuloggen. Folgende Einstellungen müssen Betriebssystemseitig unter OpenBSD gemacht werden.

In der Datei /etc/ttys die Zeile:

tty00   "/usr/libexec/getty std.9600"   unknown off

nach

tty00   "/usr/libexec/getty std.9600"   vt220   on  secure

abändern.

Die Datei /etc/boot.conf erstellen oder bearbeiten und folgende Zeile hinzufügen:

set tty com0

Damit wird auch der Boot-Prozess über die serielle Leitung übertragen. Leider funktioniert das bei mir noch nicht, weil die Boot-Loader Input-/Output-Fehler wirft, denen ich bisher nicht auf den Grund gekommen bin.

Was ich aber ziemlich advanced finde, dass selbst die Initialisierung der Hardware und auch der Zugriff auf das BIOS-Setup über die Serielle Konsole erfolgen kann. Dafür muss lediglich im „BIOS Advanced Features“-Menü die Option „Console Redirection“ auf Enabled gestellt werden. Die Baudrate sollte natürlich identisch mit der des Betriebssystems und dem Terminal-Emulators sein.

Serial-Boot_BIOS_0

Serial-Boot_BIOS_1

Serial-Boot_BIOS_2

Serial-Boot_BIOS_3

Anders als hier aufgeführt, kann man die Baudrate natürlich auch bis auf 115200 Baud herauf setzen, da auf Dauer die 9600 sehr langsam erscheinen – auch wenn es einen gewissen Nerd-Faktor und fast einen meditativen Charakter besitzt, dem Bildschirm beim zeilenweisen Aufbau zu zusehen.

Ob das Ganze auch mit den moderneren UEFI’s geht, weiß ich jetzt nicht. Cool wäre es!

Quelle im OpenBSD FAQ:
http://www.openbsd.org/faq/faq7.html#SerCon

pfSense 2.3 auf einem Alix 2D13 Board

Vor circa anderthalb Monaten gab es von der Router und Firewall-Distribution pfSense ein größeres Update von Version 2.2.x auf 2.3. Dieses beinhaltet neben zahlreichen Verbesserungen auch eine von Grund auf völlig überarbeitete Web-Oberfläche. Allerdings reagiert das System mit den Standardeinstellungen gerade unter der neuen Web-Oberfläche auf meiner Alix 2D13 ziemlich träge. Um nicht zu sagen – es ist so ziemlich unbenutzbar, weil es permanent zu einer Zeitüberschreitung von Seiten des Web-Servers gibt. Auch der Zugang mittels SSH ist dann nicht mehr so angenehm schnell möglich. Um dennoch die ältere 386-Plattform nutzen zu können, hilft folgende Konfigurationsänderung in der pfSense-Weboberfläche aus.:
Unter Diagnostics -> NanoBSD muss unter dem Menüpunkt Permanent Read/Write Status das Häkchen gesetzt sein.
Für die Zukunft ist es wahrscheinlich besser das alte Alix-Board mit der 500MHz AMD Geode CPU und den 256 MB RAM gegen ein moderneres APU 2 Board zu ersetzen.

wego-Wetterclient für das Terminal

wego ist ein ASCII-Wetterclient für das Terminal, welcher eine go-Bibliothek um einen python-Wrapper schnürt, um via curl Wetterinformationen auf das Unix-Terminal zu holen. Eine schöne nerdige Art, wie man die aktuelle Wettervorhersage auch ohne HTTP-Overhead und Webbrowser hübsch auf den Computer dargestellt bekommt. Ich habe mir diesen mal auf meinem Mac installiert.

Features:

wego-forecast

  • zeigt forecast-Wetterdaten für den Zeitraum von 1 bis 7 Tagen
  • hübsche ASCII-Art Icons
  • angezeigte Informationen (Metrische, imperiale und SI-Einheiten)
    • Temperatur
    • Windrichtung und Geschwindigkeit
    • Vorhersage
    • Niederschlagsmenge und Wahrscheinlichkeit
  • SSL
  • Unterstützung mehrerer Sprachen
  • automatisches Konfigurationsmanagement mit ingo

Abhängigkeiten:

  • eine laufende Go-Umgebung ab Version 1.5
  • UTF-8 Terminal mit 256 Farben
  • eine vernünftige proportionale Schrift
  • einen API-Key für das BackEnd

Installation

Mit MacPorts oder jedem anderen beliebigen Paket-Manager Go installieren:

sudo port install go

Einen separaten Ordner für die Source-Files und Binaries von Go im Heimatverzeichnis anlegen:

mkdir Applications/Go

Umgebungsvariable setzen:

export GOPATH=/Users/franky/Applications/Go

Zum Installieren oder Updaten des wego-Binaries in der gesetzten $GOPATH-Variable ausführen:

go get -u github.com/schachmat/wego

Setup

  1. Einmal wego ausführen. Dies führt zu einem Programmabbruch und einer Fehlermeldung. So wird aber im Heimatverzeichnis die Datei .wegorc erzeugt.
  2. Mit forecast.io einen Account erzeugen
    1. Unter https://developer.forecast.io/register einen Account erzeugen
    2. Folgende Konfigurationsvariablen in der Datei .wegorc anpassen:
      backend=forecast.io
      location=40.748,-73.985
      forecast_api_key=YOUR_FORECAST.IO_API_KEY_HERE
  3. Danach weitere persönliche Einstellungen, wie Verwendete Einheit, Sprache usw. anpassen.
  4. wego erneut ausführen. Und schon wird das Wetter von forecast für die nächsten Tage vorhergesagt.

Mit dem Befehl Applications/Go/bin/wego wird dann die Wetterabfrage gestartet. Alternativ kann man sich aber noch einen passenden Alias in der .profile im Heimverzeichnis anlegen.

SIGINFO

Durch eine der letzten FreakShow-Podcastfolgen bin ich auf ein tolles Feature hingewiesen worden. Wenn sich im Terminal ein laufender Prozess befindet, so kann man durch Drücken der Tastaturkombination <Ctrl> + <T> eine Abfrage an diesen sich seinen aktuellen Status anzeigen lassen.
Ursprünglich unter DEC’s VMS implementiert, wurde diese Funktion später in den Terminaltreiber von 4.3BSD übernommen.
Wie in dem folgendem Screenshot zu sehen, besitzt das Unix-Programm dd für SIGINFO sogar einen eigenen Handler.

dd mit SIGINFO

dd mit SIGINFO

Leider gibt es die Funktion nur auf allen BSD-Systemen, bzw. deren Derivaten wie OpenBSD und Mac OS X, aber nicht unter Linux.

Anleitung zum Erstellen eines bootbaren USB-Stick als Installationsmedium unter OpenBSD – Teil 2

Vor etwas geraumer Zeit hatte ich hier ein HowTo erstellt, welches beschreibt wie man einen bootfähigen USB-Stick als Installationsmedium für OpenBSD erstellt. Seit Version 5.6 werden vom Projekt neben dem ISO-Image für die CD auch eine install56.fs zum Download angeboten. Es reicht lediglich, die Datei mit dd auf den USB-Stick hinüber zu kopieren.

dd if=install56.fs of=/dev/sd0

Im Beispiel ist die Laufwerkskennung des Sticks von OpenBSD mit sda angegeben. Je nach Betriebsssystem kann diese auch anders sein.
Statt der 56 im Dateinamen kann auch eine andere Kennung für die jeweilige Version stehen. Zum Beispiel install58.fs für die aktuelle Version 5.8.

Syntax-Highlighting in vi abschalten

Ich bin ja eher ein schlichter Typ und mag es deshalb nicht, wenn etwas bei einem möglichst ergonomischen Arbeitsprozess anschreit. Dazu zählt das Syntax-Highlighting auf einem Kommandozeilenterminal. Und der Editor vim macht aber eben genau das standartgemäss unter einem Linux. Mit dem Befehl :syntax off im Kommandomodus lässt sich das Highlighting abschalten und mit :syntax on bei Bedarf wieder einschalten.

Will man dauerhaft auf dieses Feature verzichten, ändert man entsprechend die Zeile Syntax on in den Wert off um. Auf einem System mit root-Zugriff macht man das Idealerweise gleich in der globalen Konfigurationsdatei unter /etc/vim/vimrc. Hat man keinen vollen Administrationszugriff oder befindet sich unter einem Darwin-System, setzt man sich diese Option in seinem Heimverzeichnis in der Datei ~/.vimrc.

Tor-Server unter OpenBSD

Da ich schon seit längerer Zeit meine Irssi-Instanz von meinem ALix-Homeserver auf einem V-Server verlegt habe, kann man die ungenutzte Bandbreite zu Hause für andere gemeinnützige Dienste nutzen. Deswegen habe ich mal auf den Rechner einen Tor-Server aufgesetzt um den Privacy-bewussten Computernutzer zu unterstützen.

Anbei erst einmal die Installationsanleitung unter OpenBSD.:

1. mit pkg_add installieren:

   # pkg_add tor

2. Tor beim Booten starten:

Dazu muss die /etc/rc.local editiert werden

if [ -x /usr/local/bin/tor ];
then
echo -n ' tor';
/usr/local/bin/tor -f /etc/tor/torrc
fi

3. Konfigurieren

Damit Tor beim booten in den Hintergrund forked, muss folgendes in der /etc/etc/tor/torrc aktiviert werden:

   RunAsDaemon 1

Als nächstes muss ein Verzeichnis für Tor’s Daten in der torrc festgelegt werden:

   DataDirectory /var/spool/tor

Weiterhin muss ein Verzeichnis für Tor’s Logfiles in der torrc festgelegt werden:

   Log notice syslog /var/log/tor

Dann müssen diese Verzeichnise noch erstellt und den Benutzern tor und root müssen die Rechte dafür gegeben werden:

# mkdir /var/spool/tor
# chmod 40700 /var/spool/tor
# chown _tor:_tor /var/spool/tor
# mkdir /var/log/tor
# chmod 40700 /var/log/tor
# chown _tor:_tor /var/log/tor

Die ganze Server-Geschichte lasse ich erst einmal weiterhin als Entry-Node laufen, bis ich mir eventuell mal ein paar Gedanken dazu gemacht habe, wie ich den Dienst für bestimmte Services weiterhin öffnen kann, ohne in Konflikt mit Ermittlungsbehörden zu kommen.
Entsprechend sieht der Abschnitt zur Exit-Policy in der /etc/tor/torrc wie folgt aus.:

   ExitPolicy reject *:* # no exits allowed

Anleitung zum Erstellen eines bootbaren USB-Stick als Installationsmedium unter OpenBSD

Nachdem ich nun sehr lange meine Alix mit NetBSD in der Version 4.0 betrieb und sie aber im letzten Jahr für die meiste Zeit doch nicht im Betrieb wahr, dachte ich mir, man könnte doch mal bei der Reaktivierung eine neue OS-Version installieren. Allerdings ist es mir absolut nicht gelungen, unter NetBSD einen neuen entsprechend bootfähigen USB-Stick als Installationsmedium zu erstellen.

Nach ein wenig Suchen im Web bin ich allerdings auf ein HowTo gestossen, wie man dies unter OpenBSD mit etwas knapp-eleganten Befehlen löst. Also habe ich dieses selber mit Erfolg versucht und stattdessen mal ein aktuelles OpenBSD auf mein Maschinchen geworfen.

Dieses HowTo habe hier mal übernommen und ein wenig erweitert:

 

1 Securelevel herabsetzen

Zuerst als root anmelden und in der Datei /etc/rc.securelevel den securelevel auf -1 setzen.

securelevel=-1

Danach erst einmal das System neu booten.

 

2 Ermitteln der Geometrie des Sticks

Bei dem einstecken des USB-Stick in einen Slot werden folgende Parameter angezeigt:

sd0 at scsibus1 targ 1 lun 0: <USB, Flash Disk, 3000> SCSI0 0/direct removable

sd0: 247MB, 247 cyl, 64 head, 32 sec, 512 bytes/sec, 506880 sec total

Sie teilen einem die Geometrie des verwendeten Sticks mit.

 

3 Schreiben des Master Boot Record (MBR)

# fdisk -i -c 247 -h 64 -s 32 sd0

 

4 Partitionieren des Mediums

# disklabel -f /tmp/fstab -E sd0

Um die vorhandenen Partionen sich anzuzeigen zu lassen:

>p

Nun die vorhandenen Partionen löschen:

>d a

Neue Partionen erzeugen:

>a a

offset: <enter>

size: <enter>

FS type: <enter>

mount point: /<enter>

Sichern und Beenden:

>q

 

5 Formatieren des Mediums

# newfs sd0a

 

6 Mounten des Devices

# mount /dev/sd0a /mnt

 

7 Kopieren des Kernels

# cp /bsd /mnt/

 

8 Schreiben des Partition Boot Record (PBR)

# cp /usr/mdec/boot /mnt/

# /usr/mdec/installboot /mnt/boot /usr/mdec/biosboot sd0

 

9 Mounten und kopieren der Daten der Orginal-Installations-CD

# mkdir /image

# mount -t cd9660 /dev/cd0a /image

# cp -R /image/4.8 /mnt

# cp -R /image/etc /mnt

 

10 Unmounten der Devices

# umount /mnt

# umount /image

 

11 Securelevel wieder heraufsetzen

In der der Datei /etc/rc.securelevel den Wert von securelevel=-1 wieder auf einen seiner Wahl setzen. Standardmässig ist 1 eingestellt. Am Ende das System neu starten.