Posts Tagged ‘Synology’

Sonntag, 23. Juli 2017

1Password kann ja auch TOTP (Google Authenticator)

Auf meinem iPhone habe ich Google Authenticator installiert, welcher mir Einmalpasswörter für eine Ladung von Geräten in meinem Heimnetzwerk (Synology NAS, Anleitung hier) sowie Web-Services (Gmail, Rainloop Webmail, WordPress etc.) liefert. Im Fachjargon nennt man das Time-based One-time Password Algorithm TOTP.

Da ich zu Hause manchmal das Smartphone in einem anderen Raum liegenlasse und ich mir in solchen Fällen den Fussweg zum Telefon sparen möchte, habe ich mich nach einer Desktop-Variante von Google Authenticator umgesehen. In einem Artikel werden einige Varianten erläutert, doch bei den meisten handelt es sich um Google Chrome-Extensions. Solche möchte ich nicht verwenden, da ich verhindern möchte, dass Google meine geheimen Schlüssel erfährt und sie zwischen allen Chrome-Instanzen hin- und hersynchronisiert.

Leider funktioniert JAuth 2 unter macOS Sierra nicht (verlangt nach dem nicht installierten Java 6, RLY?), weshalb ich mich nach anderen Lösungen umsehen musste.

Plötzlich die zündende Idee — moment mal, ich habe ja 1Password auf meinem iPhone, iPad sowie meinem MacBook wie auch meinem Mac mini installiert. Kann die Software nicht auch mit TOTP umgehen?

Und tatsächlich: 1Password bringt alles an Bordmitteln mit, um QR-Codes einzulesen und dann in Echtzeit im jeweiligen Zugangsdaten-Eintrag die sechsstelligen Zahlen anzuzeigen. Halt einfach ein wenig versteckt. Doch weiss man einmal, wo suchen, geht es Ruckzuck und der QR-Code ist in der App im jeweiligen Eintrag der Credentials gespeichert.

Natürlich bedeutet das aber auch, dass wer meine 1Password-Datenbank stehlen kann, neben Benutzernamen und Passwort auch gleich den zweiten Faktor zum Login in sensitivere Konten besitzt.

Zum Glück laufen meine spezialisierten TOTP-Apps für die wirklich kritischen (und wertvollen) Anwendungen (sprich: Online-Banking) in eigenen, schön abgeschottenen Containern auf dem iPhone: Credit Suisse SecureSign und Raiffeisen PhotoTAN. Bei Postfinance verwende ich übrigens Swisscoms Mobile ID; d.h. der zweite Faktor ist hier in Hardware ausgelagert, was Vor- und Nachteile hat.

Tags: , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 31. August 2016

SMB (Samba) unter OS X El Capitan schneller machen

Obwohl ich vorher gar keine Tests gefahren bin, habe ich folgende Konfigurationseinstellung gleich nach der Installation von El Capitan aktiviert:

/etc/nsmb.conf

[default]
signing_required = no

Quelle: OS X 10.11 El Capitan: Langsame SMB-Verbindungen!

Motto: Nützt’s nüt, schadt’s nüt.

Tags: , , , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 30. August 2016

Mit cacti Synology-Partitionen aufzeichnen

Synology verfügt Out-of-the-Box über einen SNMP-Server, welchen man mittels weniger Klicks aktivieren kann. Diesen SNMP-Daemon verwende ich im Heimnetzwerk mit dem Tool cacti, um Vitaldaten meines NAS aufzuzeichnen.

Damit man auch die Informationen über die Festplattenbelegung des NAS aufzeichnen kann, muss man in cacti in der Device-Ansicht des vorgängig eingerichteten Synology-NAS im Abschnitt Associated Data Queries das Data Query mit dem Namen „SNMP – Get Mounted Partitions“ hinzufügen, welches den SNMP-Baum hrStorageTable (.1.3.6.1.2.1.25.2.3) abfrägt.

