cd /usr/src/sys/i386/conf cp GENERIC MYKERNEL edit MYKERNEL maxusers 32 <==========この数については以下の注意を参照 options IPFIREWALL options IPFIREWALL_FORWARD options IPDIVERT config MYKERNEL cd ../../compile/MYKERNEL make depend make make install
[注意] 本システムでは、1クライアントあたり1プロセスが常駐する。 OSの許容するプロセス数限界はFreeBSD3では
NPROC=(20+16*MAXUSERS) MAXUSERS=32となっており約500に相当する。これに近い大規模利用の際はMAXUSERS の値を大きくして、カーネルを生成する事が望ましい。なお、 MAXUSERSを0とおくと、メモリ容量に応じて適切な値に設定される。 同時利用数は、プログラムのヘッダーファイルにてルール数(=クライアント数) の上限を設定することも可能。
kern.ipc.somaxconn 受け付けるTCP接続の最大値(default=128)。利用端末毎にTCP接続が維持され るので、端末数に比べて十分に大きくする必要がある。 kern.ipc.nmbclusters mbuf(1cluster2KB)の最大数。送受信バッファサイズ(default=32KB)x接続数 分が必要。"netstat -m"で利用状況確認可能。 これらの設定変更は以下で行う。以下の例ではmbuf領域は128MBとなる。必要なメ モリ容量にも注意をすること。 /etc/sysctl.conf に以下を追加 kern.ipc.somaxconn=4096 kern.ipc.nmbclusters=65536
必須:Apache、ipfw 任意:NATD、DHCP、SSL、perlなど*これらのソフトの挙動が十分把握されていないと後のデバッグが苦労する。
doc: 各種文書 conf: configuration file sample, firewall control perl script sample javahtml: クライアント javaとhtmlファイル opengatesrv: サーバ CGIプログラム
javac Opengate.java jar cvf Opengate.jar *.class
言語毎にディレクトリがある(en(english),ja(japanese)など) その中のHTMLを変更。 topindex.html(最初に送られる画面。認証入力へ自動JUMP) index.html(認証入力画面) deny.html(認証拒否時の画面) accept.html,accept2.html(認証許可時の画面) これらは、必要に応じて内容の変更を行うこと。 accept.html中の"**OpengateAppletHere**"は削除してはならない。 ここにJavaAppletが挿入される。 また%%HOSTADDR%%は、インストール時にアドレスに置き換えられる。 %%OPENGATEDIR%%は、インストールディレクトリに置き換えられる。
opengatesrvに移動する。 opengatesrv下のMakefileとopengatesrv.hの内容を確認し、 ディレクトリ,アドレス設定等を設置環境にあわせて変更する。 とくにHOSTADDRは、インストールマシンの端末側インターフェースに 合わせることを忘れないこと。 make コンパイルする。 su ルートになる。 make install インストールする。
関連ソフトウェアの設定
gateway_enable="YES" firewall_enable="YES" firewall_type="simple" natd_enable="YES" <==NATD利用時 natd_interface="sis0" <== ”
</etc/firewall内(上記firewall_typeの個所)設定例> Typeにより振り分け記述してある。その一つ(simple)を利用するか、 新しくTypeを追加する。 [Ss][Ii][Mm][Pp][Ll][Ee]) # set these to your outside interface network and netmask and ip oif="fxp0" onet="133.49.20.0" omask="255.255.252.0" oip="133.49.22.5" # set these to your inside interface network and netmask and ip iif="fxp1" inet="192.168.0.0" imask="255.255.255.0" iip="192.168.0.1" # divert packet to NATD ################################ $fwcmd add 1 divert natd ip from any to any via ${oif} # Stop spoofing $fwcmd add deny all from ${inet}:${imask} to any in via ${oif} $fwcmd add deny all from ${onet}:${omask} to any in via ${iif} # Allow from / to myself $fwcmd add pass all from ${iip} to any via ${iif} $fwcmd add pass all from ${oip} to any via ${oif} $fwcmd add pass all from any to ${iip} via ${iif} $fwcmd add pass all from any to ${oip} via ${oif} # Allow DNS queries out in the world # (if DNS is on localhost, delete passDNS) $fwcmd add pass udp from any 53 to any $fwcmd add pass udp from any to any 53 # Forwarding http connection from unauth client ############### $fwcmd add 60000 fwd localhost tcp from ${inet}:${imask} to any http # Allow TCP through if setup succeeded ######################## $fwcmd add 60100 pass tcp from any to any established設定上の注意
Web外部アクセス制限
order deny,allow deny from all allow from 133.49.0.0/255.255.0.0 (Example:アドレスは変更要) allow from 192.168.0.0/255.255.0.0CGI稼働を有効に
#ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/" ↓ ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/"FileNotFound時にtopページへ
#ErrorDocument 404 /missing.html ↓ ErrorDocument 404 /index.html
local1.* /var/log/opengate.log ↑ ここはTABで区切ること。対応したログファイルを作る。
touch /var/log/opengate.log
ID:address=hostname|hostaddr:[port=portno:]protocol=ftp|pop3|pop3s: ID:protocol=radius:[conffile=filepath:] ID:protocol=pam:[servicename=name:]の形です。各項目は以下を意味します。
ID:認証サーバの識別子です。任意長文字列ですが利便性を考えると、1〜3文字程度が適当でしょう。 address: 認証サーバのIPaddressまたはドメイン名です。名前解決ができないときは、 IPaddressを試して下さい。 port: 認証リクエストを送る先のポート番号です。省略時は/etc/services登録ポート番号。 protocol: 認証に用いるプロトコルです。 現在、pop3,ftp,pop3s,pam,radiusをサポートしています。 conffile:RADIUS時にconfig file のパスを指定します。 省略すると「/etc/radius.conf」。 servicename:PAM時にservicenameを指定します。/etc/pam.confにおける識別子です。 省略すると「opengate」。以下はopengatesrv.confの例です。この例では、4つの認証サーバが設定されており、 csをdefaultとしています。 クライアントから単に[userID]のみを入力するとdefaultサーバに認証に行きます。 [userID@hostID]の形式で入力すると、hostIDで指定された認証サーバへ回します。
default:tc=cs cs:address=noah.cs.is.saga-u.ac.jp:protocol=pop3: cc:address=himiko.cc.saga-u.ac.jp:protocol=ftp:port=21: pam:protocol=pam: rad:protocol=radius:以下はpam.confの設定例です。opengateはauthとaccountのチェックをします。 accountを利用しない時は、permitを指定ください。詳細は「man pam.conf」で確認ください。
opengate auth required pam_radius.so opengate account required pam_permit.so以下はradius.confの設定例です。詳細は、「man radius.conf」で確認ください。
auth radius1.somewhere.com "password1" 5 6 auth radius2.somewhere.com "password2" 5 6
利用者データベースを利用してファイアウォール開放の程度を決定したい場合、 このSCRIPTで行う事も可能であるが、別途用意したcomm-userdb.cを編集する 事が、パフォーマンス上から望ましい。
必要に応じてヘッダーファイルにて以下の項目が設定可能。
HOSTADDR = ゲートウェイのクライアント側IPアドレス HTMLTOP1 = HTMLファイルを置くディレクトリのトップ HTMLTOP2 = HTMLファイルを置くディレクトリのトップ(SSL側) OPENGATEDIR = Opengate関連ファイルをインストールするディレクトリ、Webトップ相対 CGIPATH = CGIを置くディレクトリ CGIPROG = CGIプログラム名 CONFIGFILE = 設定ファイル名 USEFWSCRIPT= Perlスクリプト制御か否か FWSCRIPT = Perlスクリプト名 FWSCRIPTPATH = Perlスクリプトパス LOCKFILE= ロックファイル名 HTMLDOCS= HTMLファイル一覧 DENYDOC = 拒否時のHTMLファイル ACCEPTDOC = 許可時のHTMLファイル HTMLLANGS= HTMLファイルとして準備した言語一覧、最初がdefault ARPPATH= arpコマンドのパス IPFWPATH= ipfwコマンドのパス
opengatesrv.h設定
必要に応じてヘッダーファイルにて以下の項目が設定可能。
DEBUG : 1に設定するとデバッグメッセージをログに出力 関数間の呼び出しとその時の引数値が出る。 DURATIONDEFAULT : javaを送ってから接続してくるまでの待ち時間(秒) default値。応答がないとネットワークを閉鎖する。 待ち時間は認証ページで変更可能。 DURATIONMAX : javaが接続して来ない時には、利用者が認証ページで 指定した利用継続時間の間を利用可能とする。 DURATIONMAXは指定可能な最大値(秒) 不要であれば、DURATIONDEFAULTと同一値にして、 認証ページから入力欄を削ること。 ACTIVECHECKINTERVAL : 端末の生存確認のためのチェック間隔(秒) java無しのときは、対応IPアドレスに対するMACアドレス およびゲートウェイ通過のPacket数でチェック。 java有りのときは、javaとのHELLO交換およびゲートウェイ 通過のPacket数でチェック。 COMMWAITTIMEOUT : 通信返答までの最大待ち時間(秒) NOREPLYMAX : 上記、メッセージ交換での無返答を許す回数 NOPACKETINTERVAL : 放置と判断する通信パケット通過無し時間(秒)(ただし、この チェックは、ACTIVECHECKINTERVALごとに行うので、 実際は切り上げてACTIVECHECKINTERVALの整数倍となる) LOCKTIMEOUT : ipfwの排他制御最大待ち時間。 IPFWMIN : Opengateの利用するipfwのルール番号範囲 IPFWMAX : 最小IPFWMINから最大IPFWMAXまで間隔IPFWINTERVAL IPFWINTERVAL : ごとに利用する。これを使いきるとそれ以上登録しない。 よって、クライアント数制限に利用可能。 PORTMIN : Opengateサーバの利用するポート番号の範囲(最小値−最大値) PORTMAX : 他の用途で利用しない範囲を指定。同時利用端末数以上必要。 FACILITY : syslogの出力先