最初に行うセキュリティ設定(Ubuntu・Rocky Linux)¶
警告
事前情報¶
あらかじめ用意するもの¶
SSHで接続できる、標準OS(Ubuntu 24.04またはRocky Linux 10)のサーバー( サーバー作成後の最初の手順(SSH接続から初期設定まで) )
管理ユーザーのパスワード(
sudoの実行時に必要な場合があります)
手順¶
Step1. OSをアップデートする¶
$ sudo apt update
$ apt list --upgradable
アップデートは、次のコマンドで実施します。
$ sudo apt update
$ sudo apt upgrade
$ sudo dnf update
アップデートを適用するために、最後に再起動してください。
$ sudo reboot
unattended-upgrades が、Rocky Linuxでは dnf-automatic が、その仕組みです。自動で適用する場合も、適用の結果は、お客様にてご確認ください。詳しい手順は システムのアップデート方法 をご参照ください。
Step2. 管理ユーザーとsudoを確認する¶
ubuntu 、Rocky Linuxは rocky )でログインし、管理者権限が必要な操作には、コマンドの前に sudo を付けて実行します。追加で一般ユーザーを作る場合や、 sudo の設定を変更する場合は、次の記事をご参照ください。
Step3. SSHの設定を行う¶
SSHの設定では、次の2点を行います。
rootユーザーでのSSHログインを禁止する
パスワードでのログインを禁止し、公開鍵認証に限定する
警告
公開鍵認証の準備¶
公開鍵の作成や登録の方法は、次の記事をご参照ください。
設定ファイルを作成する¶
/etc/ssh/sshd_config.d/ の下に、設定ファイルを追加して変更します。 /etc/ssh/sshd_config を直接書き換えるより、元の設定を残せるため、設定を元に戻しやすくなります。00-security.conf のように、数字の小さい名前にしてください。Note
99-custom.conf のようなファイル名では、設定が無視されることがあります。$ sudoedit /etc/ssh/sshd_config.d/00-security.conf
ファイルには、次の内容を記載します。
PermitRootLogin no
PasswordAuthentication no
設定 |
内容 |
|---|---|
|
rootユーザーでのSSHログインを禁止する |
|
パスワードでのログインを禁止する(公開鍵認証のみ) |
設定を適用する¶
まず、設定ファイルの文法に誤りがないかを確認します。何も表示されなければ、誤りはありません。
$ sudo sshd -t
次のコマンドで、SSHサーバーを再起動して、設定を適用します。サービス名が、OSによって異なります。
$ sudo systemctl restart ssh
$ sudo systemctl restart sshd
詳しい内容と、ほかのOSでの手順は、 サーバー作成直後に設定しておくべき初期セキュリティ設定 をご参照ください。
Step4. 通信を制限する¶
パケットフィルター |
OS内のファイアウォール |
|
|---|---|---|
設定する場所 |
コントロールパネル |
サーバーの中(コマンド) |
制限のタイミング |
サーバーに届く前 |
サーバーに届いた後 |
Ubuntuでの機能 |
共通 |
|
Rocky Linuxでの機能 |
共通 |
|
標準OSでは、OS内のファイアウォールは、初期状態で有効になっていません。まずは、パケットフィルターで、使うポートだけを許可してください。
パケットフィルターの設定: パケットフィルター
両者の違い: コントロールパネルとOS内の設定の違い
OS内のファイアウォールも有効にする場合は、有効にする前に、SSH(22番ポート)を許可してください。許可せずに有効にすると、SSHで接続できなくなります。
Ubuntuの場合: ufwの設定方法
Rocky Linuxの場合: Firewalldの設定方法
Step5. 設定を確認する¶
次のコマンドで、設定が反映されていることを確認します。
$ sudo sshd -T | grep -E "^(permitrootlogin|passwordauthentication) "
permitrootlogin no
passwordauthentication no
yes や without-password と表示された場合は、ほかの設定ファイルの指定が優先されている可能性があります。設定ファイルの名前が、他のファイルより先に読み込まれる名前か、確認してください。$ sudo ss -tlnp
0.0.0.0 や [::] で待ち受けているポートは、外部から接続できる可能性があります。OS内のファイアウォールを有効にした場合は、設定の状態も確認します。
$ sudo ufw status
$ sudo firewall-cmd --list-all