特定のユーザーがlocalhostのみを使用するように制限できますか?

特定のユーザーがlocalhostのみを使用するように制限できますか?

Nginxサーバーを介して複数のNodeJSサーバーにアクセスしました。 Nginxはlocalhostを介してNodeJSサーバーに中継されます。今は必要なタスクを実行できるようにすべてのタスクを実行していますが、将来的にはユーザーが自分のサーバーを直接操作できることを願っています。

私がしなければならないのは、root以外のユーザーがlocalhostにのみアクセスできるように制限することです。できますか?

答え1

以下を使用してユーザーのトラフィックをフィルタリングできます。iptablesオーナーモジュールループバックインターフェイスのみが許可されます。

# accept incoming packets to loopback device
iptables -A OUTPUT -m owner --uid $USER -o lo -j ACCEPT
# drop everything else
iptables -A OUTPUT -m owner --uid $USER -j DROP

上記のルールを使用すると、ユーザーは受信したメッセージに応答できない場合でも、無制限のポートでリッスンするプロセスを作成できます。システム全体のホワイトリストでルールを作成することもできます。つまり、良好なトラフィックをすべて最初に受け入れ、残りはすべて破棄します。

着信トラフィックをフィルタリングするために所有者モジュールを使用することはできません(参照:マニュアルページ)以下を許可するように入力チェーンを設定できます。確立された明示的に許可されていない他の受信トラフィックを破棄します。

# change default action to drop
iptables -P INPUT DROP
# allow established connections (replies)
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

ネットワークポートでリッスンしているサービスを実行している場合は、そのサービスがトラフィックをリッスンできるように適切なルールを追加する必要があります。

関連情報