XCP-ngホストのセキュリティ強化:SSHとiptablesによる実践手順

ESXiからXCP-ngへ移行する手順と構成まとめ|仮想化シリーズ案内

XCP-ngホストのセキュリティ強化を目的に、SSH接続を中心とした設定見直しを行いました。rootログインの禁止や公開鍵認証の導入、ファイアウォール制御など、XCP-ng Centerとの連携を維持しながら安全性を高めた手順を記録しています。


1. 代替ユーザーの作成と認証

SSHのローカルログイン用に代替ユーザー xcpadmin を作成し、管理権限を付与します。

# ユーザーの作成
adduser xcpadmin

# パスワードの設定
passwd xcpadmin

# wheelグループに追加してsudoを許可
usermod -aG wheel xcpadmin

2. SSH設定の規範化

SSHのセキュリティを強化するため、設定ファイルを編集します。

vi /etc/ssh/sshd_config

以下の行を設定または確認します。

Port 2222                 # SSHポートを変更(スキャナ対策)
PermitRootLogin no        # rootユーザーのSSHログインを禁止
PasswordAuthentication no # パスワード認証を無効化
PubkeyAuthentication yes  # 公開鍵認証を有効化
AuthorizedKeysFile .ssh/authorized_keys  # 認証鍵ファイルのパス

編集後はSSHを再起動します:

systemctl restart sshd

3. iptables設定と永続化

iptablesで必要なポートのみを開放し、再起動後にも反映させる設定を行います。

主要ポートと用途一覧

ポート用途
2222SSH接続(変更後)
443XenAPI通信(HTTPS)
80Web UIリダイレクト

/etc/iptables/rules.v4 の編集

vi /etc/iptables/rules.v4
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --dport 2222 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -j DROP
COMMIT

ラッパースクリプトの作成

vi /usr/local/bin/iptables-restore-wrapper.sh
#!/bin/sh
/usr/sbin/iptables-restore < /etc/iptables/rules.v4
chmod +x /usr/local/bin/iptables-restore-wrapper.sh

systemdサービスファイルの作成

vi /etc/systemd/system/iptables-restore.service
[Unit]
Description=Restore iptables rules from /etc/iptables/rules.v4
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/iptables-restore-wrapper.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

systemdに登録と確認

systemctl daemon-reload
systemctl enable iptables-restore
systemctl start iptables-restore
systemctl status iptables-restore

4. 再起動

設定反映後、念のためシステムを再起動:

reboot

5. 接続確認

# iptablesルールの確認
iptables -L -n | grep 'tcp dpt:'

→ 該当ポートが ACCEPT 状態であれば問題ありません。

その後、Tera Term等から xcpadmin でSSH接続(鍵認証)できることを確認する

XCP-ng Centerが正常に接続できるか確認します。


6. 最終設定でのロックダウン

すべての接続確認後、セキュリティを最大化するために以下の設定を適用します。

vi /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no

これにより、rootやパスワードでのログインは完全に無効となり、 鍵認証のみ許可される安全なSSH構成となります。


7. まとめ

本記事では、XCP-ngホストのセキュリティ強化として:

  • 一般ユーザー(xcpadmin)の作成と権限付与
  • SSH設定の変更(root禁止・ポート変更・鍵認証導入)
  • iptablesでの通信制御と永続化

を行い、最終的にSSH鍵認証のみによる安全な運用体制を構築しました。

シンプルな構成ながらも、実運用で必要なセキュリティ水準を満たす設定例として参考にしていただければ幸いです。

コメント

タイトルとURLをコピーしました