얼마전 해킹을 당한 이후 서버에 설치된
루트킷(Rootkit)의 설치 여부가 가장 중요했습니다. Rootkit은 해커들이 서버에 교묘하게 설치하는 어플리케이션 프로그램으로 운영자 모르게 언제든 서버에 접속하거나 조작할 수 있는
Mallware입니다.
이를 확인하기 위한 방법으로 chkrootkit 또는 rkhunter 등을 설치하여 테스트 가능합니다.
# 루트킷 확인하기
먼저 탐지툴을 설치합니다.
만약
rkhunter인 경우 아래와 같습니다.
아래는
chkrootkit을 기준으로 설명하면 위 커맨드를 실행할 경우 루트킷의 설치 여부를 확인하고 그 결과를 반환합니다.
만약 아래와 같이
INFECTED 라는 메시지로 출력될 경우 루트킷을 의심해볼 수 있습니다.
# 루트킷이 아닌 경우에도 INFECTED가 나오는 경우
설치된 인스턴스를 제거 후 새로 생성한 뒤 다시 모든 환경을 세팅한 뒤
chkrootkit을 실행해보았습니다. 이때 환경은 Python flask에 nginx, uwsgi를 사용하고 몽고db(mongodb)의 서버를 구동하였습니다. 그 결과 bindshell에 대하여 INFECTED가 나타났는데 문제는 mongodb를 서버에 연결한 뒤 테스트하는 경우 발생하였습니다.
요약하면... 테스트를 수행하기 이전에 서버에 연결된 service들을 종료하는 것이 확실한 테스트를 수행할 수 있습니다. 가급적 모든 서비스를 종료 후 테스트하시기 바랍니다.