chroot의 rsync를 설정하려고합니다.


10

백업 서버를 설정하려고합니다. 각 사용자 (클라이언트)를 홈 디렉토리 에 chroot 하고 sftprsync 만 사용할 수 있습니다 .

나는 이와 같은 일을하려는 유일한 사람이 아니라는 것을 금방 알았고이 안내서를 찾아서 따라 갔다. 이제는 sftp 만있는 chroot 사용자가 있습니다.

그런 다음 rsync가 다른 시스템에서 자체를 생성하기 위해 ssh가 필요하고 sftp로 충분하지 않다는 것을 알았습니다. 각 사용자에게 ssh 로그인을 제공하는 것은 처음에 피하고 싶었던 것입니다.

누구나 가능한 해결책을 생각할 수 있습니까?

감사합니다,


답변:


11

SFTP 솔루션 것 또한 당신이 정말로 여기 아무 것도 손실되지 않은, 그래서 모든 사람을위한 SSH 로그인이 필요합니다. ssh를 액세스 할 수있는 권한을 부여하면 반드시 예를 들어, 전체 쉘 액세스를 의미하지 않습니다 쇼는 어떻게 ssh를 사용하기 authorized_keys에 사용할 수있는 명령을 제한하면서 rsync를 통해 백업을 할 수 있도록 파일을 바로 rsync를 수신기.

실제로, 비밀번호 인증 (필수) 대신 키 기반 인증을 선택하면 여러 계정을 요구하지 않고 하나의 사용자 계정으로 모든 것을 실행할 수 있습니다. 키를 사용하여 원격 사용자를 식별하고 특정 디렉토리에서 rsync 수신자를 지정하십시오.

authorized_keys파일 에서 이와 같은 것 :

command="/usr/bin/rsync --server -a . /tmp/user1" ssh-rsa ... user1
command="/usr/bin/rsync --server -a . /tmp/user2" ssh-rsa ... user2

누군가 사용 user1에 개인 키의 의지 백업을 /tmp/user1하고, 누군가 사용 user2에 개인 키의 의지 백업을 /tmp/user2. 기타 등등...


링크가 사라졌습니다 404.
luckydonald

링크를 업데이트했습니다.
larsks

6

rsync클라이언트에서 원격 서버로 평상시 실행 하지만 자세한 스위치를 추가하십시오 : SSH -v, grep for Sending command. 정확한 명령 클라이언트가 원격 서버로 전송되는 것을 볼 수 있습니다 :

rsync -avz -e'ssh -v -i /ssh-keys/clientprivate.key' --bwlimit=8000 --delete root@server:/path/ /backup/myserver/ 2>&1 | grep "Sending command"

내 경우에는

rsync --server -vvlogDtprze.iLsf --bwlimit=8000 --delete . /path

@larsks가 언급 한 것처럼 이것을 command="..."원격 서버 /home/USER/.ssh/authorized_keys파일에 추가하십시오 . 필요한 경우 추가 보안 설정을 추가하십시오.

no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server

모두 함께:

command="rsync --server -vvlogDtprze.iLsf --bwlimit=8000 --delete . /backup/path",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server

(아주 좋은 튜토리얼 http://en.positon.org/post/Rsync-command-restriction-over-SSH에서 가져옴 )


좋은 첫 번째 답변.
slm

2

rsync 서버에 직접 연결하지 않는 한 rsync를 사용하려면 일부 형태의 셸 액세스를 제공해야합니다. 기본 포트는 873 (TCP)입니다.

로부터 rysnc man 페이지 :

rsync가 원격 시스템에 접속하는 두 가지 방법이 있습니다 : 원격 쉘 프로그램을 전송 (ssh 또는 rsh 등)으로 사용하거나 TCP를 통해 rsync 데몬에 직접 접속하는 방법. 원격 쉘 전송은 소스 또는 대상 경로에 호스트 지정 후 단일 콜론 (:) 구분 기호가 포함될 때마다 사용됩니다. 소스 또는 대상 경로에 호스트 지정 후 이중 콜론 (: :) 구분 기호가 포함되거나 rsync : // URL이 지정된 경우 rsync 데몬에 직접 연결됩니다 (리모트 쉘을 통한 lqUSING RSYNC-DAEMON 기능 참조) 이 후자의 규칙에 대한 예외는 CONNECTIONrq 섹션).

제한된 쉘 액세스를 제공하려면 다음 안내서를 고려하십시오 . (참고 : 원래 링크가 작동하지 않습니다.) 요약 :

이 설정은 rsync, SSH 및 chroot의 최고의 기능을 결합합니다. Rsync는 파일 전송의 유연성과 효율성을 제공하고 SSH는 전송되는 데이터를 보호하며 chroot는 서버의 데이터를 무단 액세스로부터 보호합니다. 더미는 rsync 로의 액세스 만 제한합니다.

rsync 서버는 chroot를 구현하지만 종종 필요한 SSH 보호 기능이 없습니다. 또한 추가 rsync 서버 포트를 열면 보안 위험이 발생하며 기술적으로나 정치적으로 불가능한 경우가 있습니다. Sftp와 scp는 특히 웹 사이트와 같은 디렉토리 트리가 관련된 경우 rsync가 제공하는 유연성과 효율성이 부족합니다.

또는 rssh 사용을 살펴 보십시오 ( 여기서 rssh 설정에 대한 안내서가 있음 ).

rssh는 OpenSSH와 함께 사용하기위한 제한된 쉘로 scp 및 / 또는 sftp 만 허용합니다. 또한 rdist, rsync 및 cvs에 대한 지원도 포함됩니다. 예를 들어, 쉘 액세스를 제공하지 않고 사용자가 scp를 통해 파일을 복사 할 수있게하는 서버가있는 경우 rssh를 사용하여이를 수행 할 수 있습니다.


1
현재 뉴스 는 rssh가 유지되지 않고 있으며 약간의 보안 취약점이 있다는 것입니다. 투자하기 전에 현재 상태를 다시 확인하십시오.
chutz

2
rrsync공식 rsync 패키지에 포함 된 rssh 대신 perl 스크립트 를 사용할 수 있습니다 . derek.simkowiak.net/backing-up-multiple-servers-with-rsnapshot
unhammer

0

rsync를 감싸는 쉘을 작성할 수 있습니다.

일반적인 아이디어를 여기에서보십시오 : https://sixohthree.com/1458/locking-down-rsync-using-ssh

랩핑 쉘에서 원하는 것을 수행하고 사용자를 chroot 할 수 있습니다.

필자의 경우 동일한 * nix 사용자를 사용하여 가상 계정을 켜야했습니다. 이런 종류의 셸과 authorized_keys 파일에 많은 줄을 사용하여 그렇게합니다. 사용자를 chroot하지 않았지만 rsync 서버 명령에 사용자 폴더 수준을 추가했습니다.

ssh 키를 사용하여 프로세스 사용자를 다르게 살펴보십시오.


0

쉘없이 Rsync 기능이있는 SFTP

당신은 사용할 수 있습니다 chroot 환경에서 lftp는 + SFTP를 사용자에게 쉘을 제공하거나 래퍼로 SSH에 무거운 지정을하지 않고, rsync를 사용하는 것과 동일한 결과를 얻을 수 있습니다.

이것은 더 안전하고 실질적으로 더 빠를 수 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.