Sunday, August 16, 2020

NetworkManager als WLAN-Sniffer: Liste der benachbarten Access Points erhalten

Um eine Liste der benachbarten Funknetzwerke (Access Points), mit den Werten für WLAN-Name (SSID), Kanal (Channel), Signalstärke, Verschlüsselungsart usw. zu erhalten, kann man folgendes Kommando nutzen:

nmcli device wifi list --rescan yes

Anders als z.B. iwlist(8) muss nmcli(1) nicht explizit als UID 0/root ausgeführt werden, um einen Rescan durchzuführen.

Für Skripte kennt nmcli(1) den Schalter -g, --get-values. Dieser soll verwendet werden, um die Werte bestimmter Felder zu erhalten. Es ist im Grunde eine Kombination aus --mode tabular, --terse und --fields und eine bequeme Möglichkeit, Werte für bestimmte Felder abzurufen.

nmcli --get-values IN-USE,BSSID,SSID,CHAN,SIGNAL,SECURITY device wifi list --rescan yes

PS: Dies ist auch in nmcli-examples(7) beschrieben.

Thursday, June 4, 2020

Cronjob deaktivieren

Mitunter installieren Debianpakete Cronjobs in /etc/cron.*, um wiederkehrende Aufgaben auszuführen. Damit solch ein Cronjob ausgeführt wird, muss das Executable-Bit gesetzt sein. Entfernt man dieses, wird der Cronjob nicht mehr ausgeführt.

Mit dpkg-statoverride(1) kann man sich über Eigentümerschaft und Modus von Dateien hinwegsetzen und damit das Executable-Bit eines Cronjob entfernen:

dpkg-statoverride --add root root 644 /etc/cron.daily/tripwire
chmod 644 /etc/cron.daily/tripwire

Der Vorteil von dpkg-statoverride(1) ist, dass die Hinwegsetzungen auch Paket-Aktualisierungen und -Neuinstallationen überdauern. Was sonst, bei durch die Paketverwaltung verwalteten Dateien, nicht der Fall ist.

Mit dpkg-statoverride --remove <path/to/file> kann man auf diese Weise selbst gesetzte Eigentümerschaft und Modus wieder entfernen und dpkg-statoverride --list listet alle Hinwegsetzungen auf.

PS: Ich habe dies für /etc/cron.daily/tripwire getan, da ich zwar Tripwire installiert habe, damit aber nicht das lokale System überwachen will. Sondern Tripwire nur nutze, um lokal ein anderes entferntes System zu überwachen (diesen Server/Webspace hier) und mich die lokalen Tripwire Reports stören. Wofür der Cronjob da ist.
Zur Überwachung des entfernten Systems kopiere ich mittels SSH und Rsync die Dateien und lasse dann Tripwire drüber laufen, wie im Linux Security Cookbook von O’Reilly gezeigt. Was auch gleichzeitig noch ein Backup sein kann…
Alternativ könnte man wohl auch die lokale Tripwire Policy entsprechend erweitern. Aber das will ich nicht, da mein Workflow etwas anders ist.

Sunday, December 8, 2019

9. Dezember, Weltantikorruptionstag

Staatsstreich der Konzerne […] Das sind nicht alles zufällige Einzelteile aus verschiedenen Richtungen, sie passen sehr gut zusammen und ergeben ein sehr altmodisches Bild. Es geht darum, uns in eine prä-demokratische Epoche zurück zu versetzen. Es geht in Wirklichkeit um einen Kampf, dessen Ausgang die Verlierer nie akzeptiert haben. Es war eine Niederlage im Kampf, um ihre Rechte als Besitzer, als mächtigste Personen.

Stück für Stück holen sie sich das zurück, deshalb befinden wir uns in einem Staatsstreich in Zeitlupe.

Die Welt ist ein Spielplatz der Konzerne, unaufhaltsam bestimmt von den unumstößlichen Regeln der Wirtschaft. Die Welt ist ein Geschäft, Mr. Beale. Das ist sie, seit der Mensch aus dem Urschleim gekrochen kam. — Network (1976)

Wir haben die Fähigkeit zu denken verloren. Bilder sind allgegenwärtig. Wir werden mit Bildern bombardiert, rund um die Uhr. Und diese Bilder werden mit Wissen verwechselt. Wir verwechseln die Gefühle, die uns eingeflößt werden mit Wissen. Wir verstehen nicht mehr wie Machtsysteme funktionieren. Dass kann man nur, wenn man auf die gedruckte Kultur zurückgreift. Indem man John Ralston Saul und Noam Chomsky liest.

In einer post-literarischen Gesellschaft sind die Bücher zwar noch da, aber niemand nimmt sie mehr in die Hand…

Quelle: Chris Hedges (Journalist und Autor)

