前回は隔離環境の構築を行う前の準備編として、
どのような環境を構築するか設計するということに重点を置いてお話ししました。
今回は、実際にVMware ESXi 6.5を利用して隔離されたネットワークの構築を行なっていきます。
前提条件
前回もお話ししていましたが、最終的に踏み台サーバを経由してアクセスすることになります。
そのため、最初に踏み台サーバの構築から行いたいと思います。
既に構築済みの方や見なくてもいいやという方は、
飛ばしてもらって構いません。
踏み台サーバの構築
踏み台サーバは基本的にsshでのアクセスのみ受け付ける設定を行うため、
最小構成のマシンを構築するだけで問題ありません。
私の場合は以下のような構成にしました。
- OS : CentOS 7 (64bit)
- 追加オプション : ネットワークアダプタ x 1
- ホスト名 : step-001
単純な踏み台なので、そこまで性能をよくする必要はありませんが、
セキュリティの観点からも最新のOSを使うことにしました。
CentOS 7 のインストールは以前解説しておりますので、
以下の記事を参考になさってくださいな。
CentOS 7をVMware Fusionにインストールする
さて、CentOS 7はインストールできている前提でお話を進めていきますね。
踏み台とするためのsshサーバを設定する
サーバにログインするためにsshを使う方は多いことでしょう。
しかし、パスワード認証を許可していると危険極まりない状態となります。
この危険な状態を回避するために、設定を変更しておきましょう。
まず、初期設定では/home/[username]/の直下に「.ssh」ディレクトリが作成されていないはずです。
以下のコマンドを実行して、まずはsshログインが利用できるようにしましょう。
1 |
$ ssh-keygen -t rsa -b 4096 |
パスフレーズを入力してくれと言われますが、今回はこの踏み台からsshを利用することはないので
「Enter」を2〜3回入力して進みます。
メッセージに[RSA 4096]という部分が出てきたら、ssh用の鍵ペア(公開鍵と秘密鍵)が作成されています。
ここまできたらあとは「普段使っているパソコンの公開鍵を踏み台に登録する」だけです。
踏み台に公開鍵を登録
私は普段Macbook Proを使っているので、
そちらで発行している公開鍵を踏み台に登録しようと思います。
踏み台に登録するためにまずはterminalからログインしておきましょう。
1 2 3 |
$ ssh [username]@[仮想マシンのIPアドレス] $ ssh masa@192.168.1.11 [masa@step-001 ~]$ |
私の環境では、仮想マシンが192.168.1.11になっていたので、
ログイン時にそれを指定しておきます。
ログインできたら、別のterminalを開いて以下のコマンドを入力します。
1 |
$ cat ~/.ssh/id_rsa.pub | pbcopy |
このコマンドはMacで使えるコマンドとなります。
pbcopyというコマンドでid_rsa.pubの中身を、
クリップボードにコピーします。
コピーが完了したら、最初に開いていたterminalに以下のコマンドを入力し
クリップボードにコピーした公開鍵を踏み台に登録します。
1 2 |
$ echo [公開鍵の内容←ここでペーストしてください] >> ~/.ssh/authorized_keys $ echo ssh-rsa... >> ~/.ssh/authorized_keys |
公開鍵が登録されたのですが、踏み台サーバのsshd_configを編集しなければ、
公開鍵認証は有効になりません。
ということで、設定を変更していきましょう、
sshd_configに公開鍵認証の設定をする
以下のコマンドでファイルを編集しましょう。
1 2 3 4 5 6 7 8 |
$ sudo vi /etc/ssh/sshd_config Port 22 //コメントアウト解除 ListenAddress 0.0.0.0 //コメントアウト解除 PermitRootLogin no //yesをnoに変更 PasswordAuthentication no //yesをnoに変更 RSAAuthentication yes //コメントアウト解除 PubkeyAuthentication yes //コメントアウト解除 AuthorizedKeysFile .ssh/authorized_keys //コメントアウト解除 |
ファイル編集が完了したら保存しましょう。
[Esc] - [:wq]と入力してファイルを上書き保存できます。
sshdを再起動する
さて、編集が完了したらsshdを再起動しましょう。
1 |
$ sudo systemctl restart sshd.service |
再起動が完了したら、実際にアクセスできるか確認しましょう。
1 |
$ ssh masa@192.168.1.11 -i ~/.ssh/id_rsa |
「-i」というオプションをつけることによって、秘密鍵を指定してアクセスすることができます。
先ほど踏み台を公開鍵認証に変更したため、秘密鍵を指定してアクセスする必要があります。
※公開鍵認証の仕組みをあまり知らない人は、調べてみてください。
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)というエラーが出る場合
1 2 |
$ ssh masa@192.168.1.11 -i ~/.ssh/id_rsa Permission denied (publickey,gssapi-keyex,gssapi-with-mic). |
こんな感じでPermission deniedが出る場合があります。
今回のエラーメッセージの原因は、私が設定ファイル(/etc/ssh/sshd_config)の内容を
一部間違えて保存してしまったため発生したものでした。
具体的には以下の部分を少しカスタマイズしようとしてました。
1 2 3 4 5 6 |
$ sudo vi /etc/ssh/sshd_config ~~~ AuthorizedKeysFile .ssh/authorized_keys //正しい記述 ↓↓↓ AuthorizedKeysFile ~/.ssh/authorized_keys //間違った記述 ~~~ |
こんな設定にした方がいいんじゃないかなと思ったのですが、
全く見当違いのことをしていたみたいですね。
詳しい原因はあまりわかっていないですが、
とりあえず修正したので接続はできるようになりました。
※ちなみに、これ以外の原因でPermission deniedの発生する場合が多いです。
今回は触れていませんが、authorized_keysファイルのパーミッションや
.sshディレクトリのパーミッションには注意してください。
自宅のルータにポート開放のための設定をする
踏み台へ自宅外からアクセスするために、外部との接続点となるルータに
ポート開放の設定を施します。
こちらの設定はお使いのルータによって管理画面が違うため、
全てを網羅することができません。
以下のサイトだと比較的丁寧に解説されているので、
一度確認されると良いかと思います。
ポート開放の方法と具体例
必要な設定は、ルータでポートを開放することです。
PCのIPを調べるとかそういったものは必要ありません。
ルータに設定するときに、踏み台のIPとすればいいだけなので。
実際のポートが開放されたか確認する
本当に開放されたかどうかを確認するのですが、
わざわざ自宅の外に出て公衆無線LANから確認する必要はありませんよw
便利な外部サイトがありまして、そちらからグローバルIPアドレスか
ドメイン名&開放したポート番号を入力することで調べることができます。
ポート開放確認 CMAN
お疲れ様でした
ポート開放が確認できたら、外からでも踏み台サーバへsshアクセスすることができます。