『OSSEC』はログ監視やファイルの改ざん検知、Rootkitの検出などが行える、WindowsやLinuxで利用できるホスト型IDSだ。 今回はこの『OSSEC』をCentOS 7にサーバ・エージェント方式で導入し、エージェントを導入したサーバへの侵入検知を行う。 OSSECには公式のWebコンソールも一応用意されているのだが、あまりコミットされてないし2016年12月時点では脆弱性もそのままっぽいので今回は利用しない。

なお、OSSECのサーバ⇔クライアント間通信ではUDPの1514ポートを利用するので、間にファイアウォールなどがあるようであれば事前に開放しておくこと。

1.OSSEC サーバ・エージェントのインストール

1-1.OSSEC サーバのインストール

まず事前対応としてfirewalldが動作しているようであれば、以下のコマンドを実行して1514ポートを開放する。

firewall-cmd --permanent --zone=public --add-port=1514/udp
firewall-cmd --reload

次にサーバ側で以下のコマンドを実行しリポジトリを追加、OSSECのパッケージを導入する。

wget -q -O - http://www.atomicorp.com/installers/atomic | sh
[root@BS-PUB-SEC ~]# wget -q -O - http://www.atomicorp.com/installers/atomic | sh

Atomic Free Unsupported Archive installer, version 3.1

BY INSTALLING THIS SOFTWARE AND BY USING ANY AND ALL SOFTWARE
PROVIDED BY ATOMICORP LIMITED YOU ACKNOWLEDGE AND AGREE:

THIS SOFTWARE AND ALL SOFTWARE PROVIDED IN THIS REPOSITORY IS
PROVIDED BY ATOMICORP LIMITED AS IS, IS UNSUPPORTED AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ATOMICORP LIMITED, THE
COPYRIGHT OWNER OR ANY CONTRIBUTOR TO ANY AND ALL SOFTWARE PROVIDED
BY OR PUBLISHED IN THIS REPOSITORY BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.

For supported software packages please contact us at:

  sales@atomicorp.com

Do you agree to these terms? (yes/no) [Default: yes] <span style="color: #0000ff;">[[Enter]]</span>

Configuring the [atomic] repo archive for this system

Installing the Atomic GPG keys: OK

Downloading atomic-release-1.0-21.el7.art.noarch.rpm: Preparing...                             ################################# [100%]
Updating / installing...
   1:atomic-release-1.0-21.el7.art    ################################# [100%]
OK

Enable repo by default? (yes/no) [Default: yes]: <span style="color: #0000ff;">[[Enter]]</span>

The Atomic repo has now been installed and configured for your system
The following channels are available:
  atomic          - [ACTIVATED] - contains the stable tree of ART packages
  atomic-testing  - [DISABLED]  - contains the testing tree of ART packages
  atomic-bleeding - [DISABLED]  - contains the development tree of ART packages

Serverとして動作させるためのパッケージを導入、サービスを起動する。

yum install -y ossec-hids ossec-hids-server
/etc/init.d/ossec-hids start

1-2.OSSEC エージェントのインストール

次に監視対象となるノードにOSSEC エージェントをインストールする。 OSSEC サーバと同様に、リポジトリの追加を行う。

wget -q -O - http://www.atomicorp.com/installers/atomic | sh

エージェントパッケージを導入する。

yum install -y ossec-hids ossec-hids-client

エージェントの設定ファイルを変更し、OSSEC サーバに関する情報を記述してやる。

/var/ossec/etc/ossec.conf
<!-- OSSEC example config --> <ossec_config> <client> <server-ip>OSSEC サーバのIPアドレス</server-ip> </client> <syscheck> <!-- Frequency that syscheck is executed -- default every 2 hours --> <frequency>7200</frequency> <!-- Directories to check (perform all possible verifications) --> <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories> <directories check_all="yes">/bin,/sbin</directories> <!-- Files/directories to ignore --> <ignore>/etc/mtab</ignore> <ignore>/etc/mnttab</ignore> <ignore>/etc/hosts.deny</ignore> <ignore>/etc/mail/statistics</ignore> <ignore>/etc/random-seed</ignore> <ignore>/etc/adjtime</ignore> <ignore>/etc/httpd/logs</ignore> <ignore>/etc/utmpx</ignore> <ignore>/etc/wtmpx</ignore> <ignore>/etc/cups/certs</ignore> </syscheck> <rootcheck> <rootkit_files>/var/ossec/etc/shared/rootkit_files.txt</rootkit_files> <rootkit_trojans>/var/ossec/etc/shared/rootkit_trojans.txt</rootkit_trojans> </rootcheck> <localfile> <log_format>syslog</log_format> <location>/var/log/messages</location> </localfile> <localfile> <log_format>syslog</log_format> <location>/var/log/secure</location> </localfile> <localfile> <log_format>syslog</log_format> <location>/var/log/maillog</location> </localfile> <localfile> <log_format>apache</log_format> <location>/var/log/httpd/error_log</location> </localfile> <localfile> <log_format>apache</log_format> <location>/var/log/httpd/access_log</location> </localfile> </ossec_config>

2. OSSECのサーバ・エージェント間の連携を行う

OSSECサーバ側でエージェントの登録とエージェント側に設定する鍵ファイルを発行する。 以下のコマンドを実行して対話式に設定を行っていく。

/var/ossec/bin/manage_agents
[root@BS-PUB-SEC ~]# /var/ossec/bin/manage_agents

