Authorized_keys를 사용하여 임의의 디렉터리에 제한된 rsync(rrsync) 스크립트를 허용합니다.

Authorized_keys를 사용하여 임의의 디렉터리에 제한된 rsync(rrsync) 스크립트를 허용합니다.

자동 백업

웹 서버(WebServer)의 다양한 디렉터리에서 로컬 백업 서버(BackupServer)로 데이터를 복사하는 백업 솔루션을 구현하고 싶습니다. 백업은 무인으로 실행되어야 하므로 키 기반 인증과 비밀번호 없는 개인 키를 사용하고 싶습니다.

권한Rsync

백업하려는 디렉토리는 권한이 있는 사용자만 읽을 수 있습니다. rsync를 사용하여 파일을 복사하고 싶습니다. 전용 백업 사용자를 생성하고 사용자가 visudo 규칙을 사용하여 비밀번호를 묻는 메시지를 표시하지 않고 sudo를 사용하여 rsync를 실행할 수 있도록 허용했습니다.

backup-user ALL = NOPASSWD: /usr/bin/rsync

보안 고려 사항

백업 사용자가 실행할 수 있는 명령을 제한하기 위해 웹 서버의authorized_keys 파일에 명령 목록을 추가하여 보안을 강화하고 싶습니다. 언급한 대로 rrsync를 설치했습니다.이 게시물.

command="/usr/bin/rrsync",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAA134143NzaC1yc...

Rrsync에는 하위 디렉터리가 필요합니다.

일반 rsync와 달리 rrsync는 여기에 설명된 대로 인증 키 파일의 하위 디렉터리를 예상합니다.블로그 게시물

command="/usr/share/rsync/rrsync  /var/backup/client1/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa 

이 제한은 작동하지만 /var/backup/client1/이라는 하나의 특정 디렉터리만 백업할 수 있습니다.

rsync 명령에 BackupServer에서 백업하려는 디렉터리를 제공하고 싶습니다. 예를 들어 rsync와 같이 rrsync를 사용할 수 있습니까?

rsync -avze ssh --rsync-path='sudo rrsync' [email protected]:/media/data  /backups/Server/

추가 지침

Authorized_hosts의 command="..." 부분이 해당 사용자의 실행 가능한 명령을 제공된 명령으로 제한한다는 것을 알고 있지만 일반 rsync를 사용하면 다음과 같은 작업을 수행하여 백업하려는 경로에 매개변수를 제공할 수 있습니다.

command="/usr/bin/rsync --server --sender -vlogDtpre.is . ${SSH_ORIGINAL_COMMAND//* \//\/}"

rrsync에서는 작동하지 않습니다.

허용되는 솔루션

이것이 기술적으로 질문에 대한 명확한 답변은 아니지만 Giles가 게시한 솔루션은 매우 좋은 접근 방식이라고 생각합니다. 백업하려는 실제 디렉터리의 모든 보기에 대한 루트 폴더를 만들었습니다. 따라서 인증을 rrsync로만 안전하게 제한할 수 있습니다.

One time todo

    sudo mkdir /mnt/Backups-Rsync-Readonly
    sudo chown -R rsync-backup /mnt/Backups-Rsync-Readonly
    sudo mkdir /mnt/Backups-Rsync-Readonly/VAR-WWW
    sudo mkdir /mnt/Backups-Rsync-Readonly/MySQL-Backups
    sudo setfacl -m u:rsync-backup:rx /mnt/Backups-Rsync-Readonly/
    sudo setfacl -m u:rsync-backup:rx /mnt/Backups-Rsync-Readonly/MySQL-Backups
    sudo setfacl -m u:rsync-backup:rx /mnt/Backups-Rsync-Readonly/VAR-WWW

보기 만들기(다시 시작하면 사라짐)

    sudo bindfs -o perms=0000:u=rD,force-user=rsync-backup /var/www /mnt/Backups-Rsync-Readonly/VAR-WWW
    sudo bindfs -o perms=0000:u=rD,force-user=rsync-backup /MySQL-Dumps /mnt/Backups-Rsync-Readonly/MySQL-Backups

Fstab 버전

    /home/stefan/Scans    /mnt/Backups-Rsync-Readonly/VAR-WWW fuse.bindfs perms=0000:u=rD,force-user=rsync-backup 0   0

인증 키

command="/usr/bin/rrsync -ro /mnt/Backups-Rsync-Readonly",from="192.168.0.10",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding ssh-rsa AAAAB

답변1

한 가지 가능성은 다음을 사용하여 전용 사용자가 백업할 수 있도록 할 디렉토리의 읽기 전용 보기를 생성하는 것입니다.파일 시스템 바인딩. sudo를 전혀 사용하지 마십시오. rrsync해당 사용자를 허용하는 명령만 생성하십시오. 일회성 설정:

mkdir /somewhere/backup-views /somewhere/backup-views/dir1 /somewhere/backup-views/dir2
chmod 700 /somewhere/backup-views
setfacl -m u:rx:backup-user /somewhere/backup-views

시작할 때마다 설정:

bindfs -o perms=a+r-w /actual/dir1 /somewhere/backup-views/dir1
bindfs -o perms=a+r-w /actual/dir2 /somewhere/backup-views/dir2

또는 해당 줄 /etc/fstab:

/actual/dir1 /somewhere/backup-views/dir1 bindfs perms=a+r-w
/actual/dir2 /somewhere/backup-views/dir2 bindfs perms=a+r-w

그런 다음 백업 사용자가 rsync에서 실행되도록 설정합니다 /somewhere/backup-views.

관련 정보