Im Gegensatz zum Data Query „ucd/net – Get Monitored Partitions“ (SNMP-Baum dskTable (.1.3.6.1.4.1.2021.9)) findet die SNMP-Version entsprechende Werte.

Dies, weil Synology die HOST-RESOURCES-MIB verwendet, um Informationen über Partitionen und Festplattenbelegung zu teilen:

cacti-associated-data-queries-snmp-get-mounted-partitions
image-6895

Via: Monitoring disk stats with Cacti

Hintergrundinfos

Tags: , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 15. Mai 2016

Synologys Diskstation, nmbd und 100 Prozent CPU-Auslastung

Gestern musste ich feststellen, dass meine Synology Diskstation seit ein paar Wochen eine extrem hohe CPU-Auslastung und Linux Load Average aufwies. Cacti ist für eine Analyse sehr nützlich, da die Werte historisiert und in Graphen ausgegeben werden können:

Synology Diskstation CPU Usage Cacti
image-6654

Synology Diskstation Load Average Cacti
image-6655

Wieso sich diese Änderung urplötzlich ergeben hat, konnte ich bis jetzt nicht eruieren.

Über SSH und mit Hilfe von top stellte ich rasch fest, dass der Prozess /usr/bin/nmbd -D permanent alle verfügbare CPU-Kapazität auffrass. Was zum Teufel?

Ein Blick in /var/log/samba/log.nmbd, welches mehrere MBs umfasst, zeigte die Ursache des Übels: Die Log-Datei war voller Einträge in der folgenden Form, und mehrmals pro Sekunde kamen neue identische Einträge dazu:

...
../source3/nmbd/nmbd_incomingrequests.c:213: [2016/05/15 01:00:37.670697, all 0, pid=18689] process_name_registration_request
  process_name_registration_request: unicast name registration request received for name XEROX PHASER 32<20> from IP 10.1.2.3 on subnet UNICAST_SUBNET. Error - should be sent to WINS server
...

Die NetBIOS-Komponente in unserem Xerox Phaser 3250DN muss von wahrlichen Profis programmiert worden sein …

Sobald ich den Drucker ausschaltete, beruhigte sich die Diskstation sofort und die CPU-Auslastung wie auch die Load Average sanken auf den langfristig tiefen Wert.

Das Problem löste ich mit folgenden Kniffen:

Samba installieren und als WINS-Server konfigurieren

Auf einem Intel NUC, der mir hier als Linux-Server dient (Beispiel-IP: 10.1.2.4), installierte ich Samba und konfigurierte es folgendermassen, damit Samba sich neu als WINS-Server im Netzwerk anpreist:

/etc/smb.conf

...
[global]
   netbios name = SERVERNAME
   server string = Samba %v on (%L)
   workgroup = WORKGROUP
   wins support = yes
   dns proxy = no
   local master = yes
   os level = 34
   preferred master = yes
...

Quelle: Chapter 7. Name Resolution and Browsing sowie Using Samba: 4.4 Server Configuration

WINS-Server mit DHCP bekanntgeben

/etc/dhcp/dhcpd.conf

...
option netbios-name-servers 10.1.2.4;
...

Anschliessend musste der DHCP-Server noch frisch gestartet werden:

# systemctl stop isc-dhcp-server
# systemctl start isc-dhcp-server

Die Desktop-Clients erhielten den neuen WINS-Server mittels eines „Renew DHCP Lease“ frisch über; beim Drucker führte ich einen Kaltstart durch, um auf Nummer sicher zu gehen.

WINS-Server auf Synology DiskStation einstellen

  1. Synology DiskStation Admin-Oberfläche im Browser öffnen
  2. Control Panel
  3. File Services
  4. Advanced Settings
  5. WINS Server: 10.1.2.4

Tags: , , , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 26. Januar 2014

Das Mac OS X Home-Verzeichnis mit rsync über SSH auf eine Synology Diskstation sichern

