자신이 설정한 홈 디렉토리에 파일을 업로드하는 사용자 그룹이 있습니다. 나는 sftp로 충분할 것이라고 생각하지만 쉘을 통해 로그인하는 것을 원하지 않습니다. 그렇다면 가능합니까? 내 플랫폼은 centos 7이고 사용자의 홈 디렉터리는 /personal/$user에 저장되어 있습니다.
이 설정으로 사용자를 만들었습니다.
useradd -m -d /personal/user1 -s /sbin/nologin
사용자에게 비밀번호가 할당된 후 sftp를 사용하여 시스템에 로그인하면 연결할 수 없다는 메시지가 나타납니다.
답변1
그룹 기반 기본 보안 SSH 설정
나는 SSH 액세스를 관리하기 위해 다음 설정을 좋아하며 이를 사용하여 소규모 서버 팜에서 사용자 그룹을 관리했습니다. 보안과 관리 용이성이 최우선 순위입니다.
주요 기능은 Unix 그룹 멤버십을 통해 SSH 권한을 쉽게 관리하는 것이며 엄격하게 정의된 권한을 가지며 기본적으로 안전합니다.
구성
소프트웨어 설치(선택 사항이지만 유용함):
yum install members # or apt install members
그룹 추가:
addgroup --system allowssh
addgroup --system sftponly
다음 내용으로 새 파일을 추가합니다 ( 더 나은 이름으로 /etc/ssh/sshd_config.d/strict.conf
바꿀 수 있음 ).strict
PermitRootLogin no
PubkeyAuthentication no
PasswordAuthentication no
Match Group allowssh
PubkeyAuthentication yes
Match Group sftponly
ChrootDirectory %h
DisableForwarding yes
ForceCommand internal-sftp
이는 OpenSSH 설정에 sshd_config.d/*.conf
기본 구성 재정의가 포함되어 있다고 가정합니다. SSH 문서를 확인하거나 main에 sshd_config
적절한 Include
지시어가 있는지 확인하세요. 설정에서 이 기능을 지원하지 않는 경우 sshd_config
직접 편집할 수 있습니다.
또한 구성을 수정한 후 SSH 서비스를 다시 시작하는 것을 잊지 마세요.
근본적인
그렇다면 이 모든 기능은 무엇을 합니까?
- 추가 보안 조치로 항상 루트 로그인을 비활성화합니다.
- 항상 비밀번호 기반 로그인을 비활성화합니다(취약한 비밀번호는 sshd를 실행하는 서버에 큰 위험입니다).
allowssh
그룹(pubkey)의 사용자 만 로그인할 수 있습니다 .- 그룹의 사용자는
sftponly
SSH를 통해서는 셸을 얻을 수 없으며 SFTP를 통해서만 얻을 수 있습니다.
그런 다음 그룹 멤버십을 관리하여 액세스 권한이 있는 사람을 관리하세요. 그룹 멤버십 변경 사항은 SSH를 다시 시작하지 않고도 즉시 적용되지만 기존 세션은 영향을 받지 않습니다. members allowssh
SSH를 통해 로그인이 허용된 모든 사용자가 표시되고, members sftponly
SFTP 전용 사용자도 모두 표시됩니다.
# adduser marcelm allowssh
# members allowssh
marcelm
# deluser marcelm allowssh
# members allowssh
#
sftponly
sftp 사용자는 (쉘을 얻지 못하도록 하기 위해) 그리고 allowssh
(처음부터 로그인을 허용하기 위해) 둘 다의 구성원이어야 합니다 .
추가 정보
이 구성을 참고하세요비밀번호 로그인은 허용되지 않습니다;모든 계정필요공개 키 인증을 사용합니다. 이는 아마도 SSH를 통해 얻을 수 있는 가장 큰 보안 이점이므로 지금 시작하더라도 그만한 가치가 있다고 생각합니다.
PasswordAuthentication yes
정말로 원하지 않는 경우 해당Match Group allowssh
섹션 에 추가할 수도 있습니다. 이를 통해allowssh
사용자는 공개 키와 비밀번호를 사용하여 인증할 수 있습니다. 또는 다른 그룹(및Match Group
섹션)을 추가하여 사용자에게 비밀번호 기반 로그인 권한을 선택적으로 부여할 수 있습니다.이 구성은
sftponly
모든 사용자를 홈 디렉터리로 제한합니다. 이를 원하지 않으면 지시문을 제거하십시오ChrootDirectory %h
.만약 너라면하다chroot가 작동하려면 사용자의 홈 디렉토리(및 그 위의 모든 디렉토리)
root:root
가 group/other의 소유이고 쓰기 가능하지 않은 것이 중요합니다. 홈 디렉토리의 하위 디렉토리는 사용자가 소유하거나 쓸 수 있습니다.응, 사용자의홈 디렉토리는 루트가 소유해야 합니다.사용자가 쓸 수 없습니다. 안타깝게도좋은 이유이 제한사항에 대해. 상황에 따라서는
ChrootDirectory /home
이것이 좋은 선택이 될 수도 있습니다.이 솔루션의 경우 SSH가 사용자의 셸을 덮어쓰기 때문에 사용자의 셸 설정이
sftponly
필요/sbin/nologin
하지도 않고 해롭지도 않습니다ForceCommand internal-sftp
.을 사용하면
/sbin/nologin
다른 수단(물리적 콘솔, Samba 등)을 통해 로그인하는 것을 방지하는 데 도움이 될 수 있으므로 여전히 권장됩니다.이 설정은 SSH를 통한 직접 로그인을 허용하지 않으며
root
이로 인해 추가 보안 계층이 생성됩니다. 만약 당신이 정말로하다직접 루트 로그인이 필요한 경우 키 기반 강제 명령만 허용하도록PermitRootLogin
지시어를 변경합니다 . 최후의 수단으로 완전 키 기반 로그인 허용을 사용할 수 있습니다. 피하다 .forced-commands-only
/root/.ssh/authorized_keys
prohibit-password
yes
보너스 포인트를 얻으려면 루트할 수 있는 사람을 제한하고 이라는
su
시스템 그룹을 추가 /활성화하는 것을 고려하십시오 .wheel
auth required pam_wheel.so
/etc/pam.d/su
답변2
/etc/ssh/sshd_config
다음을 포함하도록 콘텐츠를 편집하세요 .
Match User [SFTP user]
ForceCommand internal-sftp
재시작 sshd
. 사용자가 여러 명인 경우 다음과 같이 쉼표로 구분하여 일치하는 사용자 줄에 모두 입력하세요.
Match User User1,User2,User3
sftp
쉘 액세스를 허용하지 않도록 구성하는 핵심은 ForceCommand
옵션을 통해 사용자를 제한하는 것입니다.
답변3
기본 쉘을 /sbin/nologin으로 변경하면 됩니다. 대부분의 Linux 버전을 가정하면:
# usermod -s /sbin/nologin username
답변4
가지다mysecureshell
사용자가 SFTP를 사용하지 못하도록 제한하고 액세스 가능한 경로도 제한할 수 있습니다.
게다가rrsync
사용자 rsync
만 제한하는 데 사용됩니다.