メニュー

1-1 初期設定

Xserver VPSの仕様で、予めroot権限の鍵登録を行なうことができる。

サーバーのアップデート

sshでサーバーにログインしたら、まず初めにパッケージのアップデートを行なうこと。

CentOS Stream 9はdnfでアップデートを行なう。(CentOS系だとyumは古い)

dnf update

パッケージ更新の確認が億劫だったら「y(yes)」オプションを付けても良し。

dnf update -y

firewalld初期設定

firewalldを起動し、常時有効(自動起動)に設定する。(CentOS 6以下はfirewalldではなくiptablesを使う)

systemctl start firewalld
systemctl enable firewalld
firewalldからポートを開けるとき

外部接続が必要な場合だけ接続ポートを開けるとよい。
該当する接続ポートが常時必要なら常時許可を、一時的に必要なら終わったあとは接続ポートを閉じる。

ssh接続ポートの変更

セキュリティ対策のため、ssh接続ポートは変更した方がよい。

sshd_configから接続ポートを指定する

viで「/etc/ssh/sshd_config」を編集する。
※同階層に「ssh_config」があるので間違えないように。

コメントアウトされた「Port 22」付近に任意の接続ポート番号を指定する。
ウェルノウンポートに登録されている0〜1023の番号は指定しない。他のシステムとポート番号が競合しないように、エフェメラルポート(ダイナミックポート・プライベートポート)に登録されている1024〜65535の番号のうちの1つを指定する。

編集を終えたsshd_configは、以下のコマンドで構文チェックを行える。

sshd -t

sshd_configの編集を終えたら、sshdを再起動する。
sshd_configに限らず、サーバーの設定の更新内容はsystemctlを使って再起動をかけないと反映されない。

systemctl restart sshd.service

システムが再起動されたかどうかを確認するなら、systemctlからstatusコマンドを使用する。

systemctl status sshd.service

ssh.xmlを/etc/ディレクトリ側にコピーし、コピーしたファイルを編集する

「/usr/lib/firewalld/services/ssh.xml」を「/etc/firewalld/services」ディレクトリの中にコピーする。

cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services

「/usr/lib/firewalld/services/ssh.xml」は直接触らないこと。(直接編集したら消えちゃうはず)

コピーしたあとの「/etc/firewalld/services/ssh.xml」を編集する。
ssh接続のデフォルトのポート番号が指定されているので「/etc/ssh/sshd_config」で設定した接続ポートと同じ番号に変更して保存する。

コピーした「ssh.xml」はファイルを変えた方がよい?
→「ssh.xml」のままでも使用可能

リネームするとsshの接続ポートを変更したことがわかりやすくなるので、私は「ssh.xml」から「ssh-<接続ポート番号>.xml」にリネームしている。たとえばsshの接続ポート番号が2222なら「ssh-2222.xml」になる。

(ssh.xmlをリネームした場合)firewalldから既存のsshサービスの定義を削除し、新しいsshサービスを追加する

コピーした「/etc/firewalld/services/ssh.xml」のファイルをリネームしていない場合は、この項目を読み飛ばすこと。

現在定義されているサービスは以下のコマンドから確認できる。

firewall-cmd --list-all

ssh接続できているなら、servicesのところには「ssh」が入っている。

sshサービスはデフォルトだと「/usr/lib/firewalld/services/ssh.xml」が使われている。
新たに作成したサービスは「/etc/firewalld/services/ssh-2222.xml」として、firewalldのサービス定義を見直す。

デフォルトで定義されたsshサービスを削除する。

firewall-cmd --remove-service=ssh --permanent

新たに作成したサービス「/etc/firewalld/services/ssh-2222.xml」を追加する。

firewall-cmd --remove-service=ssh-2222 --permanent

firewalldをリロードする

「/etc/firewalld/services/ssh.xml」のファイルをリネームした場合、firewalldは必ずリロードする。
※リネームしていなくても、念のためリロードしておいた方がよい。

firewall-cmd --reload

「/etc/firewalld/services/ssh.xml」のファイルをリネーム変更した場合、リロード後にもう一度、定義されているサービスを確認しておくこと。

firewall-cmd --list-all

たとえば「ssh-2222.xml」にリネームしていた場合、servicesのところに「ssh-2222」が入っていれば、新たに定義したサービスが反映された状態である。

以上でssh接続ポートの変更は完了である。

(覚書)Broken pipeで接続が落ちてしまったとき

Client_loop: send disconnect: Broken pipe

上記のエラーは、以下のような条件で発生した。

  • 「/etc/firewalld/services/ssh.xml」のファイル名をリネームした
  • firewalldから既存のsshサービス定義を削除していない
  • 新しいsshサービス定義を追加していない

Xserverの場合、Xserverにログインしてコンソールから操作する。

コンソールから「(ssh.xmlをリネームした場合)firewalldから既存のsshサービス定義を削除し、新しいsshサービス定義を追加する」と「firewalldをリロードする」の設定を、手順に沿って行う。