Raspbian (Exim4) Konfiguration für SMTP Relay

In dem Raspbian Image ist Exim4 enthalten und muss für den Versand noch konfiguriert werden.

sudo dpkg-reconfigure exim4-config

Die Einstellung erfolgen Grafisch. Hier die Vorgaben für einem SMTP Relay (192.168.10.123) ohne Authentifizierung.

„Versand über Sendezentrale (Smarthost); keine lokale E-Mail-Zustellung“

E-Mail-Name des Systems: raspberrypi

IP-Adressen, an denen eingehende SMTP-Verbindungen erwartet werden: 127.0.0.1 ; ::1

Weitere Ziele, für die E-Mails angenommen werden sollen: raspberrypi

Sichtbarer Domänenname für lokale Benutzer: domain.com

IP-Adresse oder Rechnername der Sendezentrale für ausgehende E-Mails: 192.168.10.123

DNS-Anfragen minimieren (Automatische Einwahl, Dial-on-Demand)? Nein

Einstellungen auf kleine Dateien aufteilen? Nein

Empfänger der E-Mails an die Benutzer root und postmaster: pi

Jetzt ist der Versand per Mail möglich.

Raspberry Pi Zero W mit Raspbian Lite als Headless Server

Ziel ist es einen Raspberry Pi Zero W (also mit WLAN) ohne Monitor und Tastatur zu installieren.

Zuerst laden wir uns das Betriebssystem ist Rasbian Lite auf unseren PC.

Der Download ist als ZIP-Datei möglich.

Nach dem Entpacken kann man die Datei auf Windows per Win32DiskImager auf eine SD Karte übertragen.

Für Linux gibt es eine Anleitung.

Die ZIP-Datei entpacken und das Image auf eine SD Karte übertragen.

unzip -p 2018-06-27-raspbian-stretch-lite.zip | sudo dd of=/dev/mmcblk0 bs=4M conv=fsync

Nach dem Übertragen müssen wir noch das WLAN und SSH einrichten, damit wir Headless sofort den Raspberry Pi Zero W starten können.

Wir entfernen die SD Karte und stecken die Karte wieder in den PC. Bei vielen Betriebssystem erfolgt das Mounten automatisch.

Auf der SD Karte gibt es zwei Partitionen (boot/root).

Die Boot Partition hat das vfat Format, die Root Partition das ext4 Format.

Die WLAN Einstellungen (SSID, Passwort) werden in der Root Partition hinterlegt.

sudo vim /media/user/root/etc/wpa_supplicant/wpa_supplicant.conf

network={
   ssid="WLAN-SSID"
   psk="WLAN-PASSWORT"
}

Für den automatisch start des SSH Server müssen wir eine leere Datei in der Boot Partition erstellen.

touch /media/user/boot/ssh

Jetzt können wir die SD Karte in den Raspberry Pi Zero W stecken und starten. Monitor und Tastatur ist nicht notwendig.

Jetzt können wir uns per SSH zu dem Paspberry Pi verbinden. Das Kennwort für den Benutzer „pi“ lautet „raspberry“.

ssh pi@192.168.10.123

Mit dem Tool Raspi-Config können wir weitere Einstellungen vornehmen.

sudo raspi-config

Diese Punkte sollten wir ändern.

– Change User Password
– Network Options / Hostname
– Localisation Options / Change Locale
– Localisation Options / Timezone
– Localisation Options / Keyboard Layout
– Localisation Options / Wi-fi Country

Die Pakete sollte man aktualisieren.

sudo apt update
sudo apt dist-upgrade

Die Tools (htop, iotop, iftop und vim) finde ich sehr sinnvoll.

sudo apt install vim htop iotop iftop

Will man die Lebenszeit der SD Karte verlängern und Fehler bei einem Spannungsverlust vorbeugen, sollte man die Schreibvorgänge auf die Karte unterbinden.

Auf das Swap File sollte wir deshalb verzichten.

sudo systemctl stop dphys-swapfile
sudo systemctl disable dphys-swapfile

Die Partitionen können wir auf Read Only (ro) setzen und die Log-Dateien in dem RAM schreiben.

sudo vim /etc/fstab

proc              /proc     proc    defaults              0   0
PARTUUID=xxxx-01  /boot     vfat    ro,defaults           0   2
PARTUUID=xxxx-02  /         ext4    ro,defaults,noatime   0   1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that
 
tmpfs   /tmp            tmpfs   nosuid,nodev,size=20M    0   0
tmpfs   /var/log        tmpfs   nosuid,nodev,size=50M    0   0
tmpfs   /var/tmp        tmpfs   nosuid,nodev,size=10M    0   0

Optional kann man diese Installationen entfernen.

