OSS or Freeのセキュリティ診断ツール

## 概要
　OSS(Open-source software)またはFreeのセキュリティ診断ツールにはどんなものがあるのかを調べ、実際に使ってみたいツールをピックアップします。

## 主なOSS診断ツール（一部Freeツールを含む）
　以下の条件で抽出します。

 - 対象にLinuxのクラウドサーバが含まれる
 - 最近更新されている、またはよく使われている
 - レポート機能がある（プラスαに使うツールには必須ではない）

| 名称                  |Webアプリ |ミドルウェア |OSセキュリティ設定 |ネットワーク |ライセンス     |特徴                                                                                          |
|:----------------------|:--------:|:-----------:|:-----------------:|:-----------:|:-------------:|:---------------------------------------------------------------------------------------------|
| OpenVAS               |          |〇           |〇                 |〇           |GPLv2          |ソフトウェアのバージョンや設定、構成の確認の他、ネットワーク脆弱性テスト(NVT)を実行。豊富な診断項目がある。Webブラウザからも操作可能|
| Vuls                  |          |〇           |                   |             |GPLv3          |CVEデータベースを利用したサーバーの脆弱性スキャンツール。EmailやSlackで通知可能。CRONなどで定期実行でき、自動化の文化に合っている  |
| OWASP Dependency Check|          |〇           |                   |             |Apache 2.0     |利用しているコンポーネントの依存関係から脆弱なものを使っていないかチェックする。結果をVuls Repoに取り込める|
| Nmap                  |          |             |                   |〇           |GPLv2          |定番のポートスキャナ。ネットワークの脆弱性（不要なオープンポートなど）を発見することができる。OSやソフトウェアの種類やバージョンを取得できる|
| OWASP ZAP             |〇        |             |                   |             |Apache 2.0     |Webアプリケーション診断ツールの王道。自動診断できる。メニューが日本語対応|
| Burp Suite            |〇        |             |                   |             |Free Edition   |オープンソースではない。ローカルProxyを中心に構成されたセキュリティ診断ツールの無償版|
| VAddy             |〇        |             |                   |             |Free Edition   |オープンソースではない。Webサービスとして提供。CIに組み込んで継続的に脆弱性診断を行うことが可能。CLIツールとしてgo-vaddyを配布→結果をSlackに投稿できる|
| Metasploit            |〇        |             |                   |             |3-clause BSD   |攻撃コードの作成、実行が行える。無料版と有料版がある|
| skipfish              |〇        |             |                   |             |Apache 2.0     |Googleが開発した辞書ベースの脆弱性ツール。検知対象を柔軟に設定できる|
| Nikto2                |〇        |〇           |                   |             |GPL            |辞書ベースで脆弱性診断を行うツール|
| Paros                 |〇        |             |                   |             |Artistic License|手動による脆弱性検査ツール。プロキシとして動作、サーバとクライアント間のデータを傍受し変更することが可能|

## 候補
使えそうなのをちょっと詳しく調べてみます。
　以下の２つに大別してピックアップします。
 a. プラットフォーム診断
　OSやミドルウェアの脆弱性を検出する。

 b. Webアプリケーション診断
　構築されたWebサイト・アプリケーションの脆弱性を検出する。

### プラットフォーム診断系
#### OpenVAS
#####対応OS
 - Linux（Debian系、RedHat系）Windows Mac OS
 - クラウド、オンプレミス、ESXi、Cisco OS 

#####収集アーキテクチャー
 - root権限を持ったユーザでSSH

#####スキャン内容
 - 対象のマシンに導入されているソフトウェアのバージョンや設定、構成などを確認してそれらに脆弱性がないかどうかをチェック
 - 「Network Vulnerability Tests (NVTs)」というシグネチャーに基づいた脆弱性チェック
 - 脆弱性データベースは日々更新されている。

#####その他特徴
 - 自動で定期的にセキュリティ診断を行うことができる
 - 45,000件以上の診断項目がある
 - ウェブインタフェースを搭載、診断対象にするシステム、診断する項目などを設定できる
 - AWSでの使用に申請必要

#####レポート形式
 - WebUI
 - mail
 - HTML
 - CSV
 - XML
 - PDF

#### Vuls
2019/12/27 現在 v0.9.0です。まだまだ活発に更新されているので、最新情報は公式をご確認ください！
公式サイト：https://vuls.io/en/
GitHub：https://github.com/future-architect/vuls
#####対応OS
 - Linux/FreeBSDに対応
  - Alpine※v0.9.0以降, Ubuntu, Debian, CentOS, Amazon Linux, RHEL, Oracle Linux, SUSE Enterprise Linux, Raspbian, FreeBSDをサポート
  - クラウド、オンプレミス、Dockerにも対応

#####収集アーキテクチャー
- リモートスキャン
 SSH。root権限が必要かどうかはスキャンモードによる

- ローカルスキャン
 スキャン実施対象にデプロイして実行

- サーバーモード※v0.8.0以降
 SSHもエージェントも不要。1台Vulsサーバーを建てたら、スキャン対象サーバーでコマンド一発！結果をHTTP経由でVulsサーバーに送信

