概要
登場マシンは本来 3 台以上だが今回は検証なので 2 台で実施
- Vault サーバ (192.168.99.200 - Ubuntu)
- SSH されるサーバ (192.168.99.200 - Ubuntu)
- SSH するマシン (192.168.99.1 - Mac)
それぞれで行う作業があるので設定方法を紹介
実際に OTP を発行して接続テストも実施した
環境
- サーバ
- Ubuntu 16.04 LTS
- vault 1.1.3
- vault-ssh-helper 0.1.4
- クライアント
- macOS 10.14.5
Vault サーバ構築 (Ubuntu)
Vault インストール
mkdir bin
wget 'https://releases.hashicorp.com/vault/1.1.3/vault_1.1.3_linux_amd64.zip'
unzip vault_1.1.3_linux_amd64.zip
mv vault bin
vault server -dev -dev-listen-address=0.0.0.0:8200
SSH されるサーバ設定 (Ubuntu)
vault-ssh-helper インストール
wget https://releases.hashicorp.com/vault-ssh-helper/0.1.4/vault-ssh-helper_0.1.4_linux_amd64.zip
sudo unzip vault-ssh-helper_0.1.4_linux_amd64.zip -d /usr/local/bin
sudo chmod 0755 /usr/local/bin/vault-ssh-helper
sudo chown root:root /usr/local/bin/vault-ssh-helper
config.hcl ファイル作成
sudo mkdir -p /etc/vault-ssh-helper.d/
sudo touch /etc/vault-ssh-helper.d/config.hcl
sudo vim /etc/vault-ssh-helper.d/config.hcl
vault_addr = "http://192.168.99.200:8200:8200"
ssh_mount_point = "ssh"
tls_skip_verify = true
allowed_roles = "*"
/etc/pam.d/sshd 編集
sudo vim /etc/pam.d/sshd
# PAM configuration for the Secure Shell service
# Standard Un*x authentication.
# @include common-auth
auth requisite pam_exec.so quiet expose_authtok log=/tmp/vaultssh.log /usr/local/bin/vault-ssh-helper -dev -config=/etc/vault-ssh-helper.d/config.hcl
auth optional pam_unix.so not_set_pass use_first_pass nodelay
/etc/ssh/sshd_config 編集
vim sudo /etc/ssh/sshd_config
ChallengeResponseAuthentication yes
PasswordAuthentication no
UsePAM yes
ssd 再起動
sudo systemctl restart sshd
Vault サーバ設定 (Ubuntu)
export VAULT_ADDR='http://192.168.99.200:8200'
vault secrets enable ssh
vault write ssh/roles/otp_key_role key_type=otp default_user=ubuntu cidr_list=0.0.0.0/0
SSH するマシン (Mac)
export VAULT_ADDR='http://192.168.99.200:8200'
vault login s.sizM2TmC2nc5pXwAFYchpl1L
ここのトークンは -dev
で Vault サーバを起動した際に表示されるトークンを使用する
本来であればちゃんとポリシーを作成してから専用のトークンを発行する
vault write ssh/creds/otp_key_role ip=192.168.99.200
Key Value
--- -----
lease_id ssh/creds/otp_key_role/DSULrJFHq7HiZQ7sEnDFkOgP
lease_duration 768h
lease_renewable false
ip 192.168.99.200
key 36899d1d-9f28-87e5-649f-58cfe3a80922
key_type otp
port 22
username ubuntu
ssh ubuntu@192.168.99.200
36899d1d-9f28-87e5-649f-58cfe3a80922
をパスワードに入力してログインできることを確認する
ワインラインでもできる
要 sshpass
コマンド
vault ssh -role otp_key_role -mode otp -strict-host-key-checking=no ubuntu@192.168.99.200
最後に
SSH するリモートホストの設定が一番大変なので、そこを自動化できればあとはクライアントが毎回 write ssh/creds/otp_key_role
するだけなのでセキュアなログインを実現できる
鍵認証の場合に鍵を配布する必要もなくなる
key_type=otp
で複数のユーザが登録可能かどうか要調査
Mac で login
したトークンが -dev
の root トークンなので本番では使えない
実際はそこのトークン払い出し戦略は考える必要がありそう
0 件のコメント:
コメントを投稿