踏み台サーバーの設定


本ページのゴールイメージ


本ページではGPUaaSに実際にアクセスするために必要な踏み台サーバーなどの 設定を行います。


alt text




前提条件


  • GPUaaSを利用したい端末にて、SSH鍵の生成が完了していること

  • Google Authenticatorをインストールした端末を有していること

  • 内部DNSのIPアドレス情報を受領していること



踏み台サーバーの設定


ログイン


SDPFのコンソール画面から、「踏み台サーバーの作成」で作成した踏み台サーバーにログインします。

  • ユーザー名: ubuntu

  • パスワード: ubuntu

パスワード変更が求められるため、パスワードを設定します。



ホスト名変更


ホスト名を確認します。

sudo hostnamectl

ホスト名を変更します。

sudo hostnamectl set-hostname bastion

ホスト名が変わっているか、確認します。

sudo hostnamectl



ネットワーク設定


以下のコマンドを実行し、ネットワーク設定ファイルを確認し、「50-cloud-init.yaml」が存在することを確認します。

ls -la /etc/netplan/

ネットワーク設定ファイルを作成します。

sudo cp -ip /etc/netplan/50-cloud-init.yaml /etc/netplan/99-config.yaml

パーミッションを変更します。

sudo chmod 600 /etc/netplan/99-config.yaml

ネットワーク設定ファイルを編集します。

sudo vi /etc/netplan/99-config.yaml

注釈

ネットワーク設定ファイルを編集する時は以下の点に注意してください。
・ ファイル拡張子が.yamlであること
・ インデントが正しくなっていること


以下の<>内のIPアドレスを、構成に合わせて置換して設定してください。 今回はdmz_segのIPアドレスは 192.168.50.0/25 、dmz_segのvSRX IPアドレスは 192.168.50.1 を設定します。

network:
    ethernets:
        ens3:
            dhcp4: false
            addresses:
              - <dmz_segのIPアドレス>
            routes:
              - to: default
                via: <dmz_segのvSRX IPアドレス>
            nameservers:
              addresses:
                - 8.8.8.8
    version: 2

注釈

SDPFポータルのコンソールから入力を行う際は英字キーボード入力となるため、
日本語キーボードで「:」を入力する際はctrl+shift+":"を押すと入力が可能です。
詳細は [こちら] (https://sdpf.ntt.com/faq/virtual-server-keyboard/) をご参照ください。



ネットワーク設定ファイルを確認し、「99-cloud-init.yaml」が存在することを確認します。
ls -la /etc/netplan/


注釈

「99-cloud-init.yaml」が存在しない場合は、ネットワーク設定ファイルの作成コマンドから再度実行してください。


ネットワーク設定を反映します。
sudo netplan apply

IPアドレスを確認します。

ip a

99-config.yamlで設定した内容が反映されていることを確認してください。



パッケージ追加


パッケージを更新し、アップグレードします。

sudo apt update
sudo apt upgrade



SSH設定


SSHポートを22222に変更するために、/lib/systemd/system/ssh.socketを修正します。

sudo vi /lib/systemd/system/ssh.socket

以下の通り編集します。

[Unit]
Description=OpenBSD Secure Shell server socket
Before=sockets.target ssh.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Socket]
ListenStream=0.0.0.0:22222 ★ここを22222に修正する
Accept=no
FreeBind=yes

[Install]
WantedBy=sockets.target
RequiredBy=ssh.service 

パスワードログインを許可するために、50-cloud-init.confを更新します。

sudo vi /etc/ssh/sshd_config.d/50-cloud-init.conf

PasswordAuthentication の設定値が no となっているため、 yes に変更し、保存します。

sshを再起動します。

sudo systemctl status ssh.service ssh.socket
sudo systemctl daemon-reload
sudo systemctl restart ssh.service ssh.socket
sudo systemctl status ssh.service ssh.socket



ユーザー追加とubuntuユーザー削除


管理者ユーザーを作成します。

sudo adduser useradmin
sudo gpasswd -a useradmin sudo
groups useradmin
exit

コンソール画面を再度立ち上げ、useradminでログインし直します。

  • ユーザー名: useradmin

  • パスワード: 設定したパスワード

ubuntuユーザーを削除します。

sudo userdel -r ubuntu

ubuntuユーザーが削除されているかを確認します。

ls -la /home
cat /etc/passwd | grep ubuntu



SSH公開鍵配置


SSH鍵で踏み台サーバーにログインできるよう、SSH公開鍵を踏み台サーバーに配置します。

  • ローカル端末としてMac/Linux端末をご利用の場合
    ローカル端末にて以下のコマンドを実行してください。 <グローバルIPアドレス>は「インターネット接続ゲートウェイの作成」にて作成したグローバルIPに置換してください。

ssh-copy-id -i <追加したい公開鍵のパス> -p 22222 useradmin@<グローバルIPアドレス>

  • ローカル端末としてWindows端末をご利用の場合
    コンソール画面から踏み台サーバーにログインし、以下のコマンドを実行してください。

mkdir -p ~/.ssh
chmod 700 ~/.ssh

その後、ローカル端末にて以下のコマンドを実行してください。 <グローバルIPアドレス>は「インターネット接続ゲートウェイの作成」にて作成したグローバルIPに置換してください。
Get-Content <追加したい公開鍵のパス> | ssh -p 22222 useradmin@<グローバルIPアドレス> "cat >> .ssh/authorized_keys"



二要素認証設定


再びSDPFポータルのサーバーインスタンスコンソール画面に戻ります。 libpam-google-authenticatorをインストールします。

sudo apt install libpam-google-authenticator

Google Authenticatorの初期設定を行います。

google-authenticator