#####スキャンモード
どちらのモードもインターネットアクセスなしでスキャンできるオフラインモードあり (Red Hat, CentOS, OracleLinux, Ubuntu, Debian) ※v0.5.0以降

- fast-scan
    - root権限不要
    - 依存関係なし。

- fast-root scan mode
    - root権限必要
    - パッケージをアップデートによって影響を受けるプロセスの検知ができる (Red Hat, CentOS, Oracle Linux and Amazon Linux)
    - 以前に更新されたがまだ再起動していないプロセスを検出できる (Debian and Ubuntu)

#####スキャン内容
 - Linuxサーバに存在する脆弱性をスキャン 
 - OSパッケージ管理対象外のミドルウェアをスキャン 
  - プログラミング言語のライブラリやフレームワーク、ミドルウェアの脆弱性スキャン
  - CPEに登録されているソフトウェアが対象

#####その他特徴
 - EmailやSlackで通知可能（日本語でのレポートも可能）
 - 設定ファイルのテンプレート自動生成 
   - CIDRを指定してサーバを自動検出、設定ファイルのテンプレートを生成
 - 付属するTerminal-Based User Interfaceビューアでは、Vim風キーバインドでスキャン結果を参照可能
 - CRONなどで定期実行、レポートすることで脆弱性の放置を防ぐことできる
 - Web UI(VulsRepo)を使えばピボットテーブルのように分析可能
 - AWSでの脆弱性/侵入テスト事前申請は必要なし
 - Wordpressの脆弱性検知ができる※v0.7.0以降　参考：[VulsでついにWordPressの脆弱性検知ができるようになったので試してみた！](https://blog.adachin.me/archives/10082)

#####レポート形式
 - WebUI
 - CUI
 - mail
 - slack
 - text
 - json
 - XML

### Webアプリケーション診断系
#### OWASP Zed Attack Proxy(ZAP)

#####インターフェイス
 - GUIアプリケーション

#####検査項目
 - SQLインジェクション
 - コマンドインジェクション
 - クロスサイトスクリプティング
 - パス名パラメータの未チェック／ディレクトリ・トラバーサル
 - CSRF（クロスサイト・リクエスト・フォージェリ）
 - バッファオーバーフロー
 など

#####レポート形式
 - HTML
 - XML

#####その他特徴
 - 多くのメニューや設定項目を持っている
 - あまり深刻でない脆弱性も細かく指摘してくれる
 - Jenkinsのプラグインがある
 - AWSでの使用に申請必要
 - 本番環境を改変することがある。テスト環境で実行するか、バックアップからリストアできる環境と準備をして
おくことが必要

#### VAddy

#####インターフェイス
 - クラウド型(SaaS型）のサービス
 - go-vaddyというCLIツールあり

#####検査項目
 - SQLインジェクション
 - コマンドインジェクション
 - クロスサイトスクリプティング
 - リモートファイルインクルージョン
 - ディレクトリトラバーサル

#####その他特徴
 - 簡便。CIに組み込んで継続的に脆弱性診断をするのに向いている
 - 一般的な開発者向けで、脆弱性に関する専門的な知識がなくても使い続けていくことができる
 - 検出する脆弱性を絞っており、基本的には見つかったら必ず対応が必要
 - Freeプランでは出来ないことがある（[有料プランと無料プランの違い](https://vaddy.net/ja/release/20150907.html)）
  - 検査項目： 無料プランはSQLインジェクションとXSSの検査、有料プランは加えてRFI（リモートファイルインクルージョン）、コマンドインジェクション、ディレクトリトラバーサルの検査
  - チーム機能：無料プランでは複数人でのチーム利用ができない
  - FQDN追加の可否：無料プランは３つまで
 - [IDCFクラウドと業務提携](https://www.idcf.jp/cloud/vaddy/)
  - 専用窓口から無料で導入サポート
  - 有償プランが初年度10%割引
 - AWSでの使用に申請必要
 - 本番環境への実行は禁止

#####レポート形式
 - Webの管理画面で確認。報告用のレポート生成はしない

> [参照：技術系スタートアップはスタンスを明確に。エッジを研げ、その刃は本物か？](http://blog-ja.vaddy.net/post/114552491146/vaddy-stance)

 - go-vaddyの出力を結果をSlackに投稿できる

>[参照：VAddyのWeb脆弱性検査を定期的に実行して結果をSlack通知](http://qiita.com/ichikaway/items/2492de7fa4a01f241a59)


## まとめ
　実際に使ってみたいものを以下にまとめます。
####◇通常運用時にセキュリティを確保するなら
 - Vuls + OWASP Dependency Check
  - 運用時にはVulsを定期実行して脆弱性の対応漏れが無いようにする
  - OWASP Dependency Check は Vuls Repo に連携できるので、一緒に実行するようにしておけばカバーできる範囲が広がる

####◇Webアプリケーション開発時なら
  - VAddyを導入すると簡単にセキュリティが確保できる。IDCFクラウドの無料サポートでフォローがある。

####◇詳しく調べたい時

 - Nmap でポートスキャンを実行し、外部に情報が洩れていないかチェック
 - OpenVASで外部からの疑似アクセスやネットワーク関連のテスト
 - OWAPS ZAPでWebアプリケーション診断