ENGINEER BLOG

ENGINEER BLOG

AWS EC2とOpenLDAPでユーザ認証できるようにしてみた

はじめまして。
4月からコンサルティングサービス本部に配属になりました、笹野です。

今回は、
AWS EC2インスタンス(Amazon Linux AMI)に
OpenLDAPをインストールして、ユーザ認証できるようにしてみた
のでご紹介致します。

目標

OpenLDAP-server/clientをインストールしたAWS EC2インスタンスへ
OpenLDAP-serverに登録したユーザでSSHログインができる

構築する

こちらを参考に構築しました。

今回、EC2インスタンスはサーバとクライアントを同一のサブネット内に作成し、
セキュリティグループでSSH(22)、HTTP(80)、LDAP(389)の通信を許可しています。

それぞれのインスタンスを設定していきましたが、
「パスワード認証」と「鍵認証」でSSHログインする際につまづいたので、その解決方法をご紹介していきます。

SSHでログインできるようにする

①パスワード認証編

設定を終えて、いざ、クライアントからサーバへパスワード認証でSSHログイン!

[ec2-user@ip-10-0-0-37 ~]$ ssh m.sasano@10.0.0.77
Permission denied (publickey).

……できません。そもそもパスワード聞いてくれません。

いろいろ調べてみると、
そもそもAmazon Linux AMIでは初期状態でパスワード認証を拒否するようになっているので、

/etc/ssh/sshd_config 内の

PasswordAuthentication no

を削除してパスワード認証を許可する必要がありました。

修正後はsshdの再起動も忘れずに行いましょう。

[root@ip-10-0-0-77 ec2-user]# sudo service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

もう一度ログインしてみると…
以下のように、クライアントからサーバへパスワード認証でSSHログインできました!

[ec2-user@ip-10-0-0-37 ~]$ ssh m.sasano@10.0.0.77
m.sasano@10.0.0.77`s password:
Last login:

      __|  __|_  )
      _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2017.03-release-notes/
[m.sasano@ip-10-0-0-77 ~]$

クライアントへも同じユーザでログインすることができるようになってます!

Last login:
       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2017.03-release-notes/
[m.sasano@ip-10-0-0-37 ~]$

②鍵認証編

こちらも一通り設定を終えましたが、TeraTermから鍵認証でSSHログインができません。

結論としては、 /etc/ssh/sshd_config 内で

  • AuthorizedKeysCommand
  • AuthorizedKeysCommandUser

を指定することで解決しました。(参考

AuthorizedKeysCommand /usr/libexec/openssh/ssh-ldap-wrapper
AuthorizedKeysCommandUser root

“AuthorizedKeysCommand” にコマンドを指定することで、
コマンドの実行結果をOpenSSHに公開鍵として渡すことができるようになるようです。

あわせて “AuthorizedKeysCommandUser” も指定する必要もあります。

なにはともあれ、鍵認証でもSSHログインできるようになりました。

また、鍵認証できるようになったので、パスワード認証でのログインはできないようにしておいたほうがいいですね。

先程削除した “PasswordAuthentication no”“/etc/ssh/sshd_config” に追記すればパスワード認証を拒否できます。

まとめ

EC2インスタンスにOpenLDAPをインストールして、各サーバへ同一ユーザでSSHログインすることができました!

分からないことだらけでしたが、調べながら、質問しながら、なんとか形になりました。

ユーザ管理は結構大変という話を聞きますが、
OpenLDAPを使うことで認証情報を一元管理することができ、少しは楽になるのではないでしょうか。

おまけ

Apache Directory Studio」 少し使ってみましたが楽ですね。

GUI分かりやすいし、ユーザ増やすのもコピペで簡単にできます。

でも、大量のユーザを追加する場合とかはLDIF作ってインポートなりしたほうが良さそうな気がします。