3.3 FreeBSD
3.3.5 リモートからのアクセスの制限
この定義によるアクセス制限は次のようになります。
localhost または IP アドレス 127.0.0.1 からすべての接続要求は許可
ホスト名に.ipa‑sec.com を含むものまたはネットワーク 192.168.0.0/24 からす べての接続要求は許可
ALL:localhost127.0.0.1:allow
ALL:bsd.ipa‑sec.com192.168.0.0/255/255/255/0:allow
ホスト名に.evil.cracker.example.com を含むものから sendmail への接続要求 は拒否。それ以外から sendmail への接続要求は許可
sendmail:.evil.cracker.example.com:deny sendmail:ALL:allow
ネットワーク 192.168.0.0/16 から sshd への接続要求は許可
sshd:192.168.0.0/255.255.0.0:allow
上記にマッチしないすべての接続要求は拒否
ALL:ALL:deny
FreeBSD をインストールした直後の/etc/hosts.allow の最後に次の定義を見つ けることができます。
この定義によるアクセス制限は次のようになります。
すべてから fingerd への接続要求を拒否、そして fingerd へ接続要求を受けた ことをメールで root 宛に通知
#Youneedtobecleverwithfinger;do̲not̲backfinger!!Youcaneasily
#starta"fingerwar".
fingerd:ALL¥
:spawn(echoFinger.│¥
/usr/bin/mail‑s"tcpd¥:%u@%h[%a]fingeredme!"root)&¥
:deny
この定義単体では、
すべてから接続要求を受けたとき、そのことを/var/log/auth.log へ記録、接続 要求した相手方へメッセージ Youarenotwelcometouse%dfrom%h. を表示し接 続を切断になります。
この定義は hosts.allow の最後に記述することで、マッチしないすべての接続 要求に対してこの処理が行われるようにできます。
#Therestofthedaemonsareprotected.
ALL:ALL¥
:severityauth.info¥
:twist/bin/echo"Youarenotwelcometouse%dfrom%h."
定義で使われている変数は、それぞれ次の値に置き換えられます。
%a 相手方 IP アドレス
%d 接続要求を受けたデーモンプロセスの名前
%h 相手方ホスト名または IP アドレス
%u 相手方ユーザ名または unknown
(3)パケットフィルタリングによるアクセス制限
パケットフィルタリングとは、ネットワークを流れるデータを選別し、そのデ ータを通過させるか(許可)、させないか(拒否)を指定することで、ネットワー クからの不要なデータを遮断したり、逆にネットワークへデータが漏洩するこ とを防ぐ仕組みです。
FreeBSD4.7‑RELEASE では、カーネルを再構築することなく、パケットフィルタ リング IPFW または IPFilter を利用することができます。ここでは、IPFW によ るアクセス制限を紹介します。
• IPFW
によるアクセス制限
IPFW は、/etc/rc.conf へ firewall̲enable="YES"と追記するだけで、システム 起動時にカーネルモジュールとしてロードされ有効になります。
IPFW に は、 は じめか ら いくつ か のフィ ル タルー ル が用意 さ れてい ま す 。 /etc/defautls/rc.conf を見るとわかりますが、デフォルトではタイプ UNKNOWN が選択されています。
タイプ IPFW ルール
open 全入力を許可します。(通常は選択しないこと) simple 全ネットワークを保護しようとします。
client このマシンのみを保護しようとします。
closed lo0 以外の全 IP サービスを無効にします。
UNKNOWN デフォルトで指定されています。ファイアウォール規則の ロードを無効にします。
filename 指定したファイル名の規則をロードします(フルパス指定 が必要)。
ここでは、タイプ filename を利用するときの設定を紹介します。
例えば、次のようにフィルタルール/etc/ipfw.rules を作成します。ここでは、
自ホストの IP アドレスが 192.0.2.1 とします。
フィルタルールの書式については、
http://www.freebsd.org/doc/ja̲JP.eucJP/books/handbook/firewalls.html ま たはオンラインマニュアル ipfw(8)を参照してください。
#インタフェース lo0 を経由する通信は許可 addallowipfromanytoanyvialo0
#127.0.0.0/8 との通信は拒否 adddenyipfromanyto127.0.0.0/8 adddenyipfrom127.0.0.0/8toany
#自ホストと 192.0.2.0/24 との通信は許可 addallowipfrom192.0.2.1to192.0.2.0/24 addallowipfrom192.0.2.0/24to192.0.2.1
#コネクション確立済みの TCP 通信は許可 addallowtcpfromanytoanyestablished
#フラグメントパケットは許可 addallowipfromanytoanyfrag
#自ホストのポート 25(SMTP)へコネクション確立要求の TCP 通信は許可 addallowtcpfromanyto192.0.2.125setup
#自ホストからすべてへのコネクション確立要求の TCP 通信は許可 addallowtcpfrom192.0.2.1toanysetup
#上記に該当しないコネクション確立要求の TCP 通信は拒否 adddenytcpfromanytoanysetup
#自ホストから DNS への問合せとその応答を許可 addallowudpfrom192.0.2.1toany53keep‑state
#自ホストから NTP への問合せとその応答を許可 addallowudpfrom192.0.2.1toany123keep‑state
#上記に該当しない通信は拒否
原則として、フィルタルールはルール番号を指定しないとき、上位行から順番 に評価され、最初にマッチしたルールに対して処理が行われます。
フィルタルールを記述したファイルが作成できたならば、/etc/rc.conf へ次の 2 行を追記します。
firewall̲enable="YES"
firewall̲type="/etc/ipfw.rules"
システムを再起動するとフィルタルール ipfw.rules が有効になります。