CentOS7.1 で zabbix-serverの起動が失敗する話とその解決方法

# 追記(2015/07/22)

現在、yum updateを実施する事でtrousersの修正バージョンがアップデートされ、本現象が解消されます。

【修正バージョン】
trousers-0.3.11.2-4.el7_1.x86_64.rpm


----
以下、旧記事

[早く解決方法見たい人](http://qiita.com/_BSmile_/items/61932e45de5330190027#%E5%AF%BE%E5%BF%9C%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)

## ことの始め

Zabbix検証機を立てる為、CentOS7.1をインストール。
インストール後、ごく普通のインストール方法で[zabbixをインストール](https://www.zabbix.com/documentation/2.4/manual/installation/install_from_packages)。
※mariadbを使用してインストールする際は[CentOS7にZabbix2.2をインストール](http://qiita.com/tukiyo3/items/e974627fbb393037fa8a)が非情に勉強になります。

* インストール後、zabbix-serverを起動。

```
[root@zabbix ~]# systemctl start zabbix-server
Job for zabbix-server.service failed. See 'systemctl status zabbix-server.service' and 'journalctl -xn' for details.
```

* エラーの内容を確認(抜粋)

```
[root@zabbix ~]# less /var/log/zabbix/zabbix_server.log 

  2976:20150430:183351.790 using configuration file: /etc/zabbix/zabbix_server.conf
  2976:20150430:183351.792 current database version (mandatory/optional): 02040000/02040000
  2976:20150430:183351.792 required mandatory version: 02040000
  2976:20150430:183351.794 listener failed: zbx_tcp_listen() fatal error: unable to serve on any address [[-]:10051]
  2976:20150430:183351.794 Got signal [signal:11(SIGSEGV),reason:1,refaddr:0x18]. Crashing ...
```

* OS: CentOS Linux release 7.1.1503 (Core) 
* 利用DB: mariadb-server 5.5.41


## 調査を行ったところ

調査を行うと、Zabbixのissueに同じ問題を発見。
[zabbix_server_m[13777]](https://support.zabbix.com/browse/ZBX-7790)

現行のzabbix-2.4.5では、gnutlsの3.3.8には対応していない様子。

## 追記：2015/05/01

この記事を見てくださったTNKさんから。

<blockquote class="twitter-tweet" lang="ja"><p lang="ja" dir="ltr"><a href="https://twitter.com/_BSmile_">@_BSmile_</a> CVE-2014-0092であれば7.0用gnutlsでパッチ適用済のようです。ただしCVE-2014-8564には対応していないので、gnutls-3.1.18-10.el7_0というのがあるのですが、7.0のupdate用rpmがミラーから削除され....</p>&mdash; Atsushi Tanaka (@atanaka7) <a href="https://twitter.com/atanaka7/status/593761059183271936">2015, 4月 30</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" data-conversation="none" lang="ja"><p lang="ja" dir="ltr"><a href="https://twitter.com/_BSmile_">@_BSmile_</a> なので、私がブログで書いていたgnutls-3.1.18-10.el7_0.x86_64.rpmをインストールするには、ソースからビルドするか、信頼できるミラーから入手しないとダメになってしまってます。</p>&mdash; Atsushi Tanaka (@atanaka7) <a href="https://twitter.com/atanaka7/status/593761822349471745">2015, 4月 30</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" data-conversation="none" lang="ja"><p lang="ja" dir="ltr"><a href="https://twitter.com/_BSmile_">@_BSmile_</a> Fedoraなら直っているようなので同様にgnutls-3.3.8でもtrousersにパッチあてれば対応できる、はず。 <a href="https://t.co/3sntxwFDgi">https://t.co/3sntxwFDgi</a></p>&mdash; Atsushi Tanaka (@atanaka7) <a href="https://twitter.com/atanaka7/status/593764329016532992">2015, 4月 30</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

本当にありがとうございます！

[リンク先](https://bugzilla.redhat.com/show_bug.cgi?id=1069079)には確かに「trousers-0.3.11.2-3.fc20」にプッシュしたと書いてますね。

trousers-0.3.11.2-3.el7 -> trousers-0.3.11.2-3.fc20 へ更新してみましょう。

## 対応について

### 1. 【推奨】パンツを履き替える(trousersの)更新

```
[root@zabbix ~]# rpm -Uvh https://kojipkgs.fedoraproject.org/packages/trousers/0.3.11.2/3.fc20/x86_64/trousers-0.3.11.2-3.fc20.x86_64.rpm
https://kojipkgs.fedoraproject.org/packages/trousers/0.3.11.2/3.fc20/x86_64/trousers-0.3.11.2-3.fc20.x86_64.rpm を取得中
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:trousers-0.3.11.2-3.fc20         ################################# [ 50%]
整理中 / 削除中...
   2:trousers-0.3.11.2-3.el7          ################################# [100%]

[root@zabbix ~]# systemctl restart zabbix-server
```

半信半疑でしたが無事動作確認が取れました！

### 2. 【非推奨】gnutlsのダウングレード

既にTNKさんが書いてくださっていましたが、gnutlsをダウングレードする事で起動します。
[ZabbixをCentOS 7にインストール](http://tnk77.blogspot.jp/2015/03/zabbixcentos-7.html)

ダウングレード方法を下記に記載します。

#### 2.1. CentOS 7.0のインストールメディアを用意

http://vault.centos.org/7.0.1406/isos/x86_64/

※ 信頼されているCentOS7.0のミラーサイトはいつまであるかわかりません。探す際は注意ください。

#### 2.2. メディアインストール用のrepo作成

```
#vi /etc/yum.repos.d/CentOS-media.repo

[centos-media]
name=CentOS Media Install
baseurl=file:///media/
enabled=1
gpgcheck=1
gpgkey=file:///media/RPM-GPG-KEY-redhat-release
```
#### 2.3. メディアをマウント

```
[root@zabbix ~]# mount -o loop CentOS-7.0-1406-x86_64-DVD.iso /media/
mount: /dev/loop0 is write-protected, mounting read-only
```

#### 2.4. ダウングレード実施

```
[root@zabbix ~]# yum downgrade gnutls-3.1.18-8.el7 gnutls-devel-3.1.18-8.el7 gnutls-dane-3.1.18-8.el7 gnutls-c++-3.1.18-8.el7 --enablerepo centos-media
読み込んだプラグイン:fastestmirror
centos-media                                                                                                          | 3.6 kB  00:00:00     
(1/2): centos-media/group_gz                                                                                          | 157 kB  00:00:00     
(2/2): centos-media/primary_db                                                                                        | 2.7 MB  00:00:00     
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
利用できるパッケージに一致しません: gnutls-devel-3.1.18-8.el7.x86_64
利用できるパッケージに一致しません: gnutls-dane-3.1.18-8.el7.x86_64
利用できるパッケージに一致しません: gnutls-c++-3.1.18-8.el7.x86_64
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ gnutls.x86_64 0:3.1.18-8.el7 を ダウングレード
---> パッケージ gnutls.x86_64 0:3.3.8-12.el7 を 削除
--> 依存性解決を終了しました。

依存性を解決しました

=============================================================================================================================================
 Package                       アーキテクチャー              バージョン                            リポジトリー                         容量
=============================================================================================================================================
ダウングレード中:
 gnutls                        x86_64                        3.1.18-8.el7                          centos-media                        609 k

トランザクションの要約
=============================================================================================================================================
ダウングレード  1 パッケージ

総ダウンロード容量: 609 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : gnutls-3.1.18-8.el7.x86_64                                                                                   1/2 
  整理中                  : gnutls-3.3.8-12.el7.x86_64                                                                                   2/2 
  検証中                  : gnutls-3.1.18-8.el7.x86_64                                                                                   1/2 
  検証中                  : gnutls-3.3.8-12.el7.x86_64                                                                                   2/2 

削除しました:
  gnutls.x86_64 0:3.3.8-12.el7                                                                                                               

インストール:
  gnutls.x86_64 0:3.1.18-8.el7                                                                                                               

完了しました!
```

#### 2.4. zabbix-server起動

ダウングレード完了後、サービスを起動します。

```
[root@zabbix ~]# systemctl start zabbix-server
```

*以上*

## gnutlsの脆弱性について
GnuTLSについて、ダウングレードバージョンでは脆弱性が指摘されています。
[GnuTLSに脆弱性、主要なLinuxディストリビューションに影響](http://www.itmedia.co.jp/enterprise/articles/1403/06/news038.html)

zabbix-serverが設置されている場所によっては、対応されたバージョン(3.1.22)をインストールする必要があることにも注意して下さい。