UbuntuでStunnelを使用してSSLトンネルを設定する方法
ステータス:非推奨
この記事は廃止され、メンテナンスされなくなりました。
理由
Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。
代わりに参照してください
この記事は参照として役立つ場合がありますが、ベストプラクティスに従わなかったり、このリリースまたは他のUbuntuリリースで機能しない場合があります。 使用しているUbuntuのバージョン用に書かれた最近の記事を使用することを強くお勧めします。
現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。
Stunnelとは
Stunnelプログラムは、リモートクライアントとローカル(inetd-startable)またはリモートサーバー間のSSL暗号化ラッパーとして機能するように設計されています。 プログラムのコードを変更せずに、POP2、POP3、IMAPサーバーなどの一般的に使用されるinetdデーモンにSSL機能を追加するために使用できます。
Stunnelが基本的に行うことは、暗号化用のOpenSSLパッケージを使用して、安全でないTCPポートを安全な暗号化ポートに変換することです。 これは、特定のポートで実行される小さな安全なVPNのようなものです。
ステップ1:Ubuntuドロップレットを作成する
これまでのところ、Ubuntu 12.04 x32 / x64、Ubuntu 12.10 x32 / x64、Ubuntu 13.04 x32/x64でテストしました。
ステップ2:Ubuntuを更新してアップグレードする
これらのコマンドを使用して、Ubuntuのパッケージリストを更新し、既存のパッケージを最新バージョンにアップグレードします。
apt-get update
apt-get upgrade
ステップ3:VPSにStunnelをインストールする
以下のコードを使用してStunnelパッケージをインストールします。
apt-get install stunnel4 -y
ステップ4:VPSでStunnelを構成する
Stunnelは、「stunnel.conf」という名前のファイルを使用して自身を構成します。このファイルはデフォルトで「/ etc/stunnel」にあります。
“ stunnel.conf” ファイルを“ / etc / stunnel”ディレクトリに作成します。
nano /etc/stunnel/stunnel.conf
SSL証明書を使用してサーバーに対して自分自身を識別するため、この行を使用して“ stunnel.conf” ファイルでその証明書へのパスを設定する必要があります(証明書ファイルはで作成します)次のステップ):
cert = /etc/stunnel/stunnel.pem
次に、Stunnelで使用するサービスを指定します。 メールサーバー、プロキシサーバーなどのネットワークを使用するサービスのいずれかです。
ここでは例として、SquidプロキシサーバーとStunnelを使用したクライアント間のトラフィックを保護します。 ステップ6でSquidをインストールして設定する方法を説明します。
使用するサービスの名前を設定したら、そのサービスのどのポートでリッスンするようにStunnelに指示する必要があります。 別のサービスまたはファイアウォールによってブロックされていない限り、これは65535ポートのいずれでもかまいません。
[squid]
accept = 8888
次に、セキュアトンネルを使用するサービスに応じて、構成ファイルでそのポートとIPアドレスを指定する必要があります。基本的に、Stunnelはセキュアポートからパケットを取得し、そのポートとIPアドレスに転送します。指定したサービス。
Squidプロキシはデフォルトでローカルホストとポート3128で実行されるため、承認された接続をそのポートに転送するようにStunnelに指示する必要があります:connect = 127.0.0.1:3128
したがって、全体として、「stunnel.conf」ファイルには以下の行が含まれている必要があります。
client = no
[squid]
accept = 8888
connect = 127.0.0.1:3128
cert = /etc/stunnel/stunnel.pem
注: client = no
一部は必要ありません。Stunnelはデフォルトでサーバーモードに設定されています。
ステップ5:SSL証明書を作成する
StunnelはSSL証明書を使用して接続を保護します。これは、OpenSSLパッケージを使用して簡単に作成できます。
openssl genrsa -out key.pem 2048
openssl req -new -x509 -key key.pem -out cert.pem -days 1095
cat key.pem cert.pem >> /etc/stunnel/stunnel.pem
基本的に、上記のコマンドは、秘密鍵を作成し、その鍵を使用して証明書を作成し、それらの2つを「stunnel.pem」という名前の1つのファイルに結合してStunnelで使用するためのものです。
注:証明書を作成するときに、国や州などの情報を入力するよう求められます。これらの情報は好きなように入力できますが、「共通名」を入力する場合は、正しいホスト名またはIPを入力する必要があります。ドロップレットのアドレス(VPS)。
また、“ / etc / default / stunnel4” ファイルを設定してStunnelの自動起動を有効にし、以下のコマンドを入力してファイルをテキストエディタで開きます。
nano /etc/default/stunnel4
そして、ENABLEDを1に変更します。
ENABLED=1
最後に、次のコマンドを使用して、設定を有効にするためにStunnelを再起動します。
/etc/init.d/stunnel4 restart
ステップ6:SquidProxyをインストールする
以下のコマンドを使用してSquidをインストールします。
apt-get install squid3 -y
ステップ7:クライアントでStunnelを構成する
注:これは、WindowsでのクライアントとしてのStunnelのインストールと構成のプロセスを説明していますが、StunnelはLinuxやAndroidでもインストールでき、構成は同じままです。 唯一の違いは、Stunnelの設定に必要な「stunnel.conf」ファイルの配置です。
Stunnelがサーバーと通信するには、手順5で作成したSSL証明書がクライアントに存在している必要があります。 サーバーから「stunnel.pem」ファイルを取得する方法はたくさんありますが、簡単で非常に安全なSFTPを使用します。
FilezillaなどのSFTPクライアントを使用してサーバーに接続し、「/ etc / stunnel/」ディレクトリにある「stunnel.pem」ファイルをクライアントにダウンロードします。
ここにはSFTPに関する優れたチュートリアルもあります。
SFTPを使用してリモートサーバーでファイルを安全に転送する方法
StunnelをWebサイトからダウンロードします。
好きな場所にStunnelをインストールします。 次に、Stunnelフォルダーに移動し、ダウンロードした証明書「stunnel.pem」をStunnelフォルダーに移動します。
“ stunnel.conf” ファイルが存在しない場合は、Stunnelのフォルダーに作成します。 メモ帳などのテキストエディタでファイルを開きます。
まず、Stunnelに証明書のパスを通知します。これは、WindowsではStunnelのディレクトリにあります(リマインダー:Ubuntuでは“ / etc / stunnel /” ディレクトリにあります)。
cert = stunnel.pem
クライアントをセットアップするので、これがクライアントであることをStunnelに通知する必要があります。 以下の行を構成ファイルに入れます。
client = yes
次に、サーバーと同様に、使用するサービスの構成を指定する必要があります。
最初にサービスの名前を指定し、次にStunnelがクライアントでリッスンするIPアドレスとポートを指定します。
[squid]
accept = 127.0.0.1:8080
受け入れポートは、別のサービスによって占有されていないか、ファイアウォールによってブロックされていない限り、クライアントコンピューター上の任意のポートにすることができます。
次に、このポートに着信するパケットをStunnelサーバーのIPアドレスとポートに転送するようにStunnelに指示します。 IPアドレスはサーバー(ドロップレット)のパブリックIPアドレスであり、ドロップレットを設定するときに割り当てられます。ポートは、サーバーでStunnelを構成するときに指定したポートです。 私たちの場合は8888だったので、Stunnelにそのポートに接続するように指示します。
connect = [Server’s Public IP]:8888
したがって、クライアントの最終的な「stunnel.conf」ファイルは次のようになります。
cert = stunnel.pem
client = yes
[squid]
accept = 127.0.0.1:8080
connect = [Server’s Public IP]:8888
ファイルを保存して閉じ、「stunnel.exe」を実行します。
それでおしまい。 これで、クライアントは、安全なSSLトンネルを使用して仮想サーバーと安全に通信するように構成されました。 今後、VPS上のサービスに接続しようとする場合、サーバーのIPアドレスに直接接続するのではなく、各サービスの構成のStunnelの「受け入れ」部分で指定されたIPアドレスとポートを使用する必要があります。
例として、クラウドサーバー上のSquidプロキシに接続する場合、127.0.0.1:8080に接続するようにクライアントを構成する必要があり、Stunnelは安全なトンネルを介してそのポートに指定されたサービスに自動的に接続します。 ここでは、Webトラフィックを保護するためのプロキシとしてIP127.0.0.1とポート8080を使用するようにWebブラウザを構成できます。