SCP를위한 'internal-sftp'와 같은 OpenSSH?


16

데비안 스 테이블을 실행 중이며 'sftponly'그룹의 사용자를 위해 다음 환경을 구축하려고합니다.

  • 투옥
  • SFTP로 전송할 수 있습니다
  • SCP와 함께 전송할 수있다
  • SSH로 대화식으로 로그인 할 수 없습니다

내 실험과 연구에서 sshd_config의 다음 스탠자가 90 %를 얻는 것으로 보입니다.

Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

이것은 SFTP를 수감하고 SSH를 제공하지 않습니다. 그러나 또한 SCP를 사용하지 않도록 설정합니다. 대부분의 클라이언트는 SFTP (두 프로토콜을 모두 지원하는 서버) 대신 SCP를 사용하는 레거시 스크립트 프로세스이므로 이러한 클라이언트는 우리가 통제 할 수없고 쉽게 관리 할 수 ​​없기 때문에 이상적이지 않습니다. 수정하면 SCP를 완전히 비활성화하는 것이 실용적이지 않을 수 있습니다.

들어오는 SCP 연결로 인해 sshd가 사용자의 로그인 셸을 통해`scp '프로세스를 생성하기 때문에이 구성은 SCP를 비활성화합니다. SFTP의 경우에도 마찬가지입니다. 특수한 'internal-sftp'핸들러가 아니라면 SFTP에서도 마찬가지입니다.

그래서 내 질문은 : scponly 및 rssh와 같은 타사 도구를 사용하지 않고 'internal-sftp'와 동일한 효과를 얻을 수있는 방법이 있습니까? 'internal-sftp'에 대한 정말 좋은 점은 지원 파일로 감옥을 설정하거나 잠재적으로 악용 가능한 타사 setuid 바이너리를 처리 할 필요가 없다는 것입니다 (특히 rsh는 악용 내역이 있음).


1
클라이언트가 ssh 키 파일을 사용하여 연결합니까, 아니면 비밀번호를 사용하고 있습니까? 키 파일 인 경우 키 파일을 제한 할 수 있습니다.
Jenny D

암호로 연결되어 있습니다.
brianjcohen

답변:


3

시스템에 대한 제한된 액세스를 허용하는 대체 쉘인 rssh 를 살펴보십시오 .

rssh는 ssh (1)를 통해 호스트에 대한 제한된 액세스를 제공하기위한 제한된 쉘입니다. 쉘을 가진 사용자가 rssh를 사용하여 하나 이상의 명령 scp (1), sftp (1) cvs (1 ), rdist (1) 및 rsync (1) 및 해당 명령 만 사용합니다.

rssh.conf 파일을 사용하여 사용자 또는 시스템별로 사용할 수있는 명령을 구성 할 수 있습니다

또는 scponly 를 사용 하여 원하는 작업을 수행 할 수 있습니다 . ssh 제품군의 래퍼 역할을하며 파일 액세스는 허용하지만 셸 액세스는 허용하지 않습니다.


2

ssh를 통해이 작업을 수행해야합니까?

그렇다면 쉘을 다음과 같이 설정하십시오.

/usr/libexec/openssh/sftp-server

위의 내용을 / etc / shells에 추가하십시오

내장 계정을 사용하지 않으려면 proftpd를 설정할 수 있습니다

proftpd를 사용하여 보안 SFTP를 설정했습니다. 다음과 같이 컴파일 된 proftpd :

./configure --prefix = / usr --sysconfdir = / etc --with-modules = mod_sftp

아래 에서이 기사를 사용하고 Google에서 설정 방법에 대해 더 자세히 알아볼 수 있습니다.

http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configuring.html


2

내장 SFTP 서버는 있지만 SCP 서버는 내장되어 있지 않기 때문에 OpenSSH와 마찬가지로 쉽고 신뢰할 수있는 것이 없습니다.

경고 : Vince Berk의 제안은 여러 가지 이유로 나쁩니다.

  1. 시작 파일과 관련된 셸의 동작은 환경 변수에 영향을받을 수 있으며 SSH는 서버 구성에 따라 원격으로 설정할 수 있습니다.
  2. 사용자는 ssh / bin / bash를 실행 하고 쉘을 얻을 수 있습니다. 그것은 tty를 가지고 있지 않으므로 사용하기 불편할 것입니다. 그러나 당신이 아마도 원하지 않는 다른 모든 프로그램을 언급하지 않는 것은 무엇입니까?
  3. 사용자가 "ssh host rm -f .bash_profile"을 수행 할 수있는 경우 .bash_profile의 권한을 변경해도 아무 효과가 없습니다. 홈 디렉토리 권한에 대해서는 언급되지 않았습니다.

... 등등. 이런 종류의 접근 방식은 너무 연약합니다.


0

이것은 제 3 자 도구이며 질문의 범위에 속하지 않지만 어쨌든 언급 할 가치가 있다고 생각했습니다.

감옥 : https://olivier.sessink.nl/jailkit/

바이너리 및 라이브러리를 감옥에 복사하고 감옥 내부에서 OS로 로깅을 설정하여 사용자 감옥을 쉽게 설정할 수있는 도구 모음이 있습니다. sftp / scp / rsync-only chroot를 빌드하는 데 사용했습니다.

또한 jk_lshchroot없이 만 scp / sftp / rsync를 허용하려는 경우 사용자가 실행할 수있는 명령을 제한하기 위해 감옥 외부에서 사용할 수있는 (jailkit limited shell) 과 함께 제공됩니다 .


-1

다음은이 서버 측을 수행하는 방법에 대한 요령입니다. 사용자의 쉘을 bash로 설정하십시오.

usermod -S /bin/bash [username]

이제 홈 디렉토리에 '.bash_profile'을 다음 줄로 작성하십시오.

[ -n "$PS1" ] && exit

이로 인해 비 대화식 세션 (예 : 'scp')이 계속됩니다. 그러나 'ssh'로그인을 시도하면 'exit'이 호출되고 연결이 닫힙니다.

새 '.bash_profile'을 홈 디렉토리에 'sftp'할 수 없도록하십시오!

chown root:root .bash_profile

희망이 도움이됩니다!


이 접근법은 감옥에 대한 요구 사항을 고려하지 않는 것 같습니다.
brianjcohen

예, 불행히도 sshd_config에 제공된 chroot 디렉토리와 겹치는 'scp'측에 대한 수동 chroot 환경을 작성하고 제한하려는 각 사용자에 대해 위의 트릭을 수행해야합니다. 'scp'는 내부 sftp 서버에서 작동하지 않습니다.
빈스 버크
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.