Debian 11でのプライベート接続のためのDante Proxyのセットアップ方法
以下の内容を日本語で自然な表現で言い換えてください。1つのオプションで大丈夫です。
【イントロダクション】
プロキシサーバーは、エンドユーザーとインターネットリソースの間にゲートウェイとして機能するサーバーアプリケーションの一種です。プロキシサーバーを介して、エンドユーザーはプライバシーやセキュリティ、キャッシングなど、さまざまな目的でウェブトラフィックを制御および監視することができます。たとえば、プロキシサーバーを使用して、自分自身のIPアドレスとは異なるIPアドレスからウェブリクエストを行うことができます。また、プロキシサーバーを使用して、ウェブが異なる管轄地域ごとにどのように提供されているかを調査したり、監視やウェブトラフィックの制御手法を回避したりすることもできます。
Danteは安定して人気のあるオープンソースのSOCKSプロキシです。このチュートリアルでは、Debian 11サーバー上にSOCKSプロキシを提供するためにDanteのインストールと設定を行います。
前提条件
このガイドを完成させるためには、次のものが必要です。
- A Debian 11 server and a non-root user with sudo privileges. You can learn more about how to set up a user with these privileges in our Initial Server Setup with Debian 11 guide.
このチュートリアルでは、”your_domain”というドメイン名を使用しますが、自分自身のドメイン名やIPアドレスに変更する必要があります。
ステップ1 – ダンテのインストール
DanteはオープンソースのSOCKSプロキシサーバーです。SOCKSはあまり広く使われていないプロトコルですが、一部のピア・ツー・ピアアプリケーションにとってはより効率的であり、一部のトラフィックではHTTPよりも好まれています。パッケージリストを更新し、Danteをインストールするために、非ルートユーザーとして以下のコマンドを実行してください。
- sudo apt update
- sudo apt install dante-server
ダンテはインストール後、背景サービスを自動的に設定し、起動します。ただし、すべての機能が無効な状態で提供されているため、最初に実行された際にエラーメッセージを表示して優雅に終了するように設計されています。systemctlコマンドを使用して、これを確認することができます。
- systemctl status danted.service
● danted.service – SOCKS (v4 and v5) proxy daemon (danted) Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Wed 2021-12-15 21:48:22 UTC; 1min 45s ago Docs: man:danted(8) man:danted.conf(5) Main PID: 14496 (code=exited, status=1/FAILURE) Dec 15 21:48:21 proxies systemd[1]: Starting SOCKS (v4 and v5) proxy daemon (danted)… Dec 15 21:48:22 proxies systemd[1]: Started SOCKS (v4 and v5) proxy daemon (danted). Dec 15 21:48:22 proxies danted[14496]: Dec 15 21:48:22 (1639604902.102601) danted[14496]: warning: checkconfig(): no socks authentication methods enabled. This means all socks requests will be blocked after negotiation. Perhaps this is not intended?
Danteのサービスを成功裏に開始するためには、設定ファイルでそれらを有効にする必要があります。
ダンテの設定ファイルはデフォルトでは「/etc/danted.conf」に用意されています。nanoやお気に入りのテキストエディタでこのファイルを開くと、無効になっている設定オプションの長い一覧が表示されます。一つずつオプションを有効にするためにこのファイルをナビゲートしてみることもできますが、実際には効率的で読みやすいのはこのファイルを完全に削除してからゼロから作り直すことです。この作業を心配しないでください。いつでもダンテのデフォルト設定を確認することができます。ダンテのオンラインマニュアルに移動することができますし、必要ならばUbuntuのパッケージリストからパッケージを手動で再ダウンロードして元の設定ファイルを再取得することもできます。その間は安心して削除してください。
- sudo rm /etc/danted.conf
これからは、より短くする代わりに何か他のものに置き換えることができます。テキストエディタでファイルを開くと、存在しない場合でもファイルが自動的に作成されますので、nanoまたはお気に入りのテキストエディタを使用して、空の設定ファイルを取得することができます。
- sudo nano /etc/danted.conf
以下のコンテンツを追加してください。
「/etc/danted.conf」
logoutput: syslog
user.privileged: root
user.unprivileged: nobody
# The listening network interface or address.
internal: 0.0.0.0 port=1080
# The proxying network interface or address.
external: eth0
# socks-rules determine what is proxied through the external interface.
socksmethod: username
# client-rules determine who can connect to the internal interface.
clientmethod: none
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
}
現在、一般的なSOCKSの規約であるポート1080で動作する、使用可能なSOCKSサーバーの設定ができました。この設定ファイルの残りの部分も、行ごとに解説することができます。
- logoutput refers to how Dante will log connections, in this case using regular system logging
- user.privileged allows dante to have root permissions for checking permissions
- user.unprivileged does not grant the server any permissions for running as an unprivileged user, as this is unnecessary when not granting more granular permissions
- internal connection details specify the port that the service is running on and which IP addresses can connect
- external connection details specify the network interface used for outbound connections, eth0 by default on most servers
次のセクションで詳しく説明される認証方法に関するその他の設定詳細に取り組んでください。ufwを使用している場合、ファイアウォールでポート1080を開放することを忘れないでください。
- sudo ufw allow 1080
この時点では、Danteを再起動してそれに接続することができますが、おそらく望んではいないでしょうが、世界中に開放されたSOCKSサーバーになってしまいます。そのため、まずセキュリティを確保する方法を学びます。
ステップ2:ダンテのセキュリティ確保
これまでのチュートリアルを実施した場合、ダンテは一般的なLinuxユーザーアカウントを認証に使用します。これは便利ですが、その接続に使用されるパスワードはプレーンテキストで送信されるため、他のログイン権限を持たない専用のSOCKSユーザーを作成することが重要です。そのために、ユーザーにログインシェルを割り当てないフラグを使用してuseraddを使用し、パスワードを設定します。
- sudo useradd -r -s /bin/false your_dante_user
- sudo passwd your_dante_user
このアカウントには、セキュリティの保護がされていない無線接続を経由してログインしたり、サーバーを広く共有したりすることも避けた方が良いでしょう。そうしなければ、悪意のある者が繰り返しログインを試みます。
ディアブニューマニュ679に対応している他の認証方法もありますが、SOCKSプロキシに接続する多くのクライアント(アプリケーション)は基本のユーザー名とパスワード認証のみをサポートしているため、その部分はそのままにしておくことが望ましいかもしれません。代替策として、特定のIPアドレスにのみアクセスを制限することもできます。これは最も高度なオプションではありませんが、ここで使用されている技術の組み合わせを考慮すれば合理的な選択肢です。既に私たちの事前チュートリアルでufwを使用して特定のIPアドレスへのアクセスを制限する方法を学んでいるかもしれませんが、Dante内でも同様のことができます。/etc/danted.confを編集してください。
- sudo nano /etc/danted.conf
/etc/danted.conf/etc/danted.confファイル
…
client pass {
from: your_ip_address/0 to: 0.0.0.0/0
}
複数のIPアドレスをサポートするために、CIDR表記を使用するか、または別のクライアントパス {} の設定ブロックを追加することができます。
client pass {
from: your_ip_address/0 to: 0.0.0.0/0
}
client pass {
from: another_ip_address/0 to: 0.0.0.0/0
}
その後、設定変更を行ったままでダンテを再起動することができます。
- sudo systemctl restart danted.service
今回、サービスのステータスを確認する際には、エラーなしで正常に稼働していることが確認できるはずです。 (Konkai, saabisu no suteetasu o kakunin suru toki ni wa, eraa nashi de seijitsu ni katsudō shite iru koto ga kakunin dekiru hazu desu.)
- systemctl status danted.service
● danted.service – SOCKS (v4 and v5) proxy daemon (danted) Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enable> Active: active (running) since Thu 2021-12-16 18:06:26 UTC; 24h ago
次のステップでは、最後にプロキシに接続します。
ステップ3 — ダンテを介して接続する
あなたのDanteサーバーをデモンストレーションするために、さまざまな種類のウェブリクエストを行うための人気のあるコマンドラインプログラムであるcurlを使用します。一般的に、ブラウザで理想的な状況下で接続が機能するかどうかを確認するには、常に最初にcurlでテストする必要があります。これを行うためには、ローカルマシン上でcurlを使用します。これは、現代のすべてのWindows、Mac、Linux環境にデフォルトでインストールされているため、任意のローカルシェルを開いてこのコマンドを実行できます。
- curl -v -x socks5://your_dante_user:your_dante_password@your_server_ip:1080 http://www.google.com/
* Trying 68.183.159.74:1080… * SOCKS5 connect to IPv4 142.251.33.68:80 (locally resolved) * SOCKS5 request granted. * Connected to 68.183.159.74 (68.183.159.74) port 1080 (#0) > GET / HTTP/1.1 > Host: www.google.com …
curlで使用した認証情報は、新しいプロキシサーバーを使いたい場所ならどこでも動作するようになっています。
結論
このチュートリアルでは、少ないオーバーヘッドでトラフィックをプロキシするための人気のあるオープンソースのAPIエンドポイントをデプロイする方法を学びました。多くのアプリケーションにはビルトインのプロキシサポート(しばしばOSレベルで)があり、数十年前から存在しているため、このプロキシスタックは非常に再利用可能です。
次に、異なる種類のWebトラフィックをプロキシするためにDanteと一緒に実行することができるHTTPプロキシであるSquidの展開方法を学ぶと良いでしょう。
プロキシサーバーの最も一般的な使用例の1つは、異なる地域間のトラフィックをプロキシすることです。そのため、他のデータセンターでも同じ設定を複製したい場合に備えて、サーバーデプロイメントを自動化するためにAnsibleの使用方法を確認することをおすすめします。