Ein Linux-System, das direkt über das Internet erreichbar ist, sollte entsprechend abgesichert werden. Wie die Absicherung per SSH-Schlüssel und rbash funktioniert wurde hier bereits erläutert.

    Diese Konfiguration macht es jedoch schwierig, ein Backup von einem so gesicherten Remote-System zu ziehen. Um dies dennoch zu ermöglichen, gibt es eine entsprechede rsync-Lösung, die ich hier vorstellen möchte.
    Das Zielszenario ist, dass ein dedizierter Benutzer von System L(ocal) per rsync von Server R(emote) nur ein ein dediziertes Verzeichnis (/backups) sichern kann.

    System R

    Neuen Benutzer anlegen

    Zuest wird ein neue Benutzer dafür angelegt.

    adduser backupuser

    rrsync installieren

    rrsync ist ein Script, das die Entwickler des rsync Paketes für genau das hier beschriebene Szenario mitliefern.
    rrsync wird nicht standardmäßig installiert, daher müssen wir dies noch tun.

    apt-get install rsync
    mkdir /home/backupuser/bin
    cp /usr/share/doc/rsync/scripts/rrsync.gz /home/backupuser/bin
    chmod +x /home/backupuser/bin/rrsync

    SSH Schlüssel hinterlegen

    Nun einen SSH Schlüssel wie hier beschrieben OHNE Kennwort erstellt. Der öffentliche SSH Schlüssel wird anschließend in der Datei authorized_keys gespeichert. Jedoch nicht einfach so, sondern es wird ein Befehl vorangestellt, der den rsync Zugang auf das gewünschte Verzeichniss limitiert. Der Befehl als auch der öffentliche Teil des gerade erstellen Schlüssels werden in einer Zeile eingefügt.

    mkdir /home/backupuser/.ssh
    
    vim /home/backupuser/.ssh/authorized_keys
    command="$HOME/bin/rrsync -ro /backups/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...L7Xi0= backupuser

    SSHD Config anpassen

    Wurde die Anmeldung per SSH auf einen bestimmten Benutzerkontenkreis limitiert, so muss der neue Benutzer dort noch freigeschaltet werden. Ist AllowUsers auskommentiert, kann dieser Schritt übersprungen werden.

    vim /etc/ssh/sshd_config
    AllowUsers ... backupuser

     

    /etc/init.d/ssh restart

    System L

    Auf dem lokalen System wird nun der SSH Schlüssel für die Anmeldung des Backupusers hinterlegt. In welcher Datei das erfolgen muss, steht in der Datei /root/.ssh/config.

    Host *
    IdentityFile ~/.ssh/ssh-rsa_key

    In diesem Beispiel ist das die Datei /root/.ssh/ssh-rsa_key.

    Sobald der Schlüssel hinterlegt wurde, kann das Backup per rsync kopiert werden. Der Pfad ist dabei relativ zum limitierten Verzeichnis anzugeben.
    Da der Zugriff auf /backups( eingeschränkt wurde, ist das Root Verzeichnis in diesem Fall under /backups/ Verzeichnis.

    rsync -e "ssh -i $HOME/.ssh/ssh-rsa_key" -av backupuser@System-R.com:/ /tmp/
    receiving incremental file list
    ./
    2016.11.28_...

    Versuch man sich per SSH mit diesem User dennoch anzumelden, wird die Sitzung terminiert.

    PTY allocation request failed on channel 0
    /home/backupuser/bin/rrsync: Not invoked via sshd
    Use 'command="/home/backupuser/bin/rrsync [-ro] SUBDIR"'
            in front of lines in /home/backupuser/.ssh/authorized_keys
    Connection to System-R.com closed.

     

    Leave A Reply