2022. 10. 7. 17:34ㆍLinux
다음은 리눅스 서버의 취약점 조치 방법에 대한 가이드 내용입니다.
계정 관리 > 계정 잠금 임계값 설정
1. 취약점 개요
1) 점검 내용
- 사용자 계정 로그인 실패 시 계정 잠금 임계값이 설정되어 있는지 점검
2) 점검 목적
- 계정 탈취 목적의 Brute-force Attack 시 해당 계정을 잠금하여 인증 요청에 응답하는 리소스 낭비를 차단하고 Dictionary Attack으로 인한 비밀번호 노출 공격을 무력화하기 위함
3) 보안 위협
- 패스워드 탈취 공격( Brute-force Attack, Dictionary Attack 등)의 인증 요청에 대해 설정된 패스워드가 일치 할 때까지 지속적으로 응답하여 해당 계정의 패스워드가 유출될 수 있음
4) 판단 기준
- 양호 : 계정 잠금 임계값이 10회 이하의 값으로 설정되어 있는 경우
- 취약 : 계정 잠금 임계값이 설정되어 있지 않거나, 10회 이하의 값으로 설정되지 않은 경우
2017.12 KISA 가이드 라인은 계정 잠금 임계값을 5회 이하의 값으로 설정하라고 나와 있으며, 2021.03 KISA 가이드라인은 10회 이하의 값으로 설정하라고 나와 있습니다.
※ 보안 솔루션 제품의 경우 보안 기능 확인서 발급 시 아래의 조건을 만족해야 합니다.
2. 내용
예전에 고객사로부터 취약점 조치가 필요하다며 해당 항목에 대한 조치를 요구할 경우, 한동안 OS 계정 잠금 임계값을 5로 설정하고 운영을 한 적이 있습니다. 임계값 초과 시 계정이 잠기도록 설정했습니다. 계정이 잠길 경우 root 계정을 이용해 사용자 계정의 잠금을 해지해 줘야 하는데, root 계정의 원격 접속이 막힌 상태라면 직접 서버실로 가야 합니다. 서버실에 있는 서버와 다이렉트로 연결하여 콘솔에서 작업을 해줘야 합니다. 이런 상황을 고객사 담당자는 엄청 싫어합니다. 서버실에 들어가려면 승인을 받아야만 들어갈 수 있는 곳도 있고, 서버실이 담당자가 근무하고 있는 건물에 없고 멀리 떨어진 경우도 있기 때문입니다. 한동안 이렇게 운영을 하다가 회사 엔지니어분들이 설정이 너무 강력하고, 문제가 발생할 경우 리소스가 너무 낭비된다고 하여 정책을 바꿨습니다. 그래서 저는 해당 항목은 아래와 같이 설정합니다. OS 설정도 보안 제품 설정과 동일하게 설정을 했습니다.
- 계정 잠금 임계값은 5로 설정 하고, 임계값 초과 시 계정을 300초(5분) 동안 비활성화합니다.
- 패스워드가 5회 틀릴 경우, 300초 이후에 다시 시도 가능합니다.
3. 조치방안
- CentOS 7.x 의 경우 /etc/pam.d/system-auth와 /etc/pam.d/password-auth 파일을 수정합니다.
- system-auth 파일의 경우 콘솔을 통한 로그인 및 su 전환 시 임계값을 설정할 수 있습니다.
- password-auth 파일의 경우 x-window 로그인 및 ssh 원격 접속 시 임계값을 설정할 수 있습니다.
- pam_tally2 모듈을 이용하여 조치하는 방법을 알아보겠습니다.
- /etc/pam.d/system-auth 은 아래 슬라이더 화면과 같이 설정해 주시면 됩니다.
- /etc/pam.d/password-auth 은 아래 슬라이더 화면과 같이 설정해 주시면 됩니다.
※ 주의사항
- 추가되는 내용을 설정 파일 하단(맨 밑부분)에 추가하면 안 됩니다.
- PAM 모듈 설정 파일들은 위에서부터 아래로 순차적으로 실행되기 때문에 반드시 캡처 화면처럼 순서에 맞게 추가해야 됩니다.
4. 스크립트 예시
스크립트는 아래와 같이 작성 가능합니다.
#!/bin/bash
# 계정잠금 임계값 설정(system-auth)
# 콘솔을 통한 로그인,su 전환
sed -i '/pam_tally2.so/d' /etc/pam.d/system-auth
sed -i '/pam_env.so/a\auth required pam_tally2.so deny=5 unlock_time=30' /etc/pam.d/system-auth
sed -i '/account required pam_unix.so/a\account required pam_tally2.so' /etc/pam.d/system-auth
# 계정잠금 임계값 설정(password-auth)
# x-window 로그인, ssh 원격접속
sed -i '/pam_tally2.so/d' /etc/pam.d/password-auth
sed -i '/pam_env.so/a\auth required pam_tally2.so deny=5 unlock_time=30' /etc/pam.d/password-auth
sed -i '/account required pam_unix.so/a\account required pam_tally2.so' /etc/pam.d/password-auth
5. 사용자 계정이 잠길 경우 대처 방법
다음은 사용자 계정이 임계치 초과로 인해 잠길 경우에 대한 조치사항 안내입니다. 사용자 계정이 잠길 경우 root 계정으로 사용자 계정에 대한 잠금 해제를 할 수 있습니다.
1) 패스워드 실패 횟수 확인
- pam_tally2 -u 계정명
ex) # pam_tally2 -u sexyguy - 실패 횟수 및 마지막 실패 시간을 확인할 수 있습니다.
2) 패스워드 실패 횟수 초기화
- pam_tally2 -u 계정명 --reset
ex) # pam_tally2 -u sexyguy --reset - 명령어 수행 후 패스워드 실패 횟수를 확인해 보면 초기화된 것을 확인할 수 있습니다.
6. 취약점 관련 문서 참고 항목
- U-03 [KISA] 계정 잠금 임계값 설정
- 보안 기능 확인서 - 서버 공통 보안 요구사항 V3.0 R1 > 1.2 인증 실패 대응
7. 마치며
CentOS7은 2024년 06월 30일에 EOL 될 예정입니다. CentOS8은 RedHat 정책 변경으로 인해 2021년 12월 31일로 종료된 상태입니다. 많은 회사들이 CentOS7를 대체할 Next OS로 Oracle Linux, Rocky Linux 등의 대안을 찾고 있습니다. 제가 근무하고 있는 회사는 Next OS로 상용 OS인 RHEL9를 사용할 예정입니다. 위 포스팅에서는 계정 잠금을 위해 pam_tally2 모듈을 사용해서 설정을 했습니다. 하지만 RHEL8 이상부터 "pam_tally2"를 더이상 지원하지 않습니다. 그렇기 때문에 다음에 사용할 OS에서는 "pam_tally2"를 이용하여 설정한 스크립트를 "pam_faillock" 을 이용하는 방식으로 바꿔서 사용해야 될 것 같습니다.
'Linux' 카테고리의 다른 글
[RHEL9] 시간 동기화 (0) | 2022.10.12 |
---|---|
[RHEL9] 네트워크 설정 (0) | 2022.10.11 |
패스워드 파일 보호 (0) | 2022.10.08 |
패스워드 복잡성 설정 (0) | 2022.10.06 |
root 계정 원격 접속 제한 (0) | 2022.10.05 |