Pocket

踏み台サーバを海外では

Bastion server(ばすちん いや…ばすちぉん)

と呼びます。今回はGoogle Authenticator(2段階認証)ssh鍵認証による踏み台サーバを構築してみました。設定もシンプルなのでいい感じ。


■Google Authenticator

https://github.com/google/google-authenticator

2段階認証はメールアドレスとパスワードに加えて、スマートフォン/Webアプリに送信される認証コードを入力してログインするものです。認証コードは数10秒しか使えないため、パスワードのように推測されることはなく、セキュア!クライアントとしてはデフォルトのGoogle AuthenticatorアプリAuthyが有名ですな。


■要件

  • SSH鍵認証でログイン
  • SSH鍵を指定しない場合はログインパスワードとGoogle Authenticatorのパスを求められる(完全2段階認証)

2段階認証で踏み台サーバにログインするのは流石に利便性が悪いので、SSH鍵認証もできるようにしました。これで開発メンバーがログインしやすく、外からSSHアタックされても、二段階認証による完全セキュアを実現したというわけです。


■Install Google Authenticator/Setting sshd

OSはAmazon Linux2を利用しています。

qrencode-libsはQRコードで二要素目の認証をするために必要なのでインストールします。

・/etc/pam.d/google-auth

・ /etc/pam.d/sshd

・/etc/ssh/sshd_config

・restart sshd


■setting google-authenticator.sh

・/etc/profile.d/google-authenticator.sh

運用上、毎回アプリでQRコードを読ませるのはめんどくさいので、SSHログイン時に個人でQRコードを読み取るように出力させてみました。あとは各ユーザーに公開鍵を指定してログインしてみましょう。間違えて消しちゃった!などは$HOME/.google_authenticatorを消せばOKです。


■SSH login

・use ssh key

 

ちゃんとGoogle AuthenticatorのQRコードが出てきて、SSH鍵認証でログインできますな

・not use ssh key

上記のようにSSH鍵を指定しない場合はログインパスワードが通り、Google Authenticatorの二段階認証パスワードが求められます。


■まとめ

導入が簡単!!むしろ入れるべき!
次回はansibleでのユーザー管理方法をブログします。

Pocket

カテゴリー: AWSBastionSSH

adachin

1989年生まれのSRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWS/Azureでのインフラ構築、Docker開発環境の提供、Kubernetes保守、インフラコード化、新技術の検証、リファクタリング、セキュリティ強化などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTAで未経験者にインフラのコーチング/コミュニティの運用を実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください