2016년 8월 16일 화요일

VIM 사용 설명서(secure 로그 분석 - 4th)

지난 시간에 secure 로그의 프로세스별 발생 추이를 추적한 결과, sshd 프로세스의 압도적인 발생량과 함께 그 발생량 대부분이 9월에 집중되고 있음을 확인했다.


9월에 sshd 프로세스에서는 무슨 일이 있었을까? 알아보고 싶은데 로그가 너무 많다.

sshd 프로세스 필터링 결과

물론 이전 글에서 이미 sshd 프로세스에 의해 발생한 메시지의 대략적인 현황을 파악했지만 상사님한테 예쁜 보고서를 보여주지 않고, 말로 떠들어봐야 별로 인정해주지 않을 것이다. '그건 니 생각이고, 팩트를 내놔'란 피드백이나 받기 십상. (이정도 피드백만 해줘도 사실 최고의 상사님)

결국 프로세스별 메시지의 통계 및 발생 추이를 구하기 위해서는 주요 키워드만을 추출할 필요가 있는데, 엑셀의 필터링 기능을 이용해서 프로스세별로 구분된 메시지만을 조회할 수 있기 때문에 (노가다가 좀 필요해서 그렇지) 별로 어렵지 않다.

su 프로세스 선택
su 프로세스에 의해 발생한 메시지 현황

프로세스별 메시지 확인을 통해 선별한 키워드의 현황은 다음과 같다. (잡다한 건 뺐음)

프로세스별 메시지의 주요 키워드

이제 메시지 정보에서 확인된 키워드를 추출하는 작업이 필요한데, 이때 역시 VIM의 문자열 치환 기능이 큰 역할을 한다. 엑셀로 정리된 데이터에서 '나머지' 필드만을 복사한 후 선별 키워드를 추출하는 과정은 다음과 같다.


치환 명령어에서 '치환 전 영역'에 사용된 정규표현식이 좀 복잡해 보이지만 사실 별거 없다. 나열된 단어들을 OR 조건으로 검사하는 것뿐.
  • \vpam_unix|pam_succeed|root login|failed login|invalid user|failed password|accepted password|accepted publickey|bad protocol|connection closed|received disconnect

정규표현식 구조

참고로 매직 모드(\v)를 사용하지 않을 경우 해당 정규표현식은 아래와 같이 '|(OR 연산자)' 기호를 전부 예외 처리해줘야 한다.
  • pam_unix\|pam_succeed\|root login\|failed login\|invalid user\|failed password\|accepted password\|accepted publickey\|bad protocol\|connection closed\|received disconnect

공통되는 부분을 '()'로 묶으면 정규표현식이 약간은 더 간결해진다.
  • \vpam_(unix|succeed)|(root|failed) login|invalid user|failed password|accepted (password|publickey)|bad protocol|connection closed|received disconnect


물론 매직 모드(\v)를 사용하지 않는다면 '()' 역시 전부 예외 처리해줘야 한다. (실제 해보면 깊은 빡침을 느끼게 됨)
  • pam_\(unix\|succeed\)\|\(root\|failed\) login\|invalid user\|failed password\|accepted \(password\|publickey\)\|bad protocol\|connection closed\|received disconnect

텍스트 나누기 기능을 이용해서 '나머지' 필드의 데이터를 구분 기호 'ㅋ'으로 나눈 결과는 다음과 같다. 


좌우에 있는 데이터는 필요없으니 삭제.


이제 엑셀의 피벗테이블 기능을 이용해서 프로세스별 메시지의 키워드 발생 현황 및 발생 추이를 확인해보자.


'Failed password' 키워드가 가장 많다. 대량의 SSH 접속 시도가 9월에 발생했던 것.


접근을 시도한 ID나 IP에 대한 통계 분석은 다음에~

관련 글

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스