2017年4月2日日曜日

オープンソースのログ統合管理ツール「Graylog」の仮想アプライアンスをインストールしてみた

昨年、SIEM(Security Information Event Management)を検討する機会があり、SplunkやMcAfee SIEMの評価版を自宅の検証環境に入れて使っていた。当たり前だが、SplunkもMcAfee SIEMも評価版は使用日数に制限があり(Splunkは60日、McAfee SIEMは30日)、長期的に利用することは不可能であった。そこで、オープンソースでログを統合管理するツールがないかと探していたら、「Graylog」を発見した。

試しにGraylogの仮想アプライアンスをインストールしてみて使ってみたら、なかなか有用なツールと感じた。本記事ではGraylogの仮想アプライアンスのインストールと初期設定の手順を記載する。

Graylogの入手とインストール

Graylogのインストーラは以下から入手する。2017年4月時点の最新バージョンは、2.2.2となっていた。

Graylog - Download and Install
https://www.graylog.org/download

今回はVMware ESXi上に展開するので、「OVA」ファイルをダウンロードする。

OVAファイルの展開は、vSphere Clientにて「ファイル」→「OVFテンプレートのデプロイ」にて実施する。設定項目はデフォルトで問題ない。私の場合は、ディスク容量の削減のため、ディスクの種類を「Thin Provision」にしている。


OVAテンプレートのデプロイが完了する。仮想アプライアンスのリソースはCPU2コア、メモリ4GBとなっているが、ここもデフォルトのままで問題ない。最初、リソース削減のため、CPUを1コアにしてみたが、CPU使用率が100%で張り付いたりしたので、1コアではちょっときつい模様。


問題なければパワーオンする。起動時にvSphere Clientにて以下のメッセージが表示されるが、「はい」を選んで「OK」を押しておけば問題なく起動する。

------------------------------
Virtualized Inter-VT-x/EPT is incompatible with this virtual machine configration.
仮想msg.intel.hvhwnnuを使わずに続行しますか?
------------------------------


Graylogの仮想アプライアンスは、ubuntu 14.04がベースとなっている。起動時はNICのDHCP機能が有効になっているので、IPアドレスの取得待ちに少し時間を要するが、ログインプロンプトが表示されるまで待機する。なお、ログインプロンプト表示の際に、以下メッセージが表示されている場合があるが、同じくDHCPでIPが取得できなかったことに起因するメッセージなので無視してOK。

------------------------------
Your appliance came up without a configured IP address. Graylog is probable not running correctly!
------------------------------


インストール後の初期設定

Graylogの初期設定を実施し、Web GUIにログインできるようにする。

ログインとパスワード変更

まずはログインとなる。初期パスワードは以下の通り。

 ユーザー名:ubuntu
 パスワード:ubuntu

ログインしたら、とりあえずパスワードを変更しておく。

$ passwd
------------------------------
Changing password for ubuntu.
(current) UNIX password:<現在のパスワード>
Enter new UNIX password:<新パスワード>
Retype new UNIX password:<新パスワード>
passwd: password updated successfully
------------------------------

IPアドレス設定

IPアドレスの設定はubuntuと同じ方式で設定すればよい。viで以下ファイルを開き編集する。なお、ubuntuなので、頭にsudoを付けて編集しているが、毎回sudoを付けるのが面倒な場合は"sudo su -"でrootになってしまってもよい。

$ sudo vi /etc/network/interfaces
------------------------------
# The primary network interface
auto eth0
#iface eth0 inet dhcp       ←コメントアウト
#pre-up sleep 2         ←コメントアウト

iface eth0 inet static      ←追加 (静的IPアドレス付与)
address 192.168.11.151      ←追加 (IPアドレス)
netmask 255.255.255.0      ←追加 (サブネットマスク)
gateway 192.168.11.1       ←追加 (デフォルトゲートウェイ)
dns-nameservers 192.168.11.1   ←追加 (DNS)
------------------------------

