무차별 대입 공격 대응 방편으로 계정 잠금 임계값 설정이 권고됩니다. 계정 로그인이 몇 번 이상 실패하면 해당 계정을 몇 분 간 잠금 상태로 전환하는 설정입니다.
이 설정을 위해 보통 /etc/pam.d 경로에 있는 password-auth과 system-auth 파일의 값을 수정하는 방식을 많이 사용하는 거 같습니다.
하지만 해당 파일을 편집하려고 보면 맨 윗줄에 이 파일을 직접 수정하지 말라는 주석이 달려있습니다. RHEL 8 버전 이상부터 권고되는 사항이라고 합니다.
# Generated by authselect on Wed Jun 26 09:40:01 2024
# Do not modify this file manually.
이 글에선 authselect를 이용해서 계정 잠금 임계값을 설정하는 방법을 설명하겠습니다. 테스트를 해봤는데 생각보다 간단합니다.
Rocky8 계정 잠금 임계값 설정 방법
1. 현재 사용 중인 프로파일 확인
authselect는 프로파일이라는 개념이 있습니다. 프로파일을 여러 개 만들어서 각각 보안 정책을 만들 수 있습니다. 다만 이 글에서 그걸 설명할 것은 아니구요. 현재 사용 중인 프로파일을 확인합니다. 아마 sssd 일 겁니다.
authselect current
[root@localhost custom]# authselect current
Profile ID: sssd
Enabled features: None
2. 기본 프로파일에 faillock 기능 추가
현재 sssd 프로파일을 사용하고 있으니 여기에 faillock 기능을 추가하겠습니다. with-faillock이 로그인 실패 시 계정 잠금 기능을 활성화 하는 옵션입니다.
authselect select sssd with-faillock --force
[root@localhost custom]# authselect select sssd with-faillock --force
Backup stored at /var/lib/authselect/backups/2024-06-26-14-06-02.QgEQcS
Profile "sssd" was selected.
The following nsswitch maps are overwritten by the profile:
- passwd
- group
- netgroup
- automount
- services
Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.
3. 설정 적용 확인
이제 아래의 두 설정 파일에 pam_faillock.so 설정이 추가된 걸 보실 수 있을 겁니다.
/etc/pam.d/system-auth
/etc/pam.d/password-auth
4. 비밀번호 실패 횟수, 잠금 시간 커스터마이징
faillock의 디폴트 옵션은 아래와 같습니다. 이 옵션이 마음에 드시면 그대로 사용하시면 됩니다.
- deny = 3 : 로그인 3번 실패 시 잠금
- fail_interval = 900 : 900초(15분) 내 잠금 횟수를 카운트
- unlock_time = 600 : 600초(10분) 후에 계정 잠금이 풀림
변경이 필요하다면 faillock.conf 파일을 수정합니다. 로그인 3번 실패가 좀 빡빡하긴 하네요.
vim /etc/security/faillock.conf
각 설정의 주석을 해제하고 원하는 숫자를 넣어 저장하면 됩니다.