Amazon LinuxでオンプレミスADのユーザ情報を使ってログインする

AWS上のLinuxインスタンスでオンプレのAD認証をする必要に迫られたのでそのメモ。

参考にしたサイト

https://docs.microsoft.com/en-us/azure/active-directory-domain-services/active-directory-ds-admin-guide-join-rhel-linux-vm

http://jshimazu.hatenablog.com/entry/2014/02/05/165058

前提

LinuxインスタンスVPN接続でオンプレのADと接続可能な状態になっていること

手順

  1. Linuxインスタンスにログイン
  2. 必要なパッケージをインストール。
    sudo yum -y install realmd sssd krb5-workstation krb5-libs
  3. DNS参照でオンプレADが見つからないといけないので、resolv.confを修正。(普通はADサーバのIPアドレスを指定すれば良いと思います。)
    vi /etc/resolv.conf
    nameserver <参照先DNSサーバ名> ※既存のnameserverの箇所はコメントアウトしておく
  4. AD参照できるか確認
    sudo realm discover <ドメイン名>
  5. kerberosの初期化
    kinit <ユーザー名>@<ドメイン名>
  6. ドメイン参加
    sudo realm join --verbose <ドメイン名> -U '<ユーザー名>@<ドメイン名>' ubuntuの場合は上記に--install=/も追記する。
  7. デフォルトだとSSH接続が鍵認証なので、パスワード認証に変更する。
    sudo vi /etc/ssh/sshd_config
    PasswordAuthentication no の箇所を PasswordAuthentication yes に修正
    AuthorizedKeysFile の箇所をコメントアウト
    PubkeyAuthentication の箇所を PubkeyAuthentication no に修正
  8. ADが死んでしまったとき用にec2userだけは証明書認証をできるようにする。
    sudo vi /etc/ssh/sshd_config 下記2行を追記
    Match User ec2-user
    PubkeyAuthentication yes
  9. AmazonLinuxの場合、インスタンス再起動時にsshdが鍵認証に戻されてしまうのでそれを無効化。
    sudo vi /etc/cloud/cloud.cfg.d/00_defaults.cfg
    ssh_pwauth: false の箇所を ssh_pwauth: true に修正。
  10. sshdの再起動
    /etc/init.d/sshd restart
  11. 以上

動作検証

対象のLinuxインスタンスSSH接続。そのとき、ユーザ名はUPN('<ユーザー名>@<ドメイン名>')で、パスワードはADのものを使ってアクセス。 ログインできれば成功。

その他

管理者権限を与えたいユーザには/etc/sudoersを編集し、よしなにやってください。 グループに与える場合は「%<ドメイン名>\<グループ名> ALL=(ALL) ALL」とかすればOK

その他2(2017.6追記)

ログインする際に@<ドメイン名>でログインするのが面倒なときは /etc/sssd/sssd.confに下記修正を加えればOK。

  1. [sssd]セクションに default_domain_suffix = <ドメインサフィックス(@以降のところ)>

  2. use_fully_qualified_names をコメントアウト

  3. systemctl restart sssd でSSSDを再起動。 参考にしたURL:

ubuntu - SSSD Authentication to Windows Domain without @domain.com everywhere - Server Fault