Snort 의 구체적인 사용
다음 단계로 넘어가기 전에 snort 에 대한 몇 가지 기본 개념을 이해해야 합니다. Snort 는 스니퍼 (sniffer), 패킷 로거 (packet logger) 및 네트워크 침입 탐지 시스템 (NIDS) 의 세 가지 모드로 실행되도록 구성할 수 있습니다. 스니퍼 모드 (sniffer mode) 는 네트워크의 패킷을 간단히 읽고 콘솔에 연속 데이터 스트림으로 표시합니다. 패킷 로깅 모드 (packet logger mode) 는 캡처된 패킷을 디스크에 기록합니다. NIDS mode (network intrusion detection mode) 는 snort 가 네트워크의 데이터를 분석하고 사용자 정의 규칙 세트를 사용하여 패턴을 일치시키고 일치하는 결과에 따라 다양한 작업을 수행하는 가장 복잡하고 유기적인 구성입니다.
2. 스니퍼 모드
먼저 기초부터 시작하겠습니다. TCP/IP 헤더 정보 (스니핑 모드) 만 화면에 인쇄하려면 다음 명령을 사용하십시오.
./snort -v
이 명령을 사용하여 snort 를 실행하면 IP 및 TCP/UDP/ICMP 헤더 정보만 표시됩니다 전송된 페이로드 정보를 보려면 다음 명령을 사용할 수 있습니다. < P >./Snort–VD < P > 이 명령은 프로토콜 헤더 정보를 인쇄할 때 해당 패킷 데이터도 인쇄합니다. 좀 더 자세한 현실을 원한다면 다음 명령을 사용하여 데이터 링크 계층 헤더 정보를 인쇄할 수 있습니다. < P >./Snort–VDE < P > (참고: 이러한 옵션 매개변수는 분리 또는 분리 및 결합 방식으로 분리할 수 있습니다. 예를 들어, 이전 명령도 이렇게 쓸 수 있습니다.
./snort-d-v–e
같은 효과를 얻을 수 있습니다.
3. 패키지 로깅 모드
; 하지만 디스크에 패킷을 기록하려면 레코드 디렉토리를 지정해야 합니다. 그러면 snort 는 자동으로 패키지 레코드 모드로 들어갑니다.
./snort -dev -l ./log
물론 현재 디렉토리 아래에' log' 라는 이름이 있다고 가정합니다 이 디렉토리가 없으면 snort 가 종료되고 오류 메시지가 반환됩니다. Snort 가 이 모드로 실행되면 캡처된 모든 패킷을 수집하고 패킷에 있는 한 호스트의 IP 주소를 기준으로 해당 디렉토리에 배치합니다. < P > 단순히' -l' 옵션을 지정하면 snort 가 원격 컴퓨터의 주소를 패킷이 저장되는 디렉토리로 사용하거나 로컬 호스트의 주소를 사용하는 경우가 있습니다. 로컬 네트워크를 비교하기 위해 snort 로컬 네트워크에 대한 정보를 알려야 합니다.
../snort-dev-L. /log-h 192.168.1./24
이 지시문은 snort 를 들어오는 모든 패키지는 192.168.1 호스트가 아닌 원격 호스트의 주소로 이름이 지정된 레코드 폴더의 해당 하위 폴더에 기록됩니다. 두 호스트가 모두 로컬 네트워크에 있는 경우 두 개의 중간 및 높은 포트 번호를 기준으로 기록하고 포트 번호가 같으면 소스 주소를 사용하여 기록합니다. < P > 고속 네트워크에 있거나 향후 분석을 위해 패킷을 기록하기 위해 더 작은 형식을 사용하려는 경우 "이진 모드" 를 사용하여 기록하는 것을 고려해 볼 수 있습니다. 이진 모드는 "tcpdump 형식" 을 사용하여 지정된 디렉토리의 단일 이진 파일에 패킷을 기록합니다.
../snort-L./log–b
명령줄의 변경 사항을 확인합니다. 이진 모드는 모든 데이터를 단일 파일에 기록하고 출력 디렉토리 구조를 정의할 필요가 없기 때문에 더 이상 로컬 네트워크를 지정할 필요가 없습니다. 또한, 더 이상 세부 (verbose) 모드를 사용하고 -d/-e 스위치 매개변수를 지정할 필요가 없습니다. 바이너리 모드에서 모든 패킷이 일부 부분이 아닌 기록됩니다. 이진 패킷 로깅 모드로 들어가려면 두 가지 점만 하면 됩니다. 하나는 명령줄에서 -l 스위치를 사용하여 로그 디렉토리를 지정하는 것이고, 다른 하나는 -b 스위치를 사용하여 ASCII 문서 모드 대신 이진 모드를 선택하여 패키지 데이터를 기록하는 것입니다. < P > 패킷이 바이너리 파일로 기록되는 경우 tcpdump 바이너리 형식을 지원하는 스니퍼를 사용하여 tcpdump 또는 ethereal 과 같은 파일에서 패킷 정보를 읽을 수 있습니다. Snort 는 -r 스위치를 사용하여 재생 모드로 들어가 기록된 패킷 정보를 읽을 수도 있습니다. Snort 는 모든 실행 모드에서 tcpdump 형식의 파일을 받아들이고 처리할 수 있습니다. 예를 들어, 스니퍼 모드에서 이진 파일을 분석하고 패킷 정보를 화면에 인쇄하려는 경우 다음과 같은 명령을 사용할 수 있습니다.
./snort -dv -r packet.log
다음과 같은 다양한 방법으로 이진 파일의 데이터를 조작할 수 있습니다. 예를 들어, 로그 파일에서 ICMP 패킷 정보만 보려면 명령줄에서 BPF 필터를 간단히 지정할 수 있습니다.
./snort -dvr packet.log icmp
더 많은 BPF 사용 정보 해당 man 정보를 참조하십시오.
4. 네트워크 침입 탐지 모드
다음 명령을 사용하여 snort 의 네트워크 침입 탐지 모드를 활성화할 수 있습니다 (이 모드에서는 모든 패킷을 기록하지 않아도 됨).
./snort 이렇게 하면 각 패킷이 snort.conf 파일에 정의된 규칙 세트를 사용하여 감지되고 파일에 정의된 동작에 따라 처리됩니다. 프로그램에 대한 출력 디렉토리를 지정하지 않으면 기본 디렉토리인' /var/log/snort' 가 사용됩니다.
이전 명령줄 형식을 사용하여 NIDS 모드로 들어가는 속도가 약간 느리면 "-v" 스위치를 제거하여 효율성을 높일 수 있다는 점에 유의해야 합니다. 화면에 데이터를 출력하는 속도가 매우 느리기 때문에 데이터를 표시하는 동안 패킷 손실이 발생할 수 있습니다. < P > 마찬가지로 대부분의 어플리케이션에서는 데이터 링크 계층 헤더 정보를 기록하는 것보다 낫지 않으므로 "-e" 스위치도 제거할 수 있습니다. 마지막 명령은 다음과 같습니다.
./snort-d-h 192.168.1./24-L./log-c snort.conf
이 명령은 snort 를 구성할 수 있습니다 ASCII 형식 로깅 규칙에 지정된 패키지 정보를 해당 디렉토리 구조 (패키지 로깅 모드의 디렉토리 구조와 일치) 로 기록합니다.
4.1 NIDS MODE 출력 옵션
snort 의 NIDS 모드에서 구성할 수 있는 여러 가지 출력 방법이 있습니다. 기본 레코드 및 경고는 ASCII 형식으로 기록되며 "전체" 경고를 사용합니다. Full alert mechanism 은 모든 헤더 정보를 출력하고 그 뒤에 해당 경고 정보를 첨부합니다. 물론 명령줄에서 다양한 경고 출력 모드와 두 가지 로깅 형식을 설정할 수 있습니다. 패키지 정보는 기본 ASCII 형식으로 기록하거나 명령행 스위치 "-b" 를 사용하여 이진 파일로 기록할 수 있습니다. 패키지 로깅 정보를 완전히 비활성화하려면 명령행 스위치 "-N" 을 사용할 수 있습니다.
경고 모드는 비교적 복잡합니다. 명령줄에서 full, fast, socket, syslog, console, CMG, none 모드 등 다양한 경고 모드를 설정할 수 있습니다. 이 6 가지 모드는 명령행 스위치 "-A" 를 사용하여 설정할 수 있습니다. 자세한 내용은 다음과 같습니다.
u-a f.a.s.t. 빠른 경고 모드, 경고 정보 (시간, 경고 정보, 소스 및 대상 호스트의 IP 및 포트)
u -A full 경고 모드가 지정되지 않은 경우 기본 경고 모드입니다. 이 경고 모드
u -A unsock 을 사용하여 자동으로 경고 메시지를 다른 프로그램으로 전송 UNIX 소켓 인터페이스
u -A none 경고 끄기
u -A console 빠른 경고 정보를 콘솔 (화면)
u-로 인쇄 두 가지 기본 syslog 경고 수준은 LOG_AUTHPRIV 와 LOG_ALERT 입니다. 다른 syslog 로그 수준을 구성하려면 규칙 파일에서 출력 플러그인을 사용하여 설정할 수 있습니다 (자세한 내용은 snort.conf 파일 참조).
다음은
1, 기본 형식 (ASCII) 을 사용하여 syslog 에 경고 메시지를 전송하는 몇 가지 출력 구성 예입니다.
snort-c snort.conf-L./log-s Snort) 경고 메시지를 syslog 에 전송:
snort-c snort.conf-s-h 192.168.1./24
3, 이진 파일 형식 사용 Snort 를 통해 정보 기록:
snort-c snort.conf -b -A fast-l/var/snort
4.2 성능 구성
snort 운영 효율성을 높이려는 경우 패키지를 tcpdump 형식으로 기록하고 경고 정보를 적게 생성합니다. 예를 들어,
./snort -b -A fast -c snort-lib
이 구성에서 snort 는 1Mbps LAN 내 8Mbps 정상 트래픽에서 동시 다중 검색 및 도구를 감지할 수 있습니다. 이 구성에서는 2 로 기록됩니다 그런 다음' -r' 옵션과 기타 일반적인 옵션을 다시 사용하여 snort 를 실행하여 데이터 파일에서 일반 snort 형식의 데이터 정보로 구문 분석할 수 있습니다. 예:
../snort-d-c snort-lib-L./log-h 192.168.1./24-r snort.log < 멋지지 않나요?
4.3 기타 정보
snort 가 패키지에 규칙을 적용하는 기본 방식을 좋아하지 않는 사람들이 많습니다. Alert 기본 적용 방식에서는 먼저 경고 규칙, 통과 규칙, 로그 규칙을 사용합니다. 이 순서는 직관에 위배되지만 사용자가 많은 경고 규칙을 정의할 수 있도록 허용하는 것에 비해 잘못된 통과 규칙을 사용했기 때문에 모두 금지되는 것은 간단하고 효과적이다. 일부 사용자의 경우 여기에 "-o" 스위치를 제공하여 기본 규칙 적용 순서를 변경할 수 있습니다. 즉, pass 규칙, alert 규칙, log 규칙이 차례로 사용됩니다. 명령은 다음과 같습니다.
./snort -D-h 192.168.1./24-L./log-c snort.conf-o
5. Snort 를 다시 시작하기 위해 데몬에 신호 SIGHUP 을 보내려면 명령줄에서 snort 바이너리의 전체 경로를 사용해야 합니다. 예를 들어 다음과 같은 명령을 사용할 수 있습니다.
/usr/local/bin/snort-d-h 192.168.1./24-l/var/log/snog < P > 공개 * * * 메일 목록에 패키지 레코드 정보를 보내려면 "-O" 스위치를 사용해야 합니다. 이 스위치는 패키지에서 출력되는 IP 정보를 혼동합니다. 이를 통해 메일 목록에 있는 사용자가 관련 IP 정보를 알 수 없도록 쉽게 할 수 있습니다. 또한 "-O" 스위치와 "-h" 스위치를 함께 사용하면 로컬 네트워크의 호스트 주소만 혼동될 수 있습니다. 공격 호스트의 IP 주소를 사람들에게 보여 주는 것에 신경 쓰지 않는다면, 이 설정은 매우 효과적이다. 명령은 다음과 같습니다.
./snort-d-v-r snort.log-o-h 192.168.1./24
로그 파일에서 패킷 정보를 읽고
프로세스를 중지하지 않고 snort 패킷 통계를 보려면 snort 프로세스 ID 에 SIGUSR1 신호를 보내면 snort 는 snort 가 지켜줄 경우 화면에 통계를 표시합니다