ssh -D
を使用して簡単なプロキシを設定する方法を知っていますが、この場合はユーザー名とパスワードに基づく認証を使用したいと思います。何か方法はありますか?
動的なアプリケーションレベルのポート転送(ssh -D
)はこの機能をサポートしていません。代わりに Dante を見てください:
[I] net-proxy/dante
Available versions: 1.1.19-r4 (~)1.2.3 (~)1.3.0 (~)1.3.1 (~)1.3.1-r1 (~)1.3.2 {debug kerberos pam selinux static-libs tcpd}
Installed versions: 1.3.2(04:14:03 PM 11/08/2011)(pam static-libs tcpd -debug -kerberos -selinux)
Homepage: http://www.inet.no/dante/
Description: A free socks4,5 and msproxy implementation
ただし、パスワードはクリアテキストで送信されることに注意してください。
ユーザー名ベースの認証を構成するには、/etc/sockd.conf
ファイルを作成し、以下を追加/変更します。
logoutput: syslog /var/log/dante.log
# methods for socks-rules.
method: username #rfc931
# when doing something that can require privilege,
# it will use the userid "sockd".
user.privileged: root
# when running as usual,
# it will use the unprivileged userid of "sockd".
user.notprivileged: sockd
pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
protocol: tcp udp
command: bind connect udpassociate
log: error
method: username
}
開始後にリスニングソケットを確認します。
# netstat -nlp | grep sockd
tcp 0 0 127.0.0.1:1080 0.0.0.0:* LISTEN 5463/sockd
tcp 0 0 192.168.15.36:1080 0.0.0.0:* LISTEN 5463/sockd
ログファイル(/var/log/messages
または/var/log/dante.log
)何か問題が発生した場合。
PS:システムパスワードファイル(/etc/passwd
)は、ユーザー名とパスワードの組み合わせを確認するために使用されます。
ssh -D
はアクセスにパスワードを要求する必要がなく、現在の実装ではパスワードを要求するようにすることはできません。必要に応じて、既存のhttpサーバー(Apacheなど)を使用してマルチステージプロキシを設定し、アウトバウンド接続にsshトンネルを使用できます。
繰り返しになりますが、それでも雑草の中にいる場合は、おそらく間違った道を進んでいるため、達成しようとしていることを再考する必要があるかもしれません。