OpenSSH는 'internal-sftp'와 비슷하지만 SCP용인가요?

OpenSSH는 'internal-sftp'와 비슷하지만 SCP용인가요?

저는 Debian stable을 실행 중이고 '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를 비활성화하는 것이 합리적입니다. 특별한 'internal-sftp' 핸들러가 아니었다면 SFTP의 경우에도 마찬가지인 것 같습니다.

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

답변1

보세요RSSH이는 시스템에 대한 제한된 액세스를 허용하는 대체 셸입니다.

rssh는 ssh(1)을 통해 호스트에 대한 제한된 액세스를 제공하기 위한 제한된 쉘로, 쉘이 rssh로 구성된 사용자가 scp(1), sftp(1) cvs(1) 명령 중 하나 이상을 사용할 수 있도록 허용합니다. ), rdist(1), rsync(1) 및 해당 명령만 해당됩니다.

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

또는 다음을 사용할 수 있습니다.신중하게당신이 원하는 것을하기 위해. 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

답변3

OpenSSH에는 이와 비슷하게 쉽고 안정적인 것이 없습니다. 보시다시피 SFTP 서버는 내장되어 있지만 SCP 서버는 내장되어 있지 않기 때문입니다.

경고:Vince Berk의 답변여러 가지 이유로 좋지 않습니다.

  1. 시작 파일과 관련된 셸의 동작은 서버 구성에 따라 SSH가 원격으로 설정할 수 있는 환경 변수의 영향을 받을 수 있습니다.

  2. 사용자는 실행하여 ssh /bin/bash쉘을 얻을 수 있습니다. tty가 없어서 사용하기 불편할 텐데, 그럼 어쩌지… 아마도 당신이 원하지 않는 그가 실행할 수 있는 다른 모든 프로그램은 말할 것도 없습니다.

  3. 사용자가 의 권한을 변경하는 것은 .bash_profile별 도움이 되지 않습니다 ssh host rm -f .bash_profile. 홈 디렉토리 권한에 대해서는 언급된 바가 없습니다.

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

답변4

이것은 질문의 범위에 포함되지 않는 타사 도구이지만 어쨌든 언급할 가치가 있다고 생각했습니다.

Jailkit:https://olivier.sessink.nl/jailkit/

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

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

관련 정보