SSHによる踏み台構成の構築体験
- 1 概要
- 2 仮想マシンの用意
- 3 2台目の仮想マシンへのSSH接続を、1台目の仮想マシンからのSSH接続に限定する
- 3.1 UFWのインストール確認
- 3.2 UFWの確認
- 3.3 UFWの起動
- 3.4 ルール追加:1台目の仮想マシンのIPアドレスでSSH接続することを許可
- 3.4.1 UFWの再読み込み
- 3.4.2 UFWに適用されているルールの確認
- 3.4.3 動作確認
- 3.4.3.1 MacやWindowsからSSH接続で、直接2台目の仮想マシンに接続できるかどうか
- 3.4.3.1.1 Macの場合
- 3.4.3.1.2 Windowsの場合
- 3.4.3.2 1台目の仮想マシンから、SSH接続で2台目の仮想マシンに接続できるかどうか
- 3.4.3.2.1 1台目の仮想マシンに接続した時の実行例
- 3.4.3.2.2 1台目の仮想マシンから、2台目の仮想マシンにSSH接続を行う
- 3.4.3.3 2台目の仮想マシンでSSH接続を終えると、1台目の仮想マシンに戻るかどうか
- 3.4.3.1 MacやWindowsからSSH接続で、直接2台目の仮想マシンに接続できるかどうか
- 4 UFWにおけるルールの削除
- 5 UFWのマニュアル
概要
踏み台とは踏み台サーバーのことであり、ある目的のために動かしているサーバーに接続するための中継サーバーを言います。中継サーバーを経由しないと接続ができないように構成することで、手軽にセキュリティレベルを高めることができます。踏み台構成は、クラウドコンピューティングにおける「IaaS」だけではなく、通常のオンプレミス環境でも採用されています。
踏み台サーバーがない場合、サーバーに対して直接接続しますので、接続に用いるユーザー名やパスワード、あるいは秘密鍵を厳重に管理しなければなりません。一度漏洩すれば、あっさりサーバーに侵入され、情報漏洩が生じる可能性が高い状態になります。そこで、踏み台サーバーにログインしないと、メインのサーバーにアクセスできないように構成することで、それほどお金をかけることなく重要なサーバーを保護することができます。
仮想マシンの用意
https://mydocument.atlassian.net/wiki/spaces/support4textbook/pages/1665040385 または、https://mydocument.atlassian.net/wiki/spaces/support4textbook/pages/1661599749 をもとに、仮想マシンを2つ用意します。VirtualBoxでは、仮想マシンを1つ作り、複製(クローン)すると良いでしょう。Apple Silicon搭載のMacの場合はUTM等(https://mydocument.atlassian.net/wiki/spaces/support4textbook/pages/1657110539 )を使い、異なるIPアドレスを持つ2つの仮想マシンを用意してください。
仮想マシン1台目の例
ホスト名:ubuntu1vm
ホストオンリーネットワークの固定IPアドレス:192.168.128.10
OS(基本ソフト):Ubuntu 20.04 または、Ubuntu 22.04
割り当てメモリ:2048MB ~
割り当てCPU:1 ~
ユーザー名 : user1
ユーザーパスワード : zxcvfr45
仮想マシン2台目の例
ホスト名:ubuntu2vm
ホストオンリーネットワークの固定IPアドレス:192.168.128.20
OS(基本ソフト):Ubuntu 20.04 または、Ubuntu 22.04
割り当てメモリ:2048MB ~
割り当てCPU:1 ~
ユーザー名 : user1
ユーザーパスワード : zxcvfr45
仮想マシンを同時に複数台起動できることが必要です。VirtualBox、UTMなどを使いましょう。Windows環境のWSL2では出来ません。
上記の2台の仮想マシンのホスト名やIPアドレスは、人それぞれ異なることがありますので、各自のホスト名やIPアドレスに読みかえてください。重要なことは、ホスト名とIPアドレスが異なる仮想マシンが2台用意されていることです。
2台目の仮想マシンへのSSH接続を、1台目の仮想マシンからのSSH接続に限定する
この資料では、AWSやMicrosoft Azureを使って2台以上のLinux前提の仮想マシンを用意できない場合に備え、パソコン上で再現できるようにするため、「UFW」を使っています。
SSHの接続制限には、UFWを使用します。UFWは、Ubuntu(Linux)におけるソフトウェアファイアウォールです。
2台目の仮想マシンを起動し、ログインします。仮想マシンの画面でコマンドを入力します。
UFWのインストール確認
UFWがインストールされているかどうか確認します。
sudo apt list --installed | grep ufw
実行結果
ufw/focal-updates, now 0.36-6 ubuntu1-all [installed]
上記は、focal と表示されていますので、Ubuntu 20.04 を指しています。Ubuntu 22.04では、focalの部分がjammy になります。
UFWの確認
UFWの状況確認のため、次のコマンドを実行します。
sudo ufw status
実行結果
UFWが稼働していない場合は、上記のように表示されます。
UFWの起動
UFWを起動します。次のコマンドを実行します。
実行結果
UFWが稼働しだすと、上記のように表示されます。
ルール追加:1台目の仮想マシンのIPアドレスでSSH接続することを許可
次のコマンドを実行し、UFWに対して1台目の仮想マシンのIPアドレスから、SSH接続を行うことを許可します。
実行結果
なお、ufw allow を、ufw deny とした場合は、接続を拒否するという意味になります。
UFWの再読み込み
UFWにルールを追加、あるいは削除した時は、UFWを再読み込みを行い、設定を反映させます。再読み込みには、次のコマンドを実行します。
UFWに適用されているルールの確認
次のコマンドを実行することで、UFWが稼働していれば、適用されているルールが表示されます。
実行結果
動作確認
MacやWindowsからSSH接続で、直接2台目の仮想マシンに接続できるかどうか
次のコマンドを実行し、SSH接続についてIPアドレス制限をかけた2台目の仮想マシンへの接続を試みる。エラーとなり、SSH接続で直接接続できないことが確認できる。
Macの場合
実行結果
Windowsの場合
TeraTermなどを使い、2台目の仮想マシンに対して、SSH接続を行う。
エラーが表示されて、SSH接続できないことがわかる。
1台目の仮想マシンから、SSH接続で2台目の仮想マシンに接続できるかどうか
MacあるいはWindows環境で、1台目の仮想マシンにSSH接続を行う。
1台目の仮想マシンに接続した時の実行例
1台目の仮想マシンから、2台目の仮想マシンにSSH接続を行う
次のコマンドを実行。2台目の仮想マシンのユーザー名である「user1」で、2台目の仮想マシンのIPアドレスにSSH接続を行うという意味。
初回接続のため、下記の確認メッセージが表示される。yes と入力し、Enterキーを押す。
2台目の仮想マシンのユーザーである「user1」のパスワード入力を求められるので、パスワードを入力し、Enterキーを押す。
実行結果
ubuntu2vm のホスト名が確認できるので、1台目の仮想マシンから、2台目の仮想マシンにSSH接続できることを確認することができた。
2台目の仮想マシンでSSH接続を終えると、1台目の仮想マシンに戻るかどうか
2台目の仮想マシンにSSH接続した状態で、次のコマンドを実行。
実行結果
ubuntu1vm のホスト名が確認できるので、1台目の仮想マシンに戻ることが確認できた。
UFWにおけるルールの削除
SSH接続ではなく、仮想マシンの画面で操作します。次のコマンドを実行し、UFWの追加済みルールを表示します。
実行結果
上記では、1つだけです。番号がふられていませんが、上から自動で、番号 1、番号2のようになります。「22/tcp ALLOW 192.168.128.10」のルールを削除するには、次のコマンドを実行します。
実行結果
「Proceed with operation (y|n) ?」と表示されているので、y を入力し、Enterキーを押します。
実行結果
ルールが削除されたか、確認します。
実行結果
UFWは稼働していることが表示されているだけで、ルールは削除されたことがわかります。これで、2台目の仮想マシンはSSH接続ができない状態になっています。
UFWのマニュアル
ターミナルや仮想マシンの画面で確認するには、次のコマンドを実行します。
Webブラウザが使える場合は、 にアクセスしましょう。