Coder Social home page Coder Social logo

kookmin-sw / capstone-2020-7 Goto Github PK

View Code? Open in Web Editor NEW
2.0 3.0 4.0 108.98 MB

Do Mo! - SEMO(Security Monitoring Platform)

License: GNU General Public License v3.0

Python 0.96% HTML 0.51% CSS 7.22% JavaScript 0.01% Jupyter Notebook 91.30%
deep-learning semo python django elk-stack monitoring securtiy

capstone-2020-7's Introduction

SEMO(Security Monitoring Platform)

2020년 국민대학교 소프트웨어학부 캡스톤 디자인 프로젝트
https://kookmin-sw.github.io/capstone-2020-7/
1차 중간발표 영상 링크 : https://youtu.be/UWzhshno8Rw
2차 중간발표 영상 링크 : https://youtu.be/N3Sxr04tCCU
최종 발표 영상 링크 : https://youtu.be/UYhwPCIwl68
SEMO 시연 영상 링크 : https://youtu.be/2teB6htplh4

프로젝트 소개

프로젝트 명 : SEMO(Security Monitoring Platform)

정보화 시대를 맞아 네트워크 트래픽의 양이 방대해지면서 보안분야에서의 보안 관제의 역할이 더욱 중요해지고 있다. SeMo는 이러한 문제를 해결하고자 보안관제사들이 자동 처리 규칙들을 업데이트하는 데 도움을 주기 위해서 고안된 프로젝트이다. 수집된 로그데이터를 받아서 딥러닝을 통해 정탐과 오탐 여부를 판별한 후 분석하여 사용자에게 분석결과를 시각화 하여 웹을 통해 보여준다.

Abstract

As the amount of network traffic increases due to the information society, the role of security control is more important. Beacause of these problems, SEMO can help security controllers easily update automatic processing rules. Receive collected log data, determine whether or not the data were detected through deep learning, analyze it, visualize the analysis results to the user, and show it to the user via the web.

프로젝트 시나리오

모델 구조

소개영상

소개영상 링크

팀 소개

지도 교수님

윤명근 교수님

캡스톤 디자인 프로젝트 지도교수님
프로젝트 검수

[email protected]

팀명 : Do Mo!(Do Monitoring!)

팀원 소개


전하훈 (Project Leader)

Student ID : 20171697
E-Mail : [email protected]
Role : 머신러닝 모델 설계 및 구축, 논문 분석


김성은

Student ID : 20163093
E-Mail : [email protected]
Role : 데이터 분석 및 시각화, 피쳐 엔지니어링


최운호

Student ID : 20171711
E-Mail : [email protected]
Role : 웹 서버 구축, 웹 서버-모델 연동


최현인

Student ID : 20171716
E-Mail : [email protected]
Role : ELK 구축 및 문서 작업, 서버 안정화


허윤서

Student ID : 20153242
E-Mail : [email protected]
Role : 웹 프론트 구축, 웹-ELK 연동

참조(Reference)

PAPER

Contatc Us

Email : [email protected]

capstone-2020-7's People

Contributors

gychoics avatar hahooon avatar hyeonin avatar hyoonseo159357 avatar sbrryze avatar unhochoi avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

capstone-2020-7's Issues

데이터 추가 분석

  • 시각화 및 필드의 중요도를 보기위한 데이터 추가분석
  • RF와 payload 파싱을 이용

Daemon

Daemon에 대한 공부

Web_backend_ 2차 필요기능

  • 주기적인 페이지 새로고침
  • Front의 Hover me 버튼 클릭시 주기적인 코드 실행
  • Add Front Button(서버의 파일이 로컬에 다운로드 되는 버튼)

web - #21과 장고 연동

  • http기본 주소 뒤에 start/를 붙이면 키바나 대쉬보드 페이지로 이동

구현 코드

mainapp -> views.py

def kibana_page(request):
    return render(request, 'mainapp/index.html')

mainapp -> urls.py

urlpatterns = [
    path('start/', views.kibana_page()),
]

