サイバー脅威情報集約システム(EXIST)とMalware Information Sharing Platform(MISP)の構築まとめ①

# はじめに
- 元同僚から面白そうなOSSを教えてもらったので調べがてら構築をしてみた.
- ここでは構築する際にトラブった箇所や手順などをまとめていく感じです.
- ALL-in-One方式で構築した際、取得したデータサイズのせいかDiskFull-->LVM追加でミスって-->VMクラッシュという楽しい目にあったため個別での構築としています.
- 3部構成(共通部分/EXIST/MISP)で記事を書く予定です.

# 前提
- Windows10pro Hyper-Vを利用し以下条件のもと構築を行っております.(共通)
  - お好みでVMwareやvBOXをお使いください
- OSはCentOS7の最新版を利用しそれぞれ別VMで構築とする.(共通)
  - 検証環境下ではCentOS8自体の挙動が不安定だったので別途原因究明が必要と考えCentOS7を選択
- 構築時のアカウントはすべてrootアカウントで実施.(共通)
- VMのリソースはvCPU:2core,mem:8GB,DISK:50GB,Network:IPアドレスはDHCPでMACアドレス登録して固定配布.(共通)
  - 稼働するとメモリ使用量は平均6GB
  - DISKは20GBで100%超えてしまったため、50GBにしております
- pyenvを使用しPython ver3.6.xをインストール.(EXIST)
  - Verison3.7以降だと指定PackageのVersionではエラーが発生するため
  - venv-existを使わずに構築していきます
- git:Verは2.29.x(現時点で最新のもの)とする.(共通)
  - 2.x台であればなんでもよいかと
- wget/curl/tmux/htopなど適宜インストール.
  - 不要な人はスルーでもOK
- FirewallやSElinuxは自己責任のもと無効にしてください.(共通)
  - Firewallではのちに8000ポートの開放を手順に入れております
  - SElinuxは土下座してdisabledにしております

## OSS製品のドキュメント

