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

U-50) 관리자 그룹에 최소한의 계정 포함

by _Jay_ 2022. 7. 17.
반응형

 

 

이번에는 주요정보통신기반 취약점 점검 가이드에서 리눅스 서버의 50번째 점검 항목인 "관리자 그룹에 최소한의 계정 포함"에 대해 이야기를 해보도록 하겠습니다. 리눅스의 관리자인 root 계정의 중요성은 첫 점검 항목에서 부터 지겹도록 말씀을 드렸었는데요. "U-45) root 계정 su 제한" 글에서도 리눅스 권한 체계를 설명드리면서 소유자, 권한에 대한 내용도 함께 설명드렸었는데, 해당 부분을 이해하셨다면 root 계정 이외에 관리자 그룹에 포함된 사용자 계정이 존재할 때, root 그룹 권한으로 된 파일을 실행할 수 있는 문제가 존재한다는 것을 아실 수 있으실거라 생각합니다. 더 자세한 이야기에 앞서 우선 취약점 개요에 대해 정리해보도록 하죠.

 

 

리눅스에서 그룹에 대한 정보는 /etc/group 파일에 존재하고, vi 에디터나 cat 명령어로 해당 파일의 내용을 보시면 첫 라인이 "root:x:0:root,test"와 같이 존재합니다. 여기서는 root 관리자 그룹에 root와 test라는 계정이 추가되었다고 가정하고 설명할텐데요.

 

일단 콜론으로 구분된 4개의 각 필드 의미를 살펴보면, 첫 번째 필드그룹명인데 보통 useradd 명령어로 사용자 계정을 추가하면 계정명과 동일한 이름으로 그룹명이 추가된다고 말씀드렸죠. 또한 생성된 그룹에 여러 사용자 계정을 추가하여 파일의 실행이나 수정 권한을 제어할 수 있다는 것도 설명드렸습니다. 그리고 'x'라고 표시된 두 번째 필드그룹의 비밀번호로 /etc/gshadow 파일에 존재합니다.

 

세 번째 필드GID(Group ID)로 생각하시면 되는데, 시스템이 접근 제어를 수행할 때 실제로는 root와 같은 문자열이 아닌 UID와 GID와 같은 숫자로 처리하기 때문에 존재한다고 생각하시면 될 것 같은데요. 기본적으로 root 관리자는 UID와 GID가 0이라는 것을 기억하시길 바랍니다. 마지막 네 번째 필드해당 그룹에 포함된 사용자 계정인데, gpasswd 명령어를 통해 그룹에 계정을 추가하거나 삭제하실 수 있다는 것을 알아두시면 좋습니다.

 

root@kali:~# cat /etc/group | grep "root:" | awk -F: '{print $4}' | awk -F, '{for (i=1; i<=NF; i++) print $i}'
root
test

 

이번 항목은 다른 항목들과 달리 점검하는 방법이 조금 복잡하고 긴데요. /etc/group 파일의 내용을 읽어서 root 관리자 그룹에 대한 라인을 grep으로 필터링하면 첫 라인만 출력되고, 해당 라인을 awk 명령어를 통해 콜론을 기준으로 네 번째 필드만 출력합니다. 위에서 예시로 들었던 부분을 생각하면 'root,test'가 나오겠죠.

 

마지막 awk 명령을 통해 쉼표 기준으로 필드를 구분하고, for문을 통해 결과를 출력하고 있죠. for나 while과 같은 loop문은 쉘 스크립트를 작성할 때 써보시게 될텐데, C언어나 자바에서 배운 for문과 상당히 유사하기 때문에 이를 알아두신다면 편리하게 사용할 수 있습니다. for문에서 조건문에 있는 NF는 'Number of Fields'의 약자로 구분자로 나눠진 필드 개수를 의미한다고 생각하시면 됩니다.

여기까지 리눅스 명령어를 통해 관리자 그룹에 최소한의 계정이 존재하는지 점검하는 방법에 대해 알아봤습니다. 사실 진단 스크립트를 구성하고 나온 결과를 가지고 보고서를 작성하는 방법은 굉장히 다양하기 때문에 꼭 위와 같이 할 필요는 없습니다.

 

단지 awk와 같은 명령어를 다양하게 쓰는 방법을 알려드리고 싶어서 위와 같이 명령어를 구성했는데요. 이전까지는 마지막에 항상 'wc -l' 명령어를 가지고 결과가 0인지 1인지를 가지고 양호, 취약을 판단했다면, 지금은 판단을 하지 않고 문자열로 결과를 출력하고 있다는 차이점이 있죠.

이번 점검 항목의 경우 최소한의 계정이라는 것 자체가 고객사의 환경에 따라 달라지기 때문에, 위와 같이 관리자 그룹에 포함된 계정 결과를 가지고 담당자와 초기 인터뷰를 한 결과와 비교하거나 추후 이행점검을 통해 확인하여야 합니다. 보통 해커가 특정한 계정을 관리자 그룹에 포함해놓지만 않는다면 대부분 문제될 일은 없죠. 내용 자체는 굉장히 간단하지만 이런 점검 항목을 통해서 리눅스의 그룹 권한 체계와 파일 접근 제어 방법에 대해 알아가셨으면 합니다. 그럼 오늘은 여기까지 말씀드리고 다음 글에서 뵙도록 하겠습니다. 감사합니다.

 

 

반응형

댓글