Front modification2

  • Kibana 왼쪽메뉴바 + 위쪽 필터바없이 오직 대시보드만 풀스크린샷으로 장고에 넣기 #53
  • 종합탐지대시보드&위험탐지대시보드 (#54 밑에 참고자료 게시)
  • 메뉴바 클릭시 대시보드로 이동 #55

모델선정 1dConv vs LSTM

모델 선정

  • 1dConv
  • LSTM
  • 이전까지 1dConv 진행했으므로 LSTM 모델 구현
  • 임베딩기법
  1. one-hot-encoding
  2. keras-embedding

Dashboard

  • 종합탐지대시보드
  • 위험탐지대시보드

ELK-setting and configuration

1. ELK version

  • Logstash : 7.6.2
  • Elasticsearch : 7.6.2
  • Kibana : 7.6.2

2. JVM

  • Java SE Development Kit 11

3. Logstash Confguration file 생성

 file {
   path => "DATA_PATH"
   start_position => "beginning"
   sincedb_path => "/dev/null"
 }

}
filter {
 csv {
  separator => ","
  columns => ["id","uid","stdrPort","atdate","autoFlag","sourcePort","payload","eventType","accidentType","destinationIP","packetSize","vfnStatus","detectEnd","attackType","detectStart","sourceIP","vfnUpdate","protocol","eventCount","destinationPort","batchID","detectName","metaType","detailResult","directionType","orgIDX", "autoEmailSendFlag", "jumboPayloadFlag", "analyResult", "doubtFlag","etcInfo"]
 }
 date{
  match => ["atdate", "yyyy-MM-dd HH:mm:ss.SSS"]
 }
  mutate {remove_field => ["detectName"]}
 mutate {convert => ["stdrPort", "float"]}
 mutate {convert => ["sourcePort", "float"]}
 mutate {convert => ["eventType", "float"]}
 mutate {convert => ["accidentType", "float"]}
 mutate {convert => ["attackType", "float"]}
 mutate {convert => ["etcInfo", "float"]}
}
output {
 elasticsearch {
   hosts => ["http://localhost:9200"]
   index => "INDEXNAME(plz input small letter)"
 }
 stdout{}
}

4월 8일 회의록

1. 보고사항

  • 19일까지 중간계획서랑 수행계획서 피드백 받은 부분 다 수정하고 남은 기간동안 피드백 할 수 있도록 한다.

  • 중간계획서는 드라이브에서 Docs로 공동작업,
    수정 시 버전 적기

2. 개발 상황

  • 운호 - 웹 서버 기반 구축
  • 윤서 - 웹 ELK 연동 학습
  • 현인 - 서버에 java 및 ELK 설치
  • 하훈, 성은 - 모델링

3. 중간 자문 평가 전까지 목표

  • 웹 - 파이썬 코드 주기적 실행, 웹페이지 주기적 업데이트

  • 모델 - 모델, 전처리, 후처리

  • ELK - conf 파일 생성, 키바나 대시보드 웹 연동

  • 결과적으로 웹 페이지 안에서 분석된 결과가 보여질 수 있게 구현 할 것

4. 개발 예정 사항

  • 현인 - 서버에 ELK 구축 완료 및 테스트
  • 운호 - 웹 페이지 주기적 업데이트 구현
  • 윤서 - 키바나 대시보드 구축 및 키바나 대시보드 임베딩
  • 성은 - 데이터 분석
  • 하훈 - 모델링 및 웹-모델 연동

Web_Front_ Button

#14 의 구현 사항
front 동작 테스트를 위한 간단한 버튼 생성해야함

Web_ Add Button

#25 의 구현사항

  • 웹페이지에 버튼 추가(서버의 파일이 로컬에 다운로드 되는 버튼)

ELK 스택 구축 에러

systemd로 자동 실행하던 elasticsearch에서
authentication failure 발생, 이유를 모르겠어서 재 설치 진행

debian 패키지로 설치를 진행할 때 공개 서명키가 없다는 경고 문구가 뜸
Warning이라 대수롭지 않게 넘겼지만 이 때문에 오류 발생

