セキュアなsshサーバーを構築する [ソフトウェア研究室]

 こんにちは!
 ナビゲータのEVEです。

 本日から、ログインに関連するクラスの製造と、サーバーの構築にはいっています。  そこで、問題なるのが、ハイセキュリティなsshのログイン方法の確立・・・。ここで、失敗すると全てが台無しになる可能性があります。
 ただ、前回の調査では、設定できず、設定した内容がシステムに反映されませんでした。今回は、なぜ、設定した内容がサーバーへ反映されないのか調査するところから始めました。

[確認事項]
 まず、前回同様に、ssh_configに設定した内容が、サーバーに反映されないことを確認しました。確認するにあたり、一番分かりやすいポート番号の変更を試みました。いろいろやりましたが、やはり、思った動作をしません。
 そこで、次にやったのが、ssh_configの内容をそのままコピーをし、そのコピーをChatGTPにどこが間違っているのか聞いてみました。そこで分かったこと・・・。ssh_configに記述されている内容は、SSHクライアントがリモートサーバーに接続する際の挙動を制御する設定を記述するそうです。そのため、サーバーに記述すべき内容を、ssh_configに書いても無駄だと指摘がありました。
 そこで、深掘りをして聞いたところ、サーバーの設定は、sshd_configに設定するということが分かりました。一字違いのファイルに設定したばかりに、かなりの時間を使ってしまいました。
 この件もChatGPTに聞きながら作業を進めたのですが、見間違い、聞き間違いましたでしょうか?こんなときって、他責にしたくなりますよね・・・。

[sshd_configの設定]
 サーバーの設定を、sshd_configに設定することが分かったので、早速、ポート番号に関する記述をしたところ、思った通りの動作をしました!このとき気を付けなければいけないのは、ファイヤーウォールのポートを開けなければなりません・・・。正しいファイルに、正しい記述をしたうえで、ファイヤーウォールで制限しているポート番号を開放することにより、ポート番号に関する問題は解決しました。

[設定手順]
 正しいファイルが分かったので、正しい設定ができるように、手順書を作りました。本日手順書を作り終えているのですが、まだ、正しいと断言できないものなので、本日は、概要だけ以下に記します。

❶一般ユーザーの作成
 まず、root ユーザーで直接ログインできないようにする前に、一般ユーザーを作成しておきます。

❷公開鍵を作成し、作成したユーザーでログイン可能な状態にする。

❸SSH設定を変更
 次に、SSHの設定ファイルを編集し、必要な変更を加えます。
 sshd_config の編集 /etc/ssh/sshd_config ファイルを開きます。
設定内容 以下の設定を順番に行います

1)公開鍵認証を有効にする
2)パスワード認証を無効にする
3)チャレンジレスポンス認証を無効にする
4)PAMを有効にする:
5)ルートログインを無効にする
6)特定ユーザーのログインを許可(必要に応じて)
7)最大認証試行回数を制限:
8)詳細なログを有効化
9)X11フォワーディングを無効化
10)SSHのポート番号を変更

設定を保存してファイルを閉じます。

❹SSHサービスの再起動

❺新しいユーザーでログインテスト

❻ルートログインを無効にする前に確認

❼確認とテスト
 新しいユーザーでSSH接続できることを再確認。
 ルートユーザーでのSSHログインができないことを確認します。


[あとがき]
 以上の検討で、サーバー側で作業を開始することができそうです。これから、セキュリティについて考えていくのですが、性悪説で考えていかなくてはいけません。
 現在、XServerという業者の環境を利用して、サーバーを構築していますが、XServer社は、全体のシステムの管理者パスワードとrootユーザーのパスワードが同じです。Ubuntuをインストールするとそうなるのです。その場合、XServer社に犯罪者がいると仮定した場合、rootのパスワードを変更したほうがいいようです。
 また、公開鍵は、社内、または自宅で作成し、その後当該サーバーへアップロードします。秘密鍵は、社内または自宅から外に出さないことが基本になります。
 などなど、気を付ける点は多々あります。昔は、手順書なんて作らないでやりましたが、近頃は手順書を作ることの重要性を認識しています。文書を作っていて気づくこともありますので、一度お試しください。

 では、また!

コメント