ssl.conf / sshd_config / sss_config の違い

参考サイト
(http://tooljp.com/windows/chigai/html/IT/SSL-SSH-chigai.html)
(クライアント構築について：https://support.datafabric.hpe.com/s/article/How-to-configure-LDAP-client-by-using-SSSD-for-authentication-on-CentOS?language=ja)
(https://qiita.com/s5601026/items/8c5f16a2935ccd7fb305)
(SSHなどについて：https://qiita.com/kamihork/items/8ba9484f2d175aed40f2#ssh)

#SSLとSSHとSSSDの違い
まず、SSLとSSHの違いについて・・・どんな通信を暗号化するのか？が異なる
__SSL (=Secure Socket Layer)__
自分とインターネットとの通信を暗号化
TCP/ Port 443
HTTP以外にもSMTPやPOPをセキュアにトンネリングすることが可能
秘密鍵・公開鍵認証 __→ 受け入れる公開鍵が正当化どうかブラウザ側に事前にインストールされているルート証明書のベースで確認__
事前の公開鍵の登録が不要だが、認証局から発行された証明書の入手が必要
→認証連携でOpenLDAPと連携するシステムは多々あるが、連携元システムがLDAPクライアント、連携先サーバ ( OpenLDAPサーバ ) はLDAPサーバとなり、この両者の通信を暗号化することがセキュリティ上は望ましいと思われる。__不特定多数からアクセスしてくるわけではなく、決まったクライアントからしかアクセスはない__ので有料の証明書を使うのではなく、__オレオレ証明書を利用__してお金をかけずに対応しているところがほとんどである。
ex. OpenSSL
参考サイト：https://www.unix-power.net/networking/post-748

__SSH (=Secure Shell)__
自分と他の端末の遠隔操作時の通信を暗号化
TCP/ Port 22
リモートシェル機能でリモートからの端末ログインが可能
パスワード認証、秘密鍵・公開鍵認証 __→ 公開鍵は原則事前に入手__
事前に双方の公開鍵の登録が必要
ex. OpenSSH

__SSSD (=System Security Services Daemon)__
最後にこいつ。名前こそ似通っているものの、前者二つと全く毛色が異なる。
識別と認証の中央管理のためのサービス。LdapユーザをLinuxとして認識させる機能。これを設定することで、「#id <ユーザ名>」や「#su <ユーザ名>」の実行を成功させることが可能になる。

# OpenLDAPとSSH,SSL,SSSDの関係
__LDAP認証とは__
LDAPサーバーに登録された情報で認証する。LDAPサーバーにアカウント持たせることでまとめてユーザ管理できて楽。平文なのでLDAP通信にはSSL(→LDAP+SSL=LDAPS)やKerberosを用いる。

__SSH__
LDAPクライアントが他の端末のLDAPクライアントにLDAP認証を通してログインする際に設定する必要がある？

__SSL__
LDAPは Active Directory の読み取りおよび書き込みに使用されるが、デフォルトでは、LDAPトラフィックは安全に送信されない。SSL/Transport Layer Security (TLS) テクノロジを使用すると、LDAPトラフィックを保護できるため、LDAP over SSL (LDAPS) を有効にする必要がある。

__SSSD__

__LDAPS vs Kerberos__
じゃあここで、LDAP通信を安全に運用するためにSSLとKerberosどちらを用いた方がいいのか？という話が出てくる。こちらのサイト(https://stackoverflow.com/questions/111386/difference-between-ssl-and-kerberos-authentication/111931#111931) によると・・・

>Kerberosは認証プロトコル / UDP
SSLは暗号化プロトコル / ほぼTCP

>__LDAPS__
>SSLの認証は通常、X.509証明書と呼ばれるものに埋め込まれたサーバーとクライアントのRSAまたはECDSA鍵をチェックすることで行われ、クライアントは、証明書とそれに対応する鍵によって認証される。
具体的には、クライアントは、公開鍵と秘密鍵のペアを持ち、サーバも同様に公開鍵と秘密鍵を持つ。クライアントは共通鍵のセッションキーを生成する。クライアントはサーバの公開鍵で暗号化し、この暗号化されたセッションキーをサーバに送信する。サーバーは、暗号化されたセッション・キーを自分の秘密鍵で復号する。クライアントとサーバーは、対称セッション・キーを使用して通信を開始する（基本的には、対称キーの方が高速であるため）。

>__Kerberos__
Kerberosの認証では、パスワードやその他の方法で認証され、Windowsでは、ドメインで使用する場合などにActive DirectoryでKerberosを使用する。
具体的には、公開鍵暗号せず、信頼できる第三者機関を利用する。ここではその概略を説明することとする。サーバーとクライアントの両者は、信頼できる第三者に自分の身元を（秘密を使って）証明し、クライアントがサーバーを使いたいとき、クライアントはそのサーバーが信頼できるかどうかを確認する。一方、サーバーはクライアントが信頼できるかどうかを確認する。これで、お互いの身元が相互に保証(=整合性がとれたと)され、サーバーとの通信が可能になる。
(www.DeepL.com/Translator（無料版）で翻訳)


#「/etc/ssh/~」と「~/.ssh」の違い
前者がグローバルにシステム共通の設定ファイル
後者が各ユーザに固有の設定ファイル
※sshクライアントの設定に関しては、「~/.ssh/config」に記載することが可能で、その場合、「/etc/ssh/ssh_config」(システム共通の設定ファイル)よりも「~/.ssh/config」(ユーザ固有の設定ファイル)が優先される。

# ls /etc | grep ss
でヒットする
ssh
ssl
sssd
の違いについて
###/etc/ssh
ssh(SSH client) : 他のサーバにsshで接続する設定
sshd(OpenSSH Daemon) : 他のサーバからsshで接続されるときの設定であり、sshでのログインに起動必須

配下には鍵ファイルの他、設定ファイルが2つ格納されている。
__[/etc/ssh/ssh_config]__：クライアント側設定ファイル
__[/etc/ssh/sshd_config]__：サーバ側設定ファイル

###/etc/ssl
配下にはcertsディレクトリが存在し、「/etc/pki/tls/certs」へのシンボリックシンクになっている。

###/etc/sssd
配下にはconf.dのみが存在する。設定ファイル「sssd.conf」は手動で作成する必要がある。
__[etc/sssd/sssd.conf]__：設定ファイル(手動作成)

sssdの有効化にあたり、「/etc/nsswitch.conf」や「/etc/pam.d/password-auth」を直接編集しても良いが、CentOSでは"authconfig"コマンドの利用が推奨されているので、これを用いて設定する。

```
設定
# authconfig --enablesssd --enablesssdauth --enablelocauthorize --disableldap --disableldapauth --disableldaptls --update
```
今回はsssdでLDAP認証をしているため、disable-ldapなどしても問題はないらしい。---?要調査

```
設定確認
# authconfig --test | grep sss
nss_sss is enabled by default
pas_sss is enabled by default
```

oddjobsコマンドなどについて、続きは参考サイト：https://qiita.com/s5601026/items/8c5f16a2935ccd7fb305


#OpenLDAPとSSH,SSL,SSSDの関係性


#Kerberos