web-dev-qa-db-ja.com

OpenBSDのpf:sshを除いて、特定のユーザーのネットワークアクセスを無効にします。

OpenBSDのデフォルトのファイアウォールを使用している場合、それを変更して、通常のユーザーのすべてのネットワークアクセスを無効にする方法を教えてください。ただし、ランダムなホストからユーザーにSSH接続する必要があります。

したがって、たとえば、ユーザーが「wget google.com」を実行したい場合は、ファイアウォール権限を持ってはなりません。ランダムなマシンからscpを介してユーザーに何かをコピーする場合、ファイアウォールはそれを許可する必要があります。ユーザーが他のホストにSSHで接続したい場合は、アクセスできないようにする必要があります。

4
user90825

私はあなたがauthpfを探していると思います。

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
3
jbrahy

私はあなたに一般的な計画を与えることはできません、そしてうまくいけば他の誰かが詳細を記入することができます。

次のことを行う必要があるようです。

  1. chroot を作成します
  2. どういうわけか1つだけのインターフェースを許可します。
  3. 次に、そのインターフェイスの パケットキューイング を確認するか、そのインターフェイスでpfルールを記述します。

正直なところ、FreeBSD jailの方が簡単だと思いますが、おそらくそのオプションはありません。

これはあまり答えではないかもしれませんが、うまくいけば、それはあなたを正しい方向に向けるでしょう。コメントとして投稿したいのですが、長すぎると思います。

0
SailorCire

ファイアウォールは通常、ネットワークパケットを調べます。彼らはパケットがどこから来たのかを知ることができますが、それがパケットの内省によって何らかの形で明らかにされない限り、彼らはそれらのパケットの責任者を知りません。

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

0
mc0e