설치 과정에서 공개 서명키를 다운로드하는 부분이 있어서 공개 서명키부터 받고 설치를 진행했지만, 적용이 안됨. 문제가 있는 듯

그래서 설치 방식을 아카이브를 직접 받아서 설치하는 방식으로 바꿈

시연 위한 데몬 생성

시연 할 때의 문제점

  • 현재 데이터들은 배치파일로 존재함
  • 그러나, IPS의 로그 작성 방식은 이벤트가 트리거 될 경우 작성함
  • 따라서, 현재 배치파일을 실시간으로 작성해주는 데몬(IPS_daemon)이 필요함
  • 작성되는 로그파일에서 데이터를 읽고 처리할 데몬(ML_daemon)이 필요함
  • 데이터 후 처리(정오탐 라벨링)는 ML_daemon 에서 한번에 처리

모델 정확도 분석

모델 정확도에 대한 분석

  • decodePayload를 이용하여 모델이 맞히지 못한 데이터에 대한 분석

Kibana dashboard 구현

  1. 다양한 Kibana dashboard를 구현
  2. 구현 방법 및 내용은 README.md에 마크다운 형식으로 기술

logstash 실시간 업로드 테스트

  • 3초마다 csv 데이터를 생성하는 파이썬 코드 작성

  • 로그스태시로 test.csv 파일을 읽음

  • 키바나로 실시간 데이터 확인

중간 자문평가 제출물

중간 자문평가 제출물

  • 중간 평가 보고서(PDF)
  • 시연 동영상
  • 수행계획서 수정본(PDF)
  • 팀별 사이트 내용(md화일) -제대로 꾸미기- abstract 필수
  • 발표자료

Web_backend_ exec .py

#14 의 구현 사항
#18 의 버튼 클릭시 로컬에 있는 파이썬 파일이 실행되는 코드 구현

  1. text.txt 파일 생성
  2. text.txt 를 읽는 readtext.py 파일 생성
  3. 버튼 클릭 시 HTTP Request -> urls.py -> views.py 구조로 readtext.py를 실행하도록 구현

web_front_초안

KakaoTalk_20200405_164457420
내용에 추가해야 할 부분이나 보완해야 할 점 있으시면 얘기해주세요

4월 15일 회의록

1. 보고사항

  • 중간 계획서 드라이브에 올라왔으니 ELK, 웹 부분 금요일 미팅 전까지 적어오기
  • 금요일 3시 미팅, 일요일 미팅(시간 미정) 예정
  • 발표자료 일요일까지 마무리해서 화요일 안으로 녹음할 수 있도록 하기
  • 앞으로 자주 모일 예정

2. 개발 상황

  • 운호 - 새로고침 기능 및 주기적으로 코드실행 기능 추가
  • 윤서 - 웹 프론트 및 키바나 대시보드 연동
  • 현인 - ELK 구축 및 데이터 업로드
  • 하훈, 성은 - 모델링

IP 비식별화

#14 의 구현 사항
feature/web 커밋시 setting.py의 IP 노출 안되도록 해야함

web- login기능 구현

web- login기능 구현

  • python manage.py createsuperuser 로 아이디 만들고 사용가능
  • admin페이지에서 로그인 데이터 확인, 수정 가능
  • django.contirb.auth앱을 활용해 장고에서 기본적으로 제공하는 패스워드 암호화 사용 (admin에서도 암호화된 패스워드로 보인다.)
  • http에 로그정보가 보여 아이디/비번이 유출가능한 GET 대신 숨겨진 POST방식을 사용함.
  • 로그인에 성공하면 - 로그인 성공이라는 메세지와 POST /login/ HTTP/1.1" 200 0 로그가 print
  • 로그인에 실패하면 - 로그인 실패 라는 메세지와 POST /login/ HTTP/1.1" 401 0 로그가 print

Web_backend_ Static File

#14 의 구현 사항
Front에서 사용할 css, font, img 를 클래스화하기 위한 static directory 생성해야함.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.