設定反映のためにインターフェースの落とし上げを行う。

$ sudo ifdown eth0
$ sudo ifup eth0

設定を確認しておく。

$ ifconfig
------------------------------
ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:3a:6a:6f
          inet addr:192.168.11.151  Bcast:192.168.11.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe3a:6a6f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
------------------------------

Graylogの初期設定

Graylogのアプリケーションとしての初期設定は以下2つのコマンドを実行するのみ。

まずは、Web GUIのログイン時のパスワードを変更する。

$ sudo graylog-ctl set-admin-password <新パスワード>

次に、タイムゾーンを変更する。

$ sudo graylog-ctl set-timezone "Asia/Tokyo"

最後に設定反映のコマンドを実行するのだが、この際にapt-getが動作するようで、インターネットへの接続ができる状態で実行したほうがよい。プロキシ環境の場合は、以下の通りプロキシ設定を実施しておく。

$ export http_proxy="http://<プロキシのIPアドレス>:<プロキシのポート>/"
$ export https_proxy="http://<プロキシのIPアドレス>:<プロキシのポート>/"
$ export ftp_proxy="http://<プロキシのIPアドレス>:<プロキシのポート>/"
$ export ←確認コマンド
------------------------------
declare -x ftp_proxy="http://<プロキシのIPアドレス>:<プロキシのポート>/"
declare -x http_proxy="http://<プロキシのIPアドレス>:<プロキシのポート>/"
declare -x https_proxy="http://<プロキシのIPアドレス>:<プロキシのポート>/"
------------------------------

設定反映のコマンドを実行する。このコマンドは少々時間がかかる。プロキシ設定の環境変数を引き継ぐ必要があるので、"sudo"ではなく"sudo -E"で実行すること。

$ sudo -E graylog-ctl reconfigure

open-vm-toolsのインストール

仮想アプライアンスなのに、なぜかopen-vm-toolsが入っていないなので、apt-getでインストールする。

$ sudo -E apt-get update
$ sudo -E apt-get install open-vm-tools

GraylogのWeb GUIにログイン

以上で初期設定は終わりとなる。ブラウザからhttpにて仮想アプライアンスのIPアドレスを指定すると、ログイン画面が表示される。


以下のユーザー名、パスワードでログインする。

 ユーザー名:admin
 パスワード:<先ほど設定したパスワード>

以下のような画面が表示されればログイン成功。


LinuxのSyslogを転送させてみる

Graylogは初期状態からsyslog転送をUDP/514ポートで受け付ける状態になっているので、試しにLinuxサーバーからSyslogを転送させてみる。

Syslog送信元サーバーで、/etc/rsyslog.confの最後に以下設定を追加する。
※192.168.11.151はGraylogのIPアドレスに適宜変更

# vi /etc/rsyslog.conf
------------------------------
*.* @192.168.11.151:514;RSYSLOG_SyslogProtocol23Format
------------------------------

設定反映のため、rsyslogサービスをリスタートする。

# systemctl restart rsyslog
# systemctl status rsyslog   ←確認
------------------------------
● rsyslog.service - System Logging Service
   Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
   Active: active (running) since 日 2017-04-02 07:22:34 JST; 5s ago
 Main PID: 5493 (rsyslogd)
   CGroup: /system.slice/rsyslog.service
           mq5493 /usr/sbin/rsyslogd -n

 4月 02 07:22:34 t3023ce72 systemd[1]: Starting System Logging Service...
 4月 02 07:22:34 t3023ce72 systemd[1]: Started System Logging Service.
------------------------------

これで、GraylogのWeb GUIにて、「Search」をクリックすると、ログが表示されるはず。


以上でインストールと初期設定は終了となり、とりあえずログを溜めて検索する機能は利用可能になる。Graylogには各種ログを解析するための「Content Pack」と呼ばれる、様々なログに対応したプラグインが提供されているので、今後それらを追加してログの分析ができるようにしていきたい。