web-dev-qa-db-ja.com

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

socat TCP-LISTEN:22,fork TCP:192.168.0.15:5900

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

7
user11085

rangeオプションをsocatリスニングアドレスに追加できます。

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

または、tcpwrap=vnc_forwardオプションとそのグローバルルールの定義 vnc_forwardhosts_access(5) によるサービス。

これにより、接続がsocatに到達するのを妨げることはありませんが、socatは、8.8.8.8からのものではない場合、それらを無視します(警告付き)。

13

このようなものは私が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
4
adrelanos

ほとんどの人はそのためにファイアウォールを使用しています。 iptablesを見て、トラフィックをポート22に制限します。

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ファイアウォールの完全な設定ではないことに注意してください。上記を使用する前に、適切な設定をセットアップする必要があります。

3
Lambert

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

私は最近、相乗効果のクライアント/サーバー設定を保護するためにこれを経験しました。

このチュートリアルでは、セットアップについて明確に説明しています

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

私が見つけた指示からの1つの逸脱は、logjamのパッチにより、クライアントSSLライブラリはデフォルトでサーバーキーを拒否する必要があることです

以下をサーバーPEMに追加すると、すべてが機能します

openssl dhparam 2048 >> "$FILENAME".pem

このキーベースの交換メカニズムは、IPベースの認証を介したホストの検証に関して、より信頼性が高くなります。

0
Erick J