Add local scan mode.
If the scan target server is localhost, Don't use SSH. #210
This commit is contained in:
		
							
								
								
									
										54
									
								
								README.ja.md
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								README.ja.md
									
									
									
									
									
								
							@@ -169,6 +169,7 @@ NVDから脆弱性データベースを取得する。
 | 
			
		||||
環境によって異なるが、AWS上では10分程度かかる。
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
$ cd $HOME
 | 
			
		||||
$ for i in {2002..2016}; do go-cve-dictionary fetchnvd -years $i; done
 | 
			
		||||
... snip ...
 | 
			
		||||
$ ls -alh cve.sqlite3
 | 
			
		||||
@@ -320,8 +321,18 @@ $ vuls tui
 | 
			
		||||
 | 
			
		||||
# Architecture
 | 
			
		||||
 | 
			
		||||
## A. Scan via SSH Mode
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
## B. Scan without SSH (Local Scan Mode)
 | 
			
		||||
 | 
			
		||||
Vulsをスキャン対象サーバにデプロイする。Vulsはローカルホストにコマンドを発行する(SSH経由ではない)。スキャン結果のJSONを別サーバに集約する。スキャン結果の詳細化のためにはCVEデータベースへのアクセスが必要なので、事前にgo-cve-dictionaryをserver modeで起動しておく。
 | 
			
		||||
その集約サーバ上で、あなたはWebUIやTUIを用いて各スキャン対象サーバのスキャン結果を参照することが可能。
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
[詳細](#example-scan-via-shell-instead-of-ssh)
 | 
			
		||||
 | 
			
		||||
## [go-cve-dictionary](https://github.com/kotakanbe/go-cve-dictionary)  
 | 
			
		||||
- NVDとJVN(日本語)から脆弱性データベースを取得し、SQLite3に格納する。
 | 
			
		||||
 | 
			
		||||
@@ -532,11 +543,13 @@ host         = "172.31.4.82"
 | 
			
		||||
    #cpeNames = [
 | 
			
		||||
    #  "cpe:/a:rubyonrails:ruby_on_rails:4.2.1",
 | 
			
		||||
    #]
 | 
			
		||||
    #containers = ["${running}"]
 | 
			
		||||
    #ignoreCves = ["CVE-2016-6314"]
 | 
			
		||||
    #optional = [
 | 
			
		||||
    #    ["key", "value"],
 | 
			
		||||
    #]
 | 
			
		||||
    #containers = ["${running}"]
 | 
			
		||||
    #[servers.172-31-4-82.container]
 | 
			
		||||
    #type = "lxd"
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
    serversセクションの値は、defaultセクションの値よりも優先される。
 | 
			
		||||
@@ -547,9 +560,9 @@ host         = "172.31.4.82"
 | 
			
		||||
    - user: SSH username
 | 
			
		||||
    - keyPath: SSH private key path
 | 
			
		||||
    - cpeNames: see [Usage: Scan vulnerability of non-OS package](https://github.com/future-architect/vuls/blob/master/README.ja.md#usage-scan-vulnerability-of-non-os-package)
 | 
			
		||||
    - containers: see [Usage: Scan Docker containers](https://github.com/future-architect/vuls/blob/master/README.ja.md#usage-scan-docker-containers)
 | 
			
		||||
    - ignoreCves: CVE IDs that will not be reported. But output to JSON file.
 | 
			
		||||
    - optional: JSONレポートに含めたい追加情報
 | 
			
		||||
    - containers: see [Usage: Scan Docker containers](https://github.com/future-architect/vuls/blob/master/README.ja.md#usage-scan-docker-containers)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    Vulsは各サーバにSSHで接続するが、Goのネイティブ実装と、OSコマンドの2種類のSSH接続方法をサポートしている。
 | 
			
		||||
@@ -714,11 +727,29 @@ $ vuls scan server1 server2
 | 
			
		||||
- ノーパスワードでsudoが実行可能
 | 
			
		||||
- configで定義されているサーバの中の、server1, server2のみスキャン
 | 
			
		||||
 | 
			
		||||
## Example: Scan Docker containers
 | 
			
		||||
## Example: Scan via shell instead of SSH.
 | 
			
		||||
 | 
			
		||||
DockerコンテナはSSHデーモンを起動しないで運用するケースが一般的。  
 | 
			
		||||
ローカルホストのスキャンする場合、SSHではなく直接コマンドの発行が可能。  
 | 
			
		||||
config.tomlのhostに`localhost または 127.0.0.1`かつ、portに`local`を設定する必要がある。  
 | 
			
		||||
For more details, see [Architecture section](https://github.com/future-architect/vuls#architecture)
 | 
			
		||||
 | 
			
		||||
- config.toml
 | 
			
		||||
  ```
 | 
			
		||||
  [servers]
 | 
			
		||||
 | 
			
		||||
  [servers.localhost]
 | 
			
		||||
  host         = "localhost" # or "127.0.0.1"
 | 
			
		||||
  port         = "local" 
 | 
			
		||||
  ```
 | 
			
		||||
 | 
			
		||||
## Example: Scan containers (Docker/LXD)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
コンテナはSSHデーモンを起動しないで運用するケースが一般的。  
 | 
			
		||||
 [Docker Blog:Why you don't need to run SSHd in your Docker containers](https://blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker/)
 | 
			
		||||
 | 
			
		||||
### Docker
 | 
			
		||||
 | 
			
		||||
Vulsは、DockerホストにSSHで接続し、`docker exec`でDockerコンテナにコマンドを発行して脆弱性をスキャンする。  
 | 
			
		||||
詳細は、[Architecture section](https://github.com/future-architect/vuls#architecture)を参照
 | 
			
		||||
 | 
			
		||||
@@ -747,9 +778,24 @@ Vulsは、DockerホストにSSHで接続し、`docker exec`でDockerコンテナ
 | 
			
		||||
    keyPath     = "/home/username/.ssh/id_rsa"
 | 
			
		||||
    containers = ["container_name_a", "4aa37a8b63b9"]
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
- コンテナのみをスキャンする場合(ホストはスキャンしない)  
 | 
			
		||||
  --containers-onlyオプションを指定する
 | 
			
		||||
 | 
			
		||||
### LXDコンテナをスキャンする場合  
 | 
			
		||||
 | 
			
		||||
Vulsは、ホストにSSHで接続し、`lxc exec`でLXDコンテナにコマンドを発行して脆弱性をスキャンする。  
 | 
			
		||||
```
 | 
			
		||||
[servers]
 | 
			
		||||
 | 
			
		||||
[servers.172-31-4-82]
 | 
			
		||||
host         = "172.31.4.82"
 | 
			
		||||
user        = "ec2-user"
 | 
			
		||||
keyPath     = "/home/username/.ssh/id_rsa"
 | 
			
		||||
containers = ["${running}"]
 | 
			
		||||
[servers.172-31-4-82.container]
 | 
			
		||||
type = "lxd"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
# Usage: Report
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user