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
私はあなたに一般的な計画を提示することができませんし、他の人が詳細を記入することを願っています。
以下を行う必要があるようです。
- 作るchroot
- 何らかの方法で許可単一それとインターフェースします。
- それから見てパケットキューイング対応するインターフェースまたはそのインターフェースの pf ルールを作成します。
率直に言って、FreeBSD刑務所を使用する方が簡単になると思いますが、おそらくそのようなオプションはありません。
これは良い答えではないかもしれませんが、これがあなたに正しい方向を示してくれることを願っています。コメントで投稿しようとしましたが、長すぎます。
答え3
ファイアウォールは通常、ネットワークパケットを確認します。彼らはパケットがどこから来るのかを見ることができますが、パケットチェックによって明らかにされない限り、誰がパケットを担当しているのかわかりません。
誰でもすべてをロックすることから始め、必要に応じて認証されたアクセスを追加できます。たとえば、すべての外部Web要求が通過する必要がある認証されたプロキシを介して。