10分でSSHに2要素OTP認証を追加します

状況:定期的にSSH経由でアクセスするLinuxサーバー群があります。 何らかの鉄の鍵またはGoogle認証システムによるSSHの2要素認証を設定できます。簡単なこともありますが、各サーバーでこの設定を行うのは必ずしも便利ではありません。



この状況から抜け出す方法は、中間認証サーバーかもしれません。 同じ記事で、 オープンソースソリューション(Isolate)をレイアウトすることについて既に書いています-Google Authenticatorを介したワンタイムキーを使用した2要素認証で認証サーバーをセットアップする手順。



画像



Isolateの展開から始めましょう。これには、CentOS 7、Ubuntu 16.04、またはDebian 8マシンが必要です。



1. Isolateをインストールするためのシステムを準備します。



Centos:
yum install ansible git
      
      





Ubuntu:
 apt update; apt install git python-pip pip install ansible
      
      







2. Isolate自体をダウンロードします。



 git clone https://github.com/itsumma/isolate.git
      
      





3.同じマシンでansibleを実行するには、ビューに表示します(リモートマシン、サーバー、またはデスクトップLinux / MacOSから実行するか、Isolateを展開するマシンで直接実行できます)。



 [main] localhost ansible_connection=local
      
      





4。



 ansible-playbook -i isolate/ansible/hosts.ini isolate/ansible/main.yml
      
      





完了を待っています。 Ubuntuがインストール済みパッケージ(APT)のアップグレードのステップで誓う場合、以下を行います:



 apt dist-upgrade
      
      





5. / etc / bashrc(Centos)または/etc/bash.bashrc(Ubuntu)を最後に追加します



 if [ -f /opt/auth/shared/bash.sh ]; then source /opt/auth/shared/bash.sh; fi
      
      





6.マシンを再起動します。 できた!



oauthを使い始める



1. /etc/pam.d/sshd(Centos)の最後に行を追加するか、/ etc / pam.d / common-auth(Ubuntu)に追加します



 auth required pam_oath.so usersfile=/etc/oath/users.oath window=20 digits=6
      
      





2。



 sed -i -e 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/g' /etc/ssh/sshd_config
      
      





3. / etc / ssh / sshd_configの最後



 Match Group auth AuthenticationMethods keyboard-interactive
      
      





4。



 systemctl restart sshd
      
      





5. oauthを有効にするユーザーを追加します



 auth-add-user _
      
      





6. TOTPまたはHOTPトークンを生成します。



 gen-oath-safe _ totp gen-oath-safe _ hotp
      
      





画像



Google認証システムのQRコードを使用してトークンを追加します。



画像



7。



 touch /etc/oath/users.oath chmod 0600 /etc/oath/users.oath
      
      





8.手順6で取得した行を/etc/oath/users.oathに追加します



9. redisからのパスワードを見る



 grep requirepass /etc/redis.conf
      
      





/ etc / bashrc(Centos)または/etc/bash.bashrc(Ubuntu)にエントリを追加します



 ISOLATE_BACKEND=redis ISOLATE_REDIS_HOST="127.0.0.1"; ISOLATE_REDIS_PORT="6379"; ISOLATE_REDIS_DB=0; ISOLATE_REDIS_PASS=redis_pass; export ISOLATE_REDIS_HOST; export ISOLATE_REDIS_PORT; export ISOLATE_REDIS_PASS; export ISOLATE_REDIS_DB;
      
      





サーバーを追加する



二要素認証用の既製のサーバーができたので、独自のサーバーを追加できます。 これを行うには、まずサーバー情報をIsolateに追加し、次にユーザーを作成してターゲットサーバーにキーを配置します。



移動するサーバーを追加します。



 auth-add-host --project server-admin --server-name ubuntu --ip 10.0.0.1
      
      





sコマンドを使用して、サーバーのリストを表示できます。



画像

サーバーへのユーザーの追加



サーバー10.0.0.1で、ユーザーサポートを作成し、Isolateサーバーの/home/auth/.ssh/id_rsa.pubからそのキーを処方します。



 SUPPORT_USER="support" KEY="<YOU KEY HERE>" useradd -m ${SUPPORT_USER} mkdir /home/${SUPPORT_USER}/.ssh echo ${KEY} >> /home/${SUPPORT_USER}/.ssh/authorized_keys chmod 600 /home/${SUPPORT_USER}/.ssh/authorized_keys chmod 700 /home/${SUPPORT_USER}/.ssh/ chown -R ${SUPPORT_USER}:${SUPPORT_USER} /home/${SUPPORT_USER}/.ssh/ echo "${SUPPORT_USER} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
      
      





Isolateサーバーで、sコマンドを使用して目的のサーバーを検索し、gを使用して特定のサーバーに移動できます。



 g ip_ - g 10.0.0.1 g  _ - g server-admin ubuntu
      
      





ここで、認証サーバーから追加されたすべてのサーバーに移動する必要があります。ワンタイムコードとパスワードを使用して、分離に移動し、目的のサーバーに移動します。 この場合、2要素認証の意味が失われるため、サーバーに直接アクセスしないでください。 まあ、一般的には、ユーザーキーなどを削除します。 :)



いつものように、コメント、追加、そしてもちろん、プールのリクエストは大歓迎です! Githubプロジェクト



All Articles