OpenBSDのpf:特定のユーザーへのネットワークアクセス(sshを除く)を無効にします。

OpenBSDのpf:特定のユーザーへのネットワークアクセス(sshを除く)を無効にします。

OpenBSD のデフォルトのファイアウォールを使用している場合は、1 つだけではなく、一般ユーザーのすべてのネットワークアクセスを無効にするようにファイアウォールを変更するにはどうすればよいですか?ランダムホストからユーザーにSSHを接続したい!

たとえば、ユーザーが "wgetgoogle.com"を望む場合は、ファイアウォール権限を持ってはいけません。 scpを介して任意のコンピュータからユーザーに何かをコピーするには、ファイアウォールでそれを許可する必要があります。ユーザーが他のホストにSSHで接続したい場合は、アクセス権を持ってはいけません。

答え1

私の考えでは、あなたがauhpfを探していると思います。

http://www.openbsd.org/faq/pf/authpf.html

Authpf(8) は、ゲートウェイの認証に使用されるユーザーシェルです。認証ゲートウェイは、ゲートウェイがトラフィックを許可する前にユーザーが最初にゲートウェイに自分自身を認証する必要があることを除いて、通常のネットワークゲートウェイ(ルーターとも呼ばれます)と同じです。ユーザーシェルが/usr/sbin/authpfに設定されている(つまり、ユーザーシェルをksh(1)、csh(1)などに設定するのではなく)、ユーザーがSSHを使用してログインすると、authpfはアクティブシェルを使用します。 pf(4)ルールセット - ユーザーのトラフィックはフィルタを通過するか、ネットワークアドレス変換またはリダイレクトを使用して変換されます。ユーザーがログオフするかセッションが切断されると、authpfはユーザーにロードされたすべてのルールを削除し、ユーザーが開いたすべてのステートフル接続を終了します。これにより、ユーザーはSSHセッションを開いたままにしてゲートウェイを介してトラフィックを転送できます。

# macros
wifi_if = "wi0"
ext_if  = "fxp0"
dns_servers = "{ 10.0.1.56, 10.0.2.56 }"

table <authpf_users> persist

# filter
block drop all

pass out quick on $ext_if inet proto { tcp, udp, icmp } \
   from { $wifi_if:network, $ext_if }

pass in quick on $wifi_if inet proto tcp \
   from $wifi_if:network to $wifi_if port ssh

pass in quick on $wifi_if inet proto { tcp, udp } \
   from <authpf_users> to $dns_servers port domain

anchor "authpf/*" in on $wifi_if

答え2

私はあなたに一般的な計画を提示することができませんし、他の人が詳細を記入することを願っています。

以下を行う必要があるようです。

  1. 作るchroot
  2. 何らかの方法で許可単一それとインターフェースします。
  3. それから見てパケットキューイング対応するインターフェースまたはそのインターフェースの pf ルールを作成します。

率直に言って、FreeBSD刑務所を使用する方が簡単になると思いますが、おそらくそのようなオプションはありません。

これは良い答えではないかもしれませんが、これがあなたに正しい方向を示してくれることを願っています。コメントで投稿しようとしましたが、長すぎます。

答え3

ファイアウォールは通常、ネットワークパケットを確認します。彼らはパケットがどこから来るのかを見ることができますが、パケットチェックによって明らかにされない限り、誰がパケットを担当しているのかわかりません。

誰でもすべてをロックすることから始め、必要に応じて認証されたアクセスを追加できます。たとえば、すべての外部Web要求が通過する必要がある認証されたプロキシを介して。

関連情報