SSHによる踏み台構成の構築体験

概要

踏み台とは踏み台サーバーのことであり、ある目的のために動かしているサーバーに接続するための中継サーバーを言います。中継サーバーを経由しないと接続ができないように構成することで、手軽にセキュリティレベルを高めることができます。踏み台構成は、クラウドコンピューティングにおける「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ブラウザが使える場合は、 にアクセスしましょう。