Nachdem ich den schlüsselbasierten Login hingekriegt hatte, stand ich bereits wieder vor dem nächsten Problem: Mein rsync-Script zur Sicherung meines Mac OS X Home-Verzeichnis in einen Unterordner auf meinem Home-Verzeichnis auf dem Synology NAS brach mit folgender Fehlermeldung ab:

...
rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
ERROR: module is read only
...

Wieso denn das? Mit dem Synology-Konto meines Raspberry Pi klappt die ganze Chose problemlos!

Mit den Hinweisen unter Rsync over ssh: “ERROR: module is read only” suddenly appeared wurde ich auf den richtigen Pfad gelenkt: Ich musste meinem Benutzer mittels des Synology Web-GUIs Schreibrechte auf den Homes-Ordner geben:

  1. Control Panel
  2. Users
  3. %BENUTZER% auswählen
  4. Edit
  5. Privileges Setup
  6. homes
  7. [x] Read/Write
  8. OK

Seither klappt die rsync-Synchronisierung. Ob ich aber damit eine Sicherheitslücke geöffnet habe?

Tags: , , , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 26. Januar 2014

Sich schlüsselbasiert per SSH auf einer Synology Diskstation einloggen

Im Grunde ein einfaches Unterfangen, welches im Internet auf unzähligen Seiten dokumentiert ist. Kurzfassung: Auf dem eigenen Arbeitsrechner einen privaten und öffentlichen Schlüssel erstellen, auf der Synology Diskstation den SSH-Zugang aktivieren, eine Login-Shell einrichten und dort dann unter ~/.ssh/authorized_key den öffentlichen Schlüssel ablegen.

Was ich vor einigen Monaten mit meinem Raspberry Pi erfolgreich und innert kurzer Zeit hingebracht habe, wollte mich gestern während eineinhalb Stunden auf Trab halten. Neu wollte ich auch meinen persönlichen Account mit einem schlüsselbasierten SSH-Zugang ausstatten. Doch während der schlüsselbasierte Login mit dem Raspberry Pi-Konto problemlos funktionierte, wollte es mit dem privaten Konto einfach nicht klappen, obwohl die Konfiguration identisch war.

Lösung

Die nach unzähligen Pröbelversuchen eruierte Ursache: Das Home-Directory meines Benutzers war nicht mit den korrekten Berechtigungen versehen:

VAULT> ls -l /volume1/homes/     
...
drwxrwxrwx    6 mario    users         4096 Jan 26 10:42 mario
...

Nachdem ich folgenden Befehl ausgeführt hatte, klappte es plötzlich:

$ chmod 755 /volume1/homes/mario

Hierbei handelt es sich um eine im Grunde gut gemeinte Sicherheitsvorkehrung auf Unix-Systemen. Denn wenn andere Benutzer den Public Key eines anderen Benutzers ersetzen könnten, könnten sie sich anschliessen unter dessen Kontext einloggen.

Siehe auch der Beitrag SSH and home directory permissions auf Stackexchange.

Hintergründe

Ein grosses Problem dieser Synology-Box ist es, dass auf ihr ein abgespecktes Linux läuft, welches einerseits die gängigsten Debug-Optionen nicht zur Verfügung stellt (bspw. ein sauberes Logging der Aktivitäten von sshd), andererseits über eine schier unüberschaubare verschachtelte Konfiguration verfügt.

sshd_config

Insgesamt habe ich auf der Kiste drei sshd_config Konfigurationsdateien gefunden:

  • /etc/ssh/sshd_config
  • /etc.defaults/ssh/sshd_config
  • /usr/syno/etc.defaults/ssh/sshd_config

Welche ist nun die richtige? Und welche bleibt auch bei einem Update oder Neustart mit meinen Konfigurationsanpassungen bestehen? Ich weiss es bis heute nicht.

sshd neu starten

