본문 바로가기
취약점 점검/리눅스 서버

U-48) 패스워드 최소 사용기간 설정

by _Jay_ 2022. 7. 3.
반응형

 

 

이번에 다뤄볼 내용은 "패스워드 최소 사용기간 설정"이라는 항목입니다. 저번에 설명드린 "​U-47) 패스워드 최대 사용기간 설정"과 한 단어만 빼고 동일하기에 같은 항목이 아닌가라고 생각하실 수도 있는데요. 심지어 패스워드 최대 사용기간을 설정하면서 최소 사용기간도 설정해야한다는 말 자체가 역설적으로 느껴질 수도 있습니다. 하지만 해당 항목도 어느 정도 의미가 있어서 점검 항목에 포함된 것이기 때문에, 자세한 이유는 아래서 설명하도록 하고 우선은 취약점 개요에 대해 정리하고 넘어가도록 하겠습니다.

 

 

이전 글을 읽으시고 패스워드 최대 사용기간 설정에 대한 점검을 하실 줄 알게 되셨다면, 이번 항목은 정말 쉬울거라고 생각합니다. 다만 패스워드 최대 사용기간 설정이 있음에도 불구하고, 최소 사용기간은 왜 존재하는지에 대해 짚고 넘어가야겠죠. 아마 한 번쯤은 이런 경험이 있으실거라 생각하는데, 개인적으로 자주 사용하는 비밀번호가 있을 때 특정 사이트에서 동일한 비밀번호를 사용한 기간이 90일이 지났다면서 패스워드를 변경하라는 페이지를 보셨을 겁니다.

 

아마 이러한 경고창을 보시더라도 대부분은 다음에 변경하기를 눌러서 넘어가겠지만, 가끔 회사의 ERP 시스템에서는 비밀번호를 변경하지 않으면 다음 페이지로 넘어가지 않는 경우가 있는데요. 그러면 보통 다른 비밀번호로 변경하고 다시 비밀번호 수정하기를 눌러서 원래 사용하던 비밀번호로 사용하기도 합니다.

90일이 지났을 때 비밀번호 변경 페이지가 뜨는 목적은 사용자가 동일한 비밀번호를 사용하지 않도록 만들어서 무작위 대입과 같은 공격에 대비하기 위함인데, 위와 같이 바로 비밀번호를 수정할 수 있다면 원래 목적의 의미가 퇴색되어버리겠죠. 그래서 패스워드 최소 사용기간을 둠으로써 비밀번호를 바꿀 수 없도록 한다고 생각하시면 될 것 같습니다. 패스워드 최소 사용기간을 1일 이상으로 설정함으로써 사용자가 다른 비밀번호를 사용하도록 유도하는 것이죠. 그럼 해당 점검 항목의 목적을 말씀드렸으니 이를 점검하는 방법도 알아보도록 하겠습니다.

 

root@kali:~# cat /etc/login.defs | grep -v "^#" | grep "PASS_MIN_DAYS" | awk '$2>=1' | wc -l
1

 

점검하는 명령은 위와 같은데 이전과 동일한 부분은 생략하도록 하고, 중간 명령어인 grep -v "^#" 부분에 대해서만 설명드리겠습니다. 인프라 점검을 진행하다 보면 여러 항목들을 점검하는 방법이, 설정 파일에 있는 특정한 옵션이 존재하는지를 확인하는 것이 대부분 이라는 것을 아시게 될텐데요. 그런데 파일에 "PASS_MIN_DAYS 1"이라고 써 있는 것이 아니라 주석 처리를 하여"# PASS_MIN_DAYS 1"과 같은 부분도 존재할 수 있을 겁니다.

 

그럼 주석으로 된 '#'으로 시작하는 라인은 제외해야 할텐데, 지금까지는 이 부분까지 생각하지 않고 점검해 왔죠. grep 명령어에서는 '-v' 옵션을 이용하면 특정 라인을 제외할 수 있는데, "^#"을 써서 '#'으로 시작하는 라인을 제외할 수 있습니다. 정리하자면 /etc/login.defs 파일을 읽고 '#'으로 시작하는 주석을 제외 후, "PASS_MIN_DAYS"라는 문자열이 있는 라인의 두 번째 필드가 1 이상인 라인의 수를 읽어서 취약한지 확인하면 됩니다.

여기까지 패스워드 최소 사용기간 설정 점검 항목에 대해서 알아봤는데요. 제 글을 처음부터 읽으셨던 분들이라면 이제 어느 정도 인프라 진단을 할 수 있을 거라 생각합니다. 추후에는 쉘 스크립트를 이용해서 진단 스크립트를 만드는 방법까지 다룰텐데, 그 전에 grep이나 awk와 같은 명령어를 어떻게 다루는지 잘 알아두시면 많은 도움이 될겁니다.

 

또한 이런 인프라 점검을 진행하는데 있어서, 리눅스 배포판이나 버전마다 점검해야 하는 파일, 옵션 등이 다르다는 걸 인식하시고, 점검하는 고객사 환경에 맞춰서 유연하게 조치 방법 등을 담당자에게 전달할 수 있는 능력을 기르셨으면 합니다. 그럼 오늘은 여기까지 말씀드리고 다음 점검 항목인 "불필요한 계정 제거"에 대한 내용으로 돌아오도록 하겠습니다. 감사합니다.

 

 

반응형

댓글