본문 바로가기

Engineering/Network

snort inline 정리.... 시작

728x90
- snort 와 snort inline 의 차이점
snort 가 2.3.0RC1 버전부터 snort inline 기능을 메인 프로젝트에 포함시켰습니다. 그래서, snort inline 프로젝트와 차이점이 궁금했었습니다. 아래 링크는 차이점을 비교한 사이트입니다.

- linux 최신 커널과 bridge 관련 옵션을 설정후 커널 컴파일 해서 재부팅

- iptable 설치
# cd iptables-1.4.9
# make KERNEL_DIR=/usr/src/linux
# make install KERNEL_DIR=/usr/src/linux
# make install-devel

- libnfnetlink 설치
# cd libnfnetlink-1.0.0
# ./configure --with-kernel-/usr/src/linux --prefix=/usr
# make && make install

- libnetfilter_queue 설치
# cd libnetfilter_queue-1.0.0(1.0.0 버전은 /usr/include/libnetfilter_queue/libipq.h include 파일이 remove 되었습니다. snort-inline 버전이 2.6.1.5 였는데, 2007년에 작성되었고 컴파일시libipq.h파일이 반드시 필요합니다.) 
# cd libnetfilter_queue-0.0.17
# ./configure --prefix=/usr
여기서 다음과 같이 configure 에러가 나는 경우가 있습니다.

............
checking how to hardcode library paths into programs... immediate
appending configuration tag "F77" to libtool
checking for a BSD-compatible install... /bin/install -c
checking for pkg-config... no
checking for
LIBNFNETLINK
LIBNFNETLINK... configure: error: Cannot find libnfnetlink >= 0.0.16
make: *** No targets specified and no makefile found.  Stop.


첫번째 볼딕체의 pkg-config... no 는 pkg-config 를 설치하면 됩니다.
문제는 두번째 libnfnetlink 라이브러리를 못찾는 경우인데, 분명히 libnfnetlink 를 설치하고, LD_LIBRARY_PATH 에도 /usr/lib 를 추가하고, /usr/lib 에 파일들이 존재를 하는데도 저렇게 없다고 나옵니다.
# locate libnfnetlink.so
/usr/lib/libnfnetlink.so
/usr/lib/libnfnetlink.so.0
/usr/lib/libnfnetlink.so.0.2.0

열심히 구글링해도 문제점만 있지 해결 방법이 없더군요. 그래서 직접 configure 파일을 열어서 확인해본 결과 libnfnetlink 존재여부를 확인하는 방법이 pkg-config 를 사용하더군요.
"$PKG_CONFIG --exists --print-errors libnfnetlink"
실제 명령어를 실행하면 다음과 같은 에러가 발생합니다.
# pkg-config --exists --print-errors libnfnetlink
Package libnfnetlink was not found in the pkg-config search path.
Perhaps you should add the directory containing `libnfnetlink.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libnfnetlink' found

실제로 PKG_CONFIG_PATH 변수를 확인해보면 아무런 값이 설정이 안되어 있었습니다.
PKG_CONFIG_PATH 에 libnfnetlink.pc 파일이 존재하는 디렉토리를 추가하고, configure 를 실행하면 정상적으로 됩니다.
# find / -name "libnfnetlink.pc" -print
/usr/lib/pkgconfig/libnfnetlink.pc
/root/Prog/libnfnetlink-1.0.0/libnfnetlink.pc
# export PKG_CONFIG_PATH=/usr/lib/pkgconfig

- snort_inline 설치
# cd snort_inline-2.6.1.5
# ./configure --prefix=/usr --enable-nfnetlink

'Engineering > Network' 카테고리의 다른 글

libnetfilter_queue 라이브러리의 nfq_data structure 구조체  (0) 2011.01.25
ftp 정리  (0) 2010.11.05
unix socket 을 이용하는 예제  (0) 2010.06.24
linux 에서 fd_set MAX 변경  (0) 2010.06.14
채팅 서버 - epoll 버전  (0) 2010.06.14