Vuls on Ubuntu16.10 で挫折した話

# 概要

VulsをUbuntu16.10に入れたよ、という記事があまりなかったので、とりあえずやってみました。
で、**挫折しました**。

# 前提条件

- ubuntu-16.10-server-amd64.iso を使います。
- 基本はデフォルトインストールです。
- 設定もろもろの詳細は、別の記事参照でお願いします。
- ホームディレクトリ暗号化、はしません。
    - あれはServerで使うのはちょっと...
- 基本構成は[標準化した、Vuls/VulsRepoの導入](http://qiita.com/hogehogehugahuga/items/239c0ad02ac409e34f12)を利用します。
- コンソールのPS1配下の通り
    - $ : 最初に作成する、sudo可能なユーザ
    - [vuls]$ : vulsユーザのコンソール
    - # : "神"のコンソール

# 構築

## OSインストール

基本、デフォルトでインストールします。

- ホームディレクトリ暗号化はしません。
- インストールパッケージ等、デフォルトです。

## OS調整

最初に作ったユーザでログインする。

- デフォルト構成でsshdが入っていないだと…マジか。
    - 必要に応じて、`/etc/sshd.conf`を修正してね。
- vulsで使うものは、git, wgetは入っているね。

```bash:install_and_networkConfigure
$ sudo apt-get install openssh-server
$ sudo apt-get install sqlite gcc make
```

ユーザも作ろう

- visudoすると良く分からんエディタだ。vimで直接`/etc/sudoers`を編集な。
    - vimジャンキーではないひとは、sudo visudoでどうぞ。
- vulsの鍵は、もう楕円DSA(ECDSA)使ってもいいよね？
    - ecdsa:521bit にしようぜ。

```bash:create_vuls_and_setting
$ sudo useradd -d /opt/vuls vuls
$ vi /etc/sudoers
-----------------------------------
# Members of the admin group may gain root privileges セクションに以下を追加
vuls ALL=(root) NOPASSWD: /usr/bin/apt-get, /usr/bin/apt-cache
-----------------------------------
$ sudo mkdir /opt/vuls
$ sudo chmod 700 /opt/vuls
$ sudo chown vuls:vuls /opt/vuls
$ 
$ su - vuls
[vuls]$ pwd
/opt/vuls
[vuls]$ mkdir .ssh ssh_keys
[vuls]$ chmod 700 .ssh/ ssh_keys
[vuls]$ ssh-keygen -t ecdsa -b 521
[vuls]$ cat .ssh/id_ecdsa.pub >> .ssh/authorized_keys
[vuls]$ chmod 600 .ssh/authorized_keys
[vuls]$ mv .ssh/id_ecdsa ssh_keys/local_id_ecdsa
[vuls]$ exit
```

## go言語, go-cve-dictionary, Vulsを入れる

```bash:install_go_lang
$ wget https://storage.googleapis.com/golang/go1.7.4.linux-amd64.tar.gz
```

早速問題発生。wgetでDNS解決が出来ない？

- IPv6の無効化か、DNSを8.8.8.8等にすればよい、らしい。
- 一旦、IPv6を無効化してみると、一応はダウンロードできた。

```bash:ipv6_off
$ sudo vi /etc/sysctl.conf
-----------------------------------
# 以下を追加
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
-----------------------------------
$ sudo /etc/init.d/network restart
```

```bash:install_go_lang
$ sudo tar -C /usr/local -xzf go1.7.4.linux-amd64.tar.gz
$ sudo vi /etc/profile.d/goenv.sh
-----------------------------------
# 以下を記載
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
-----------------------------------
$ 
$ sudo su - vuls
[vuls]$ mkdir go
[vuls]$ go version
go version go1.7.4 linux/amd64
[vuls]$ exit
$ 
```

次はgo-cve-dictionaryを入れる

```bash:install_go-cve-dictionary
$ sudo mkdir /var/log/vuls
$ sudo chown vuls:vuls /var/log/vuls
$ sudo chmod 700 /var/log/vuls
$ sudo su - vuls
[vuls]$ mkdir -p $GOPATH/src/github.com/kotakanbe
[vuls]$ cd $GOPATH/src/github.com/kotakanbe
[vuls]$ git clone https://github.com/kotakanbe/go-cve-dictionary.git
[vuls]$ cd go-cve-dictionary
[vuls]$ make install
[vuls]$ cd
[vuls]$ pwd
/opt/vuls
[vuls]$ for i in {2002..2017}; do go-cve-dictionary fetchnvd -years $i; done
 0 / 1 [-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------]   0.00[Dec 12 10:57:21]  INFO Fetching... https://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2002.xml.gz
[Dec 12 10:57:21] ERROR Failed to fetch cve data from NVD. err: [HTTP error. errs: [Get https://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2002.xml.gz: dial tcp: lookup static.nvd.nist.gov: no uch host], url: https://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2002.xml.gz]
 0 / 1 [-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------]   0.00[Dec 12 10:57:21]  INFO Fetching... https://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2003.xml.gz
[Dec 12 10:57:21] ERROR Failed to fetch cve data from NVD. err: [HTTP error. errs: [Get https://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2003.xml.gz: dial tcp: lookup static.nvd.nist.gov: no uch host], url: https://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2003.xml.gz]
...
[vuls]$ 
[vuls]$ nslookup static.nvd.nist.gov
Server:       xxx.xxx.xxx.xxx
Address:      xxx.xxx.xxx.xxx#53

Non-authoritative answer:
static.nvd.nist.gov    canonical name = nvd.nist.gov.
Name:   nvd.nist.gov
Address: 129.6.13.177

[vuls]$ 
```

が、こちらでも問題発生。
そして、ここで、どうしてもgo-cve-dictionaryがDNS解決できない、という罠にかかって、これ以上進めなくなった。

- go-cve-dictionaryが、NVDの情報をダウンロードしようとするが、ホスト名(DNSの)解決が出来ないよ、というエラーが出る
- nslookupでは、IPアドレス解決できる
- apt-get等は出来たよ？
- DNSを8.8.8.8にすれば動く可能性があるが、それは根本解決ではないのでやらない

どうも、NetworkManagerが悪さをしているようで、IPv6で躓くようだ。

- そもそも、NetworkManager.conf なんて存在しないよ
    - dns=dnsmasqを無効化すればよい、というけど…
- そもそも、それっぽいプロセスいないよ
- /etc/resolv.conf、もとい、/etc/networking/interfacesにdns-nameserversはきちんと書いてあり、nslookupで解決できるよ
    - DHCPからもらってるんですが。
- IPv6は無効化して、ifconfigでも存在しないよ。
- どうすればいいのさ（悲しい）

解決方法見つからず、断念。
なんだこれ。

```text:from_Hokuto_no_ken
俺を待つのは戦いだけなのか！！

天はあくまで非情な宿命を課す！！
```

やっぱり、みんな大好きLTSな16.04を使う、か。
(翌日に続く)