일반 사용자의 직접 로그인은 허용하지 않지만 scp 및 sftp는 허용하시겠습니까?

일반 사용자의 직접 로그인은 허용하지 않지만 scp 및 sftp는 허용하시겠습니까?

oracleLinux에서는 일반 사용자(예:)에 대한 직접 로그인을 비활성화하고 해당 목적으로 허용 scp하고 sftp사용할 수 있습니까 ?

답변1

파일 생성 /etc/nologin, 계정 로그인 셸 설정 또는 대화형 셸에 로그인하는 사용자 계정을 /bin/false효과적으로 비활성화하는 등의 방법은 시스템을 보호하지 못합니다./sbin/nologin

scp사용자가 또는 만 사용하도록 명시적으로 제한하려면 sftp이 작업을 수행하도록 특별히 설계된 제한된 셸을 설치하세요. 이 rssh패키지는 OpenSSH와 함께 사용하도록 설계된 제한된 셸입니다.

: rssh is a restricted shell for use with OpenSSH, allowing only scp
: and/or sftp. For example, if you have a server which you only want
: to allow users to copy files off of via scp, without providing shell
: access, you can use rssh to do that. It is a alternative to scponly.

chroot제한된 쉘을 사용하여 로그인하는 사용자에 대해서는 설정을 진지하게 고려해야 합니다 rssh.

이러한 방식으로 사용자를 제한하는 것이 보안에 미치는 영향을 읽고 이해하십시오. 및 페이지부터 시작하세요 man. 당신도 알아야 할 것이 무엇인지rsshrssh.confchroot 그것이 무엇인지, 어떻게 작동하는지.

답변2

sshd_config에 다음을 추가할 수 있습니다.

Match User oracle
        ForceCommand set - ""$SSH_ORIGINAL_COMMAND; [ "$1" = "scp" ] || exit 1; CMD=`IFS='\`&;<>'; set - ""$SSH_ORIGINAL_COMMAND; echo $1`; [ "$CMD" ] || exit 1; exec $CMD

여기서는 사용자 "oracle"과 일치합니다. 대신 Match group scponly"sconly" 그룹의 사용자를 일치시키는 데 사용할 수 있습니다 . 누군가 scp를 실행하지 않고 연결을 시도하면 코드 1과 함께 자동으로 종료됩니다.

계정이 키 기반 인증을 사용하는 경우 사용자의 .ssh/authorized_keys 파일에 키를 추가할 수 있습니다 command="<above commands>".

파일 조작으로 인해 문자가 잘리는 악성 명령이 실행되는 것을 방지하기 위해 몇 가지 안전 장치를 추가했지만 &``;<>, 이 문제가 내가 생각하지 못한 방식으로 해결될 수 있을지 확신할 수 없습니다.

sshd_config 파일에 붙여넣기에는 약간 길고 혼란스러우며, 오타로 인해 다른 사용자가 문제를 겪을 수 있습니다. "scp"를 확인하는 스크립트를 만든 다음 ForceCommand에서 해당 스크립트를 호출하여 모드를 sshd_config더 간단하게 만드는 것이 더 나을 것입니다. 확인하다https://serverfault.com/questions/749474/ssh-authorized-keys-command-option-multiple-commands이에 대한 몇 가지 예입니다.

답변3

예, 가능합니다.

  1. 예를 들어 chsh -s /bin/false ${user}.
  2. sshd내부를 사용하라고 하더군요sftp-server
    Match User ${user}
      ForceCommand internal-sftp
    
    Match블록은 다음 Match블록이나 파일 끝까지 계속되므로(들여쓰기는 사람에게만 적용됨) 파일 끝에 이 구성을 추가하는 것이 가장 쉽습니다.

( ${user}원하는 사용자 이름으로 바꾸세요.)

9.0 이전 클라이언트는 이 구성 ssh만 사용할 수 있습니다 . sftp9.0 버전부터는 내부적으로 프로토콜을 사용 scp하도록 변경되어 다시 작동됩니다 .sftp

답변4

로그인 쉘을 일반 로그인으로 변경하거나 bash금지 /usr/sbin/nologin할 수 있습니다 /bin/false. 로그인 쉘은 다음 명령을 사용하여 변경할 수 있습니다 usermod.

usermod user_name -s /usr/sbin/nologin

관련 정보