目標:ノートブックが開いているホットスポット/アクセスポイントに接続されている間、自宅のPCを介してインターネットを安全に使用できるようにしたい。
I do SSHトンネル/ SOCKSプロキシを使用できることを知っていますが、アプリケーションをいじりたくありません(可能な場合でも使用します)。必要なのはOpenVPNセットアップだと思うので、次の方法に関する詳細なガイドを探しています。
これが動作するUbuntuバージョンは10.10および11.04です。
数か月前に正確な質問がありますが、さらに、可能であればIPv6接続が必要でした。 Serverfaultに関する私の質問に興味があるかもしれません:
サーバーに使用するNIC(「ネットワークインターフェイス」)は1つしかありませんでした。私の設定では、IPv6をサポートするためにカスタムスクリプトを実行する必要があるため、NetworkManagerは十分ではありませんでした。ただし、簡単にするために、ここではNetworkManagerを使用し、IPv6サポートを省略します。
まず、認証方法を決定するだけです。 SSLのように機能するより安全な証明書方式を使用します。ハンドシェイク中に、セッションに使用される共通の秘密が選択されます。他のメソッドは共有キーです。ユーザー名とパスワード。
まず、openvpnサーバーをインストールします。これはSudo apt-get install openvpn
と同じくらい簡単です。難しい部分はそれを設定することです。設定は/etc/openvpn
にあります。
サーバーには、サーバーとクライアントを識別するための証明書が必要です。これらの証明書は、CA(Common Authority)から取得されます。証明書および関連する秘密鍵の作成は、どのマシンでも実行できますが、サーバーで実行する必要はありません。本当に妄想している場合は、ネットワークに接続されていないマシンで実行し、証明書の転送にメモリスティックを使用する必要があります。
CAの秘密キーが危険にさらされない限り、この手順は1回実行する必要があります。その場合、サーバーによって受け入れられる有効な証明書を作成でき、セキュリティ侵害につながります。
公式ドキュメント は、/etc/openvpn
で管理を行うことを提案しています。私はすべてをルートとして実行するのが大ファンではないので、別のディレクトリに配置します。
次のコマンドを実行して、管理ディレクトリを作成し、その中のファイルをコピーします。
mkdir ~/openvpn-admin
cd ~/openvpn-admin
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
cd easy-rsa
vars
のデフォルトを編集します。たとえば、あなたが妄想的であるためにKEY_SIZE=2048
を設定します。変数をロードし、次を実行してキーディレクトリを作成します。
. vars
No ... openssl.cnf file could be found Further invocations will fail
というエラーが表示された場合は、ln -s openssl-1.0.0.cnf openssl.cnf
を実行してから、もう一度. vars
を実行します。
このCAを初めて使用する場合は、キー環境を準備します。以前に作成したCAを維持する場合は、notを実行します。そのためには、新しいca.crt
をデプロイする必要があります。
./clean-all
./build-ca
を実行してCAを作成します。必要な詳細を入力できますが、クライアントがサーバーに接続すると、この情報がログファイルに表示されることに注意してください。これにより、サブフォルダーkeys
にファイルca.key
およびca.crt
が作成されます。 ca.key
ファイルを秘密にしておきますすべての状況で。そうしないと、キーを持っている人はだれでもサーバーに接続できます。./revoke-full server
を使用して古い証明書を取り消す必要があります。そうしないと、データベースエラーが発生します。次を実行して、サーバーの証明書を作成します。
./build-key-server server
パスワードの入力を求められたら、サーバーが起動するたびにパスワードを入力する必要がない限り、空のままにしてください(推奨されません)。証明書に署名してコミットすることを確認します。 2つの新しいファイルがディレクトリkeys
に表示されます:server.key
およびserver.crt
。
次を使用して Diffie-Hellman パラメーターを生成します。
./build-dh
強化のヒント ごとに、tls-auth
を使用します。そのためには、次を使用して共有秘密鍵を生成します。
openvpn --genkey --secret ta.key
結果のファイル(ta.key
)もクライアントに配布する必要がありますが、公開しないでください。
クライアントごとに、次の手順を繰り返す必要があります。
CAおよびサーバー証明書を作成したディレクトリを入力します。
cd ~/openvpn-admin/easy-rsa
CAの作成手順が既にあるためスキップした場合は、最初に変数を読み込む必要があります。
. vars
./revoke-full you
で古い証明書を取り消す必要があります。そうしないと、データベースエラーが発生します。クライアント証明書you.key
とそれに対応する証明書you.crt
を作成します。
./build-key you
CommonName
は一意である必要があります。 KDEを使用している場合、10.10の時点ではまだサポートされていないため、パスワードは空のままにします。サーバー証明書の生成と同様に、証明書への署名と変更のコミットを確認します。
デフォルトでは、OpenVPNは接続を受け入れるときにルートとして実行されます。サービスが悪意のあるインターネットから到達可能である場合、良い考えではありません。
OpenVPN専用のユーザーを作成します。たとえば、openvpn
:
Sudo useradd openvpn
ファイルserver.key
、server.crt
、ca.crt
、およびdh1024.pem
(キーサイズを変更した場合はdh2048.pem
)をキーディレクトリから/etc/openvpn
にコピーします。 400(所有者の読み取り専用)の許可は問題ありません。
Sudo cp ~/openvpn-admin/easy-rsa/keys/{server.key,server.crt,ca.crt,dh*.pem} /etc/openvpn
Sudo chmod 400 /etc/openvpn/{server.key,server.crt,ca.crt}
ファイルta.key
もコピーします。
Sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
Sudo chmod 400 /etc/openvpn/ta.key
ファイル/etc/openvpn/server.conf
を作成し、次の行を追加します。
proto udp
dev tap
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
Push "redirect-gateway def1"
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth ta.key 0
# Compress data to save bandwidth
comp-lzo
user openvpn
group openvpn
persist-key
persist-tun
# Logs are useful for debugging
log-append openvpn-log
verb 3
mute 10
適切なアクセス許可を設定します。秘密にする必要はありませんが、構成の詳細を漏らさないようにしています。
Sudo chmod 640 /etc/openvpn/server.conf
サーバーで証明書を作成した場合は、証明書を暗号化するか、サーバーから移動することをお勧めします。いずれにせよ、ca.key
とserver.key
をなくさないでください。最初のケースでは、他のユーザーがサーバーに接続できます。後者では、 MITM が可能です。
サーバーのIPアドレスの他に、サーバー管理者は次のファイルを渡す必要があります。
ca.crt
:証明書の検証用server.crt
:サーバーの検証とサーバーとの通信用ta.key
:セキュリティを強化するためyou.crt
:サーバーで自分自身を識別するためyou.key
:パスワードのようなもので、ファイルのアクセス許可は400でなければなりません(所有者の読み取り専用)OpenVPNおよびNetworkManagerプラグインをインストールします(KDEおよびGnomeに適しています):
Sudo apt-get install openvpn network-manager-openvpn
network-manager-openvpn
はユニバースリポジトリにあります。
コントロールパネルで、次の詳細を使用します。
ca.crt
へのパスyou.crt
へのパスyou.key
へのパスAdvanced:
ta.key
にキーファイルパスを指定し、1
に「キーの方向」を設定します。NetworkManagerが機能しない、または使用したくない場合は、ca.crt
にファイル(/etc/openvpn
、...)を入れて、ファイル/etc/openvpn/client.conf
ファイルを作成します。
client
dev tap
proto udp
# replace 1.2.3.4 by your server IP
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert you.crt
key you.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20
起動時にこのVPNを有効にしたくない場合は、/etc/default/openvpn
を編集し、#
を削除して次の行のコメントを解除します。
#AUTOSTART="none"
この接続を開始するには、次を実行します。
Sudo /etc/init.d/openvpn start client
構成ファイルの名前がclient.conf
でない場合、client
の名前を変更する必要があります。例:構成ファイルにsafe.conf
という名前を付けた場合、Sudo /etc/init.d/openvpn start safe
を実行する必要があります。
OpenVPNを停止するには、次を実行する必要があります。
Sudo /etc/init.d/openvpn stop
実際にアプリケーションをいじる必要はありません。これは「VPNと同じように」機能します。
最初にtsocks
パッケージ(一時的な靴下)をインストールします。
Sudo apt-get install tsocks
次に/etc/tsocks.conf
を編集して入力します
server = 127.0.0.1
server_port = 3333
次に、ターミナルを開いて入力します(これにより接続されます):
ssh -ND 3333 ssh.url.to.your.home.machine
実行(別の端末またはALT-F2経由):
tsocks firefox
これで、FirefoxはSSHが作成したコンピューター上のSOCKSサーバーにすべての通信を送信します。これはさらに、ホームマシンにトンネリングされ、そこでWebに送信されます。ホームマシンに必要なのは、SSHサーバーだけです。初めての場合は、手順3と4を繰り返します。
それは魅力のように機能します!残念ながら、クロムはtsocksが好きではありませんが、Firefoxは動作します。
SSHトンネルソリューションは、思っているより簡単です。 gSTMのようなプログラムは、GUIを使用してトンネルを開始/停止します。次に、ネットワークプロキシを開いて、直接インターネット接続から手動プロキシ設定に変更し、「システム全体に適用」を押すと、すべてのアプリがデータをトンネルに送信します。それぞれを個別に操作する必要はありません。