sshd_config를 사용하여 SSH 및 SFTP 설정

sshd_config를 사용하여 SSH 및 SFTP 설정

나는 이것이 모호함을 통한 보안이라는 것을 알고 있지만 이는 교육 목적으로만 사용되며 인터넷을 통해 액세스할 수 없습니다. 내부 도구로만 사용됩니다.

다음 링크를 확인했습니다. 일부 사용자에 대해 sftp를 비활성화하고 ssh를 활성화하는 방법은 무엇입니까?

문제는 아래에 명시된 대로 내 질문에 대답하지 않는다는 것입니다.

한 사용자는 sftp를 사용하여 서버에 로그인하고 다른 사용자는 ssh를 사용하여 서버에 로그인할 수 있는 가상 서버를 설정하려고 합니다.

sftp 부분은 이 질문에 추가로 표시된 것처럼 sshd_config 파일에서 내부 sftp를 강제하여 작동합니다. 이 부분이 작동하는 방식은 사용자가 서버에 SSH로 접속하는 것을 비활성화하고 내가 만든 SFTP 감옥에만 액세스할 수 있도록 허용한다는 것입니다.

SSH를 통해서만 Chroot 감옥에 액세스할 수 있는 다른 사용자의 경우 SFTP를 통한 액세스를 비활성화하는 방법을 잘 모르겠습니다. 문제는 이 사용자가 ls 및 cat과 같은 명령을 차단하기 위해 특별히 chroot 감옥을 만들었지만 사용자가 sftp를 사용하여 서버에 액세스하는 경우 이러한 명령을 사용할 수 있다는 것입니다.

/etc/ssh/sshd_config의 섹션은 다음과 같습니다.

Match User test1
        ChrootDirectory /home/jail
        X11Forwarding no
        AllowTcpForwarding no

# Match Group sftpusers
Match User test2
        ChrootDirectory /sftp/guestuser
        ForceCommand internal-sftp
        AllowUsers test2

나는 다음을 추가해 보았습니다:

ForceCommand Subsystem sftp /bin/false or
ForceCommand sftp /bin/false or
Subsystem sftp /bin/false or
to
Match User test1

그러나 위의 추가 사항 중 어느 것도 sshd_config에 적용되지 않습니다.

그래서 내 질문은 다음과 같습니다

user1이 SFTP를 통해 서버에 액세스하는 것을 방지하는 방법이 있습니까? 그렇지 않은 경우 SFTP에서 ls 또는 cat과 같은 특정 명령을 제거하는 방법이 있습니까?

어떤 조언이라도 대단히 감사하겠습니다.

답변1

가장 쉬운 방법은 이 문제를 처리하기 위한 일부 스크립트를 만드는 것입니다. 다음에 추가

Match User test1
  ForceCommand /path/to/your/script.sh

SFTP 요청이 아닌 이상 스크립트는 기본적으로 사용자가 원하는 대로 실행됩니다.

#!/bin/bash
if [[ "$SSH_ORIGINAL_COMMAND" =~ .*sftp-server.* ]]; then
   echo "SFTP not allowed"
   exit 255;
else
   exec "$SSH_ORIGINAL_COMMAND"
fi

관련 정보