Window Eventlog 실시간 메일 전송하기

다음으로 진행할 내용은 계정 로그인에 대한 감시이다. 감시영역에서 기본이면서 제일 중요한 부분이다. 로그인 하지 않은 상태에서도, 시스템 취약점이 있어, 자료가 유출되거나 변조될수 있는데, 시스템에 로그인 하였다면, 서버 전체를 내주는것과 마찬가지라 볼 수 있다. 따라서 계정관리는 그만큼 중요하며, 로그인에 대한 감시는 기본적으로 선행 되어야 한다. 로그인 감시는 여러가지를 이용하여 구현할 수 있는데, 가장 대표적인 방식으로 보안 이벤트 로그를 통해 로그인시 이벤트를 기록하도록 할 수 있다.

로그인 이벤트를 확인하는 방법으로는 WMI, 조금전에 애기하였던 Eventlog-to-syslog등등 여러 방법이 있지만 여기서는 메일을 이용하는 방법에 대해 알아보고자 한다.

윈도우 2008이후부터 이벤트 로그 발생시 전자 메일로 이를 알리는 기능이 기본적으로 추가 되었는데, 메일을 이용하는 방법은 기본적으로 제공하는 기능임과 동시에 제일 간단하면서 그 효율은 다른 어느것에도 뒤지지 않는다고 할 수 있다.

이 기능은 SMTP 릴레이가 가능한 SMTP 서버를 설치하고, 자신이 확인하고자 하는 이벤트를 선택한후 해당 이벤트 발생시 전자 메일을 발송할 수 있도록 설정할 수 있다.

그렇다면 먼저 어떤 이벤트 로그를 전자 메일로 발송할지 정해야 한다. 우리가 원하는 원격 로그인 관련 메시지를 이벤트 뷰어를 통해 확인해 보자.

 

그후 SMTP서버를 설치하도록 하자. SMTP는 윈도우XP와 윈도우7과 같은 클라이언트 운영체제에서도 설치할 수 있도록 되어 있으므로 쉽게 설치 할 수 있을 것이다.

 

[그림] 윈도우 XP에서 제공하는 인터넷 정보 서비스에 포함되어 있다

 

여기서는 4672 특수 로그온 이벤트를 가지고 전자 메일을 발송하는 작업을 만들어 보고자 한다.

이벤트에 작업을 만들기 위해 먼저 이벤트뷰어(Eventvwr.msc)를 실행하고 4672이벤트를 선택한후 마우스 우클릭하여 “이 이벤트에 작업 연결”을 선택하자.

적당한 이름을 기입하고(테스트에서는 특수 로그인 이벤트 4672 메일 발송으로 지정하였다.)

다음을 눌려 작업에 “전자 메일 보내기”를 선택하자.

보내는 사람과 받는 사람 메일 주소를 작성하고, 제목을 이벤트와 서버 구분이 가능하도록 기입한후, 간략한 메시지를 입력하고, 조금전에 설정한 SMTP 서버의 IP(DNS 등록시 도메인 주소)를 입력후 다음을 누르자.

 

↓이벤트 뷰어에서 이벤트에 직접 연결한다.

[그림] 작업 만들기 마법사를 이용한 메일 보내기 생성

 

이렇게 생성한 이벤트는 작업스케줄러(taskschd.msc)에서 이벤트 뷰어 작업으로 분류된 것을 확인할 수 있는데, 작업 스케줄러를 실행해 메일이 정상 발송되는지 확인해 보자.

SMTP 접근에 문제가 없는지는 텔넷으로 확인하는 것이 유용할 것이다.

 

telnet 10.10.10.1 25 

[내용] SMTP 텔넷 연결 명령어

 

위 명령을 실행하면 아래 그림과 같이 연결이 가능하다.

 

[그림] 메일 장애 처리에 많이 이용되는 SMTP 텔넷연결

 

Exchange의 경우(마이크로소프트 계열) ehlo를 통해 상태를 확인할 수 있고, 그외 공개 메일서버의 경우 helo 명령으로 상태 확인이 가능하다.

메일이 정상적으로 SMTP 서버에 접속이 가능하다면 정상적으로 메일 이용이 가능한 상태 이므로, 테스트 메일을 실제 보내보도록 하자.

 

[그림] 메일이 정상적으로 도착하였음을 확인

 

하지만 이상태에서는 어떤 계정이 접근하였는지에 대한 정보를 확인하기가 어려워 여러 시스템을 등록하였다면, 일일이 로그인한 계정을 확인하기 위해 시스템에 로그인해봐야 한다.

따라서 이상로 사용하기는 무리이므로, 윈도우에서 기본으로 제공하는 로그뷰어 명령도구를 이용, /c 옵션을 이용하여 해당 이벤트를 출력해 보자.

 

wevtutil qe Security “/q:*[System [(EventID=4672)]]” /f:text /rd:true /c:1

[내용] Wevutil를 이용한 보안 이벤트 로그에서 ID 4672 마지막 1개만 보여주는 명령문

 

 

위 명령을 실행하면 아래와 같이 최근 발생한 4672이벤트 하나만 보여주게 된다.

 

[그림] 마지막으로 발생한 이벤트 내용 확인

 

이 결과를 파일로 저장해 메일에 첨부하면 되는데,매 이벤트 발생시 마다 새로운 이벤트 하나만 받아들수 있도록 기존 파일일 삭제하는 배치구분을 첨부하면 아래와 같이 만들수 있다.

 

event4673.cmd

del C:\EventBatch\\event4672.txt

wevtutil qe Security “/q:*[System [(EventID=4672)]]” /f:text /rd:true /c:1 > C:\EventBatch\event4672.txt

[내용] event4673.cmd 파일 내용

 

이렇게 만든 배치파일을 작업스케줄러에서 동작탭에 새로만들기를 통해 추가후 메일 보내기 전에

실행하도록 하면, 마지막 생성된 로그를 메일에 첨부 파일로 담을 수 있다.

 

↓프로그램 시작을 새로만들기를 통해 등록한 이후 전자메일 보내기 전에 조금전 만든 이벤트 로그 수집 배치파일의 결과파일을 첨부파일로 추가후 텍스트의 내용을 알맞게 변경해 주도록 하자.

[그림] 배치 결과를 첨부파일로 보내도록 하자

 

이후 다시 메일 전송 테스트를 진행하면, 아래와 같이 해당 이벤트 내용 텍스트 부분으로 추가되어 메일이 전송되는 것을 확인할 수 있다.

 

[그림] 이벤트 발생시 첨부 파일과 함께 메일이 발송된다

 

만약 첨부파일을 메시지 본문으로 표시하고 싶다면, 프로그램으로 개발을 진행하여야 가능하다.

(이부분이 조금은 아쉽지만, 나름 쓸만한 기능으로 개발 여유가 없다면, 임시로 사용하기 바란다.)

끝으로 이 메일 전송 방법은 로그인 이벤트뿐만이 아니라, 앞서 확인하 특정 이벤트를 직접 생성한 이벤트(CPU 사용률, 디스크 사용률)에서도 사용할 수 있으므로 매우 유용하게 사용 될 것이다.

 

Facebook Comments

Leave A Reply

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.