이번에는 리눅스 서버 취약점 점검의 세번째 항목인 "계정 잠금 임계값 설정"에 대해서 소개해보도록 하겠습니다. 이 부분은 이전 "U-01) root 계정 원격접속 제한"과 "U-02) 패스워드 복잡성 설정"에 대해 설명하면서, 대부분 패스워드 무차별 대입 공격은 계정 잠금 임계값 설정에 의해서 방어가 된다고 말씀을 드렸었죠.
계정 잠금 임계값 설정을 가장 간단히 생각해볼 수 있는 상황은 저희가 인터넷뱅킹에서 로그인을 할 때 입니다. 계좌 이체를 해야할 일이 있을 때 보통 웹이나 모바일에서 인터넷뱅킹에 접속해서 아이디와 패스워드 또는 공인인증서를 가지고 로그인을 하죠. 그런데 가끔 로그인에 실패했을 때 5회 이상 패스워드를 다르게 입력하면 서비스 이용이 제한된다는 경고창을 보셨을거라고 생각합니다. 패스워드를 5번 이상 틀리면 계정이 아예 잠겨서 추가로 본인인증을 해야 풀리는거죠. 이는 리눅스 서버에서 사용자 계정으로 로그인할 때도 마찬가지인데, 먼저 주통기 점검 가이드의 내용을 정리해보겠습니다.
정리된 표를 보시면 계정 잠금 임계값 설정에 관한 내용 자체는 굉장히 심플합니다. 사용자가 로그인을 할 때 몇 번 이상 패스워드를 잘못 입력했다면 계정을 Lock하는 거죠. 보통 회사 내부에서 사용하는 개발 서버들은 내부에서만 접속할 수 있도록 망분리를 해놓고 쓰겠지만, 생각외로 많은 기업들이 개발 서버의 22번 포트를 열고 SSH로 붙어서 원격 접속할 수 있도록 하는 곳도 있습니다. 이렇게 되면 해커와 같은 비인가자가 무작위 대입을 통해서 사용자 계정으로 로그인을 시도할 수 있을테고, 이를 발견하지 못한다면 리눅스 서버의 계정 권한을 탈취해서 정보를 빼내는 침해사고로 이어질 수 있겠죠.
위에서 단적으로 예시를 들긴 했지만, 과거에는 실제로 계정 잠금을 하지 않아서 발생한 사고들이 꽤 많았습니다. 그래서 지금은 특정 계정 아이디의 패스워드가 몇 번이상 틀렸다면 계정을 잠구는 것이 기본이 되었죠. 물론 지금 설명하는 부분은 리눅스 서버에 설치하는 PAM(Pluggable Authentication Module)의 기능을 사용합니다. 이 PAM은 리눅스에서 사용하는 인증 모듈로 사용자의 권한을 제어한다고 보시면 되는데요. 여기서 PAM 모듈을 언급하기에는 너무 길어지니 다른 글에서 자세히 설명하도록 하고, 우선은 리눅스에서 대부분의 권한 관리는 보통 PAM의 설정을 통해서 설정된다고 생각하시면 될 것 같습니다.
root@kali~# cat /etc/pam.d/system-auth
...
auth required /lib/security/pam_tally.so deny=5 unlock_time=120 no_magic_root
...
그래서 주통기 점검 가이드에서 계정 잠금 임계값 설정을 어떻게 점검하는지 보면, PAM의 설정 파일이 존재하는 /etc/pam.d 디렉토리에서 system-auth 파일의 옵션을 확인하죠. 위에 나온 system-auth 파일의 설정을 간단히 살펴보면 해당 기능은 pam_tally.so 라이브러리를 사용, deny=5는 5회 입력 실패 시 계정을 잠그고 unlock_time=120은 계정 잠김 후 잠금 해제되는 시간이 120초, no_magic_root는 root 계정은 패스워드 잠금 설정을 하지 않는 것을 의미합니다.
그런데 실제 취약점 점검을 해보면 확인해야 하는 설정이 주통기 점검 가이드와는 전혀 다른 곳에 위치하고, 옵션 마저 가이드에 나와 있는 것과 상이하다는 것을 발견하실 수 있을 겁니다. 저번에 말씀드려다시피, 리눅스 배포판 및 버전마다 기본적으로 설치되는 PAM 버전이 다르고 그에 맞춰 설정 파일의 위치나 옵션들도 달라지는데요. 예를 들면 설정 파일의 이름이 system-auth가 아닌 common-auth나 password-auth이고, 라이브러리 이름이 pam_faillock.so나 pam_tally2.so이죠.
그래서 보안 업체에서는 실제 점검 스크립트를 만들 때 운영체제 별로 만들던가 아니면 모든 버전을 체크할 수 있도록 쉘 스크립트를 구성하게 됩니다. 처음에는 주통기 점검 가이드로 공부하면서 기본적인 부분만 보시겠지만, 최대한 여러 가지 배포판에서 설정 파일을 확인해보시고 실제 점검을 하실 때 설정 파일이 없다고 당황하지 않으셨으면 합니다.
여기까지 기본적인 내용은 다 설명드렸고 추가적으로 한 가지 더 말씀드리면, 계정 임계값 잠금은 리눅스 서버 취약점 진단 뿐만 아니라 웹 모의해킹을 진행할 때도 적용해 볼 수 있습니다. 만약 웹 사이트에서 관리자 페이지를 찾아 아이디까지 알았을 때, 계정 잠금 임계값이 설정되어 있지 않다면 브루트 포스 공격에 의해 패스워드를 알아낼 수 있겠죠.
물론 관리자 페이지의 웹 접근 로그에서 지속적인 요청이 들어온 것을 확인하거나 보안 솔루션에 의해 이상 행위로 탐지될 수 있겠지만, 직접 로그를 확인하는 것은 번거롭기도 하고 너무 보안 솔루션에 의존해서도 안되기 때문에 관리자 페이지의 패스워드 입력 임계값을 설정하는 부분 또한 정책상으로도 중요하다고 말씀드리고 싶습니다. 그럼 이번 글은 여기서 마무리하고 다음에는 "패스워드 파일 보호"에 대한 내용을 말씀드리도록 하겠습니다. 감사합니다.
'취약점 점검 > 리눅스 서버' 카테고리의 다른 글
U-45) root 계정 su 제한 (0) | 2022.06.19 |
---|---|
U-44) root 이외의 UID가 '0' 금지 (0) | 2022.06.18 |
U-04) 패스워드 파일 보호 (0) | 2022.06.16 |
U-02) 패스워드 복잡성 설정 (0) | 2022.06.06 |
U-01) root 계정 원격접속 제한 (0) | 2022.06.05 |
댓글