Friday, August 9, 2019

NAS mit Samba: Verzeichnis im Netzwerk freigeben

Ein Verzeichnis mit dem Windows AD und SMB/CIFS Dateiserver für UNIX über das Netzwerk freigeben und Benutzern sowie Gästen Lese- und Schreibzugriff gewähren.

Dieses Setup für ein NAS mit Samba erlaubt neben Benutzern, auch Gästen Lese- und Schreibzugriff. So kann jeder auf das Netzlaufwerk zugreifen! Durch das Stiky-Bit ist jedoch sichergestellt, das niemand die Dateien eines anderen löschen oder überschreiben kann.

Verzeichnis anlegen und Samba konfigurieren

Das Verzeichnis für das NAS legt man am besten unterhalb von /srv an. Dieses Verzeichnis enthält betriebsspezifische Daten, die vom System bereitgestellt werden und folgt dem FHS.

# neues Verzeichnis erstellen
mkdir -p /srv/nas
# Benutzer, Gruppe, Dateirechte und StickyBit setzen
chown root:staff /srv/nas
chmod a+rwXt /srv/nas

Im Verzeichnis /srv/nas können nun alle Benutzer unter ihrer UID Dateien erstellen, ändern und löschen. Die Dateien anderer Benutzer können nur geöffnet, nicht aber geändert oder gelöscht werden. Will man dies erlauben, muss man mit Benutzergruppen (GID) arbeiten.

Um das Verzeichnis freizugeben, muss die Konfiguration smb.conf(5) um folgende Sektion erweitert werden:

cat <<! >>/etc/samba/smb.conf
[NAS]
	comment=NAS
	path=/srv/nas
	public = yes
	writeable = yes
	guest ok = yes
	guest account = nobody
	create mask = 0665
	directory mask = 0775
!

Mit testparm(1) kann die Konfigurationsdatei auf Syntaktische Korrektheit überprüft werden.

testparm

Benutzern den Zugriff erlauben

Damit Benutzer unter ihrer ID Dateien im NAS und auch im Benutzerverzeichnis ablegen können, muss für jeden ein Passwort in der Benutzerdatenbank von Samba einrichten sein. Ohne Passwort können Benutzer weder lesend noch schreibend auf ihr Benutzerverzeichnis zugreifen. Es besteht allerdings auch die Möglichkeit, Benutzer ohne Passwort zu aktiveren. Linux und Samba verwenden unterschiedliche Passwörter.

Zum Erstellen des Passworts in der Samba-Benutzerdatenbank smbpasswd(5) kann entweder pdbedit(8) oder smbpasswd(8) verwendet werden.

Hinweis: Will man $HOME nicht freigeben, empfiehlt es sich die Sektion [homes] in der smb.conf(5) auszukommentieren.

Passwort anlegen

Das Passwort für einen Benutzer wird mit smbpasswd -a <username> angelegt.

Wird smbpasswd(8) ohne Parameter aufgerufen, kann das Passwort des aktuellen Benutzers geändert werden.

Das anlegen des Passwords kann für neue Benutzerkonten auch während der Einrichtung passieren. Dazu legt man die Datei /usr/local/sbin/adduser.local an. Wenn die Datei existiert, wird sie nach der Einrichtung des Benutzerkontos ausgeführt, um lokale Einstellungen vorzunehmen.

cat <<! >/usr/local/sbin/adduser.local
#!/bin/sh
# An adduser.local werden die folgenden Argumente übergeben:
# Benutzername, UID, GID und Home-Verzeichnis.

user="$1"
uid="$2"
gid="$3"
home="$4"

# add new users to the local smbpasswd(5) file
smbpasswd -a "$user"

# Make sure that the script will "exit 0"
true
!
chmod -x /usr/local/sbin/adduser.local

Passwort entfernen

Um ein Benutzerkonto beim entfernen auch aus der Samba-Benutzerdatenbank auszutragen, kann die /usr/local/sbin/deluser.local analog zu adduser.local angelegt werden.

cat <<! >/usr/local/sbin/deluser.local 
#!/bin/sh
# An deluser.local werden die folgenden Argumente übergeben:
# Benutzername, UID, GID und Home-Verzeichnis.

user="$1"
uid="$2"
gid="$3"
home="$4"

# delete user from the local smbpasswd(5) file
smbpasswd -x "$user"

# Make sure that the script will "exit 0"
true
!
chmod -x /usr/local/sbin/deluser.local

Zur Verwaltung der Samba-Benutzerdatenbank bietet sich pdbedit(8) an. Damit kann u.a. abgefragt werden, für welche Benutzer in der Samba-Benutzerdatenbank ein Passwort vergeben wurde.

pdbedit -L

Netzlaufwerke einbinden

