単一のIPアドレスからの接続を受信するようsocatに指示する

単一のIPアドレスからの接続を受信するようsocatに指示する
socat TCP-LISTEN:22,fork TCP:192.168.0.15:5900

socatポート22はリモートIPアドレス8.8.8.8によってのみ信頼されており、他のIPアドレスからの接続を許可してはいけないことをどうやって知ることができますか?これはLinuxサーバーにあります。

答え1

rangesocat受信アドレスにオプションを追加できます。

socat TCP-LISTEN:22,fork,range=8.8.8.8/32 TCP:192.168.0.15:5900

あるいは、tcpwrap=vnc_forwardオプションを追加し、そのためのグローバルルールを定義することもできます。vnc_forward次のサービスホストアクセス(5)

socatこれにより、接続が到着するのを防ぎませんが、socat8.8.8.8で接続されていない場合は、その接続を無視して警告を表示します。

答え2

socatがlocalhostでのみ受け取るようにするのと同じことが私にとって効果的でした。

socat TCP-LISTEN:22,fork,bind=127.0.0.1 TCP:192.168.0.15:5900

だからこれを試してみることができます。

socat TCP-LISTEN:22,fork,bind=8.8.8.8 TCP:192.168.0.15:5900

答え3

ほとんどの人はこれにファイアウォールを使用しています。ポート22のトラフィック制限を確認してくださいiptables

iptables -I INPUT -p tcp '!' -s 8.8.8.8 --dport 22 -j REJECT

または、ファイアウォールがすでに制限されている場合は、1つのアドレスのみを許可します。

iptables -A INPUT -p tcp -s 8.8.8.8 --dport 22 -j ACCEPT

これはiptablesファイアウォールの完全な構成ではないため、上記の構成を使用する前に、まず正しい構成を設定する必要があります。

答え4

主な目標がセキュリティであり、クライアントシステムを制御する場合は、SSLトンネルを介してsocatサーバーに接続する方が安全なオプションなので、サーバーが接続を受け入れる前にクライアント証明書を確認できます。

私は最近、共同クライアント/サーバー設定を保護するためにこれを行いました。

このチュートリアルでは、設定を明確に説明します。

http://www.dest-unreach.org/socat/doc/socat-openssltunnel.html

ガイドラインとは異なる点の1つは、クライアントSSLライブラリがログジャムパッチのためにデフォルトでサーバーキーを拒否する必要があることです。

すべてが機能するようにするには、サーバーをPEMに追加します。

openssl dhparam 2048 >> "$FILENAME".pem

このキーベースの交換メカニズムは、IPベースの認証を介してホストを認証するときにより権威があります。

関連情報