前回、公開していた内容は Snort-2.3.3 でした。前前回含め、このコンテンツは過去に4回程、新しく原稿を書き直しています。(2.1 / 2.3 / 2.4.x) 今回使用した Snort のバージョンは 2.6 であり、このバージョンから本家で rpm パッケージが提供されています。
今回は、ソースからのコンパイルと、src.rpm (ソースパッケージ)を利用した二通りの方法を紹介します。初めての方やパッケージ管理で行いたい方は、src.rpm の方が分かり易いかもしれません。
Snort は、過去に脆弱性が報告されています。特にパケットを監視しアクションを起こすツールのセキュリティホールは、深刻な影響を及ぼす可能性も考えてください。監視システムがセキュリティホールになっては本末転倒です。
tar ボールからのインストールよりは、rpm からの方がインストール手順を簡略化出来ます。また、rpm の出来も現状ではイマイチのように思います。rpm を利用したパッケージのアップデートは注意が必要かもしれません。
ソースからインストールする場合でアップグレードする場合は、一度ディレクトリをリネイムするなどして行った方が確実にコンパイルできます。(以前、コンパイルオプションが有効にならずとらぶった経験があるため)
ここでは、MySQL データベースにログを出力(アーカイブ化)、ACID (PHPプログラム)によりブラウザで視覚的に統計を閲覧できるようにします。そのため、Webサーバ、PHP 、MySQL データベースサーバは既に構築済みである事が条件になります。
PHP経由でMySQL が操作できる必要があります。
また、Swatch を併用したメールアラートについても触れていますが、Swatch 導入については触れていません。導入については、以下で説明しています。
関連 => ログ自動監視ツールを導入する~Swatchについて
ここで構築する IDS 用件を満たすために必要なパッケージは以下の通りです。 yum 等でインストールしておいてください。 また、FrexResp に必要な libnet10 は、ver 1.0.2a にバージョンが限定されるので注意して下さい。
パケットキャプチャライブラリ
yum を用いたインストールは以下のように行います。同じ手順で、pcre / pcre-devel / libpcap もインストールしておいてください。
Snort ログ出力に必要なデータベース、アカウントを作成する必要がありますが、ブラウザ経由でMySQL を管理できる phpMyAdmin が便利です。 phpMyAdmin が利用できる環境であれば、ACID のセットアップも容易になります。MySQL をコマンドで操作するのはちょっと、という方は、以下で紹介しています。
関連 => MySQLをGUIで操作する (phpMyAdminを導入)
FedoraCore や CentOS 公式リポジトリから提供される libnet-1.1.xx では、コンパイルがとおりません。libnetは Fesp を利用するのに必要です。1.0.2a が必要なので注意して下さい。また、libnet-1.0.2a をコンパイルする前に、libnet バイナリがインストールされている必要がありました。(snort-2.8.src.rpm の場合)
バイナリで入っていなければインストールしておきます。
libnet-1.0.2a は以下から入手できます。
2006年 11月上旬から中旬頃にセットアップしている時は、ダウンロードできましたが数日後、アクセスするとサーバがダウンしていました。12月現在もアクセスできないようです。適当に探して入手してください。
現在はサイトがリニューアルされて公開されています。
前述した通り、2.6.0 からソースパッケージが提供されています。tar (ソース)からのインストールに比べて手順が大幅に削減できます。起動スクリプトに関する設定も変わっていますのでこちらをお勧めします。
現在、FC6 / RHEL4 用のバイナリ(rpm) が提供されていますが、このサイトで紹介している CentOS 4 / 4.4 の場合、RHEL4 になります。(snort-2.6.1.3-1.RHEL4.i386.rpm / snort-mysql-2.6.1.3-1.RHEL4.i386.rpm )
また、rpm では flexresp は有効になっていませんので、src.rpm でコンパイルする必要があります。特に、flexresp を必要としない場合は rpm でセットアップを行ったほうがメンテナンスが楽です。
ソースパッケージをインストールします。
root 権限で行って下さい。
以下のファイルが展開されます。
現在の環境に適した rpm パッケージをビルドします。
指定可能なオプションは、snort.spec を参照して下さい。ここでは flexresp と MySQL が目的となります。尚、ここでは CentOS 4.4 クリーンインストール環境にて動作確認しました。ビルドには結構時間を要します。
コンパイルに成功すると ../RPMS/i686 にバイナリパッケージが生成されますのでインストールします。
rpm パッケージインストールの楽な点は、snort 起動に必要なユーザ、グループ作成、設定ファイル、起動スクリプト、ログローテートなど必要なファイルの配置が自動化できる点です。インストール手順を簡略化できますので、こちらをお勧めします。
以上で Snort のインストールは終了です。こちらへ進んで下さい。
ソースから Snort をインストールする場合です。従来の方法です。 rpm 版では、snort 起動に必要なユーザや起動スクリプトは自動で設定されますが、ソースからインストールする場合は、自分で準備する必要があります。
snort を実行させるためのユーザを作成します。snort は過去にも深刻なセキュリティホールが見つかっています。間違っても root 権限で動作させないようにして下さい。セキュリティを強化する存在が脅かしてしまっては本末転倒です。
root 権限で行って下さい。snort ユーザ、グループを作成します。
ソースを snort.org から入手します。
snort 起動に必要なファイルを配置します。
不要なファイルを削除しておきます。
ソースからインストールした場合、/usr/local/snort 下にインストールされます。付属の起動スクリプト、設定ファイルにパスの辻褄を合わせます。(追記)
起動スクリプトの準備を先に行なっておきます。
起動スクリプトを有効にしておきます。
run レベルを確認しておきます。
Snort センサーを設置する場所、ポリシーにもよりますがログファイルはあっという間に肥大化します。 ログローテートを行うスクリプトが用意されています。 ( rpm版は自動でセットアップされる )
ルールセットを配置するディレクトリを作成します。
ログを出力するディレクトリを作成します。
これら一連の作業は、rpm だと一発で作成されました。
Snort-2.6.0 から、ルールセットは含まれないようです。そのため、ルールセット(シグネチャファイル)を入手して適切に配置するまでは Snort を起動する事ができないので注意して下さい。 (ソースもパッケージも含まれません。)
インストール時に動作検証が行えないのは不便なので取敢えず起動できるように含めて欲しいです。改善を望みます。
取敢えず、起動に必要なルールを入手して配置してもいいのですが、ルールセット自動更新ツールである Oinkmaster を利用してルールセットを入手する方向で説明します。
次は、Snort の基本的な設定を行います。