サービス(xrdp)が特定のポートを使用するのを防ぐ方法は?

サービス(xrdp)が特定のポートを使用するのを防ぐ方法は?

私は特定の目的のために自分のコンピュータ上のポートを明示的に使用するように要求する一部の開発者の管理者です。開発者の一人がポートを使用しに行ったとき、ポートは使用中でした。netstat -pxrdp / Xnvcがそれを使用していることを示しています。私はユーザーが他のポートを使用していることを確認するためにジャンプして再びオンにしようとしましたが、引き続きそのポートを使用します。

私が読んだところによれば、Xrdpはランダムなオープンポートを選択します。サービスがそのポートをブラックリストに追加する方法を理解できます。

システム:CentOS 7、ファイアウォールの代わりにiptablesを使用する

答え1

TCP/IPには「何も使用しないオープンポート」というものはありません。現在使用されていないポートはすべて閉じられます。それ以外の場合は、iptablesまたはファイアウォールが実行されます。詰まった一部またはすべてのトラフィックが着信する特定のポートです。

(私はファイアウォールで「オープンポート」という用語が本当に嫌いです。なめらかファイアウォールにありますが、実際に使用するにはプログラムまたはカーネルレベルのサービスが必要です。開いているこのポートを使用するための一般的な手順の一部として。 )

Xrdp(8)マニュアルページから:

-p、--ポート

受信するTCPポートを指定します。これにより、xrdp.ini ファイルのポート設定が上書きされます。

xrdp.ini(5)マニュアルページから:

ポート=ポート

着信接続をリッスンする TCP ポートを指定します。 RDPのデフォルト値は3389です。

したがって、このオプションを使用すると、Xrdpはこのオプションで指定されたポートを使用し、このオプションを使用しない場合は構成ファイルで指定されたポートを-p使用します。両方が指定されていない場合、WindowsはRDPプロトコルで使用するのと同じポートであるポート3389を使用します。xrdp.ini-p

デフォルトでは、ほとんどの発信接続とTCP / UDPソケットのローカルポート番号を指定しないすべてのアプリケーションは、sysctlこの設定で指定された範囲内のローカルポート番号を取得しますnet.ipv4.ip_local_port_range。 RHEL/CentOS 7 では、この範囲はデフォルトでポート番号 32768..60999 に設定されます。

(各TCPまたはUDP接続にはローカルポート番号とリモートポート番号があります。発信接続は通常リモートポート番号のみを指定し、オペレーティングシステムはローカルポート番号を決定しますが、着信接続を受信するためにオープンポートは通常ローカルポート番号です。)

sysctl設定を使用して、自動割り当てから特定のポートおよび/またはポート範囲を除外できますnet.ipv4.ip_local_reserved_ports。たとえば、特定の目的でポート40000と40001を予約する必要がある場合は、次のコマンドを使用してこれを達成できます。

sysctl -w net.ipv4.ip_local_reserved_ports=40000,40001

自動割り当て除外はすぐに適用されます。これを継続的に作成するには、/etc/sysctl.conf次の行を編集して追加してください。

net.ipv4.ip_local_reserved_ports=40000,40001

このように予約されたポートを明示的に指定(バインド)するすべてのプログラムは、まだそのポートを正常に取得します。この予約は単にポート番号の自動割り当てを無視します。

通常のユーザープロセスが1023より大きい特定のポート番号を要求し、現在他のプロセスで使用されていない場合は、他の方法ではできません。〜するリクエストを承認します。 (0..1023の範囲のポートを使用するにはプロセスが実行されている必要がありroot、Linuxディストリビューションがよりきめ細かい権限を使用している場合はそのCAP_NET_BIND_SERVICE機能が必要です。)

ただし、iptablesルールを使用すると、その目的が何であるかに応じて、特定の目的以外の目的でポートを使用できないようにすることができます。たとえば、そのポートへの着信/発信接続を特定の目的に適した接続に制限したり、次のルールペアを使用して特定のiptables -m owner --uid-owner <username>ユーザーに限定したりできます。

iptables -A OUTPUT -m tcp -p tcp --sport 3389 -m owner --uid-owner specified-user -j ACCEPT
iptables -A OUTPUT -m tcp -p tcp --sport 3389 -j REJECT 

(最初のルールはポートと意図したユーザーを一致させ、トラフィックを受け入れ、ルール処理を終了します。ルールが一致しない場合、2番目のルールはポートのみが一致し、一致しないルールと一致する人からのトラフィックを拒否します。このポートの宛先ユーザーです。)

必ずしもそうではないかもしれません防ぐ他のユーザーはそのポートを使用しようとしませんが、ポートが常にオンになっていることを確認します。接続に失敗しましただから彼らはそれを使用しようとする試みを停止することを願っています。

関連情報