デフォルトでインストールされていて、enableもされている
・サービス管理:systemdに管理されているため、systemctl系のコマンドが実行できる。status/start/stop/restart等々
・定義ファイル:/etc/ssh/sshd_config
・ログ管理
[root@test01 ~]# ll /var/log/secure
-rw-------. 1 root root 3026 11月 2 12:54 /var/log/secure
ログがrsyslogに管理されている
[root@test01 ~]# grep secure /etc/rsyslog.conf
authpriv.* /var/log/secure
Facilityの定義場所:
[root@test01 ~]# grep -i authpriv /etc/ssh/sshd_config
SyslogFacility AUTHPRIV
認証方式
①パスワード
②チャレンジレスポンス
③証明書(公開鍵)
パスワード認証
デフォルトの認証方式で、rootも許可されていることは要注意
PermitRootLoginをnoにすることで、rootからのsshが拒否される
[root@test01 ~]# egrep "Password|Root" /etc/ssh/sshd_config | grep -v "^#"
PermitRootLogin yes
PasswordAuthentication yes
チャレンジレスポンス
デフォルトがnoとなって、パスワード認証より、セキュリティが高く、よく使われる。
チャレンジレスポンス処理流れ:(川口の理解であり、間違ったらごめんなさい)
①サーバ:乱数をクライアント側に送る
②クライアント:①の乱数を使って、パスワードを暗号化し、サーバに送る
③サーバ:①の乱数とsshユーザのパスワードを暗号化し、②と一致するかチェックする。
なんでこの面倒くさいことやるのか、川口の考えでは、乱数とパスワードでの暗号化にすること、第三者からみても、パスワードがわからないし、ちゃんと想定されているクライアントであることも証明できる
(SSHでとやり取りが暗号化されており、傍聴されても、パケットの中身がみれないと思う。)
[root@test01 ~]# grep Chall /etc/ssh/sshd_config | grep -v "^#"
ChallengeResponseAuthentication no
証明書認証
デフォルトで証明書認証が既に有効されてるので、PasswordAuthenticationをnoにすれば、証明書でログインできる
[root@test01 ~]# grep -i PubkeyAuthentication /etc/ssh/sshd_config
#PubkeyAuthentication yes
sshdは、定義ファイルを有効にするのに、restartしなくても、reloadでもできるのがありがたい
[root@test01 ~]# systemctl reload sshd
キーペアの作成はCLIもできるし、Tera Termもできる
詳しくはgoogle先生にきいてみればと思う
キーペアができたら、公開鍵の内容をsshするユーザのの~/.ssh/authorized_keysに記載し、パーミッションを600にすることも忘れず
(最初は、ディレクトリやファイルが存在しないと思って、↓で手順で作ってあげよう)
[root@test01 ~]# mkdir -p /home/snow/.ssh
[root@test01 ~]# touch /home/snow/.ssh/authorized_keys
[root@test01 ~]# chmod 600 /home/snow/.ssh/authorized_keys
これで準備完了、クライアントから秘密カギを使ってログインできる。
よく設定される箇所
①ポート転送の無効化
②パスワード認証の無効化
(チャレンジレスパンスにするか、証明書認証にするかした方が安全だろう)
③rootログイン拒否
以上