概要
登場マシンは本来 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 binwget 'https://releases.hashicorp.com/vault/1.1.3/vault_1.1.3_linux_amd64.zip'unzip vault_1.1.3_linux_amd64.zipmv vault binvault 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.zipsudo unzip vault-ssh-helper_0.1.4_linux_amd64.zip -d /usr/local/binsudo chmod 0755 /usr/local/bin/vault-ssh-helpersudo 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.hclsudo 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 sshvault 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 件のコメント:
コメントを投稿