Devsecops

[AI 스쿨 리팩토링]Snort 본문

[AI스쿨] 리팩토링

[AI 스쿨 리팩토링]Snort

Futurism 2023. 3. 2. 18:47
728x90

Snort란?​

  • 오픈 소스 네트워크 침입 차단 시스템이자, 네트워크 침입 탐지 시스템
  • 시간 트래픽 분석과 IP에서의 패킷 로깅을 수행하는 능력 
  • 프로토콜 분석, 내용 검색 그리고 매칭을 수행

룰 설정​

  • Header/Body 부분으로 구성되어 있다
  • Header는 처리방식, 프로토콜, IP, Port 등으로 패킷 판단 기준을 명시한다
  • Body는 패킷을 탐지하기 위한 규칙을 명시한다

헤더 설정

  • 형식
    • Action : alert, log, pass, activate, dynamic, drop, reject, sdrop 
    • Protocol : Tcp, UDP, ICMP, IP
    • IP : src/dst IP
    • Port : src/dst Port
    • 방향 지시자 : ->, <>

Action 유형

  • Alert : alert 발생 후 로그를 남김
  • Log : 로그를 남김
  • Pass : 무시
  • Activate : alert 발생후 dynamic 활성화
  • Dynamic : activate에 의해 활성화 하고 log와 동일한 동작
  • Drop : 패킷 차단 후 로그 남김
  • Reject : Drop과 동일하나 차단 후 TCP는 TCP Reset, UDP는 ICMP port unreachable 전송
  • sdrop : 차단 후 로그를 남기지 않음

바디 설정

​Payload/범위 관련 옵션

  • Content : Payload에서 검사할 문자열 지정
  • Offset : Payload에서 content 패턴을 검사할 시작 위치
  • Depth : Offset 부터 몇 바이트 까지 검사할 범위 지정
  • Distance : 이전 Content 패턴에 매치된 경우, 매치된 이후 바이트부터 몇 바이트 떨어진 위치에서 Content를 검사할 것인지 지정
  • Within : content 패턴에 매치된 경우, distance부터 몇 바이트 범위 내에서 다음 xontent  검사할 것인지 지정
  • Nocase : 대소문자 구별하지 않음

HTTP 관련 옵션

  • Http_method : http method 검사
  • Http_uri : http uri 검사
  • Http_header : http header 검사, 요청/응답 header 모두사용
  • Http_cookie : http cookie 검사
  • Http_client_body :  http body 검사
  • Http_stat-code : http status code 검사, 403 forbidden
  • Http_stat_msg : http status message 검사, 403 forbidden

이벤트 제한 관련 옵션​

  • 특정 시간 동안 발생되는 이벤트 수를 제한하기 위한 옵션
  • Threshold type <limit, threshold, both>, track <by_src, by_dst>, count <c>, seconds <s>
  • Type
  • Limit : 매 s초 동안 c번째 이벤트까지 action 수행
  • Threshold : 매 s초 동안 c번째 이벤트마다 action 수행
  • Both : 매 s초 동안 c번째 이벤트 시 한번 action 수행
  • Track
  • by_src : 출발지 기준 추적
  • By_dst : 목적지 기준 추적

예시

  • HTTP Syn floodng 탐지
    • alert tcp any any -> any 80 (msg: "http Syn flooding 발생"; flags:S; threshold:type threshold, track by_src, count 5, seconds 1; sid:10000170;)
  • ssh Root brute force 탐지
    • alert tcp ant any -> 1.1.1.1 22 (msg : SSH Brute 공격"; content:"SSH-2.0"; nocase; threshold:type both, track by_src, count 5, seconds 1; sid:1000140;)
728x90