Snort에 대한 정보도 많이 없고, 책도 없고, 관련 문서는 구글링 하면 쏟아져 나오다 시피 한데 들여다보면 예전버전이거나 제대로 쓸만한 것이 많지 않고 해서.. 정리해둔다.
Snort는 리눅스 기반(현재 윈도우에도 나와있긴 하지만..) 규칙기반 침입탐지 IDS(Intrusion Detection System)이다.
리눅스 동네가 자주 그렇듯이, 오픈소스이다.
규칙기반이란 말이 뭘까.. 가령, A가 B에게 패킷을 보내는데 패킷 안에 "메롱" 이라고 써서 보냈다고 해보자.
이 때 B가 "메롱"을 막고 싶다면 단순히 " 나는 A로부터 들어오는 '메롱' 이라고 써진 패킷을 받지 않겠다" 라는 규칙(단순한 텍스트 파일이다)을 만들어 IDS에 적용시켜주면 된다. 물론 이 때문에 생기는 문제들도 많이 있고 비효율성도 꽤 있으나 나중에 따로 포스팅 하려고 한다.
네트워크 토폴로지는 보통
외부인터넷망-> 라우터 -> 스위치 -> 방화벽 -> 내부 네트워크
처럼 구성된다. 네트워크 트래픽 탐지를 위해 보통 스위치에서 포트 미러링(특정 포트로 들어오는 모든 내용을 카피하여 다른 포트로 전달하는 기능)을 이용하여 트래픽을 감시할 수 있다..... 라지만 나는 스위치가 없으므로..(사면 되긴 하는데 귀찬...) 다기 보다는 어차피 포트 미러링 해봤자 네트워크에 부하도 많이 되고.. 라는 이유로 일단 포트 미러링을 하지 않기로 했다.
Snort에서 권장하는 토폴로지는 스위치가 포트 미러링을 하고, 한쪽은 방화벽으로, 다른 한쪽은 Snort IDS 머신에 주는 형상이다.
외부인터넷망 -> 라우터 - >스위치 1)-> 방화벽 -> 내부 네트워크
2)-> Snort IDS머신 -> 머신 관리 컴퓨터(워크스테이션)
이렇게 스위치에서 두 갈래 길로 나뉘면 된다. 스위치는 포트 미러링 되어있으므로 같은 내용이 방화벽과 Snort IDS 머신에 전달된다. 이 때 Snort IDS 는 트래픽을 감시하고 특정 패킷을 걸러낼 수 있다. 말로 설명하기 힘들어져서 이쯤에서 미래의 바보 나를 위한 그림을 첨부해야겠다...
위에서 말로 주저리주저리 설명한게 그냥 이 그림 한장으로 다 표현될 수 있다. 네트워크 토폴로지가 뭔지도 몰랐던 시절에 이 그림을 보면서 뭐 어쩌라는 거야 아 짜증 이라고 생각했었는데 지금보니 별거 아니다 아하하하하.
여기서 특이한 점은, Snort IDS 머신은 두개의 네트워크 카드를 가진다는 점이다. (머신이라고 말하긴 하지만 사실 그냥 컴퓨터다 -_-;;)
한 네트워크 카드는 스위치와 연결되어 패킷들을 받게 되고, 다른 네트워크 카드는 관리 컴퓨터와 연결된다. 스위치와 연결되는 카드는 외부 주소를 갖지 않고, 내부 망과 연결되는 것만 내부 주소를 갖게 된다.
굳이 이렇게 하는 이유는?.. 이렇게 하면 IDS 머신이 외부 망과 직접적으로 엮일 일이 없게된다. 소통할 수 있는 IP주소가 없으니까!.ㅋㅋ 네트워크 트래픽의 복사본을 받아보기만 할 것이므로 외부 망과 의사소통 할 필요는 없다. 또한 관리 컴퓨터와 연결된 내부 네트워크 카드는 내부 non-routable IP주소를 가지고 있다. 쉽게 말해서 관리 컴퓨터 이외의 다른 곳과 연결되지 않는다는 말이다. 이 카드는 무조건 관리 컴퓨터와 내부 주소를 이용하여 통신한다. 관리컴퓨터는 이 연결을 통해서 Snort가 무슨 일을 했는지 기록을 보기도 하고 설정을 바꾸기도 한다. 이 카드는 관리 컴퓨터에 접근할 수는 있지만 모든 포트에 대한 접근이 허용되는 것은 아니고 제한적 접근을 할 수 있다.
다음 포스팅에서는 본격적으로 snort를 설치해보려고 한다. 물론 나는 우분투 러버니까 우분투 써야지.
댓글남기기