Auch hierfür gibt es mehrere Möglichkeiten. Im Netz habe ich zwei Befehle gefunden:

  • # killall sshd
  • # /usr/syno/etc.defaults/rc.d/S95sshd.sh restart

Wenn ich diese Befehle ausgeführt habe, bin ich natürlich schnurstracks aus der SSH-Session geflogen — logisch. Doch bei der Verwendung von killall hat man sich soeben gerade vollständig vom NAS ausgesperrt.

Glücklicherweise gibt es über das Web-GUI des NAS die Möglichkeit, SSH wieder zu starten:

  1. Control Panel
  2. Terminal
  3. [x] Enable SSH service

Was ich zudem auch realisiert habe: Wenn ich SSH über das GUI neu starte, wird /etc/ssh/sshd_config neu eingelesen. Wenn ich es mit den Kommandozeilenbefehlen neu starte, wird die Konfigurationsdatei irgendwie nicht beachtet …

Verschachtelte Start-Scripts

Wie genau wird nun aber SSH gestartet? Die Synology-Ingenieure haben sich wohl gesagt: „Wieso einfach, wenn es auch kompliziert geht?“ und sich einige verschachtelte Scripts geleistet:

/usr/syno/etc.defaults/rc.d/S95sshd.sh liest einerseits /etc.defaults/rc.subr als auch /usr/syno/etc.defaults/rc.ssh.subr ein. Gestartet wird der SSH-Daemon dann aber, indem das Script /usr/syno/etc.defaults/rc.ssh aufgerufen wird. Dieses Script sourced das bereits erwähnte /usr/syno/etc.defaults/rc.ssh.subr erneut.

Konfigurationsdatei forcieren

Als mir das Debugging zu blöd wurde, habe ich mich entschieden, die Konfigurationsdatei ein für allemal in das eigentliche Startscript /usr/syno/etc.defaults/rc.ssh hartzukodieren:

...
$SSHD -f /etc/ssh/sshd_config
...

Debugging in syslog? Fehlanzeige

Wer denkt, dass einem folgende Zeilen beim Debugging in /etc/ssh/sshd_config weiterhelfen, liegt falsch:

...
SyslogFacility AUTH
LogLevel DEBUG
...

In /var/log/messages, der einzigen von zwei Log-Dateien in diesem Verzeichnis, welche bisher am heutigen Tag aktualisiert wurden, finden sich keine weiterführenden Infos, wieso sich der Benutzer mario nicht Schlüsseln einloggen darf.

Tags: , , , , , , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 18. September 2013

Den Raspberry Pi mit rsync über SSH auf die Synology DiskStation sichern

Als Gedankenstütze nachfolgend einige Lösungen für Probleme, die sich mir in den Weg stellten:

Mac OS X

$ ssh-keygen -t rsa -b 2048 -f id_rsa_dashboard_vault

Die Aufforderung, ein Passwort für den Private Key zu generieren, bestätigt man mit ENTER — der Private Key wird so nicht zusätzlich mit einem Passwort geschützt, weil dies den automatisierten Login von Raspberry Pi auf die DiskStation verhindern würde.

Der Befehl erstellt zwei Dateien:

  • id_rsa_dashboard_vault
  • id_rsa_dashboard_vault.pub

Synology DiskStation

Als erstes richtet man sich über die Web-Oberfläche einen normalen Benutzer dashboard ein, in dessen Home-Verzeichnis die Backup-Daten geschrieben werden.

Hierzu müssen dem Benutzer Schreibrechte auf /homes gegeben werden. Ansonsten sieht man sich beim Starten des Backup-Scripts (s. unten) mit folgender Fehlermeldung gegenüber:

ERROR: module is read only

Quelle: Rsync over ssh: “ERROR: module is read only” suddenly appeared

Wichtig ist weiter, dass der SSH-Zugang über die Web-Oberfläche aktiviert wurde.

/etc/passwd

