oracle
Linux에서는 일반 사용자(예:)에 대한 직접 로그인을 비활성화하고 해당 목적으로 허용 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
. 당신도 알아야 할 것이 무엇인지rssh
rssh.conf
chroot
그것이 무엇인지, 어떻게 작동하는지.
답변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
예, 가능합니다.
- 예를 들어
chsh -s /bin/false ${user}
. sshd
내부를 사용하라고 하더군요sftp-server
Match User ${user} ForceCommand internal-sftp
Match
블록은 다음Match
블록이나 파일 끝까지 계속되므로(들여쓰기는 사람에게만 적용됨) 파일 끝에 이 구성을 추가하는 것이 가장 쉽습니다.
( ${user}
원하는 사용자 이름으로 바꾸세요.)
9.0 이전 클라이언트는 이 구성 ssh
만 사용할 수 있습니다 . sftp
9.0 버전부터는 내부적으로 프로토콜을 사용 scp
하도록 변경되어 다시 작동됩니다 .sftp
답변4
로그인 쉘을 일반 로그인으로 변경하거나 bash
금지 /usr/sbin/nologin
할 수 있습니다 /bin/false
. 로그인 쉘은 다음 명령을 사용하여 변경할 수 있습니다 usermod
.
usermod user_name -s /usr/sbin/nologin