socat TCP-LISTEN:22,fork TCP:192.168.0.15:5900
ポート22はリモートIPアドレス8.8.8.8からのみ信頼されており、他のIPアドレスからの接続を受け入れてはならないことをどのようにsocat
に通知できますか?これはLinuxサーバー上にあります。
range
オプションをsocatリスニングアドレスに追加できます。
socat TCP-LISTEN:22,fork,range=8.8.8.8/32 TCP:192.168.0.15:5900
または、tcpwrap=vnc_forward
オプションとそのグローバルルールの定義 vnc_forward
hosts_access(5) によるサービス。
これにより、接続がsocat
に到達するのを妨げることはありませんが、socat
は、8.8.8.8からのものではない場合、それらを無視します(警告付き)。
このようなものは私が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
ほとんどの人はそのためにファイアウォールを使用しています。 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ファイアウォールの完全な設定ではないことに注意してください。上記を使用する前に、適切な設定をセットアップする必要があります。
主な目標がセキュリティであり、クライアントマシンを制御している場合は、SSLトンネルを介してsocatサーバーに接続する方が安全です。サーバーは、接続を受け入れる前にクライアント証明書を確認します。
私は最近、相乗効果のクライアント/サーバー設定を保護するためにこれを経験しました。
このチュートリアルでは、セットアップについて明確に説明しています
http://www.dest-unreach.org/socat/doc/socat-openssltunnel.html
私が見つけた指示からの1つの逸脱は、logjamのパッチにより、クライアントSSLライブラリはデフォルトでサーバーキーを拒否する必要があることです
以下をサーバーPEMに追加すると、すべてが機能します
openssl dhparam 2048 >> "$FILENAME".pem
このキーベースの交換メカニズムは、IPベースの認証を介したホストの検証に関して、より信頼性が高くなります。