Network

[7] 스노트 기본 문법

dalgorithm 2021. 5. 7. 14:33
728x90

스노트를 설치한 운영체제에 TCP 덤프라는 도구를 설치할 것이다.

TCP 덤프는 커맨드 라인에서 사용할 수 있는 와이어샤크 같은 도구다. 

 

apt-get install tcpdump

 

+위 명령어를 입력하니 아래와 같은 오류가 나타났다.

D: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
D: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

 

우선 터미널 열고 모든 process를 죽여야한다.
sudo killall apt apt-get

 

만일 진행중인 프로세스가 존재하지 않는다고 뜨면, 아래 디렉토리들을 하나하나씩 디렉토리를 삭제해야한다.

- sudo rm /var/lib/apt/lists/lock
- sudo rm /var/cache/apt/archives/lock
- sudo rm /var/lib/dpkg/lock*

 

위 디렉토리 삭제를 모두 진행한 후에 

sudo dpkg --configure -a  를 입력한 후에, sudo apt update하면 재설정이 가능하다.

 

이제 백박스 운영체제에서 주분투 운영체제로 ICMP 요청을 보내 확인해보면 된다.

hping3 명령어로 ICMP 요청을 보내고, 주분투 운영체제에서는 

tcpdump -e icmp[icmptype] == 0 -v 명령어를 입력하면 주분투 운영 체제에서 백박스 운영 체제로 ICMP 응답을 보내는 패킷만 출력해볼 수 있다. 

 

TCP 덤프가 아닌 스노트를 이용하면 ICMP 요청이 들어오는 것을 보다 정교하게 탐지할 수 있다. 

아래와 같이 /etc/snort/rules 위치에 local.rules라는 탐지 규칙을 생성한다.

먼저 alert 부분은 스노트의 동작을 명시한 설정이다. 스노트를 IDS 용도로 사용하는 경우라면 alert 설정은 고정적이라고 할 수 있다. 단순 탐지 내용을 이벤트를 통해 출력하겠다는 의미다. alert 말고도 pass, activate, dynamic 등 다양한 기능이 있는데 drop이나 reject기능을 설정하면 스노트를 IPS 용도로 사용할 수 있다.

 

cat > /etc/snort/rules/local.rules

alert icmp any any -> any any (sid : 1000001;)

 

cat /etc/snort/rules/local.rules

alert icmp any any -> any any (sid : 1000001;)

 

다음으로 ICMP 부분은 탐지할 프로토콜의 종류를 명시한 설정이다. 현재 스노트는 네트워크 계층에 속하는 IP헤더와 ICMP헤더 그리고 전송 계층에 속하는 UDP 헤더와 TCP헤더의 속성을 탐지할 수 있다. 

 

그리고 any any -> any any 부분은 내부에서 외부로 들어오는 패킷을 대상으로 탐지하겠다는 의미다. -> 표시를 기준으로 좌측은 출발지 IP 주소와 출발지 포트번호를 의미하며 우측은 목적지 IP, 포트번호를 의미한다. 

 

마지막으로 괄호 안에 설정한 sid 부분이다. sid는 시스템 ID를 의미하며 탐지 규칙을 설정할 때 반드시 있어햐 할 내용이다. 설정시 sid 부분을 누락하면 스노트 오류가 뜬다. 

 

또한 alert icmp any any -> 192.168.10.215 any (sid : 1000001;) 여기서, 왼쪽 부분을 RTN(Rule Tree Node)라고 부르며 오른쪽 부분을 OTN(Option Tree Node)라고 부른다. 두 영역 사이에는 반드시 한 칸 공백이 있어야 오류가 발생하지 않는다. RTN 영역은 헤더의 주소 내용을 반영한 영역이고, OTN 영역은 주소를 제외한 헤더의 내용과 페이로드의 내용을 반영한 영역이라고 할 수 있다.

728x90