2016년 8월 29일 월요일

[Snorby] Installing Snorby for Snort

Snorby


Snorby는 루비 스크립트로 작성된 웹 응용 프로그램이다. 바이너리 출력 형식으로 이벤트를 기록한다. Snorby는 침입탐지 시스템인 Snort, Suricata, Sagan을 통합한 프로그램이다. 개인 및 기업 모두 사용을 위한 무료, 오픈 소스를 제공하여 네트워크 모니터링 이용에 높은 경쟁력을 만들 수 있다.

Snorby 설치


테스트 환경
CentOS 6.5

Snorby를 설치 하기 전에 Ruby, Rails, ImageMagick, Wkhtmltopdf가 필요하다.
  • Ruby: 동적 객체 지향 스크립트 프로그래밍 언어
  • Rails: 웹 애플리케이션 개발을 위한 프레임워크
  • ImageMagick: 이미지를 새로 만들거나 수정하는데 사용되는 커맨드라인 기반의 오픈소스 소프트웨어
  • Wkhtmltopdf: HTML 문서를 PDF로 변환해주는 프로그램
# yum -y groupinstall "Development Tools"

# yum -y install  openssl-devel readline-devel libxml2-devel libxslt-devel mysql mysql-devel mysql-libs mysql-server urw-fonts libX11-devel libXext-devel qconf fontconfig-devel libXrender-devel unzip

ImageMagick

# cd /tmp
# wget wget ftp://ftp.fifi.org/pub/ImageMagick/ImageMagick-6.9.5-8.tar.gz
# tar -xvf ImageMagick-6.9.5-8.tar.gz
# cd ImageMagick-6.9.5-8
# ./configure
# make
# make install
# ldconfig /usr/local/lib

Wkhtmltopdf

# yum -y install xz urw-fonts libXext openssl-devel libXrender
# wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm
# rpm -Uvh wkhtmltox-0.12.2.1_linux-centos6-amd64.rpm


rpm 설치 도중 에러가 발생할 수 있다.

xorg-x11-fonts-Type1, xorg-x11-fonts-75dpi 패키지가 없어서 나타나는 문제이다. 
yum을 이용해서 설치를 하면 해결된다.

# yum -y install xorg-x11-fonts-Type1
# yum -y install xorg-x11-fonts-75dpi 

다시 설치를 한후 테스트를 진행한다.


위와 같은 결과가 나타나면 설치가 성공적으로 이루어진것이다.

Ruby

# yum -y install libxslt-devel libxml2-devel gdbm-devel libffi-devel zlib-devel openssl-devel libyaml-devel readline-devel curl-devel openssl-devel pcre-devel git memcached-devel valgrind-devel mysql-devel ImageMagick-devel


패키지 설치 도중 문제가 발생하였다. yum-plugin-fastestmirror가 필요해서 발생한 문제이다. 

# yum -y install yum-install-fastestmirror 

yum-install-fastestmirror 설치 후 다시 패키지를 설치한다.


# yum downgrade libyaml-0.1.3-4.el6_6

버전을 낮쳐주고, 다시 패키지 설치를 진행한다.

루비 설치를 쉽게 할 수 있도록 도와주는 서비스로 RVM(Ruby Version Manager)이라는 것이 있다. 이 RVM은 루비의 설치 과정을 간소화시켜주는 동시에, 루비의 여러 버전을 동시에 관리하는 것이 가능하도록 도와주는 프로그램이다. 

다음 링크에 접속한다.

https://rvm.io



위 그림과 같이, ‘Install RVM:’ 하단에 있는 명령어를 ‘$’ 다음 부분부터 맨 끝까지 드래그하여 블록 지정 후 복사한 후 터미널에 입력한다.

# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
# \curl -sSL https://get.rvm.io | bash -s stable 


RVM 설치가 완료되었다.

# source /etc/profile.d/rvm.sh

RVM 환경을 적용한다.

# rvm install 2.2.2
# rvm use 2.2.2

버전이 낮으면 설치가 안될수도 있기에 Ruby 2.2.2 버전을 설치하였다.


위와 같이 나오면 제대로 설치된 것이다.

# rvm rubygems current

# gem install rails


위와 같이 나오면 제대로 설치된 것이다.

Snorby

# yum -y install httpd
# service httpd start
# chkconfig --add httpd
# chkconfig httpd on

# gem install bundler

# cd /var/www/html
# mkdir snorby
# cd snorby
# wget -O snorby.zip --no-check-certificate https://github.com/Snorby/snorby/archive/master.zip
# unzip snorby.zip
# mv snorby-master/* /var/www/html/snorby

Create a database for Snorby

# mysql -u root -p
Enter password:
mysql > create database snorby;
mysql > grant all privileges on snorby.* to snorby@localhost identified by 'snorby';
mysql > flush privileges;
mysql > exit

# cp config/database.yml.example config/database.yml
# vi config/database.yml



Gemfile

# vi Gemfile

gem 'rake', '0.9.2' 를 gem 'rake', '> 0.9.2' 으로 변경한다.

gem 'thin'을 추가한다.

gem 'thin'을 주석 처리 한다.

Gemfile.lock

rake (0.9.2)를 rake (0.9.2.2)로 변경한다.

Install Snorby

# cp config/snorby_config.yml.example config/snorby_config.yml

# yum -y install java-1.6.0-openjdk-devel java-1.6.0-openjdk
# yum -y install httpd-devel apr-devel apr-util-devel
# bundle install
# gem update --system
# RAILS_ENV=production bundle exec rake snorby:setup

Test the installation:

# rails server thin -e production

실행 후 브라우저에서 http:// 해당 IP :3000 에 접속하면 아래와 같은 화면이 나타난다.


Change the ownership

# chown -R apache:apache /var/www/html/snorby

Modify the barnyard2.conf

# vi /etc/snort/barnyard2.conf


Modify iptables

# iptables -I INPUT -p tcp --dport 80 -m state --state=NEW,ESTABLISHED,RELATED -j ACCEPT
# /sbin/service iptables save

Snorby Testing

# rails server thin -e production 실행 시





No time_zone specified in snorby_config.yml; detected time_zone: UTC가 나타났다.

# vi /var/www/html/snorby/config/snorby_config.yml 



time_zone: 'Asia/Seoul' 을 추가해준다.


No time_zone specified in snorby_config.yml; detected time_zone: UTC 가 나타나지 않는다.

# rails server thin -e production

# snort -c /etc/snort/snort.conf

# barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort/ -f snort.u2

snorby, snort, barnyard2 를 모두 실행시킨다.


http://해당 IP:3000 으로 들어가면 snorby 접속 화면이 나온다. 아래의 계정 정보를 이용하여 로그인을 한다.

Email: snorby@example.com
Password: snorby 


다른 호스트에서 ping을 보내게 되면 위와 같은 화면을 확인할 수 있다.

Snoby에서 패킷 정보를 수집하는 도중 다른 Snorby 페이지 view로 이동시 아래와 같은 에러를 확인할 수 있다. 


# vi /var/www/html/snorby/log/production.log


로그를 확인해보면 Cannot allocate memory를 할 수 없다는 구문을 확인할 수 있다.

Swap 메모리를 할당하지 않을 경우 위와 같은 에러가 발생할 수 있다.
Swap 할당을 하고 다시 Snorby를 실행하면, 패킷 수집 중에도 다른 페이지로 이동할 수 있다.

[ 출처 ]

https://www.packet6.com/installing-snorby-for-snort/

댓글 없음:

댓글 쓰기