[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .

フィルタの設定

フィルタは次のように動作させる必要があります。

  1. 認証済みの IP アドレスからの通信は許す(なんでも許す)

  2. 認証済みの IP アドレスからの HTTP (80/tcp) は認証 CGI へねじ曲げる。

    有無をいわさず認証 CGI に誘導し、本人確認を行ないます。

  3. 上記以外の通信は許可しない。

    ただし、例外があれば、それは適宜書いておく。 たとえば DHCP を許しておくといった具合に (たいていの PC は IP アドレスを自動設定するので、 DHCP を許可しておかないと事実上うごかない)。

例: PF

OpenBSD PF (packet filter)を使う例です。

上で説明した動作を記述すると次のようになります。 なお、ここでは認証 CGI が自分自身(127.0.0.1)で動いています。 別のマシンでも OK です。

table <auth> persist file "/etc/nfsw/src_addrs.allow"

rdr log on re0 proto tcp from !<auth> to any port 80 -> 127.0.0.1 port 30080

pass quick from <auth> to any
block log all

[解説]

テーブル <auth> を定義します。 テーブル <auth> は認証済み IP アドレスのリストです。 テーブルの内容は、 PF 起動時にファイル /etc/nfsw/src_addrs.allow から読み込まれます。 よって、ファイルを書き換えた場合には、 PF の再起動もしくは設定ファイルのリロードが必要です。

table <auth> persist file "/etc/nfsw/src_addrs.allow"

! は NOT の意味です。 「認証済みでない」 IP アドレスからの HTTP (80/tcp) 通信を横取りし、 127.0.0.1 の 30080/tcp へねじ曲げます。 127.0.0.1 の 30080/tcp では認証 CGI が動いています。

rdr log on re0 proto tcp from !<auth> to any port 80 -> 127.0.0.1 port 30080

認証済みアドレスからの通信は何でも許します。 それら以外の通信は通しません。

pass quick from <auth> to any
block log all

[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .
Copyright (C) 1993-2022 Ken'ichi Fukamachi mail:< fukachan at fml.org >