&color(magenta){SSO; Single Sign-On};
一回承認を通れば、他のコンピュータに認証なしでログインできる。

ここでは研究室内の&color(darkorchid){ADドメイン};に参加したwindowsPCに一端ログインすれば、
そこから計算マシンへのログイン認証が不要になる設定を取り上げる。

また研究室内限定のWebコンテンツに、&color(darkorchid){ADドメイン};内からのアクセスなら認証不要で、
それ以外からのアクセスの場合は認証をと止める仕組みも取り上げる

&ref(2015y12m01d_232839751.png,nolink,noborder);

-ssh編 [[samba/SSO/GSSAPI_ssh]]
-rsh編 [[samba/SSO/krb5_rsh]]
-http編 [[samba/SSO/http]]

***1./etc/krb5.keytabの準備 [#n6023da6]
&color(red){*}; &size(10){Linuxマシンをmember serverに仕立てる際、sssdによる方法とwinbindによる方法の2つを取り上げた。ここでの対象は前者のsssdです};
「net join」で&color(darkorchid){ドメイン};に参加した際、&color(mediumslateblue){keytab};ファイルは各マシンに存在する。
SSOを行うにはこの&color(mediumslateblue){keytab};ファイルに&color(orangered){サービス記述子};が&color(orangered){''host''};となる&color(limegreen){''サービスプリンシパル''};の存在が必要となる。

現行の&color(mediumslateblue){keytab};ファイルに&color(orangered){サービス記述子};が&color(orangered){''host''};である&color(limegreen){''サービスプリンシパル''};が存在するかは
「klist -ke <keytabファイル>」にて調べられるが、存在しなければ発行元である&color(darkorchid){ドメインコントローラ};にて再発行する

#code(nonumber){{
[root@c ~]# rm /etc/krb5.n1.keytab
[root@c ~]# /opt/samba/bin/samba-tool domain exportkeytab /etc/krb5.n1.keytab --principal=n1$
[root@c ~]# /opt/samba/bin/samba-tool domain exportkeytab /etc/krb5.n1.keytab --principal=host/n1.sybyl.local
[root@c ~]#
[root@c ~]# klist -ke /etc/krb5.n1.keytab
Keytab name: FILE:/etc/krb5.n1.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   1 n1$@SYBYL.LOCAL (des-cbc-crc)
   1 n1$@SYBYL.LOCAL (des-cbc-md5)
   1 n1$@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
   1 n1$@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   1 n1$@SYBYL.LOCAL (arcfour-hmac)
   1 host/n1.sybyl.local@SYBYL.LOCAL (des-cbc-crc)
   1 host/n1.sybyl.local@SYBYL.LOCAL (des-cbc-md5)
   1 host/n1.sybyl.local@SYBYL.LOCAL (aes128-cts-hmac-sha1-96)
   1 host/n1.sybyl.local@SYBYL.LOCAL (aes256-cts-hmac-sha1-96)
   1 host/n1.sybyl.local@SYBYL.LOCAL (arcfour-hmac)
[root@c ~]#
}}
&color(red){*};&size(10){&color(limegreen){サービスプリンシパル};の&color(orangered){サービス記述子};(host)は小文字で};
この&color(mediumslateblue){keytab};ファイルを再度n1サイトに送り上書きする。
#code(nonumber){{
[root@c ~]# scp /etc/krb5.n1.keytab root@n1:/etc
}}
n1サイト側では、この &color(lightseagreen){/etc/krb5.n1.keytab};を&color(mediumslateblue){/etc/krb5.keytab};にリンクを張る。
&color(red){*};&size(10){もしくは&color(darkorchid){''ドメインコントローラ''};からのコピーの際に&color(mediumslateblue){/etc/krb5.keytab};としてもいいかも};
#code(nonumber){{
[root@n1 ~]# ln -s /etc/krb5.n1.keytab /etc/krb5.keytab
[root@n1 ~]# ls -l /etc/krb5.keytab
lrwxrwxrwx. 1 root root 19 12月 12 11:03 /etc/krb5.keytab -> /etc/krb5.n1.keytab
[root@n1 ~]#
}}
***2./etc/krb5.confの調整 [#we7e8d42]
kerberosサーバは&color(darkorchid){''ドメインコントローラ''};ですよと定義します
#code(nonumber){{
[root@n1 ~]# vi /etc/krb5.conf
[libdefaults]
  default_realm = SYBYL.LOCAL
  dns_lookup_realm = false
  dns_lookup_kdc = true
[realms]
 SYBYL.LOCAL = {
  kdc = c.sybyl.local
  admin_server = c.sybyl.local
 }
[domain_realm]
  .sybyl.local = SYBYL.LOCAL
   sybyl.local = SYBYL.LOCAL
[root@n1 ~]# 
}}
***3.sshdの設定を調整 [#q33a0b66]
&color(mediumslateblue){/etc/ssh/sshd_config}; の &color(crimson){GSSAPIAuthentication}; と &color(crimson){GSSAPICleanupCredentials}; を有効にして、sshdを再起動する
#code(nonumber){{
[root@n1 ~]# egrep "^GSSAPIAuthentication|^GSSAPICleanupCredentials" /etc/ssh/sshd_config
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
[root@n1 ~]#
[root@n1 ~]# systemctl restart sshd
}}
***4.GSSAPI対応ターミナルソフトの入手とインストール [#d2201b14]
windows端末にGSSAPI対応ターミナルソフトをインストールします。ここでは &color(magenta){''PuTTY''}; を使用します。

本家様 [[http://www.chiark.greenend.org.uk/~sgtatham/putty/>+http://www.chiark.greenend.org.uk/~sgtatham/putty/]]
ダウンロードページ [[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html>+http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html]] から
&color(magenta){putty.exe};をクリックしてダウンロード。
&ref(2014y06m17d_230432788.png,nolink);
これを例えば C:\Program Files(x86)\PuTTY\ に置く
&ref(2014y06m17d_231231117.png,nolink);
&color(red){*};&size(10){&color(magenta){putty.exe};のショートカットを作成して、C:\Users\Default\Desktopに配置すれば、初回ログイン時にディスクトップにショートカットが配置される};

***5.PuTTY設定 [#ga7a588d]
windowsマシンにドメインログインして、&color(magenta){''PuTTY''};を起動する
左側のツリーで「Session」を開き、パスワードなしでアクセスしたいLinuxサーバを指定します。
&ref(2015y03m21d_225810642.png,nolink);
次に、「Connection」->「Data」にて、「Use system username(illya)」を選択します。これでログインユーザでのアクセスとなる。
&ref(2015y03m21d_225844378.png,nolink);
最後に「Connection」->「SSH」->「Auth」->「GSSAPI」にて「Allow GSSAPI credential delegation」を有効にする。
&ref(2015y03m21d_225909866.png,nolink);

このように定めた設定を保存します。
左側のツリーの「Session」から「Saved Sessions」として「gssapi_N1」と定義して「Save」ボタンをクリックします。
&ref(2015y03m21d_230019569.png,nolink);

***6.接続テスト [#i303ed68]
接続設定名「gssapi_N1」を引き出して、アクセスを試みます。
左側のツリーの「Session」から保存した設定「gssapi_N1」を選び「Load」ボタンをクリックします。
&ref(2015y03m21d_230419946.png,nolink);
そして、&color(magenta){''PuTTY''};画面下部の「Open」ボタンをクリックします。
&ref(2014y06m17d_234847788.png,nolink);
初回にマシンキーの登録が求められるが「はい」を押します。
すると、パスワードなしでLinuxメンバサーバにログインできる。
&ref(2015y03m21d_231007378.png,nolink);

***7.ショートカットの作成 [#nd56d578]
上記のままだと、機動の度に接続設定名を再読み込む必要があり面倒です。それを簡略化する方法としてショートカットを作成します。
C:\Program Files(x86)\PuTTY\ に配置したPuTTY.exeのショートカットをディスクトップらに作ります。
&ref(2014y06m18d_002623359.png,nolink);

作ったショートカットの「プロパティ」を開いて、「リンク先」入力欄のPuTTY.exeに保存したセッション名を引数として加えます。
#code(nonumber){{
"C:\Program Files (x86)\PuTTY\putty.exe"  -load gssapi_N1
}}
「作業フォルダ」入力欄は、そのままでもいいが、ホームディレクトリ(%HOMEPATH%)でも宜しいかと。
&ref(2015y03m29d_114800463.png,nolink);
これで、このショートカットをダブルクリックすれば、パスワードの入力なしに、Linuxメンバサーバにアクセスできます。
&color(red){*};&size(10){なのでこのショートカットの名称を N1 とかマシン名にすればいいのかな};

***8.メモ [#v3389759]
&color(white,blue){ 留意 }; 設定が完了したら[save]する事。しないとその場限りです。

-[Ctl-D]で警告なしでPuTTYの画面を閉じるには
PuTTYのトップウインドウ枠を右クリックして「Change Settings...」から「PuTTY Reconfiguration」を呼び出す。
そしてCategoryで「Window」->「Behaviour」を選択して、「Warn before closing window」チェックを外す
&ref(2015y03m29d_115518545.png,nolink);
-画面に表示されているフォントを変更するには
「PuTTY Reconfiguration」のCategoryで「Window」->「Appearance」を選択してFont setting欄の「Font used in the terminal window」で「Change...」ボタンをクリックして使用するフォントを変更する。
&ref(2015y03m29d_115957250.png,nolink);
&color(red){*};&size(10){上図は、MSゴシックで9pointのフォントを選択している};
-画面配色を変更するには
「PuTTY Reconfiguration」のCategoryで「Window」->「Colours」の「Adjust the precise colours PuTTY displays」にて行う。
Default Foregroundは画面上の文字色で、ここではRGB値で(0,0,128)[青]を指定している
&ref(2015y03m29d_120329018.png,nolink);
Default Backgroundは画面の背景色で、ここではRGB値(255,255,255)[白]を指定している
&ref(2015y03m29d_120549442.png,nolink);
-Loggingして「&color(red){Event Log: GSSAPI authentication request refused};」と言われる
接続相手先の&color(mediumslateblue){keytab};ファイルに、&color(orangered){サービス記述子};が&color(orangered){''host''};な&color(limegreen){''サービスプリンシパル''};がないかもしれない。
klistやsamba-toolで確認してください


***ログインしたLinuxマシンからsso経由で別のLinuxマシンへ [#ad2c6ef3]
経路的には windowsPC -->  LinuxA --> LinuxB へとパスワードなしで渡り歩きたい。
Hostbase認証やら .ssh/authorized_keys 方式を施せば、パスワード認証なしで LinuxA --> LinuxB は行けます。
ここでは、これらの方法を使わず、あくまでも sso 経由で行きたい場合を記す


ssh先となるサーバ側の設定は前述のとおり&color(mediumslateblue){/etc/krb5.keytab};、&color(mediumslateblue){/etc/ssh/sshd_config};それと/etc/krb5.confの調整を済ませておく。
ssh接続を行うクライアント側では /etc/ssh/ssh_config もしくは .ssh/ssh_config に下記のようにする
#code(nonumber){{
Host *
  GSSAPIAuthentication yes
  GSSAPIDelegateCredentials yes
}}
こうすれば、 LinuxA --> LinuxB もsso経由で渡り歩ける


***不明な点 [#q9ac5f31]
windowsPC(出発点, windows login) -->  LinuxA において、
-windowsPC(putty,GSSAPI) --(パスワード無し)-> Linux(ADDC)はTicket cacheも作成される(/tmp/krb5cc_1001_xxxxxとか)
-windowsPC(putty,GSSAPI) --(パスワード無し)-> Linux(DM)はTicket cacheは作れない
-windowsPC(teraterm) --(パスワード入力)--> Linux(ADDC)は、Ticket cacheも作成される(/tmp/krb5cc_1001_xxxxxxとか)
-windowsPC(teraterm) --(パスワード入力)--> Linux(DM)は、Ticket cacheも作成される(/tmp/krb5cc_1001_xxxxxxxとか)
-windowsPC(teraterm) --(秘密鍵)--> Linux(ADDC)は、Ticket cacheは作れない

当然なのだが、Ticketがないと、そのままでは次へ(-->LinuxB)にパスワードなしログインは出来ない。
「kinit」を実行してTicketを用意する必要がある


***ssh接続 [#l97a0550]
ホストベース接続も有効にしていると、ssoでログインできたのか確認が難しい。「-v」を付与して実行すればわかるのだが、、
もっと明示的に確認するにはsshに「-o」を付与して接続を試みる

#code(nonumber){{
(チケットを破棄する)
[illya@n1 ~]$ kdestroy
kdestroy: No credentials cache found while destroying cache

(破棄の確認)
[illya@n1 ~]$ klist
klist: No credentials cache found (filename: /tmp/krb5cc_1002)

(チケットを取得)
[illya@n1 ~]$ kinit
Password for illya@SYBYL.LOCAL:

(取得したチケットの確認)
[illya@n1 ~]$ klist
Ticket cache: FILE:/tmp/krb5cc_1002
Default principal: illya@SYBYL.LOCAL

Valid starting       Expires              Service principal
2017-07-09T18:14:03  2017-07-10T04:14:03  krbtgt/SYBYL.LOCAL@SYBYL.LOCAL
        renew until 2017-07-16T18:14:00
[illya@n1 ~]$

[illya@c ~]$ ssh -o HostbasedAuthentication=no -o GSSAPIAuthentication=yes n1 -v
 :
debug1: Authentication succeeded (gssapi-with-mic).
 :
Last login: Sun Jul  9 18:13:41 2017 from c.sybyl.local
[illya@n1 ~]$
}}
「&color(magenta){Authentication succeeded (gssapi-with-mic)};」とあれば、チケットを使ってssoがうまく行った
ホストベースでの接続を確認するには
#code(nonumber){{
[illya@c ~]$ ssh -o HostbasedAuthentication=yes -o GSSAPIAuthentication=no n1 -v
 :
debug1: Authentication succeeded (hostbased).
 :
Last login: Sun Jul  9 18:18:33 2017 from c.sybyl.local
[illya@n1 ~]$
}}
と「&color(mediumvioletred){Authentication succeeded (hostbased)};」と表記される

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS