서버보안 쪽 일을 하다보면 무결성 검사에 대한 요구가 이따금씩 불거지곤 한다. 서버의 보안을 강화함에 있어 무결성 검사가 필요한 경우도 있다. 하지만 네트워크 보안에서와는 달리 서버보안에서 무결성 검사란 “사후약방문”이 될 가능성이 훨씬 크다. 예를 들면 홈페이지의 변조에 대한 탐지가 대표적인 예다.
홈페이지의 소스파일이 변조된 것은 “무결성”이 훼손된 보안사고다. 이미 변조가 되었고 얼마나 많은 고객이 변조된 웹페이지에 접속하여 우리회사를 비웃고 지나갔는지 알 수 없다. 이때는 변조를 탐지했어도 별 의미가 없다. 빨리 복구하는 수 밖에 없다. 서버에서 무결성이 훼손되는 것은 매우 치명적인 사고다. 무결성검사를 통해 변조를 탐지하는 것 보다 “제보”를 통해 인지하는 시간이 더 빠를 가능성도 배제할 수 없다.
아래 그림에서와 같이 “주기적”인 무결성 검사는 지난번 검사주기와 이번 검사주기 사이에 일어나는 해킹에 의한 변조를 찾아낼 수 없다. 그 주기가 짧으면 짧을 수록 좋겠지만 수많은 파일에 대한 무결성 검사를 위해 파일마다 일일히 MD를 생성하고 비교하는 것은 주기적인 서버의 부하 증가를 유발할 수 있기 때문에 바람직하지 않다.
위의 그림은 Tripwire와 같은 서버의 무결성 검사를 수행하여 루트킷이나 변조된 파일을 탐지해주는 일반적인 호스트기반의 무결성 검사도구가 수행하는 기능을 보여주는 그림이다. 주기적인 무결성 검사는 서버입장에서는 그리 효과적인 보안 기법이 아니다.
서버보안SW에서는 무결성 검사기법을 참조모니터인 Security Kernel 수준에서 구현하여 실시간 탐지가 가능하도록 구현하였다. RedCastle(WhiteCastle)은 이 무결성 검사를 설치 시 최초 1회 수행하고 이후 해당 파일이 실행되거나 메모리에 로드될 때 검사하여 실시간으로 파일의 변조여부를 검사하도록 되어 있다. (WhiteCastle or RedCastle) 따라서 지속적인 CPU 부하가 발생하지 않으며 감염된 악성코드를 효과적으로 탐지할 뿐만아니라 악성코드에 감염된 실행파일과 DLL이 메모리에 로드되는 것을 차단할 수 있다. 이러한 커널기반에서의 실행파일 무결성검사는 제로데이 취약성을 공격하는 새로운 악성코드의 차단에 매우 효과적인 방법이다.
하지만 네트워크 보안에서 전송되는 메시지에 대한 무결성 보장은 서버에서의 무결성 보장보다 더 중요하다. 앞의 그림에서 처럼 해커는 수신자에게 전달되는 메시지를 가로채어 변조한다. 서버에서의 무결성 검사와는 달리 이러한 무결성 검사가 메시지 수신시에 바로 일어나게 되며 수신된 즉시 메시지의 무결성 검사를 수행하고 만약 변조되었다면 해당 메시지를 버리거나 송신자에게 알리고 연결을 끊게 된다.
네트워크에서의 무결성검사가 실시간으로 일어나듯 서버에서의 파일 무결성 검사도 파일이 읽히거나 실행될 때 실시간으로 이루어져야만 한다. 그렇지 않고 주기적으로 검사하여 변조 여부를 파악하는 것은 “사후약방문”이나 “소잃고 외양간고치는”겪이 될 가능성이 매우 높다.
파일의 무결성이 실시간으로 보장되어야만 APT 공격과 제로데이 취약성 공격을 효과적으로 방어할 수 있다. 파일의 실시간 무결성과 변조 차단이 가능한 솔루션은 RedCastle과 WhiteCastle 같은 SecureOS 솔루션이다.