오늘은 리눅스 서버 취약점 점검에서 계정 관리의 마지막 항목인 "Session Timeout 설정"에 대해 알아보겠습니다. 이번 점검 항목에 관련된 상황도 여러분들이 자주 겪어보셨을거라 생각되는데요. 특히 인터넷뱅킹을 이용할 때 아이디와 패스워드 또는 공인인증서를 통해 로그인하면, 10분 간 아무 액션을 취하지 않았을 때 로그아웃되어 다시 로그인한 적이 있으셨을 겁니다. 계정을 로그인한 채로 퇴근했을 때 권한이 없는 사용자에 의한 접근을 막기 위해 만들어진 항목이라 생각하시면 되는데, 일단 취약점 개요를 간단히 정리해보죠.
세션(Session)이라는 것은 클라이언트와 서버 간에 연결되어 있는 상태를 뜻합니다. 인터넷 브라우저를 통해 특정 웹 사이트에 로그인한 순간부터 세션이 연결되었다라고 표현하죠. 이 세션이 끊어지기 까지는 로그인 상태가 유효하고, 특정 시간이 지나면 로그인 상태가 끊어지는데 이 시간을 세션 타임아웃 간격이라고 보시면 됩니다. 많은 분들이 세션 타임아웃이 설정되어 있으면 굉장히 불편해 하는데, 꼭 필요한 설정 중 하나이기 때문에 점검하도록 되어 있습니다.
이 세션 타임아웃을 설정하지 않아서 발생할 수 있는 문제는 이렇게 생각하면 쉽습니다. 자신이 특정 기업에서 개인정보가 들어있는 DB 서버를 관리하는 직원이라고 생각해 봅니다. 업무 시간에는 DB 서버에 원격으로 로그인해서 관련 업무를 처리하고, 퇴근할 때 로그아웃을 하지 않았다고 가정해보죠.
보통 PC를 끄지 않고 다닌다고 생각하면 퇴근 후에도 DB 서버에 계속 로그인된 상태로 방치되어 있을테고, 다른 사람이 해당 직원의 자리에 와서 특정 사람의 개인정보를 조회해보는 등의 행위가 가능할겁니다. 만약 세션 타임아웃이 설정되어 있었다면, 로그아웃을 하지 않고 퇴근해도 일정 시간이 지나면 자동으로 로그아웃이 되어 안전했겠죠.
root@kali:~# cat /etc/profile | grep "TMOUT" | awk -F= '$2<=600' | wc -l
1
세션 타임아웃을 설정하지 않아서 발생하는 문제를 알았으니, 다음으로 점검하는 방법에 대해 알아보죠. 리눅스에서 세션 타임아웃을 설정하는 파일은 /etc/profile인데, TMOUT이라는 변수을 통해서 시간(초)를 명시하게 됩니다. 초기 설정에는 해당 변수가 포함되어 있지 않기 때문에, 관리자가 직접 "export TMOUT=600"과 같이 추가를 해야 하죠.
그렇기 때문에 해당 설정 파일에서 "TMOUT" 문자열을 찾고, awk 명령어를 통해 구분자를 '='으로 나눈 후, 설정 값이 600 이하인지 확인하면 됩니다. 카운트된 라인 수가 1이라면 정상적으로 설정되어 있다는 이야기이고, 0이라면 해당 변수가 존재하지 않거나 값이 600을 넘기 때문에 취약하다는 의미입니다.
마지막으로 조치 방법을 보시면 생각보다 간단합니다. 위에서 언급했던 것처럼 /etc/profile 파일을 vi와 같은 에디터로 열어서 "export TMOUT=600"을 추가하여 설정해주면 됩니다. 해당 옵션은 전역으로 설정되는데 source 명령어를 통해 수정된 파일을 적용한 다음에야 세션 타임아웃이 정상적으로 동작하는 것을 볼 수 있죠.
세션 타임아웃 설정 점검 항목은 중요도가 낮게 명시되어 있지만, 사용자 계정과 권한을 지키기 위한 가장 기본적인 방법입니다. 고객사에서 관제 업무와 같이 꼭 세션이 연결되어 있어야 하는 상태가 아니라면, 반드시 설정하고 넘어갈 수 있도록 권고하셨으면 합니다. 그럼 이번 글은 여기서 마치도록 하죠. 감사합니다.
'취약점 점검 > 리눅스 서버' 카테고리의 다른 글
U-06) 파일 및 디렉터리 소유자 설정 (0) | 2022.11.27 |
---|---|
U-05) root 홈, 패스 디렉터리 권한 및 패스 설정 (0) | 2022.08.12 |
U-53) 사용자 shell 점검 (0) | 2022.07.30 |
U-52) 동일한 UID 금지 (0) | 2022.07.24 |
U-51) 계정이 존재하지 않는 GID 금지 (3) | 2022.07.23 |
댓글