*Barnyard2 [#e512d668]
[[Barnyard2:+https://github.com/firnsy/barnyard2]]
Snortが検出した不正侵入ログをMySQLへ書き出してくれるプログラム。
アーカイブパッケージのver0.2.xと、Gitで配布されているver2.1.xの二種類がある。
MySQLへの出力に対応しているのはGit版。
*crmsh [#jc2de6be]
[[Cluster Management Shell:+http://www.nongnu.org/crmsh/]]
[[GitHub crmsh:+https://github.com/crmsh/crmsh]]
H/A構成を作成するPacemaker+Corosyncの、EIP設定shellコマンド。
pcsと比べると設定出来る項目が多く、参考資料も多岐にわたる。
pcsの完成度が上がるまではcrmshを使う方が良い。
~
*インストール [#j7cdde73]
&size(16){&font(b){0. ビルドオプション};};
今回はGitからソースを取ってくるが、最終的にはconfigureをかけるのでレシピを作っておく。
 # vi configure.option
 =====
 --prefix=/usr/local/barnyard-2.1.13 \
 --with-mysql=/usr/local/mysql \
 --with-mysql-includes=/usr/local/mysql/include \
 --with-mysql-libraries=/usr/local/mysql/lib
~
&size(16){&font(b){1. インストール};};
今回はGitからソースを取ってくる。Gitコマンドが入っていない場合はyumとかapt-getで入れておく。
 # cd /usr/local/src
 # git clone "https://github.com/firnsy/barnyard2" barnyard
 # cd barnyard
*インストール [#i524b7e4]
&size(16){&font(b){1. ビルドインストール};};
crmshにはPythonからxmlを弄る為のライブラリが必要になる。
また、ビルドする際にはsysconfdirとlocalstatedirをCorosync/Pacemakerと合わせる必要がある。
 # yum install python-lxml
 # git clone https://github.com/crmsh/crmsh crmsh
 # ./autogen.sh
 # ./configure `cat configure.option`
 # ./configure --sysconfdir=/etc --localstatedir=/var
 # make
 # make install
 # cd /usr/local
 # ln -s /usr/local/barnyard-2.1.13 ./barnyard
~
init用にbarnyard2バイナリへのシンボリックリンクも追加する必要がある。
あと、Barnyard2用のMySQLユーザとテーブルは事前に作成しておく。
 # cd /usr/local/src/barnyard
 # cp rpm/barnyard2 /etc/init.d/barnyard2
 # cp rpm/barnyard2.config /etc/sysconfig/barnyard2
 # ln -s /usr/local/barnyard/bin/barnyard2 /usr/bin/barnyard2
 # ln -s /usr/local/barnyard/etc/barnyard2.conf /etc/snort/barnyard.conf
 # mysql -u "DBユーザ名" -p "DB名" < ./schemas/create_mysql
~
他には、Snortとの連携に必要なファイルを作成する。
 # touch /var/log/snort/barnyard2.waldo
~
&size(16){&font(b){2. Barnyard2のコンフィグ};};
※以下のメモでは変更した箇所のみを記載
 # vi /etc/init.d/barnyard2
*使い方 [#s478686a]
&size(16){&font(b){Peer to Peerクラスタリング};};
一番簡単で基本的な冗長構成。
2NICを使用するインターリンク構成も取れるが、下記では1NIC(共有NIC)で冗長構成を作る。
-共有NICで手軽に冗長構成を取る・クラスタノードは2台(Node1,Node2)で、同一セグメント内で稼働させる
-フェイルオーバーは行う。フェイルバックは行わない
-スプリットブレイン対策(WatchDog,STONITH)は行わない
-仮想IPは可変型(IPaddr2)で行う。ちなみにMACアドレス型(IPaddr)ではNICにaliasを張る形で動作する
&ref(lb_case_001.png,left,nowrap,40%);
 ルール名:LoadBalancer_001
 仮想IP:192.168.0.10/24
 NIC:eth0
 =====
 6 :: # chkconfig: 2345 85 15
 12 :: # pidfile: /var/lock/subsys/barnyard2.pid <- 削除する
 20 :: [ -x /usr/local/snort/bin/snort ] || exit 1
 36 :: PIDFILE="/run/barnyard2-$INT.pid"
 37 :: #ARCHIVEDIR="$SNORTDIR/$INT/archive"
 38 :: WALDO_FILE="$SNORTDIR/barnyard2.waldo"
 39 :: BARNYARD_OPTS="-D -c $CONF -d $SNORTDIR -w $WALDO_FILE -f $LOG_FILE -X $PIDFILE $EXTRA_ARGS"
~
 # vi /etc/sysconfig/barnyard2
 =====
 2 :: # LOG_FILE="snort-barnyard.log"
~
 # vi /etc/snort/barnyard.conf
 =====
 54 :: config logdir: /var/log/snort
 70 :: config hostname: localhost
 71 :: config interface: eth0
 141 :: config waldo_file: /var/log/snort/barnyard2.waldo
 354 :: output database: log, mysql, user="DBユーザ名" password="DBパスワード" dbname="DB名" host="DBの鯖IPアドレス"
 # crm
 crm(live)# configure
 crm(live)configure# primitive LoadBalancer_001 ocf:heartbeat:IPaddr2 params ip="192.168.0.10" cidr_netmask="24" nic="eth0"
 crm(live)configure# property no-quorum-policy="ignore" stonith-enabled="false"
 crm(live)configure# node Node1
 crm(live)configure# node Node2
 crm(live)configure# commit
 crm(live)configure# exit