[サイバー脅威情報集約システム(EXIST)](https://blog.nicter.jp/2019/03/exist/)
[Malware Information Sharing Platform(MISP)](https://www.misp-project.org/index.html)


# 共通部分の構築
- OSの状態は「最小限」を選択肢しインストール済み.

## kernel-ml関連のインストールと読み込み順序の変更

```shell
# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
# 
# uname -a
Linux [hostname] 3.10.0 ～省略～
#
#  rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 
# yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
読み込んだプラグイン:fastestmirror
　　　|
　　　|
    省略
　　　|
　　　|
警告: RPMDB は yum 以外で変更されました。
  インストール中          : elrepo-release-7.0-5.el7.elrepo.noarch                                                      1/1 
  検証中                  : elrepo-release-7.0-5.el7.elrepo.noarch                                                      1/1 

インストール:
  elrepo-release.noarch 0:7.0-5.el7.elrepo                                                                                  

完了しました!

# 
# yum --enablerepo=elrepo-kernel install kernel-ml
Loaded plugins: fastestmirror, langpacks
　　　|
　　　|
    省略
　　　|
　　　|
Dependencies Resolved

======================================================================================================================== Package                  Arch                  Version                              Repository                    Size
========================================================================================================================Installing:
 kernel-ml                x86_64                5.9.8-1.el7.elrepo                   elrepo-kernel                 51 M

Transaction Summary
========================================================================================================================Install  1 Package

Total download size: 51 M
Installed size: 233 M
Is this ok [y/d/N]: y
Downloading packages:
kernel-ml-5.9.8-1.el7.elrepo.x86_64.rpm                                                          |  51 MB  00:00:09
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : kernel-ml-5.9.8-1.el7.elrepo.x86_64                                                                  1/1
  Verifying  : kernel-ml-5.9.8-1.el7.elrepo.x86_64                                                                  1/1

Installed:
  kernel-ml.x86_64 0:5.9.8-1.el7.elrepo

Complete!
```


## 新旧Kernelが混在中なので新しいものに置き換え

```shell
# 
# rpm -qa |grep kernel
kernel-ml-5.9.8-1.el7.elrepo.x86_64
kernel-tools-3.10.0-1062.el7.x86_64
kernel-tools-libs-3.10.0-1062.el7.x86_64
kernel-3.10.0-1062.el7.x86_64
# 
# yum swap --enablerepo=elrepo-kernel kernel-* -- kernel-ml-* <--リポジトリをenableにしていないためオプションで指定
Loaded plugins: fastestmirror, langpacks
Skipping the running kernel: kernel-3.10.0-1127.19.1.el7.x86_64
Loading mirror speeds from cached hostfile
　　　|
　　　|
    省略
　　　|
　　　|
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/7): kernel-ml-devel-5.9.8-1.el7.elrepo.x86_64.rpm                                          |  13 MB  00:00:04
(2/7): kernel-ml-doc-5.9.8-1.el7.elrepo.noarch.rpm                                            | 8.9 MB  00:00:01
(3/7): kernel-ml-headers-5.9.8-1.el7.elrepo.x86_64.rpm                                        | 1.4 MB  00:00:00
(4/7): kernel-ml-tools-5.9.8-1.el7.elrepo.x86_64.rpm                                          | 229 kB  00:00:00
(5/7): kernel-ml-tools-libs-5.9.8-1.el7.elrepo.x86_64.rpm                                     | 117 kB  00:00:00
(6/7): kernel-ml-tools-libs-devel-5.9.8-1.el7.elrepo.x86_64.rpm                               |  95 kB  00:00:00
(7/7): kernel-ml-5.9.8-1.el7.elrepo.x86_64.rpm                                                |  51 MB  00:00:09
---------------------------------------------------------------------------------------------------------------------
Total                                                                                7.6 MB/s |  76 MB  00:00:09
　　　|
　　　|
    省略
　　　|
　　　|
Complete!

# 
# rpm -qa |grep kernel
kernel-ml-tools-libs-5.9.8-1.el7.elrepo.x86_64
kernel-ml-doc-5.9.8-1.el7.elrepo.noarch
kernel-ml-tools-libs-devel-5.9.8-1.el7.elrepo.x86_64
kernel-ml-5.9.8-1.el7.elrepo.x86_64
kernel-ml-tools-5.9.8-1.el7.elrepo.x86_64
kernel-ml-devel-5.9.8-1.el7.elrepo.x86_64
kernel-ml-headers-5.9.8-1.el7.elrepo.x86_64
kernel-3.10.0-1062.el7.x86_64

古いカーネルを削除
#
# rpm -e kernel-3.10.0-1062.el7.x86_64
```



## OS起動時のKernel読み込み順を変更<--古いカーネルを削除していれば基本スルーでOK

```shell
#
# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (3.10.0-1127.19.1.el7.x86_64) 7 (Core)
1 : CentOS Linux (5.9.8-1.el7.elrepo.x86_64) 7 (Core) <--こいつを選択
2 : CentOS Linux 7 Rescue 58dbc0c56878451db0f22c3af5129299 (3.10.0-693.17.1.el7.x86_64)
3 : CentOS Linux (0-rescue-55a201f65e044fb291c90c84936d9385) 7 (Core)
4 : CentOS Linux (0-rescue-e139e4d1f5ec417fb1ae634270a99f8b) 7 (Core

#
# grub2-editenv list
saved_entry=0
# 
# grub2-set-default 1
# 
# grub2-editenv list
saved_entry=1

反映確認のため再起動
#
# reboot
```

## 各パッケージのアップデート&個別で必要なパッケージのインストール

```shell
古いカーネルの再インストールを防ぐため除外設定を行う.
#
# echo "exclude=kernel*" >> /etc/yum.conf
# 
# yum update --enablerepo=elrepo-kernel
　　　|
　　　|
    省略
　　　|
　　　|
Complete!

#
# yum install epel-release
　　　|
　　　|
    省略
　　　|
　　　|
Complete!

#
# yum install vim tmux htop wget curl gcc autoconf curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel
　　　| 
　　　|
    省略
　　　|
　　　|
Complete!
```

## Gitのアップデート

- Gitは以下にある参考サイトなどでインストールしてみてくださいませ.
  - インストールで必要になるパッケージは上記のyumで対応しております


## 以上
共通部はここまでとなります.
次はEXISTの構築となります.

# 参考サイト/多謝
Kernel関連
[elrepo.org](http://elrepo.org/tiki/HomePage)
[kernel-ml](http://elrepo.org/tiki/kernel-ml)
[CentOS7でelrepoリポジトリを有効化してkernel-mlを入れる](https://qiita.com/kawaz/items/21637f5f0b443bbf7893)
[CentOS 7でデフォルトのカーネルを変更・指定する](https://qiita.com/kojiwell/items/9b5c18f399642a0679e9)
[YUMチートシート](https://access.redhat.com/sites/default/files/attachments/rh_yum_cheatsheet_1214_jcs_print-ja.pdf)

Git関連
[git/INSTALL](https://github.com/git/git/blob/master/INSTALL)
[CentOSにソースから最新版のgitをインストール](https://qiita.com/ksugawara61/items/5adaa361c28f93a25fcc)