2012-01-30 14 views
0

さまざまな種類のアプリケーション(http、ftpなど)からその宛先へのプロキシ要求に使用するsocks4サーバーがあります。socks4を使用する場合の認証方法

私はSOCKS4は、アプリケーションがどのような方法で認証する方法を定義していないことを知っている(クライアントがサーバに接続するときにのみオプションユーザー名を指定しますが、あなたがあるクライアントを伝えることができる方法はありませんようだは、サーバーが要求を中継するためにその情報を送信する必要があります)

通常のアプリケーションプロトコルであるhttp、ftpなどで理解されているsocks4に対して何らかの認証を実装する方法はありますか?

答えて

2

SOCKS protocolの仕組みをお読みください。

SOCKS v4/4a応答の2番目のバイトは、クライアントの要求が受け入れられたか拒否されたか(そしてその理由)を示すステータス値です。この場合、クライアントのidentdが実行されていないか、サーバーから到達できないためにステータス値0x5C(要求が失敗しました)とが要求でユーザーID文字列を確認できなかったために0x5D(要求が失敗しました) 。そうすれば、リクエストのユーザ名フィールドに有効で認識可能な値が含まれている必要があります。もちろん、クライアントはidentサーバーを実行して必要なことを報告することができるため、真の認証ではありません。

それ以外の場合は、実際のサーバー側の認証をサポートするSOCKS v5に切り替えます。

+0

返済いただきありがとうございます。クライアントが「正しい認証」で再試行するために、サーバーがこれらのエラーコードを指定することもできます。問題はクライアントがエラーコードを無視しているように見えることです。つまり、IEで試してみましたが、チャットクライアントでも試しました。ユーザーにユーザー名の変更を依頼します。 – Ghita

+0

クライアントに何かをさせることはできません。サーバーに必要なものだけを報告することができます。 SOCKS v4/4aでは、本当のユーザ名は存在しません。代わりにクライアントマシンの識別子になります。そのため、オプションです。 SOCKS v4/4aサーバは、接続が許可されていないマシンを拒否することができますが、実際には認証と同じではありません。 Hense SOCKS v5。 –

+0

はい、これは問題です。サーバーは要求を拒否できますが、アプリケーションユーザーは何が起こったのかを知らずに機能しないサービスに陥ります。インターネットエクスプローラの場合は、ブラウザに強制的に他の資格情報を送信することはできません。 – Ghita

関連する問題