rsnync per ssh als unpriveligierter user

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
letzter3
Beiträge: 477
Registriert: 16.07.2011 22:07:31

rsnync per ssh als unpriveligierter user

Beitrag von letzter3 » 22.01.2016 23:05:37

Hallo zusammen,

ich habe einen Debian-PC [1], auf den per samba-Freigabe von WIN-PCs aus Dokumente gescannt werden.
Dazu existiert ein für alle les- und schreibbares Verzeichnis /home/public/.
Dieses Verzeichnis wird über eine VPN-Verbindung auf den WIN-PCs eingebunden.

Es existiert ein weiterer Debian PC [2], der per ssh Zugriff auf [1] hat.
Momentan erfolgt der Zugriff per user + Passwort. root ist nicht zulässig.

Code: Alles auswählen

[letzter@wuerfel ~]$ ssh XXXX.myfritz.net 
letzter@XXXX.myfritz.net's password: 
Linux ptLWL01 3.2.0-4-amd64 #1 SMP Debian 3.2.73-2+deb7u1 x86_64
Meine Frage: Wie kann ich einen cron einrichten, der regelmäßig das public-Verzeichnis von [1] auf [2] sichert?
Der cron- und der rsync-Teil ist nicht das Problem, mir geht es um den ssh-Teil.
Ich würde gerne einen backup-user anlegen, weiß aber nicht, welche Rechte auf welche Verzeichnisse und Programme dieser braucht
"Normalerweise" würde ich dem backupuser kein home geben, scheint aber für den ssh-key ja notwendig.

Über Anregungen freue ich mich.

letzter3
Beiträge: 477
Registriert: 16.07.2011 22:07:31

Re: rsnync per ssh als unpriveligierter user

Beitrag von letzter3 » 24.01.2016 01:50:13

Keine Hinweise?

NAB
Beiträge: 5501
Registriert: 06.03.2011 16:02:23
Lizenz eigener Beiträge: MIT Lizenz

Re: rsnync per ssh als unpriveligierter user

Beitrag von NAB » 24.01.2016 02:42:17

Ich verstehe nicht, wo das Problem liegt. Du willst dem backup-user kein home geben ... warum auch immer. Gib's ihm halt und alles wird gut.

Angelegt werden muss er auf [1] und er braucht logischer Weise Zugriff auf die Dateien, die er backupen soll. Dafür könntest du auch einen anderen User recyceln, aber du willst ja unbedingt einen backup-user haben. Gut, kann nicht schaden.

Überhaupt könntest du eigentlich auch samba dafür nehmen, wo's schon da ist ... du willst aber ssh.

Wie du rsync mit ssh startest, verrät dir die man-page sowie zig Beispiele im Internet, zum Beispiel das Ubuntu-Wiki:
https://wiki.ubuntuusers.de/rsync/
(da gibt's auch einen Hinweis zum rsa-key)

Wenn das klappt, schreibst du die nötigen Befehle in ein Script - vermutlich wird's ein Einzeiler. Bitte mit absoluten Pfaden. Vielleicht willst du noch irgendwo eine Log-Datei hinschreiben lassen.

Und dieses Script lässt du dann von cron ausführen.
Never change a broken system. It could be worse afterwards.

"No computer system can be absolutely secure." Intel Document Number: 336983-001

uname
Beiträge: 12490
Registriert: 03.06.2008 09:33:02

Re: rsnync per ssh als unpriveligierter user

Beitrag von uname » 24.01.2016 16:11:04

Du kannst auch über "authorized_keys" die Befehle einschränken, so dass der Zielbenutzer trotzdem z.B. root sein kann. Mal so als Beispiel:

https://www.thomas-krenn.com/de/wiki/Au ... %C3%A4nken

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: rsnync per ssh als unpriveligierter user

Beitrag von heisenberg » 24.01.2016 16:29:16

uname hat geschrieben: Du kannst auch über "authorized_keys" die Befehle einschränken, so dass der Zielbenutzer trotzdem z.B. root sein kann. Mal so als Beispiel:

https://www.thomas-krenn.com/de/wiki/Au ... %C3%A4nken
Dort ist folgendes Script zum eingeschränkten Root-Zugriff aufgeführt:

Code: Alles auswählen

#!/bin/bash
#Use the original command as positional parameter
set "$SSH_ORIGINAL_COMMAND"
if ! [[ "$SSH_ORIGINAL_COMMAND" =~ ^[a-zA-Z0-9\.\/\|\ \+\-]*$ ]] ;
then
        echo "Error: Invalid character found in command."
        exit 1
fi
case "$1" in
        'rsync')
        ;;
        'mysql')
        ;;
        'top')
        ;;
        *)
                echo "Error: Invalid command over ssh executed."
                exit 1
        ;;
