オペレーティングシステム:Debian 12
セキュリティは私にとって非常に重要なので、私はしばしばOPSECで働いています。これで新しいルーターが作成され、LANケーブルを接続するとコンピュータにポートが開きます。 LANケーブルを外すとポートが閉じます。ルータにポート転送が設定されていません。
LANに接続されていません:
$ sudo ss -lntup
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 192.168.122.1:53 0.0.0.0:* users:(("dnsmasq",pid=2717,fd=5))
tcp LISTEN 0 32 192.168.122.1:53 0.0.0.0:* users:(("dnsmasq",pid=2717,fd=6))
LANが接続されている:
$ sudo ss -lntup
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 192.168.122.1:53 0.0.0.0:* users:(("dnsmasq",pid=2717,fd=5))
udp UNCONN 0 0 0.0.0.0:33955 0.0.0.0:*
tcp LISTEN 0 32 192.168.122.1:53 0.0.0.0:* users:(("dnsmasq",pid=2717,fd=6))
LANを再接続すると、別のポートが開きます。
$ sudo ss -lntup
udp UNCONN 0 0 192.168.122.1:53 0.0.0.0:* users:(("dnsmasq",pid=2717,fd=5))
tcp LISTEN 0 32 192.168.122.1:53 0.0.0.0:* users:(("dnsmasq",pid=2717,fd=6))
udp UNCONN 0 0 0.0.0.0:49258 0.0.0.0:*
原因は何ですか?私はこれが正常な行動だとは思わない。状態はUNCONNですが、私のLANケーブルでポートが開いているのでセキュリティ上危険です。私はWireGuardを使用しています。無効にすると unconn ソケットが消えます。
なぜこのようなことをするのですか?
これが起こらないようにするにはどうすればよいですか?
答え1
~からOPのコメント:
@AB はい、wgを使用します。 wgを無効にすると、unconnソケットは消えます。 wgはなぜこれをするのですか?
システムは、プライマリインターフェイスにリンク(キャリア検出)があるたびにWireGuard(トンネル)インターフェイスを取得するように設定されているようです。
WireGuardはピアと通信するためにUDPソケットが必要です。カーネル実装(wireguard.ko
例ip link add wg0 up type wireguard
:カーネルモジュール)またはユーザースペースの実装(例:wireguard-go wg0
+ ip link set wg0 up
)。
WireGuard 設定でローカルポートを指定しない場合、動的にランダムに選択されます。これは通常、「クライアント」WireGuardインターフェイスの場合です(WireGuardがポイントツーポイントモデルに従います)。通常、安定したパブリックアドレスがなく、トンネルが存在するまで接続できない側です。
このUDPポートと動的WireGuard設定の間の関係を確認するには、単にwg
。完全に設定されていないインターフェイスの場合でも、少なくとも次の内容が表示されます。
interface: wg0
listening port: 36387
これは、インターフェイスがカーネル実装(UP)またはすべての場合(現在示されているように)にwireguard-go
使用されるポートです。
カーネルで処理すると、ポートはインターフェイスが動作しているときにのみリッスンします。ただし、ポートが変更されると、毎回インターフェイスを削除して再生成する必要があります。それ以外の場合は、同じポートが再び表示されます。ソケットはカーネルで処理されるため、ソケットに関連するプロセス情報はありません。
UNCONN
これに関する注意事項は、ソケットが接続されていない状態にあることを意味します。
接続されていないとしてもエラーやタイムアウトが発生したという意味ではありません。これは、通信でUDPソケットを使用する2つの方法の1つです。単一のソケットを使用して、効率的な方法で複数のピアと通信できます。
両方のWireGuard実装はUDPソケットを使用します。未接続モード:少なくともユーザースペースの場合、そのconnect(2)
ソケットでは使用されませんが、代わりにsendmsg(2)
/send(2)
を使用して通信することを意味しますwrite(2)
(recvmsg(2)
他の方向でも同じ)。
答え2
実際、「ケーブル」はポートを開けません(これが質問で想定しているようです)。ソフトウェアポートを開くことができます。今日のコンピュータシステムはかなり複雑ですが、「魔法」ではありません。
新しいインターフェイスが表示されるのを待っているプロセスがコンピュータにあるようです(つまり、このプロセスがntpd
これを実行することを知っています)。ケーブルを挿入すると、インターフェイスが効果的に動作し、それがインターフェイスが動作していることをソフトウェアプロセス(カーネルインターフェイスを介して)に通知し、そのプロセスが最終的にポートを開きます。
たぶん見ることができますhttps://stackoverflow.com/a/24207967。