sudo apt remove --purge cron logrotate triggerhappy dphys-swapfile fake-hwclock samba-common
sudo apt autoremove --purge

Einige Dienste schreiben Informationen auf das Dateisystem. Das müssen wie wieder ermöglichen.

sudo rm -rf /var/lib/dhcp/ /var/spool /var/lock
sudo ln -s /tmp /var/lib/dhcp
sudo ln -s /tmp /var/spool
sudo ln -s /tmp /var/lock
sudo ln -s /tmp/resolv.conf /etc/resolv.conf

Die automatischen Jobs sollten wir deaktivieren. Dazu entziehen wir Ihnen einfach die Execute Rechte.

sudo chmod -x /etc/{cron.hourly,cron.daily,cron.weekly,cron.monthly}/*

Der Dienst Sshd möchte gerne in Datei /var/log/lastlog schreiben. Diese Datei müssen wir nach einem Neustart in /var/log anlegen.

sudo vim /etc/rc.local

touch /var/log/lastlog
chgrp utmp /var/log/lastlog
chmod 664 /var/log/lastlog
bash -c 'mkdir -p /var/log/{apache2,fsch,apt,ConsoleKit,watchdog}'

Nach dem Neustart ist die SD Karte schreibgeschützt und kann durch einen Stromausfall
nicht mehr beschädigen werden.

sudo reboot

Der Re-Mount als Read-Write ist zur Lautzeit möglich.

sudo mount -o remount,rw /dev/mmcblk0p1 /boot
sudo mount -o remount,rw /dev/root /

VMware ESXi 5.5 mit Embedded Host Client

Ab VMware ESXi 5.5 wird der VMware vShere Client für Windows eingestellt. Als Alternative gibt es einen Web-Oberfläche (HTML5 ohne Flash).

In VMware ESXi 5.5 kann man diesen ESXi Embedded Host Client nachträglich installieren. Aber ESXi 6.5 gehört er mit zum Lieferumfang.

Zuerst laden wir uns den ESXi Embedded Host Client als Datei esxui-offline-bundle-5.x-8122819.zip auf unseren PC und übertragen Ihn mit dem vSphere Client auf den Server.

Per SSH melden wir uns am Server an und verschieben die Datei esxui-offline-bundle-5.x-8122819.zip in das Temp Verzeichnis.

mv /vmfs/volumes/datastore1/esxui-offline-bundle-5.x-8122819.zip /tmp

oder per Download direkt auf den Server.

wget http://download3.vmware.com/software/vmw-tools/esxui/esxui-offline-bundle-5.x-8122819.zip

Jetzt können wir die Installation durchführen.

esxcli software vib install -d /tmp/esxui-offline-bundle-5.x-8122819.zip

Die Seite ist jetzt im Browser zu erreichen unter der Url https://hostname/ui/.

VMware ESXi Client für Linux

Wer noch VMware ESXi 5.x verwendet konnte bisher nur auf den VMware vSphere Client für Windows zurück greifen. Die VMware Remote Console ist eine Alternative für Linux und MacOS.

Ab VMware ESXi 6.0 U3 gibt es den ESXi Embedded Host Client der mit jedem aktuellen Browser (IE, Firefox, Chrome) zusammen arbeitet.

In diesem Beispiel will ich auf ein VMware ESXi 5.1 von Linux zugreifen.

Dafür laden wir die Datei VMware-Remote-Console-10.0.2-7096020.x86_64.bundle für die VMware Remote Console 10.0.2 für Linux herrunter.

Dieser Datei müssen wie Ausführungsrechte geben.

chmod +x VMware-Remote-Console-10.0.2-7096020.x86_64.bundle

Jetzt können wir die Installation starten.

sudo ./VMware-Remote-Console-10.0.2-7096020.x86_64.bundle

Die Verbindung zum VMware Server stellen wir mit VMRC her.

vmrc -h hostname -u root -p passwort123

Kommt es zu dieser Fehlermeldung, so müssen die Einstellungen für SSL verändert werden. ESXi 5.1 unterstützt nur Verbindungen bis TLS 1.0

Verbindung zu mks kann nicht hergestellt werden.
Could not locate vmware-authd executable.

Dazu fügen wir diese Zeite in die Confiuguration von VMware Remote Console ein.

sudo vim /etc/vmware/config

tls.protocols=tls1.0

PowerDNS als Secondary DNS mit SQLite

Wir möchten einen Secondary DNS auf Basis von PowerDNS und SQLite als Backend installieren. Wir verwenden Ubuntu Server 18.04 (bionic) mit PowerDNS 4.1 aus dem Repository.

Die Installation ist sehr einfach. Die Abhängigkeiten werden automatisch mit installiert.

sudo apt install pdns-backend-sqlite3

Bei der Einrichtung antworten wir mit „YES“. Damit wird die Einrichtung zu 90% durchgeführt. Wer die Frage mit „NO“ beantwortet muss selber Hand anlegen. Weitere Informationen am Ende von dem Artikel.

Der Start von dem Dienst „PDNS“ ist fehlgeschlagen.

Systemd enthält einen DNS Resolver für die Namensauflösung. Der Dienst läuft auch auf Port 53 und auf der IP Adresse 127.0.0.1.

Deshalb müssten wir PowerDNS auf die richtig IP Adresse des Server legen und nicht auf alle IP Adessen (0.0.0.0).

sudo vim /etc/powerdns/pdns.d/pdns.local.conf

local-address=123.123.123.123
local-ipv6=2a0:1:2:3:ff::1
local-port=53
version-string=anonymous
 
master=no
slave=yes
 
disable-axfr=yes
disable-tcp=no
slave-cycle-interval=60

Nach der Änderung sollten die Dienste PowerDNS und Resolver ohne Fehler starten.

sudo systemctl restart systemd-resolved pdns

Die Tabellen von PowerDNS wurden mit der Installation automatisch angelegt. Jetzt müssen noch weitere Einstellung hinterlegt werden.

Für den Primary DNS wird in der Tabelle „supermasters“ der Hostname und die IP Adresse von dem Haupserver eingetragen.

sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 "insert into supermasters values ('123.123.123.123', 'ns1.domain.com', 'admin');"

Sollten Sie bei der Einrichtung die Frage mit „NO“ beantwortet haben, fehlt die Tabelle. Dann müssen Sie die Datenbank selbst anlegen.

wget -O /tmp/schema.sqlite3.sql https://raw.githubusercontent.com/PowerDNS/pdns/master/modules/gsqlite3backend/schema.sqlite3.sql
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 < /tmp/schema.sqlite3.sql

Der Import ist auch mit der Command Line Shell so möglich.

sudo sqlite3 /var/lib/powerdns/pdns.sqlite3
.read schema.sqlite3.sql
.quit

Die Datenbank braucht auch die richtig Rechte.

sudo chown pdns:pdns /var/lib/powerdns/pdns.sqlite3

Die Datenbank muß manuell für das PowerDNS Backend konfiguriert werden.

sudo vim /etc/powerdns/pdns.d/pdns.local.gsqlite3.conf

launch+=gsqlite3
 
# Database location
gsqlite3-database=/var/lib/powerdns/pdns.sqlite3
gsqlite3-dnssec=on

Hier noch einige Hinweise zur Fehlersuche.

Sollte es nicht auf Anhieb funktionieren, kann man PowerDNS aus als Anwendung starten und sieht auf der Konsole die Fehlermeldungen.

sudo /usr/sbin/pdns_server

Mit dem Tool „dig“ kann man die Funktion und Erreichbarkeit des Primary und Secondary DNS überprüfen.

dig @ns2.domain.com meinname.info AXFR

Quellen: Powerdns Backend Sqlite

AVM Fritzbox Paketmitschnitt

Die AVM Fritzbox ermöglicht es den Netzwerkverkehr der IP Pakete zu erfassen und später zu Analysieren.

Zuerst gehen wir mit dem Browser auf die Fritzbox unter http://fritz.box.

Jetzt müssen wir im linken Menü auf „Assistenten“ klicken. Unterhalt von dem Menü „Assistenten“ befindet sich ein Link mit der Aufschrift „Inhalt“. Nach der Auswahl wird einem die Seite „Inhalt“ mit allen Links der Fritzbox angezeigt.

In der linken unteren Ecke befindet sich der Link zum „FRITZ!Box Support“. Diese Seite ist für die Fehleranalyse gedacht.

Wir brauchen auf der Support-Seite den Abschnitt „Paketmitschnitt“. Jetzt kann man einen Mitschnitt an unterschiedlichen Schnittstellen erstellen und später mit dem Tool Wireshark auswerten.

Ubuntu Desktop 18.04 mit xRDP und Sound

In Ubuntu 18.04 ist die xRDP Version 0.9.5 enthalten. Mit dieser Version ist es möglich auch Sound per RDP zu übertragen.

Als Desktop wird bei mir Ubuntu Mate verwendet. Natürlich können Sie auch andere Manager verwenden, aber Wayland ist zur Zeit noch nicht möglich.

Die Installation von XRDP erfolgt mit APT.

sudo apt install xrdp xorgxrdp xrdp-pulseaudio-installer

Für die Wiedergabe des Sound wird Plusaudio verwendet. Leider muss man für XRDP zwei Module selbst compilieren. Dafür brauchen wir die Quellen von Pulseaudio aus dem Archiv.

cd /tmp
apt source pulseaudio
cd pulseaudio-11.1
./configure

Nach erfolgreichem Kompilieren von Pulseaudio, kann man die XRDP Module für Pulseaudio kompilieren und installieren. Das Ubuntu Paket xrdp-pulseaudio-installer enthält die Quellen von
Github.

cd /usr/src/xrdp-pulseaudio-installer/
sudo make PULSE_DIR="/tmp/pulseaudio-11.1"
sudo install -s -m 644 module-xrdp-sink.so /usr/lib/pulse-11.1/modules
sudo install -s -m 644 module-xrdp-source.so /usr/lib/pulse-11.1/modules

Ein wichtiger Hinweis befand sich auf Github. Scheinbar funktioniert die Soundausgabe nur, wenn das Host-System eine reale Soundkarte verbaut hat. Server oder virtuelle Umgebung haben eigentlich keine Soundkarte On-Board. Ohne Soundkarte scheitert aber die Wiedergabe mit Pulseaudio und damit auch die Weiterleitung zum Client per RDP Verbindung.

Weitere Anleitungen:
How to set up audio redirection
Audio Output Virtual Channel-support in XRDP

Eintrag im DNS ansehen

Um die Eintragungen im Nameserver (DNS) anzusehen, gibt es unter Linux und Windows das Tool „nslookup“.

In dem Beispeil verwenden wir den Nameserver dns.quad9.net [9.9.9.9]. Sie können aber auch jeden anderen öffentlichen oder privaten Nameserver verwenden.

nslookup - dns.quad9.net
> set q=ANY
> domain.de
> quit

nslookup -q=ANY domain.de dns.quad9.net

Unter Windows sieht die Eingabe so aus.

nslookup -"set q=all" domain.de dns.quad9.net

Ein anderes Tool ist „dig“. Es gehört aber nicht immer zu jedem Linux dazu und muss ggf. später installiert werden.

dig ANY domain @dns.quad9.net

Microsoft SQL Server 2017 in Docker

In diesem Artikel geht es um den neuen Microsoft SQL Server 2017 Linux für Docker.

Natürlich kann man auch MS SQL 2017 direkt unter Ubuntu installieren. Microsoft stellt dafür die Pakete und Docker Images auf dem Docker HUB bereit.

Als minimale Vorraussetzung wird auf der Festplatten rund 4GB Speicherplatz und 4GB RAM benötigt. Eine laufende Docker Installation setzten wir vorraus.

In den allgemeinen Docker Image von Microsoft sind unterschiedliche SQL Editionen verein. Über einen Docker Parameter wird die jeweilige Edition gesetzt.

SQL Developer edition -> MSSQL_PID=Express
SQL Express edition -> MSSQL_PID=Developer

Mit „docker pull“ starten wir den Download von dem Microsoft SQL Server 2017 vom Docker Hub. Im Anschluss erzeugen wir mit „docker run“ eine laufende SQL Express Instanz am Netzwerkport 1433. Unsere Datenbank soll nicht im Docker Container gespeichert werden, sondern im Verzeichnis /my/data/. Das erleichter spätere Updates vom Container. Das Kennword für den Benutzer „SA“ kann natürlich individuell gestalltet werden.

sudo docker pull microsoft/mssql-server-linux
sudo docker run --name mssql1 -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=KennW@rt1' -e 'MSSQL_PID=Express' -p 1433:1433 -v /my/data:/var/opt/mssql/data -d microsoft/mssql-server-linux:2017-latest
sudo docker ps -a

Damit ist die Installation schon abgeschlossen. Jetzt können wir uns per Kommandozeile auf die Datenbank verbinden.

sudo docker exec -it mssql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'KennW@rt1'

Als Beispiel erzeugen wir die Datenbank „TestDB“ mit der Tabelle „Inventory“ und zwei Datensätzen. Per SQL Kommando kann man auch das Kennwort von Benutzer „SA“ ändern.

CREATE DATABASE TestDB
GO
USE TestDB
CREATE TABLE Inventory(ID INT, Name NVARCHAR(50), Quantity INT)
GO
INSERT INTO Inventory VALUES (1, 'banana', 25);
INSERT INTO Inventory VALUES (2, 'orange', 14);
SELECT * FROM Inventory WHERE quantity > 15;
GO
ALTER LOGIN SA WITH PASSWORD='Neues!Kennwort'
GO
QUIT

Microsoft stellt das SQL Server Management Studio Version 17 für Windows als grafisches Tool bereit. Die IDE ist sehr Umfangreich und setzt viele Resourcen vorraus.

Eine alternative IDE stellt HeidiSQL dar.