Authenticator初期設定は以下の流れで行います。

  1. Do you want authentication tokens to be time-based (y/n)y を入力します

  2. QRコードとsecret keyが表示されますので、Google Authenticatorアプリを開きQRコードを読み取るか、secret keyを入力してください。

  3. Google Authenticatorアプリで表示している6桁の番号を入力します。

  4. Do you want me to update your "/home/dtk-qry/.google_authenticator" file? (y/n)y を入力します

  5. 以下のダイアログが表示されます。

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n)

n を入力します

  1. 以下のダイアログが表示されます。

By default, a new token is generated every 30 seconds by the mobile app.
In order to compensate for possible time-skew between the client and the server,
we allow an extra token before and after the current time. This allows for a
time skew of up to 30 seconds between authentication server and client. If you
experience problems with poor time synchronization, you can increase the window
from its default size of 3 permitted codes (one previous code, the current
code, the next code) to 17 permitted codes (the 8 previous codes, the current
code, and the 8 next codes). This will permit for a time skew of up to 4 minutes
between client and server.
Do you want to do so? (y/n)

y を入力します

  1. 以下のダイアログが表示されます。

If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting? (y/n)

y を入力します

/etc/ssh/sshd_configで二要素認証の設定を行います。

sudo vi /etc/ssh/sshd_config

編集内容

  • KbdInteractiveAuthentication no の行をコメントアウトします。

  • ファイル末尾に以下を追加します。

ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

PAMの設定を行います。

sudo vi /etc/pam.d/sshd

編集内容

  • @include common-auth の行をコメントアウトします。

  • ファイル末尾に以下を追加します。

# User settings
auth required pam_google_authenticator.so nullok echo_verification_code

パスワード認証を許可しない設定に戻します。

sudo vi /etc/ssh/sshd_config.d/50-cloud-init.conf

PasswordAuthentication の設定値が yes となっているため、 no に変更し、保存します。

SSHを再起動します。

sudo systemctl restart ssh.service

グローバルIPアドレス経由で踏み台サーバーにSSHログインできることを確認します。 必要に応じて、秘密鍵のファイルを指定しSSHを実行してください。 <グローバルIPアドレス>は「インターネット接続ゲートウェイの作成」にて作成したグローバルIPに置換してください。

ssh -i <秘密鍵のフルパス> useradmin@<グローバルIP> -p 22222



NTPサーバー参照設定


構築時点ではtimesyncdがエラーとなります。回避のため、systemd-timesyncdを再インストールします。

sudo apt install systemd-timesyncd

ntpを有効化します。

sudo timedatectl set-ntp true

時刻同期の設定ファイルを編集します。

sudo vi /etc/systemd/timesyncd.conf

編集内容

  • NTPサーバーを以下の通り指定します。

NTP=ntp.nict.jp 

timesyncdを再起動します。

systemctl status systemd-timesyncd.service
sudo systemctl restart systemd-timesyncd
systemctl status systemd-timesyncd.service

時刻同期を確認します。

timedatectl timesync-status
timedatectl

system clock synchronized:yesの表記になっていれば、時刻同期は成功しています。



DNSの設定


GPUaaSで利用するドメインの名前解決はGPUaaSテナント側に存在する内部DNSにて行います。

ネットワーク設定ファイルを編集します。

sudo vi /etc/netplan/99-config.yaml

注釈

ネットワーク設定ファイルを編集する時は以下の点に注意してください。
・ ファイル拡張子が.yamlであること
・ インデントが正しくなっていること


以下の<>内のIPアドレスを、構成に合わせて置換して設定してください。 今回はdmz_segのIPアドレスは 192.168.50.126/25 、dmz_segのvSRX IPアドレスは 192.168.50.1 を設定します。内部DNS IPは「GPUaaS_テナント間接続申請情報.xlsx」の「内部DNS IPアドレス」を参照ください。

network:
    ethernets:
        ens3:
            dhcp4: false
            addresses:
              - <dmz_segのIPアドレス>
            routes:
              - to: default
                via: <dmz_segのvSRX IPアドレス>
            nameservers:
              addresses:
                - <内部DNS IP>
    version: 2

注釈

SDPFポータルのコンソールから入力を行う際は英字キーボード入力となるため、
日本語キーボードで「:」を入力する際はctrl+shift+1を二度押すと入力が可能です。


ネットワーク設定を反映します。

sudo netplan apply

DNSのIPアドレス情報を確認します。

netplan status

DNS Addresses が内部DNSのIPアドレスになっていることを確認します。



ファイアウォール設定変更


引き続きSDPFポータルにて踏み台サーバーのコンソールから作業を行います。 踏み台サーバーからファイアウォールにSSHでアクセスします。

以下の<>内のIPアドレスを、構成に合わせて置換して設定してください。 今回はdmz_segのvSRX IPアドレスは 192.168.50.1 を設定します。

ssh root@<dmz_segのvSRX IPアドレス>

vSRXに通信の許可設定を追加します。

cli
show configuration | display set |no-more
configure

以下の<>内のIPアドレスを、構成に合わせて置換して設定してください。 今回はテナント間接続ネットワークのvSRX IPアドレスは 192.168.50.129 を設定します。

set interfaces ge-0/0/2 unit 0 family inet address <テナント間接続ネットワークのvSRX IP>
set security zones security-zone trust interfaces ge-0/0/2.0 host-inbound-traffic system-services ssh
set security zones security-zone trust interfaces ge-0/0/2.0 host-inbound-traffic system-services ping

変更点を確認します。

show | compare

コミット確認を行います。

commit check

変更内容をコミットし、vSRXのconfig画面から抜けます。

commit
exit

設定が反映されているか、確認します。

show configuration | display set |no-more

これで、踏み台サーバーの設定作業は完了です。