가능하다면 홈페이지를 엉망으로 만들지 않고 일부 사용자 계정을 잠가야 합니다.
일반적인 방법은 usermod -L user
공개 키 인증(일반적으로 이 서버에서 사용됨)을 사용하여 SSH 로그인을 열어 두는 것 같습니다.
나는 내가 할 수 있다는 mv /home/user/.ssh /home/user/_ssh
것을 알고 있습니다. 그러나 이것이 올바른 방법입니까?
내가 무엇을 놓치고 있나요?
답변1
설명서에서는 man usermod
권장 솔루션을 제공합니다.
-L
,--lock
사용자의 비밀번호를 잠급니다. 이렇게 하면!
암호화된 비밀번호 앞에 하나가 배치되어 비밀번호가 효과적으로 비활성화됩니다. 이 옵션-p
은 또는 와 함께 사용할 수 없습니다-U
.참고: 계정을 잠그려면(비밀번호를 사용하여 액세스하는 것이 아니라)
EXPIRE_DATE
로 설정 해야 합니다1
.
그런 다음
-e
,--expiredate EXPIRE_DATE
사용자 계정이 비활성화되는 날짜입니다. 날짜는 형식으로 지정됩니다YYYY-MM-DD
.빈
EXPIRE_DATE
매개변수는 계정의 만료 시간을 비활성화합니다.
그럼 실제 사례로 바꿔보세요
usermod -L -e 1 someuser # Lock
usermod -L -e '' someuser # Unlock
기본 만료 날짜를 설정한 경우 /etc/default/useradd
잠금 해제 프로세스에 해당 값(있는 경우)을 포함할 수 있습니다.
usermod -U -e "$( . /etc/default/useradd; echo "$EXPIRE")" someuser
cron
잠긴 계정을 가진 사용자뿐만 아니라 만료된 계정을 가진 사용자에 대해서도 예약된 작업이 비활성화됩니다. 오류 메시지에는 journalctl -u cron
만료된 사용자의 계정 이름이 표시됩니다(이 경우 test2
).
Apr 30 11:47:01 pi CRON[26872]: pam_unix(cron:account): account test2 has expired (account expired)
Apr 30 11:47:01 pi cron[472]: Authentication failure
Apr 30 11:47:01 pi CRON[26872]: Authentication failure
예약된 작업이 at
아직 시도되지 않았습니다. (기한이 지나면 실행될지는 모르겠지만, 경험상 그렇지 않은 것 같습니다.)
잠기고 만료된 계정에서 이미 실행 중인 다른 프로세스는 영향을 받지 않고 계속 실행됩니다.
답변2
"usermod -L user"를 실행한 후 이 줄을 끝에 추가하여 SSH 액세스를 거부할 수 있습니다./etc/ssh/sshd_config문서:
DenyUsers user
또는 사용자를 그룹에 추가하여 SSH 로그인이 거부되도록 이 목적으로 그룹을 생성할 수 있습니다.
groupadd deny-ssh
usermod -a -G deny-ssh user
그리고 마지막에 그룹을 추가하세요/etc/ssh/sshd_config문서:
DenyGroups deny-ssh
각 변경 후/etc/ssh/sshd_config파일은 변경 사항을 적용하기 위해 sshd 데몬이 다시 로드되는지 확인합니다.
systemctl reload sshd
reload 명령은 새 설정을 로드하고 기존 SSH 세션을 모두 열어 둡니다.
또는 로그인하더라도 쉘을 얻지 못하도록 사용자 쉘을 변경할 수 있습니다.
usermod --shell /usr/sbin/nologin user
단 하나의 명령으로 위의 모든 작업을 수행하는 간단한 bash 스크립트를 만드는 것이 좋습니다.
로그인이 거부되었습니다.sh:
#!/bin/bash
#Lock user account
usermod -L $1
#Deny SSH connections
usermod -a -G deny-ssh $1
#Remove user Shell
usermod --shell /usr/sbin/nologin $1
#Reload sshd
systemctl reload sshd
이제 다음과 같이 스크립트를 실행하면 됩니다.
./deny-logon.sh user
그리고 "사용자"에 대해 위의 모든 변경 사항이 자동으로 적용됩니다.
편집: @roaima의 솔루션이 가장 정확합니다. 계정을 만료하면 해당 계정에 대한 모든 액세스가 비활성화됩니다. 이는 사용자가 로그인하는 것을 방지하려는 경우 수행해야 하는 작업입니다.
답변3
사용자의 사용자 이름이나 그룹을 추가하여 사용자의 SSH 로그인을 비활성화할 수 있어야 합니다.
/etc/ssh/sshd_config
설정 DenyUsers
및/또는 DenyGroup
.
바라보다 man 5 sshd_config
.
sshd를 잊지 마세요 HUP
.
답변4
계정을 잠그는 것이 옳은 일입니다. SSH를 방지하기 위해authorized_keys 파일을 삭제할 수도 있습니다.
SSH 외에 로그인하는 다른 방법도 있다는 점을 기억하세요.
"*rc" 루틴을 사용하여 무엇이든 하는 것은 어색하지만 일반적으로 "sftp 전용" 계정에 사용됩니다(Sftp 또는 SCP에서 부르는 유틸리티 계정인 경우).
하지만 !password가 더 좋습니다변화복구가 필요한 경우 비밀번호를 제공하세요.
언제나 그렇듯이 백업을 안전하게 보관하세요.