SSH를 통해 로그인 실패 횟수를 통해 계정을 잠그는 방법

6677 단어 Linux
보안을 높이기 위해 로그인 시도 횟수에 따라 잠그고 싶을 때가 있습니다.이 글은 CentOS7에서 로그인에 실패했을 때 일정 횟수의 실패 횟수를 기록하고 사용자 계정을 잠그는 방법을 소개합니다.구체적으로 말하면 다음 단계에서 시도 횟수에 따라 잠금을 실현할 수 있다.
1단계:/etc/ssh/sshd_config에서 UsePAM yes 설정
2단계: PAM 설정(password-auth)
3단계: system-auth

/etc/ssh/sshd_config UsePAM yes 사용


CentOS7은 PAM의 "pam_faillock"모듈 기능을 사용하여 로그인에 실패한 사용자의 계정을 임의로 잠글 수 있습니다.먼저 sshd에서 PAM을 사용하려면 "/etc/ssh/sshd_config"에서 "UsePAM yes"설정이 유효한지 확인하십시오.(CentOS7.5는 초기 상태에서 유효)
sudo nano /etc/ssh/sshd_config
UsePAM yes

설정 변경이 진행된 경우 설정을 반영하기 위해 sshd를 다시 시작합니다.
systemctl restart sshd

1단계 PAM 설정(password-auth)


SSH에 로그인 실패 횟수가 있는 사용자의 계정을 잠그려면 "/etc/pam.d/password-auth"의 auth 부분과 account 부분에 "pam_faillock"모듈의 설정을 추가하십시오.(root 사용자는 잠긴 객체에 속하지 않음)
다음 명령으로 auth 부분을 열고 찾습니다.
sudo nano /etc/pam.d/password-auth
auth  required      pam_faillock.so preauth silent audit deny=回数 unlock_time=解除時間
auth  [default=die] pam_faillock.so authfail audit deny=回数 unlock_time=解除時間
account required pam_faillock.so
deny = 횟수 로그인 실패 시 계정을 잠그는 횟수를 지정합니다.
unlock_time = 잠금 해제 시간 (초) 을 지정합니다.
unlock_time 값에 0을 지정하면 관리자가 faillock 명령을 사용하여 잠금을 해제하지 않는 한 계정은 잠금 상태로 유지됩니다.

구체적인 설정 사례


단계 2password-auth


/etc/pam.d/password-auth에서 로그인을 10회 반복하지 못하면 600초(10분) 계정을 잠그는 설정을 추가합니다.방금 password-auth를 편집합니다.
sudo nano /etc/pam.d/password-auth
 👈👈👈👈👈부분 3행은 추가 설정입니다.
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so try_first_pass nullok
auth        required      pam_deny.so
auth        required      pam_faillock.so preauth silent audit deny=10 unlock_time=600 👈👈👈👈👈 追加しました!
auth        [default=die] pam_faillock.so authfail audit deny=10 unlock_time=600 👈👈👈👈👈 追加しました!



account     required      pam_unix.so
account     required      pam_faillock.so  👈👈👈👈👈 追加しました!

password    requisite     pam_pwquality.so try_first_pass local_users_only retr$
password    sufficient    pam_unix.so try_first_pass use_authtok nullok sha512 $
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet$
session     required      pam_unix.so

포인트 콘솔 로그인 실패


"/etc/pam.d/password-auth"설정만으로는 컨트롤러에서 직접 로그인에 실패했을 때 계정을 잠글 수 없습니다.컨트롤러에서 로그인하지 못한 계정을 잠그려면'/etc/pam.d/시스템-auth'에서도 같은 설정을 해야 합니다.

3단계 시스템 자동


그러면 얻기 어려운 기회이기 때문에password-auth뿐만 아니라 이번에도 시스템-auth를 수정해야 합니다.
sudo nano /etc/pam.d/system-auth
똑같이 세 군데 추가.내용도 마찬가지다.
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so try_first_pass nullok
auth        required      pam_deny.so
auth        required      pam_faillock.so preauth silent audit deny=10 unlock_time=600 👈👈👈👈👈 追加しました!
auth        [default=die] pam_faillock.so authfail audit deny=10 unlock_time=600 👈👈👈👈👈 追加しました!

account     required      pam_unix.so
account     required      pam_faillock.so  👈👈👈👈👈 追加しました!

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so try_first_pass use_authtok nullok sha512 shadow
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

점근


"root"사용자도 잠그고 싶다면 auth 부분에 추가된 설정에 "even_deny_root"를 추가합니다.
auth  required      pam_faillock.so preauth silent audit deny=回数 even_deny_root unlock_time=解除時間
auth  [default=die] pam_faillock.so authfail audit deny=回数 even_deny_root unlock_time=解除時

로그인 실패 횟수 확인


"faillock"명령을 실행하면 사용자의 로그인 실패 정보를 확인할 수 있습니다.
faillock
"testuser"에서 로그인 실패를 반복한 후 "faillock"명령을 실행하면 로그인 실패 정보를 확인할 수 있습니다.

faillock

root:
When                Type  Source                                           Valid
hogehogeuser:
When                Type  Source                                           Valid
sampleuser:
When                Type  Source                                           Valid
2019-09-14 16:50:41 RHOST 192.168.10.2                                         V
2019-09-14 16:50:44 RHOST 192.168.10.2                                         V
2019-09-14 16:50:47 RHOST 192.168.10.2                                         V
특정 사용자의 로그인 실패 정보를 보려면 "--user"옵션을 사용하여 사용자를 지정할 수 있습니다.
faillock --user ユーザ名
사용자의 "testuser"로그인 실패 상황을 검사합니다.
# faillock --user testuser
testuser:
When                Type  Source                                           Valid
2018-07-04 16:50:41 RHOST 192.168.1.26                                         V
2018-07-04 16:50:44 RHOST 192.168.1.26                                         V
2018-07-04 16:50:47 RHOST 192.168.1.26                                         V

계정 잠금 해제 방법


계정의 잠금을 해제하려면 "--user"에서 잠금을 해제할 사용자를 지정한 후 "--reset"을 지정하여 잠금을 해제할 수 있습니다.
faillock --user ユーザ名 --reset
실제로 "testuser"의 잠금을 해제해 보십시오.
faillock --user testuser --reset
"faillock"명령을 사용하여 확인하면 로그인 실패 정보를 삭제하고 잠금을 해제한 것을 확인할 수 있습니다.
# faillock
root:
When                Type  Source                                           Valid
hogeuser:
When                Type  Source                                           Valid
sampleuser:
When                Type  Source                                           Valid

번외편

faillock: Error opening the tally file for root:Permission denied
상기 오류가 발생하면 수-에서 루트가 된 후faillock을 진행하면 결과를 검사할 수 있습니다.

로그 보기


failcock에서 알아차렸다면 로그를 보는 것도 방법이다.상세한 사람과 상의하는 것이 가장 빠르다.
sudo nano /var/log/secure

좋은 웹페이지 즐겨찾기