이번에는 리눅스 서버 취약점 점검 항목 중 "동일한 UID 금지"라는 비교적 간단한 항목에 대해 설명드리겠습니다. 이전 글들에서 UID(User ID)가 다중 사용자 환경인 리눅스 시스템에서 사용자를 식별하기 위한 번호라고 말씀드렸죠. 이번 항목은 리눅스의 사용자 계정 장부라고 할 수 있는 /etc/passwd 파일에서 두 개의 계정이 동일한 UID를 사용한다면, 어떤 문제가 발생하는지에 대한 내용이라고 보시면 될 것 같습니다. 그럼 동일한 UID 금지 점검 항목의 취약점 개요에 대해 먼저 정리하고 이어서 설명드리도록 하겠습니다.
그럼 동일한 UID를 가진 사용자 계정이 존재할 때 발생할 수 있는 문제에 대해 먼저 보겠습니다. 만약 계정 A와 B가 있다고 가정했을 때, UID가 1000으로 동일하다면 시스템에서는 어떻게 인식할지 생각해보죠. 사실 사람 입장에서야 계정 이름이 다르다면 서로 다른 계정으로 인식하겠지만, 시스템 입장에서는 계정 이름이 아닌 UID로 식별을 하기 때문에 같은 계정으로 봅니다.
그러면 여기서 생기는 문제는 시스템 보안 로그에 UID가 1000인 계정이 데이터를 유출한 기록이 남았을 때, 해당 행위를 A 계정이 한 것인지 B 계정이 한 것인지 구분할 수 없다는 겁니다. 이 말을 관리적 보안 관점으로 바꿔보면, 시스템 로그를 이용한 감사 추적이 어렵다고 할 수 있죠.
보안에서 일을 하시다보면 IT 감사(감독 및 검사)를 하시게 될 수도 있는데, 시스템 로그 감사에서는 책임추적성을 확보해야한다는 것을 배우시게 됩니다. 일반적으로 보안에서는 1인 1계정을 원칙으로 하는 것이 기본이기 때문에, 위와 같이 UID가 동일하다면 책임추적성을 확보하기 어렵겠죠.
위에서 설명드렸던 것처럼 아무리 계정 이름이 다르더라도 UID가 동일하면 시스템에서는 동일한 계정으로 식별하기 때문에, 계정 B가 A의 권한을 가지고 모든 파일의 내용을 볼 수 있고 침해사고가 발생하여도 누가 잘못한건지 책임을 묻기가 어려워집니다.
그럼 기술적인 관점으로도 한 번 생각해보겠습니다. 해커가 root 계정에 무작위 대입을 통해 서버의 관리자 권한을 획득했지만, 해당 서버에서 더 많은 정보를 얻어가기 위해 백도어(Backdoor) 계정을 만들었다고 가정해보죠. 일반적으로 root 권한을 얻었으면 해커가 해당 서버에 root로 로그인할 수도 있을텐데요.
하지만 더 많은 정보를 얻기 위해 임직원처럼 위장하고자 일반 계정 A를 하나 추가해두고 /etc/passwd에서 해당 계정의 UID를 0으로 바꿉니다. 서버 관리자 입장에서는 계정 이름만 보고 A 계정이 하나 더 추가되었구나라고 생각하겠지만, 실제 해당 계정으로 접속하면 root의 권한을 가지고 활동할 수 있는거죠.
여기까지 발생할 수 있는 위협에 대해 알아봤고 다음으로 점검과 조치하는 방법에 대해 말씀드릴텐데요. 점검하는 방법은 굉장히 간단합니다. /etc/passwd 파일에서 UID를 의미하는 세 번째 필드를 필터링해서, 겹치는 UID가 있는지 확인하는겁니다.
그런데 점검 결과를 적는 것은 워낙 컨설팅 업체마다 단순히 /etc/passwd 파일에서 계정명과 UID만 필터링한 결과를 보고서에 쓴다거나, UID가 겹치지 않는지까지 코드로 구현하여 결과를 쓰는 등 구현하는 방법이 다양한데요. 그렇기 때문에 이번 항목에서 명령어를 이용한 점검 방법은 생략하도록 하겠습니다.
마지막으로 동일한 UID를 가지는 계정명이 존재할 때 취해야하는 조치 방법에 대해 설명드리겠습니다. 사실 이 부분에 대해서는 이전 조치 방법과 마찬가지로 충분히 예상하실 수 있을텐데요. UID가 겹치기 때문에 발생하는 문제이기에 결국 동일한 UID를 가지는 계정의 UID를 다른 것으로 바꿔주면 되겠죠.
가이드에서는 passwd 파일을 vi와 같은 에디터를 이용하여 직접 변경하는 것보단, usermod(User Modification) 명령어를 통해 -u 옵션을 주고, "usermod -u 1001 B"와 같이 간접적으로 변경하는 것을 권고하고 있기에 참고하셨으면 합니다. 그럼 이번 글은 여기서 마무리하고 다음에는 사용자 shell 점검 항목에 대해 말씀드리도록 하겠습니다. 읽어주셔서 감사합니다.
'취약점 점검 > 리눅스 서버' 카테고리의 다른 글
U-54) Session Timeout 설정 (0) | 2022.08.07 |
---|---|
U-53) 사용자 shell 점검 (0) | 2022.07.30 |
U-51) 계정이 존재하지 않는 GID 금지 (3) | 2022.07.23 |
U-50) 관리자 그룹에 최소한의 계정 포함 (0) | 2022.07.17 |
U-49) 불필요한 계정 제거 (0) | 2022.07.09 |
댓글