오늘은 주통기 점검 가이드의 46번째 항목인 "패스워드 최소 길이 설정"에 대해 이야기해 보고자 합니다. 사실 이번 항목은 "U-02 패스워드 복잡성 설정"에서 어느 정도 말씀드려서 크게 설명드릴 것은 없다고 생각되는데, 설정 파일의 위치나 옵션에 대한 이야기는 하지 않았기 때문에 해당 부분을 중점적으로 간략히 언급하도록 하겠습니다. 그리고 해당 취약점을 스크립트로 구성할 때 점검하는 방법과 어떻게 조치를 해야하는지까지 보도록 하죠. 그러면 우선 취약점 개요에 대해 짧게 정리해보겠습니다.
취약점 개요를 보시면 이번 항목은 설명할 필요가 없을만큼 정말 간단한데요. 패스워드 복잡성 설정 점검에서 말씀드렸던 것처럼, 패스워드 길이가 짧으면 짧을수록 Brute Force 공격에 의해 시도될 수 있는 경우의 수가 적어지기 때문에 위험하다는 말이죠. 그래서 패스워드 정책 설정 파일에서 패스워드 최소 길이와 관련된 옵션을 수정해서, 리눅스 사용자가 패스워드를 수정할 때 8자 이상으로 설정할 수 있게끔 만들어주면 된다는 의미입니다. 실제로 해당 패스워드 정책 파일을 수정하고 passwd 명령어로 8자 미만으로 패스워드를 수정하면 칼리리눅스의 경우 "You must choose a longer password"라면서 바뀌지 않는 것을 볼 수 있습니다.
점검해야할 패스워드 정책 파일은 리눅스 배포판이나 버전마다 다르지만 보통 /etc/security/pwquality.conf 파일이나 /etc/login.defs 그리고 PAM 모듈을 사용할 경우 /etc/pam.d/password-auth 등과 같은 파일을 봅니다. 사실 이 부분은 조금 설명드리기가 애매한데, 리눅스 배포판마다 패스워드 정책을 관리하는 파일이 다르기도 하고 버전이 올라가면서 정책 설정하는 방법이 다양합니다.
그렇기 때문에 업체별로 점검하는 파일명이 다르거나 여러 정책 파일을 검색하고 존재하면 옵션을 검색하는 등 중구난방인 경우가 대부분이죠. 개정된 주통기 점검 가이드에서도 버전별로 나눠놓지 않고 /etc/login.def 파일의 옵션을 설정하도록 명시하고 있는데, 개인적으로는 PAM 사용 유무와 버전 별로 명시하지 않는 한 유명무실한 점검 항목이 아닐까 조심스럽게 생각해 봅니다. 그래도 일단 점검 방법은 나와있으니 스크립트로 구성 시 어떻게 점검하는지 보고 넘어가도록 하죠.
root@kali:~# cat /etc/login.defs | grep "PASS_MIN_LEN" | awk '$2>=8' | wc -l
1
이전 점검항목들과 마찬가지로 login.defs 파일의 내용 중 패스워드 최소 길이 설정 항목인 "PASS_MIN_LEN" 문자열이 있는 라인을 검색합니다. 그러면 패스워드 최소 길이를 지정하는 옵션의 값이 8 이상이여야하기 때문에, awk 명령어를 통해 해당 라인의 2번째 필드가 8 이상인지 필터링해서 해당 라인 수를 세어주면 됩니다.
리눅스 명령어를 잘 모르셨더라도 제가 쓴 글들을 차례대로 읽으신 분들이라면, 이제 점검해야할 파일명과 검색할 옵션을 가지고 어느 정도 점검 스크립트 안에 사용할 명령어를 쓸 줄 아실거라 생각하는데요. 물론 점검 파일에서 '#'과 같이 주석으로 시작하거나 공백이 포함된 라인을 제외하는 등 예외적인 케이스를 작성하는 방법은 아직 알려드리지 않았죠. 중요한 부분은 아니지만 점검의 정확도를 높이기 위해 필요한 부분이기 때문에 이후 글에서 천천히 소개하도록 하겠습니다. 그럼 오늘은 짧게 여기서 마무리하고 다음 글에서 뵙도록 하죠. 감사합니다.
'취약점 점검 > 리눅스 서버' 카테고리의 다른 글
U-48) 패스워드 최소 사용기간 설정 (0) | 2022.07.03 |
---|---|
U-47) 패스워드 최대 사용기간 설정 (0) | 2022.07.02 |
U-45) root 계정 su 제한 (0) | 2022.06.19 |
U-44) root 이외의 UID가 '0' 금지 (0) | 2022.06.18 |
U-04) 패스워드 파일 보호 (0) | 2022.06.16 |
댓글