esac
eval $SSH_ORIGINAL_COMMAND
Es dürfte bekannt, sein, dass ich alles andere als ein Sicherheitsfanatiker bin. :) Aber so etwas kann man sicherheitstechnisch sofort in die Tonne kloppen. Was mir das sofort einfällt....

Code: Alles auswählen

ssh restricted_root@remote rsync bla blub '$(echo "mein_key" >>$HOME/.ssh/authorized_keys)'
...oder

Code: Alles auswählen

ssh restricted_root@remote rsync bla blub \; echo "mein_key" \>\>$HOME/.ssh/authorized_keys
und schon habe ich mir daraus einen unbeschränkten Root-Zugriff gebastelt.

tuxedo
Beiträge: 62
Registriert: 26.11.2014 17:03:45
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: CH

Re: rsnync per ssh als unpriveligierter user

Beitrag von tuxedo » 24.01.2016 16:37:14

Hallo

rrsync kommt mir da noch in den Sinn
https://www.guyrutenberg.com/2014/01/14 ... -to-rsync/

Grüsse

DeletedUserReAsG

Re: rsnync per ssh als unpriveligierter user

Beitrag von DeletedUserReAsG » 24.01.2016 17:20:46

Aber so etwas kann man sicherheitstechnisch sofort in die Tonne kloppen.
Zustimmung. Für solche Szenarien (einzelne Sachen mit erweiterten Rechten ausführen) wurde sudo geschaffen – da muss man gar nicht wild rumscripten.

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: rsnync per ssh als unpriveligierter user

Beitrag von heisenberg » 24.01.2016 19:12:32

...wobei:

Code: Alles auswählen

if ! [[ "$SSH_ORIGINAL_COMMAND" =~ ^[a-zA-Z0-9\.\/\|\ \+\-]*$ ]] ;
Diese Zeile schliesst dann doch Subshells und Verkettung von Kommandos erst mal aus. Würd' mich allerdings nicht wundern, wenn da nicht noch irgendwelche Schlupflöcher möglich sind.

Wenn da nur rsync erlaubt ist würde mir noch der Schalter -e von rsync einfallen, der eigentlich die Verbindungsaufnahme zu einem remote-Rechner übernehmen soll.

Code: Alles auswählen

rsync mein_boeses_script.sh restricted_root@remote:.
ssh restricted_root@remote rsync -e /home/remote_root/mein_boeses_script.sh bla blub
So etwas kann natürlich auch bei sudo ausgenutzt werden, wenn alle Argumente beliebig veränderbar sind.

Benutzeravatar
seep
Beiträge: 544
Registriert: 31.10.2004 14:21:08
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: HSK

Re: rsnync per ssh als unpriveligierter user

Beitrag von seep » 25.01.2016 19:49:05

letzter3 hat geschrieben:Ich würde gerne einen backup-user anlegen, weiß aber nicht, welche Rechte auf welche Verzeichnisse und Programme dieser braucht
Der backup-User benötigt (neben seinem Home und dem ssh-key) halt auf [1] Leserechte für alle Dateien und Verzeichnisse, die er sichern soll. Ist das gewährleistet, braucht rsync nicht von root gestartet werden.

Oder habe ich die Frage nicht verstanden?

uname
Beiträge: 12490
Registriert: 03.06.2008 09:33:02

Re: rsnync per ssh als unpriveligierter user

Beitrag von uname » 26.01.2016 16:37:38

Für meinen Link möchte ich mich entschuldigen. Hätte vielleicht den Inhalt der Webseite lesen sollen. Natürlich darf der Anwender keinesfalls in der Lage sein entweder die "authorized_keys" oder das Programm über command="programm" zu verändern. Dann kann man es nämlich wirklich in die Tonne hauen. Aber wenn das Backup immer gleich abläuft könnte man entweder den Befehl fest kodieren und als root ein Script irgendwo ablegen. Wenn ich command="..." richtig verstanden habe wird immer genau dieser Befehl ausgeführt und niemals ein anderer, da der Schlüssel fest mit dem Befehl verknüpft ist. Evtl. Übergabeparameter werden dann hoffentlich ignoriert.

Benno007
Beiträge: 111
Registriert: 26.01.2016 19:25:05

Re: rsnync per ssh als unpriveligierter user

Beitrag von Benno007 » 26.01.2016 19:48:57

Hallo,

ich hatte mich auch für die sudo-Variante entschieden und diese schon vor eurer Diskussion in den bereits von euch geposteten UU Wiki-Link eingepflegt, in diesem Abschnitt: https://wiki.ubuntuusers.de/rsync#Gesam ... ot-Rechten

Grüße, Benno

Antworten