前回、初期設定まで漕ぎつけたRHEL8ですが、検証用とは言え一応サーバなので、それらしく「SSH」によるセキュアなリモート接続環境を整備しました。
OpenSSHの接続設定
OpenSSH は、Linux、UNIX系のオペレーティングシステムで、サポートされているSSHプロトコルです。RHEL8にも、デフォルトでOpenSSHパッケージが入っているので、これを利用しました。
OpenSSHの設定について
OpenSSHの現状を確認し、検証機として使いやすいよう以下3項目を、一般的な事例に倣って設定しました。それ以外はデフォルト設定のまま運用する事にします。
- Port22をSSHポートとする → デフォルト設定のまま使用する
- PermitRootLogin yes:検証機としていろいろ便利なので「root」ログインを許可する
- PasswordAuthentication yes:サーバログインの手段として、パスワード認証によるSSH接続を許可する
OpenSSHの現状確認と設定変更
仮想環境のRHEL8を起動します。デスクトップが表示されたら、左上の「アクティビティ」をクリック → サイドバーから「ターミナル」(図1赤枠)アイコンをクリックして「端末」(図1黄枠)を起動します。
「端末」が開いたら「su」して管理者権限を取得します。OpenSSH の設定ファイル「/etc/ssh/sshd_config」を開き、対象パラメータの設定を確認します。長いファイルなので、パイプ(|)にgrepコマンドを連結して、対象パラメータ名で検索して確認しました(図2黄枠①~③)。
実行コマンド(図2黄枠①):less /etc/ssh/sshd_config | grep Port ※黄枠②③も同様の書式
対象パラメータ(図2赤枠①~③)の内、Port 22の設定がコメントアウトされ、他のパラメータは期待値が設定されていた為、Port 22の設定(図2赤枠①)を追記しました(図3黄枠)。※もちろんPort 22は、SSHのデフォルトなので、特に設定しなくても22番ポートが割り当てられますが、今回は学習の為、あえて設定を追記しました。
OpenSSH設定変更の適用とデーモン実行の確認
OpenSSHは「sshd」デーモン(主にバックグラウンドで動作するプロセス)として動作するので「sshd」が今のプロセスにある(図4黄枠)事を確認します(図4赤枠)。
実行コマンド(図4黄枠):ps ax | grep sshd
「sshd」を再起動して設定ファイル(/etc/ssh/sshd_config)の変更を適用します(図5黄枠①)。
実行コマンド(図5黄枠①):systemctl restart sshd
次に「sshd」のステータスを表示し(図5黄枠②)設定が読込まれてアクティブ状態である事、設定通り22番ポートが割り当てられている事を確認します(図5赤枠)。
実行コマンド(図5黄枠②):systemctl status sshd
ファイアウォールの状況確認
RHEL8ではデフォルトで「firewalld」と言うファイアウォールが動作しています。まず「firewalld」のデフォルトゾーンに妥当なゾーンが設定されている事を確認します。次にデフォルトゾーンでSSH接続が許可されているか確認します。もし、デフォルト設定が流用できない場合は、検証機として外部接続できるよう変更します。
デフォルトゾーンの確認
「firewalld」では「ゾーン」と言う、アクセス先との通信インターフェイスの性質が似通っているものをひとまとめにして、アクセス制御を行う方式が採用されています(ゾーンベースポリシーモデルと言うらしい)。本来は「ゾーン」の設定も行うのが筋ですが、自分には難しいのでデフォルトゾーンに、「trusted(全通信を許可する)」以外が設定されている(図6黄赤枠)事の確認にとどめました。
実行コマンド(図6黄枠):firewall-cmd --get-default-zone
※補足:インストール時「ゾーン」には、事前に用意された9種類から、何れかのデフォルトゾーンが設定されます。「firewalld」のデフォルトゾーンは「public」です。
SSH接続の許可状況を確認
デフォルトゾーンで「SSH接続」が許可されている事を確認します(図7黄赤枠)。確認コマンド (図7黄枠)で展開されるリストの「services:」項目に「ssh」と記載がある事(図7赤枠)を確認します。
実行コマンド(図7黄枠): firewall-cmd --list-all
※補足:ゾーン「public」には「SSH接続」がデフォルトで許可されています。
もし、デフォルトゾーンに「SSH接続」が許可されていない場合(図8黄赤枠①)は、以下のコマンドを実行して「services:」項目に「ssh」を追記します(図8黄枠②)。
実行コマンド(図8黄枠②) : firewall-cmd --permanent --add-service=ssh
設定を変更したので、ファイアウォール設定の再読込みを行います(図8黄枠③)。
実行コマンド(図8黄枠③) : firewall-cmd --reload
デフォルトゾーンで「SSH接続」が許可されている事を確認します(図8黄赤枠④)。
仮想端末(RHEL8)のIPアドレスを確認する
外部(SSHクライアント)から接続の為、仮想端末(RHEL8)のIPアドレスを確認します(図9黄赤枠)。※もちろん、前回インストール時に設定したIPアドレスが表示されます。
実行コマンド(図9黄枠):ifconfig
SSHクライアント(TeraTarm)からの接続
SSHクライアント(TeraTarm)を使って、外部から仮想端末(RHEL8)にSSH接続します。
TeraTarmから仮想端末(RHEL8)に接続
TeraTarmを起動し、図10の接続設定ポップアップが表示されたら、前述で確認した仮想端末(RHEL8)のIPアドレスを入力し、その他の設定については、図10赤枠の通りである事を確認し「OK」を押下します。
初回接続時は、セキュリティ警告が出るので「このホストをknown hostリストに追加する」にチェックが入っている事を確認し「OK」を押下すれば(図11赤枠)、次回から表示されなくなります。
SSH認証ポップアップが表示されたら、ここ迄のSSH接続設定の経緯から、今回はユーザ名、パスフレーズに、前回インストール時に作成した管理者ユーザのユーザ名、パスワードを入力(図12赤枠)し、他の設定はデフォルトのまま「OK」を押下します(図12)。
以下図13のようなターミナル表示になったら、正常にSSH接続できています。
仮想端末(RHEL8)に自動接続する「ttl」ファイルの作成
正常にSSH接続が確立したので、日々のメンテナンス用に仮想端末(RHEL8)に自動接続する「ttl」ファイルを作成します。「ttl」ファイル作成の詳細については、以前の掲載記事をご覧ください。
マシン名指定で接続できるよう、以前の設定例に倣って「hosts」ファイルに仮想端末(RHEL8)のIPとマシン名の紐づけ設定を追記します(図14赤枠)。
「ttl」ファイルは、業務でよく使う接続の構成に倣って、管理者ユーザで仮想端末(RHEL8)にログイン後、管理者権限に移行するSSH接続(図15黄枠)と、以下の通り「root」で直接ログインするSSH接続(図15赤枠)の、2パターンを作成しました。※「root」で直接ログインするのは、大概のLinuxサーバの運用ルール上で、規約違反になると思われます。が、ここでは「root」ログインを許可する(PermitRootLogin yes)設定の確認も兼ねて作成しました。
作成した仮想端末(RHEL8)に自動でSSH接続する2パターンの「ttl」ファイル(図15)。「root」で直接ログインする接続する「ttl」ファイル(図15赤枠)をダブルクリックし、仮想端末(RHEL8)に「root」ログインが許可されているか、確認します。
無事に「root」ログインできました(図16赤枠)。
参考資料
- 株式会社Innovation & Co.「ITトレンド」「ファイアウォールのゾーンとは?背景や設定のポイントも紹介!」2022年10月28日閲覧
- インフラサーバ運用の技術ブログ ほそぼそ話(2020-) あいるofほそ “【Linux】Firewalldでよく利用するポート開放コマンド(firewall-cmd)“ 2022年10月28日閲覧
- Red Hat,Inc「ネットワークの設定および管理」「第46章 firewalld の使用および設定‐46.1.2. ゾーン」 2022年10月28日閲覧
コメント