본문 바로가기

Development/개발 노트

서버 실시간 모니터링 및 취약점 점검 솔루션 개발기-1

방학에 진행하던 프로젝트 이후 전공심화과정에서도 역시 캡스톤 프로젝트를 진행하게 되었다


주제를 뭘로 정할까 하다가 모의해킹과 연관성이 있고 만들어보고 싶었던 모니터링과 취약점 점검 기능이 있는 솔루션을 구현하기로 하였다.


막연히 모니터링이라면 CPU, Memory, Disk, Network 등 지속적으로 값이 바뀌는 동적인 요소를 가지고 있는것을 그대로 관리자에게 뿌려주는 원리를 가지고 있다.


오픈소스쪽을 찾아보니 이미 php나 jsp 등 여러가지의 언어를 통해 지원을 하고 있었다.


오픈소스를 그대로 가져다 쓰려니 뭔가 마음에 안드는 부분도 더러 있을 것이고 내가 원하는 방향대로 나오지 않을 가능성이 있기 때문에 직접 구현해보기로 했다.


1. 어떤 구조로 구현 할 것인가?


실시간으로 자원에 대한 정보를 쏴 주어야 하기 때문에 데몬처럼 구동 시켜 해당 자원의 값을 지속적으로 DB에 쏴주어야 했다.


실시간에 적합한 DB가 뭐가 있을까 찾아보니 구글의 파이어베이스나, 몽고디비 정도가 있는 것 같아 몽고디비를 쓰기로 하였다.


웹에서 뿌려줘야 하기 때문에 웹서버로 적당한 것이 node.js를 사용하고자 하니 좀 복잡해 보였다.(그런가..?) Meteor.js를 쓰면 괜찮지 않을까 싶어 미티어를 사용하기로 했다...


데이터 수집을 위한 언어로는 파이썬을 사용하기로 했다. CPU 정보나 메모리정보, 네트워크 정보 등 라이브러리가 방대하더라..wow..


일단은 파이썬으로 만들어진 데몬(?) 프로그램이 정보를 꾸준히 개미처럼 수집하여 디비에 집어넣어주고 웹에서는 디비에서 뽑아온 데이터를 바탕으로 약간(?)의 가공 처리를 통해 그래프와 해당 시스템의 정보를 뿌려준다.


그래프는 d3.js를 쓰기로 하였다!(요게 간단해보였다)


해당 웹에서 데이터만 보면 뭐하는가? 부가 기능도 있어야 되지 않겠는가?


취약점 점검을 넣은 이유가 바로 그것이다!


2. 취약점 점검을 How?


취약점 점검에도 종류가 있다. UNIX서버의 해당 서버의 시스템 취약점에 대해서 점검 할 수도있고, 웹스캐너와 같은 웹에 대한 취약점을 점검 할 수도 있다.


그렇다면 점검을 어떠한 방식으로 해야 하는가? KISA에 다 있더라.. 갓 KISA... 


주요정보통신기반시설 취약점 상세가이드를 보니 와 이거 그냥 다 알려주네? 개꿀 ㅋ 하면서 찬찬히 보았고 모든 항목을 다 하자니 시간이 너무 오래걸리는거같았다.


그래서 어차피 서버의 자원도 가져오는데 UNIX 서버만 하기로 했다.


자 그럼 이제 점검 방법도 알았다.


근데 관리자가 모의해킹팀도 아니고 직접 다 때려보면서 할 수는 없지 않은가? 


스크립트가 있지 않을까 싶어 구글링을 해보니 이게 왠걸 떡하니 있다.


하지만 부분부분 포스팅 되어있어 전부 다 가져오기엔 좀 그래보였다(날먹..?) 


우리에겐 뭐가 있다? 쉘.스.크.립.트 가 있다..!


어차피 리눅스 기반으로 돌아가는데 쉘 스크립트로 돌리면 편하겠다 싶어 생판 처음 보는 쉘 스크립트를 파기로 하였다.


다음에 계속..