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プロジェクト

Source: https://habr.com/ru/post/J335686/


All Articles