Dem neu erstellten Benutzer müssen wir nun eine gültige Login-Shell zuweisen:

...
dashboard:x:1029:100::/var/services/homes/dashboard:/bin/ash

Erfasst man hier ein nicht existierendes Login-Shell, kriegt man beim Debugging des publickey SSH-Logins folgende komische Infos ans Gesicht geworfen:

...
Authentication succeeded
...
Permission denied
...

Um sicher zu gehen, dass die Login-Shell richtig konfiguriert ist, macht man als auf der DiskStation eingeloggter User root folgendes:

# su dashboard

Wechselt man in ein neues Shell, ist /etc/passwd korrekt konfiguriert.

/var/services/homes/dashboard/.ssh/authorized_keys

In dieser Datei legen wir den Public Key ab (id_rsa_dashboard_vault.pub).

/etc/ssh/sshd_config

Wahrscheinlich müsste man hier gar nichts anpassen, beim Debugging habe ich es dann doch getan (wohl unnötigerweise):

$ cat sshd_config | grep -v "^#" | sort
AllowTcpForwarding no
AuthorizedKeysFile	.ssh/authorized_keys
ChallengeResponseAuthentication no
ChrootDirectory none
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_rsa_key
LogLevel INFO
Match User root
    AllowTcpForwarding yes
Protocol 2
PubkeyAuthentication yes
Subsystem       sftp    internal-sftp -f DAEMON -u 000
SyslogFacility AUTH
UseDNS no
UsePAM yes

Raspberry Pi

/root/.ssh/config

Host vault
   Hostname 10.0.44.44
   User dashboard
   IdentityFile ~/.ssh/id_rsa_dashboard_vault

In der Datei ~/.ssh/id_rsa_dashboard_vault legt man den Private Key ab.

Login überprüfen

Dies sollte nun ohne Eingabe eines Passwortes möglich sein:

$ ssh vault

Bei einer Fehlermeldung helfen die Optionen -v, -vv und -vvv weiter:

$ ssh -v vault

/usr/local/bin/backup.sh

Folgendes Script sichert / (root) des Raspberry Pis auf den Host vault in den Pfad /volume1/homes/dashboard/backups/. Auf dem Raspberry Pi nicht mehr vorhandene Dateien werden auf der DiskStation gelöscht.

#!/bin/sh

RSYNC=`which rsync`

if [ ! -e "$RSYNC" ]
then
	echo "rsync binary not found: '$RSYNC'"
	exit 1
fi

TODAY=`date +"%F_%T"`
SNAPSHOTFILE="/var/log/rsync/$TODAY.snapshot.txt"
#touch "$SNAPSHOTFILE"
echo "$TODAY" > "$SNAPSHOTFILE"

if [ ! -f "$SNAPSHOTFILE" ]
then
	echo "Could not create snapshotfile '$SNAPSHOTFILE'"
else
	echo "Snapshotfile created at:"
	ls -l "$SNAPSHOTFILE"
fi

LOGFILE="/var/log/rsync/$TODAY.log.txt"
EXCLUDEFILE="/usr/local/bin/backup-exclude.txt"

SOURCE="/"
DEST="vault:/volume1/homes/dashboard/backups/"

echo "Running rsync ..."
$RSYNC -avz --log-file="$LOGFILE" --exclude-from="$EXCLUDEFILE" --delete -e ssh "$SOURCE" "$DEST" 
echo "Backup complete."

exit 0

/usr/local/bin/backup-exclude.txt

proc/*
sys/*
dev/*
tmp/*
run/*
mnt/*

Quelle: Can a Raspberry Pi be used to create a backup of itself?

/etc/crontab

...
4 0 * * *	root	/usr/local/bin/backup.sh

Hiermit wird das Backup-Script täglich um 4 Uhr morgens ausgeführt.

Links

Tags: , , , ,
Labels: Linux

1 Kommentar | neuen Kommentar verfassen