Amazon Linux2にOSSECをインストールした（OSSEC-Agentインストール）

# はじめに
Amazon Linux2にOSSEC(Agent)をインストールしたときのメモ

この記事はOSSECのAgentをインストールしたときのメモです。
[OSSEC-Serverインストール](https://qiita.com/Diavolo/items/81ce9ecdfca2a7c6b1a4)の記事と合わせてお読みください。
理由：OSSECサーバで発行したkeyが必要なため。また、OSSECのServerをインストールしたサーバIPアドレスも必要です。

# 環境
AmazonLinux2 AMI(HVM)
Kernel 4.14
SSD Volume Type
64ビットx86
VCPUの数 1

# 参考ページ
https://github.com/ossec/ossec-hids
https://www.ossec.net/docs/docs/manual/installation/installation-requirements.html#redhat-centos-fedora-amazon-linux

# OSSECのインストール
## OSSECのインストールに必要なコンポーネントをインストール
```
# sudo su
# yum install zlib-devel pcre2-devel make gcc sqlite-devel openssl-devel libevent-devel systemd-devel
```
## OSSECのソースコードのアーカイブ（tar.gz）を/tmpにダウンロードして解凍
```
# cd /tmp
# wget https://github.com/ossec/ossec-hids/archive/refs/heads/master.zip
# ls
# master.zip
# unzip master.zip
# ls
# master.zip ossec-hids-master
```

## OSSECのインストールシェルを実行
```
# cd ossec-hids-master
# ls
# active-response  build.sh      CONFIG   CONTRIBUTORS  doc         etc      install.sh  README.md  SUPPORT.md
BUGS             CHANGELOG.md  contrib  debian_files  Dockerfile  INSTALL  LICENSE     src
# ./install.sh
```
### インストール言語を選択。今回は日本語なので、jpを入力。
```
# (en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]:jp
```

### 以下の画面が表示されるのでENTERを押下。なお、Cコンパイラについては、最初の手順でgccをインストール済み
```
 OSSEC HIDS v3.6.0 インストールスクリプト - http://www.ossec.net

 OSSEC HIDS のインストール作業を始めます．
 事前に C コンパイラがシステムにインストールされてる必要があります．

  - システム: Linux ip-xxx-xxx-xxx-xxx.ec2.internal yyy.yyy.yyy-yyy.yyy.amzn2.x86_64
  - ユーザ: root
  - ホスト: ip-xxx-xxx-xxx-xxx.ec2.internal


  -- 続けるには ENTER を押してください．また，Ctrl-C で中止します． --
```

### インストールの種類を選択。今回はエージェントをインストールするので、agentを入力。
```
1- どの種類のインストールを選択しますか (server，agent，local または help)? agent

  - Agent(client) インストールを選択しました.
```

### インストール先ディレクトリはそのままで良いのでENTERを押下。
```
2- インストール環境を設定しています.

 - OSSEC HIDS のインストール先を選択してください [/var/ossec]:

    - インストール先を以下に作成します  /var/ossec .
```

### OSSSECのサーバIPアドレスを聞かれるので、OSSECサーバをインストールするサーバーのIPアドレスを入力。
```
3- 設定 OSSEC HIDS.

  3.1- OSSEC HIDS サーバの IP/hostname アドレスは何ですか?:xxx.xxx.xxx.xxx

  - サーバの IP を加えています xxx.xxx.xxx.xxx
```

### 整合性検査を行うデーモンを実行させるか選択。今回は希望するので、yを入力
```
  3.2- 整合性検査を行うデーモンを実行させますか? (y/n) [y]: y

   - syscheck (整合性検査デーモン) を実行させます.
```

### rootkit検知エンジンを実行させるか選択。今回は希望するので、yを入力
```
  3.3- rootkit 検知エンジンを実行させますか? (y/n) [y]: y

   - rootcheck (rootkit 検知) を実行させます.
```

### アクティブレスポンスを有効にするか選択。今回は希望するので、yを入力
```
  3.4- アクティブレスポンスによりイベントが発生した際に特定の
       コマンドを実行することができます．
       例えば，ある IP アドレスを遮断することや特定のユーザ
       に対してアクセスを無効にすることができます．
       詳細な情報は以下にあります:
       http://www.ossec.net/en/manual.html#active-response

   - アクティブレスポンスを有効にしますか? (y/n) [y]: y
```
### 以下のログはデフォルトで監視するようだ。続けるのでENTERを押下
```
  3.5- 以下のログを解析するための設定を準備しています:
    -- /var/log/messages
    -- /var/log/secure
    -- /var/log/maillog

 - 他のファイルを監視したい場合は，ossec.conf を変更し
   新しいエントリーを追加してください．
   設定に関するどんな質問にも我々の Web サイト http://www.ossec.net
   を訪れることで答えることができます．


   --- 続けるには ENTER を押してください ---
```

### コンパイルとインストールが開始。インストールが完了すると以下の画面が出力される
```
 - システムは Linux.
 - 初期スクリプトはブート中に OSSEC HIDS を起動するよう修正しました．

 - 設定が完全に終了しました.

 - OSSEC HIDS を開始させます:
      /var/ossec/bin/ossec-control start

 - OSSEC HIDS を停止させます:
      /var/ossec/bin/ossec-control stop

 - 以下のファイルで設定についての確認と変更ができます /var/ossec/etc/ossec.conf


        OSSEC HIDS の使用に感謝します．
        あなたが何らかの質問，提案したいときや，バグを発見したときは，
        contact@ossec.net まで連絡するか ossec-list@ossec.net にある
        我々の公開メーリングリストを使ってください．
    (http://www.ossec.net/main/support/)．

        詳細な情報は http://www.ossec.net にあります．

        ---  ENTER を押すと終了します (以下，詳細な情報が続きます)．---



 - 最初に，このエージェントをサーバに追加する必要があります．
   それにより互いに通信が可能となります．その後，サーバから
   の認証鍵を取り入れるために 'manage_agents' ツールを実行
   することができます．
   /var/ossec/bin/manage_agents

   詳細な情報は以下にあります:
   http://www.ossec.net/docs/docs/programs/manage_agents.html
```

## インストール後の確認
### OSSECの状態確認。起動していないので、not running...が出力される
```
# /var/ossec/bin/ossec-control status
ossec-logcollector not running...
ossec-syscheckd not running...
ossec-agentd not running...
ossec-execd is running...
```

### OSSECを起動する。
```
# /var/ossec/bin/ossec-control start
Starting OSSEC HIDS v3.7.0...
ossec-execd already running...
2022/03/02 09:58:36 ossec-agentd: INFO: Using notify time: 600 and max time to reconnect: 1800
Started ossec-agentd...
Started ossec-logcollector...
2022/03/02 09:58:39 ossec-syscheckd(1210): ERROR: Queue '/var/ossec/queue/ossec/queue' not accessible: 'Connection refused'.
2022/03/02 09:58:39 rootcheck(1210): ERROR: Queue '/var/ossec/queue/ossec/queue' not accessible: 'Connection refused'.
2022/03/02 09:58:47 ossec-syscheckd(1210): ERROR: Queue '/var/ossec/queue/ossec/queue' not accessible: 'Connection refused'.
2022/03/02 09:58:47 rootcheck(1210): ERROR: Queue '/var/ossec/queue/ossec/queue' not accessible: 'Connection refused'.
2022/03/02 09:59:00 ossec-syscheckd(1210): ERROR: Queue '/var/ossec/queue/ossec/queue' not accessible: 'Connection refused'.
2022/03/02 09:59:00 rootcheck(1211): ERROR: Unable to access queue: '/var/ossec/queue/ossec/queue'. Giving up..
ossec-syscheckd did not start
```


# OSSECサーバとの連携をしていないので、エラーになっていると思われる。

# OSSECサーバのIPアドレスは/tmp/ossec-hids-master/etc/ossec.mcに設定されているようだ。
### インストール時に参照していると思われる。
```/tmp/ossec-hids-master/etc/ossec.mc
<server-ip>xxx.xxx.xxx.xxx</server-ip>
```
### 起動時に参照していると思われる。
```/var/ossec/etc/ossec.conf
<server-ip>xxx.xxx.xxx.xxx</server-ip>
```

### manage_agentsを実行
```
****************************************
* OSSEC HIDS v3.7.0 Agent manager.     *
* The following options are available: *
****************************************
   (I)mport key from the server (I).
   (Q)uit.
Choose your action: I or Q: I

* 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):hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge

Agent information:
   ID:001
   Name:test
   IP Address:xxx.xxx.xxx.xxx

Confirm adding it?(y/n): y
2022/03/02 10:40:01 manage_agents: ERROR: Cannot unlink /queue/rids/sender: No such file or directory
Added.
** Press ENTER to return to the main menu.
```

### 今度は/queue/rids/senderが無いというエラーが・・・
### 無いというなら、touchコマンドで作成する
```
touch /var/ossec/queue/rids/sender
```
### もう一度、manage_agentsを実行。エラーは解消された！！
```
# /var/ossec/bin/manage_agents


****************************************
* OSSEC HIDS v3.7.0 Agent manager.     *
* The following options are available: *
****************************************
   (I)mport key from the server (I).
   (Q)uit.
Choose your action: I or Q: I

* 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): hogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge

Agent information:
   ID:001
   Name:test
   IP Address:xxx.xxx.xxx.xxx

Confirm adding it?(y/n): y
Added.
** Press ENTER to return to the main menu.



****************************************
* OSSEC HIDS v3.7.0 Agent manager.     *
* The following options are available: *
****************************************
   (I)mport key from the server (I).
   (Q)uit.
Choose your action: I or Q: Q

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

manage_agents: Exiting.
manage_agents: Exiting.
```

###  OSSECの状態確認。起動していないので、not running...が出力される
```
# /var/ossec/bin/ossec-control status
ossec-logcollector not running...
ossec-syscheckd not running...
ossec-agentd not running...
ossec-execd not running...
```
###  OSSECを起動する。
```
Starting OSSEC HIDS v3.7.0...
Started ossec-execd...
2022/03/02 10:47:18 ossec-agentd: INFO: Using notify time: 600 and max time to reconnect: 1800
Started ossec-agentd...
Started ossec-logcollector...
Started ossec-syscheckd...
Completed.
```

###  OSSECの状態確認。起動したので、is running...が出力される
```
# /var/ossec/bin/ossec-control status
ossec-logcollector is running...
ossec-syscheckd is running...
ossec-agentd is running...
ossec-execd is running...
```

### psコマンドでプロセスを確認
```
# ps -aef | grep OSSEC
root      4681  3269  0 10:49 pts/0    00:00:00 grep --color=auto OSSEC
[root@ip-172-31-91-134 etc]# ps -aef | grep ossec
root      4639     1  0 10:47 ?        00:00:00 /var/ossec/bin/ossec-execd
ossec     4643     1  0 10:47 ?        00:00:00 /var/ossec/bin/ossec-agentd
root      4647     1  0 10:47 ?        00:00:00 /var/ossec/bin/ossec-logcollector
root      4651     1  0 10:47 ?        00:00:00 /var/ossec/bin/ossec-syscheckd
root      4683  3269  0 10:49 pts/0    00:00:00 grep --color=auto ossec
```

### 他のコマンドも試してみる。enableの後にオプションを付加して、機能を有効にできるようだ。
```
# /var/ossec/bin/ossec-control enable

Enable options: database, client-syslog, agentless, debug
Usage: /var/ossec/bin/ossec-control enable [database|client-syslog|agentless|debug]
```

# おわりに
今回の記事は以上です。では、また。