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
外部接続が必要な場合だけ接続ポートを開けるとよい。
該当する接続ポートが常時必要なら常時許可を、一時的に必要なら終わったあとは接続ポートを閉じる。
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の接続ポートを変更したことがわかりやすくなるので、私は「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をリロードする」の設定を、手順に沿って行う。
いちばんめのサーバー構築の流れ
-
1-1 初期設定
-
1-2 新規ユーザー(一般ユーザー)の作成と設定
-
1-3 Nginx導入とhttpの準備
-
1-4 Nginxの初期設定
-
1-5 php導入
-
1-6 Apache導入と初期設定
-
1-7 リバースプロキシを準備する前の事前知識
-
1-8 サーバーIPアドレスとドメイン(ワイルドカード指定)の設定
-
1-9 ドメイン個別設定とリバースプロキシ構築
-
1-10 Let’s Encrypt(Certbot)を使ったSSL/TLS証明書の発行と自動更新設定
-
1-11 MySQL導入
-
1-12 MySQLのパフォーマンスチューニング
-
1-13 MySQLへのログインと初期設定
-
1-14 MySQLからDB・ユーザーの準備/ユーザーの権限設定
-
1-15 Zabbix導入
-
1-16 (寄り道)Zabbixのアップグレード