****************************************
* OSSEC HIDS v2.8.3 Agent manager.     *
* The following options are available: *
****************************************
   (A)dd an agent (A).
   (E)xtract key for an agent (E).
   (L)ist already added agents (L).
   (R)emove an agent (R).
   (Q)uit.
Choose your action: A,E,L,R or Q: <span style="color: #0000ff;">A #(エージェントの登録)</span>

- Adding a new agent (use '\q' to return to the main menu).
  Please provide the following:
   * A name for the new agent: <span style="color: #0000ff;">BS-PUB-CENT7-01</span>
   * The IP Address of the new agent: <span style="color: #0000ff;">192.168.100.XXX</span>
   * An ID for the new agent[001]: <span style="color: #0000ff;">[[Enter]]</span>
Agent information:
   ID:001
   Name:BS-PUB-CENT7-01
   IP Address:172.20.100.118

Confirm adding it?(y/n): <span style="color: #0000ff;">y</span>
Agent added.

****************************************
* OSSEC HIDS v2.8.3 Agent manager.     *
* The following options are available: *
****************************************
   (A)dd an agent (A).
   (E)xtract key for an agent (E).
   (L)ist already added agents (L).
   (R)emove an agent (R).
   (Q)uit.
Choose your action: A,E,L,R or Q: <span style="color: #0000ff;">E #(鍵ファイルの発行)</span>

Available agents:
   ID: 001, Name: BS-PUB-CENT7-01, IP: <span style="color: #0000ff;">192.168.100.XXX</span>
Provide the ID of the agent to extract the key (or '\q' to quit): <span style="color: #0000ff;">001</span>

Agent key information for '001' is:
<span style="color: #ff0000;">MDAxIEJTLVBVQi1DRU5UNy0wMSAxNzIuMjAuMTAwLjExOCA2NGU4NTk1OGI4N2I1NjI2MmI1M2I3OTU5NGRiMTU5Njg2MmE0NWZjNmFlMDhjYjM5ZGZhMDk1YzFmZDBiNDRi</span>

** Press ENTER to return to the main menu.

****************************************
* OSSEC HIDS v2.8.3 Agent manager.     *
* The following options are available: *
****************************************
   (A)dd an agent (A).
   (E)xtract key for an agent (E).
   (L)ist already added agents (L).
   (R)emove an agent (R).
   (Q)uit.
Choose your action: A,E,L,R or Q: <span style="color: #0000ff;">Q</span>

** You must restart OSSEC for your changes to take effect.

manage_agents: Exiting ..

OSSECサーバ側でエージェント登録・鍵の発行が完了したら、OSSEC エージェント側で鍵のインポート(といっても、鍵文字列を張り付けるだけだが…)およびエージェントサービスの起動を行う。 まず、以下のコマンドで鍵のインポートを行う。

/var/ossec/bin/manage_client
[root@BS-PUB-CENT7-01 ~]# /var/ossec/bin/manage_client

****************************************
* OSSEC HIDS v2.8.3 Agent manager.     *
* The following options are available: *
****************************************
   (I)mport key from the server (I).
   (Q)uit.
Choose your action: I or Q: <span style="color: #0000ff;">I</span>

* Provide the Key generated by the server.
* The best approach is to cut and paste it.
*** OBS: Do not include spaces or new lines.

Paste it here (or '\q' to quit): <span style="color: #0000ff;">MDAxIEJTLVBVQi1DRU5UNy0wMSAxNzIuMjAuMTAwLjExOCA2NGU4NTk1OGI4N2I1NjI2MmI1M2I3OTU5NGRiMTU5Njg2MmE0NWZjNmFlMDhjYjM5ZGZhMDk1YzFmZDBiNDRi</span>

Agent information:
   ID:001
   Name:BS-PUB-CENT7-01
   IP Address:192.168.100.XXX

Confirm adding it?(y/n): <span style="color: #0000ff;">y</span>
Added.
** Press ENTER to return to the main menu.

****************************************
* OSSEC HIDS v2.8.3 Agent manager.     *
* The following options are available: *
****************************************
   (I)mport key from the server (I).
   (Q)uit.
Choose your action: I or Q: <span style="color: #0000ff;">Q</span>

** You must restart OSSEC for your changes to take effect.

manage_agents: Exiting ..

最後にサーバ・エージェントともにサービス再起動を行う。

/etc/init.d/ossec-hids start

これで、サーバ・エージェントの設定は完了。 この時点でサーバ側がちゃんとエージェントを認識しているのか確認してみよう。

以下のコマンドで、ちゃんとサーバ側でエージェントを認識しているかどうか確認できる。 StatusがActiveになっていれば問題ない。

/var/ossec/bin/agent_control -i エージェントID
[root@BS-PUB-SEC ~]# /var/ossec/bin/agent_control -i 001

OSSEC HIDS agent_control. Agent information:
   Agent ID:   001
   Agent Name: BS-PUB-CENT7-01
   IP address: 192.168.100.XXX
   Status:     Active

   Operating system:    Linux BS-PUB-CENT7-01.blacknon.local 3.10.0-327.28.2..
   Client version:      OSSEC HIDS v2.8.3 / 6322ee12ea9a05951f97923a8341a01a
   Last keep alive:     Thu Dec 29 00:37:41 2016

   Syscheck last started  at: Unknown
   Rootcheck last started at: Unknown

これで、ひとまずOSSECのサーバ・エージェントのインストールと設定は完了。 今の段階だとデフォルトの監視設定しかできていないので、次回以降にいろいろと設定をいじってみることにする。


参考