Unter Linux (GNOME), Microsoft Windows usw. sollte das NAS als Netzwerkfreigabe gefunden werden.

Für einen Datentransfer über Samba, wird eine Pfadangabe bzw. URI der folgenden Form benutzt:

smb://{hostname|ip}/NAS

Mailingliste abonnieren

Um Ankündigungen, wie z.B. Benachrichtigungen über neue Versionen und Bugs zu erfahren, sollte man zusätzlich die Samba Mailingliste abonnieren. Die Adresse ist unter https://lists.samba.org zu finden und es sollte mindestens samba-announce abonniert werden.

NAS mit SFTP

Ist SSH bzw. das Paket openssh-sftp-server installiert, kann auch via SSH auf das Benutzerverzeichnis zugegriffen werden. Und viele Dateimanager unterstützen das SSH-Protokoll SFTP.

Für einen Datentransfer über SSH an einem entfernten Rechner, benutzt man eine URI der Form:

sftp://[username@]{hostname|IP}[:port]/path/to/share

Alternativ können statt des Authority-Teil, auch die Aliasnamen aus ssh_config(5) verwendet werden.

Sunday, July 23, 2017

Debian 9 (Stretch): Predictable Network Interface Names – Umstellung auf das neue Verfahren zur Namensvergabe von Netzwerkschnittstellen

Spätestens ab Debian 10 (Buster) wird das alte Verfahren zur Namensvergabe von Netzwerkschnittstellen nicht mehr unterstützt, und das System muss auf das neue Verfahren umgestellt sein (Predictable Network Interface Names).

Bei einer Neuinstallation von Debian 9 (Stretch) passiert diese Umstellung automatisch. Bei einem Upgrade von Debian 8 (Jessie) muss hingegen manuell umgestellt werden.

Auf das neue Verfahren zur Namensvergabe von Netzwerkschnittstellen umstellen

Um auf das Verfahren Predictable Network Interface Names umzustellen, muss die Datei /etc/udev/rules.d/70-persistent-net.rules gelöscht werden:

mv /etc/udev/rules.d/70-persistent-net.rules{,.old}

Danach muss das System neu gestartet werden.

Dieser Schritt stellt eine entsprechend weitreichende Änderung am System da. Eventuelle Konfigurationsdateien müssen angepasst und getestet werden. Wer statt des NetworkManager(8) die Datei interfaces(5) und ifupdown nutzt, muss zumindest diese anpassen.

Siehe auch: https://www.debian.o … #new-interface-names, https://github.com/s … -builtin-net_id.c#L3 (Beschreibt nach welchen Regeln, die neuen voraussagbaren/vorhersagbaren Namen aufgebaut sind), https://www.freedesk … tworkInterfaceNames/, file:///usr/share/do … dev/README.Debian.gz

Benutzerdefinierte Namen für Netzwerkschnittstellen

In manchen Fällen ist es praktisch, eigene Namen für Netzwerkschnittstellen zu definieren.

Dies kann mittels zwei verschiedener Methoden erreicht werden. Einmal mittels Network Device Configuration: systemd.link(5) und einmal mittels Dynamic Device Management: udev(7), welche wesentlich mehr Möglichkeiten bietet.

In folgenden Beispielen, wird der Netzwerkschnittstelle mit der MAC-Adresse 00:a0:de:63:7a:e6, der feste Namen dmz zugewiesen:

  • Dynamic Device Management – udev(7):
    Beispielsweise kann /etc/udev/rules.d/76-netnames.rules erstellt und dort Netzwerkgeräte anhand beliebiger Attribute und Eigenschaften identifiziert und benannt werden.
    Hier ein Beispiel, um ein Gerät über die MAC-Adresse zu identifizieren und zu benennen:

    cat /etc/udev/rules.d/76-netnames.rules
    # identify device by MAC address
    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:a0:de:63:7a:e6", NAME="dmz"
    

    Gegenüber systemd.link(5), bietet diese Methode auch die Möglichkeit Geräte anhand anderer Übereinstimmungsschlüssel, wie der Vendor/Model-ID oder des Gerätepfads zu Identifizieren. Siehe dazu auch die Handbuchseite udev(7), für die Dokumentation, wie man udev-Regeln schreibt.

  • Network Device Configuration – systemd.link(5):
    Alternativ geht auch eine Konfiguration ohne udev(7), mittels systemd.link(5) und des Name-Schlüssels:

    cat /etc/systemd/network/10-dmz.link
    [Match]
    MACAddress=00:a0:de:63:7a:e6
    [Link]
    Name=dmz
    

Damit diese Änderungen übernommen werden, ist ggf. eine Aktualisierung der initrd-Datei und ein Neustart des Systems erforderlich:

update-initramfs -u && reboot