Merge the following from the English version:

1.11  -> 1.25 	dialup-firewall/article.sgml
	1.9   -> 1.10 	diskless-x/article.sgml

Submitted by:	Hideyuki KURASHINA <rushani@jp.FreeBSD.org>
References:	[doc-jp-work 546]
This commit is contained in:
Hiroki Sato 2003-01-05 18:32:22 +00:00
parent fbbfd2ea7a
commit a4da305613
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=15544
2 changed files with 88 additions and 67 deletions
ja_JP.eucJP/articles
dialup-firewall
diskless-x

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project The FreeBSD Japanese Documentation Project
Original revision: 1.11 Original revision: 1.25
$FreeBSD$ $FreeBSD$
--> -->
@ -18,7 +18,7 @@
<article> <article>
<articleinfo> <articleinfo>
<title>FreeBSD によるダイアルアップ式防火壁の構築</title> <title>FreeBSD によるダイアルアップ式ファイアウォールの構築</title>
<authorgroup> <authorgroup>
<author> <author>
@ -36,22 +36,24 @@
<abstract> <abstract>
<para> <para>
この記事は FreeBSD の PPP ダイアルアップと IPFW この記事は FreeBSD の PPP ダイアルアップと IPFW
を用いながらどのように防火壁をセットアップするか、 を用いながらどのようにファイアウォールをセットアップするか、
特に動的に割り当てられた IP 特に動的に割り当てられた
アドレスによるダイアルアップ上の防火壁について事実を元に詳細に説明します。 IP アドレスによるダイアルアップ上のファイアウォールについて、
事実を元に詳細に説明します。
なお、前段階である PPP 接続についての設定は触れていません。</para> なお、前段階である PPP 接続についての設定は触れていません。</para>
</abstract> </abstract>
</articleinfo> </articleinfo>
<sect1 id="preface"> <sect1 id="preface">
<title>序文</title> <title>序文</title>
<para>FreeBSD によるダイアルアップ式防火壁の構築</para> <para>FreeBSD によるダイアルアップ式ファイアウォールの構築</para>
<para> <para>
この文書はあなたの ISP によって この文書はあなたの ISP によって
IP アドレスを動的に割り当てられた時、FreeBSD IP アドレスを動的に割り当てられた時、
で防火壁をセットアップために要求される手順を扱うことをめざしたものです。 FreeBSD でファイアウォールをセットアップために
要求される手順を扱うことをめざしたものです。
この文書を可能な限り有益で正確なものにするために努力しているので、 この文書を可能な限り有益で正確なものにするために努力しているので、
どうぞ意見や提案を どうぞ意見や提案を
<email>marcs@draenor.org</email> <email>marcs@draenor.org</email>
@ -60,21 +62,20 @@
<sect1 id="kernel"> <sect1 id="kernel">
<title>カーネルオプション</title> <title>カーネルオプション</title>
<para> <para>
最初になすべきことは FreeBSD のカーネルを再コンパイルすることです。 最初になすべきことはカーネルを再コンパイルすることです。
カーネルを再コンパイルする方法についてさらに情報が必要なら、 カーネルを再コンパイルする方法についてさらに情報が必要なら、
<ulink URL="http://www.freebsd.org/handbook/kernelconfig.html"> <ulink URL="../../books/handbook/kernelconfig.html">ハンドブックの
ハンドブックのカーネルのコンフィグレーションの節</ulink> カーネルのコンフィグレーションの節</ulink>から読み始めるのが最適でしょう。
から読み始めるのが最適でしょう。 カーネルを以下のオプションをつけてコンパイルする必要があります:</para>
カーネルの中に以下のオプションをつけてコンパイルする必要があります: </para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term><literal>options IPFIREWALL</literal></term> <term><literal>options IPFIREWALL</literal></term>
<listitem> <listitem>
<para>カーネルの防火壁のコードを有効にします。</para> <para>カーネルのファイアウォールのコードを有効にします。</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
@ -110,9 +111,10 @@
</variablelist> </variablelist>
<para> <para>
更なるセキュリティーのためにカーネルの中に組み込むことのできるオプションが他にいくつかあります。 更なるセキュリティのために、
これらは防火壁を動かすためには必要ではありませんが、 カーネルの中に組み込むことのできるオプションが他にいくつかあります。
セキュリティーに猛烈にこだわるユーザは有効にしてかまいません。</para> これらはファイアウォールを動かすためには必要ではありませんが、
セキュリティに猛烈にこだわるユーザは有効にしてかまいません。</para>
<variablelist> <variablelist>
<varlistentry> <varlistentry>
@ -125,7 +127,8 @@
これは マシンの TCP/IP スタックを識別するので これは マシンの TCP/IP スタックを識別するので
nmap などのようなツールを妨げることができます。 nmap などのようなツールを妨げることができます。
しかし RFC1644 拡張のサポートに違反しています。 しかし RFC1644 拡張のサポートに違反しています。
これは現在稼働している web サーバには推奨 *しません*。</para> これは現在稼働している
web サーバには推奨<emphasis>しません</emphasis>。</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
@ -133,19 +136,19 @@
<para> <para>
いったんカーネルを再コンパイルしたら再起動しないで下さい。 いったんカーネルを再コンパイルしたら再起動しないで下さい。
希望的にも、 希望的にも、
防火壁の設置を完了するために一回だけ再起動する必要があります。</para> ファイアウォールの設置を完了するために一回だけ再起動する必要があります。</para>
</sect1> </sect1>
<sect1 id="rcconf"> <sect1 id="rcconf">
<title>防火壁を搭載するように <title>ファイアウォールを搭載するように
<filename>/etc/rc.conf</filename> を変更する</title> <filename>/etc/rc.conf</filename> を変更する</title>
<para> <para>
防火壁について ファイアウォールについて
<filename>/etc/rc.conf</filename> <filename>/etc/rc.conf</filename>
をのことを述べるために、そこにいくつかの変更を行います。 をのことを述べるために、そこにいくつかの変更を行います。
単純に以下の行を加えます:</para> 単純に以下の行を加えます:</para>
<programlisting>firewall_enable="YES" <programlisting>firewall_enable="YES"
firewall_script="/etc/firewall/fwrules" firewall_script="/etc/firewall/fwrules"
natd_enable="YES" natd_enable="YES"
@ -153,14 +156,14 @@ natd_interface="tun0"
natd_flags="-dynamic"</programlisting> natd_flags="-dynamic"</programlisting>
<para> <para>
でしたものに関する更なる情報は 記の設定に関するより詳しい情報は
<filename>/etc/defaults/rc.conf</filename> を見て <filename>/etc/defaults/rc.conf</filename> を参照した上で
&man.rc.conf.5; を読んで下さい。</para> &man.rc.conf.5; を読んで下さい。</para>
</sect1> </sect1>
<sect1> <sect1>
<title>PPP のネットワークアドレス変換を無効にする</title> <title>PPP のネットワークアドレス変換を無効にする</title>
<para> <para>
もしかすると既に PPP の組込みネットワークアドレス変換 もしかすると既に PPP の組込みネットワークアドレス変換
(NAT) を利用しているかも知れません。 (NAT) を利用しているかも知れません。
@ -177,36 +180,39 @@ ppp_nat="YES"
ppp_profile="<replaceable>profile</replaceable>"</programlisting> ppp_profile="<replaceable>profile</replaceable>"</programlisting>
<para> <para>
もしそうなら、 もしそうなら、<filename>/etc/rc.conf</filename> に
<literal>ppp_nat="YES"</literal> の行を削除して下さい。 (訳注: <filename>/etc/defaults/rc.conf</filename> で定義されている
<literal>ppp_nat</literal> の初期値は <literal>YES</literal> なので)
<literal>ppp_nat="NO"</literal>
を明示的に設定して無効にする必要があります。
また <filename>/etc/ppp/ppp.conf</filename> の中の また <filename>/etc/ppp/ppp.conf</filename> の中の
<literal>nat enable yes</literal> または <literal>nat enable yes</literal> または
<literal>alias enable yes</literal> を削除する必要があるでしょう。</para> <literal>alias enable yes</literal> を削除する必要があるでしょう。</para>
</sect1> </sect1>
<sect1 id="rules"> <sect1 id="rules">
<title>防火壁へのルールセット</title> <title>ファイアウォールへのルールセット</title>
<para> <para>
さて、ほとんどのことをやりおわりました。 さて、ほとんどのことをやりおわりました。
残る最後の仕事は防火壁のルールを定義することです。 残る最後の仕事はファイアウォールのルールを定義することです。
それから再起動すると、防火壁が立ち上がり稼働するはずです。 それから再起動すると、ファイアウォールが立ち上がり稼働するはずです。
私はルールベースを定義する段階に達すると、 私はルールベースを定義する段階に達すると、
すべての人が若干異なる何かを求めているのだとと実感しています。 すべての人が若干異なる何かを求めているのだとと実感しています。
私が努力してきたのは、 私が努力してきたのは、
ほとんどのダイアルアップユーザに適合したルールセットを書くことです。 ほとんどのダイアルアップユーザに適合したルールセットを書くことです。
あなたは自分の必要のために あなたは自分の必要のために以下のルールを土台として用いることによって
単純に以下のルールを土台として用いることによって
自分用のルールベースに変更することができます。 自分用のルールベースに変更することができます。
まず、閉じた防火壁の基礎から始めましょう。 まず、閉じたファイアウォールの基礎から始めましょう。
望むのは初期状態ですべてを拒否することです。 望むのは初期状態ですべてを拒否することです。
それからあなたが本当に必要とすることだけのために防火壁をあけましょう。 それからあなたが本当に必要とすることだけのためにファイアウォールをあけましょう。
ルールはまず許可し、それから拒否するという順番であるべきです。 ルールはまず許可し、それから拒否するという順番であるべきです。
その前提はあなたの許可のための規則を付加するとういことで、 その前提はあなたの許可のための規則を付加するとういことで、
それから他の全ては拒否されます。:)</para> それから他の全ては拒否されます。:)</para>
<para> <para>
では /etc/firewall ディレクトリを作りましょう。 では <filename class="directory">/etc/firewall</filename>
ディレクトリを作成しましょう。
ディレクトリをそこへ変更し、 ディレクトリをそこへ変更し、
<filename>rc.conf</filename> で規定した <filename>rc.conf</filename> で規定した
<filename>fwrules</filename> ファイルを編集します。 <filename>fwrules</filename> ファイルを編集します。
@ -214,17 +220,17 @@ ppp_profile="<replaceable>profile</replaceable>"</programlisting>
この手引きはファイル名の一例を与えるだけです。</para> この手引きはファイル名の一例を与えるだけです。</para>
<para> <para>
それでは、防火壁ファイルの見本を見てみましょう。 それでは、ファイアウォールファイルの設定例を見てみましょう。
そのすべてを詳細に説明します。</para> 注釈も参考にしてください。</para>
<programlisting># Firewall rules <programlisting># Firewall rules
# Written by Marc Silver (marcs@draenor.org) # Written by Marc Silver (marcs@draenor.org)
# http://draenor.org/ipfw # http://draenor.org/ipfw
# Freely distributable # Freely distributable
# (/etc/rc.firewall にあるように) 参照を簡単にするために防火壁のコマンドを定義します。 # (/etc/rc.firewall にあるように) 参照を簡単にするためにファイアウォールの
# 読みやすくするのに役立ちます。 # コマンドを定義します。読みやすくするのに役立ちます。
fwcmd="/sbin/ipfw" fwcmd="/sbin/ipfw"
# 再読込みする前に現在のルールの消去を強制します。 # 再読込みする前に現在のルールの消去を強制します。
@ -245,7 +251,7 @@ $fwcmd add allow tcp from any to any out xmit tun0 setup
$fwcmd add allow tcp from any to any via tun0 established $fwcmd add allow tcp from any to any via tun0 established
# 以下のサービスへ接続することをインターネット上のすべての人に許可します。 # 以下のサービスへ接続することをインターネット上のすべての人に許可します。
# この例では人々は ssh と apache に接続してよいということを示しています。 # この例では ssh と apache への接続を許可します。
$fwcmd add allow tcp from any to any 80 setup $fwcmd add allow tcp from any to any 80 setup
$fwcmd add allow tcp from any to any 22 setup $fwcmd add allow tcp from any to any 22 setup
@ -261,16 +267,17 @@ $fwcmd add allow udp from <replaceable>x.x.x.x</replaceable> 53 to any in recv t
# (ping と traceroute を動作させるために) ICMP を許可します。 # (ping と traceroute を動作させるために) ICMP を許可します。
# これを非許可にしたいと思うかもしれませんが、 # これを非許可にしたいと思うかもしれませんが、
# 需要を保ちつづけるには適していると感じています。 # 需要を保ちつづけるには適していると感じています。
$fwcmd add 65435 allow icmp from any to any $fwcmd add allow icmp from any to any
# 残りの全てを拒否します。 # 残りの全てを拒否します。
$fwcmd add 65435 deny log ip from any to any</programlisting> $fwcmd add deny log ip from any to any</programlisting>
<para> <para>
あなたは 22 番と 80 番のポートへの接続を許可し、 あなたは 22 番と 80 番のポートへの接続を許可し、
それ以外に試みられるすべての接続を記録する十分に機能的な防火壁を手にしました。 それ以外に試みられるすべての接続を記録する
十分に機能的なファイアウォールを手にしました。
では、あなたは安全に再起動することができて、 では、あなたは安全に再起動することができて、
あなたの防火壁はうまく立ち上がるはずです。 あなたのファイアウォールはうまく立ち上がるはずです。
もしこれに正しくないことを見つけたら、 もしこれに正しくないことを見つけたら、
もしくは任意の問題を経験したら、 もしくは任意の問題を経験したら、
さもなくばこのページを向上させるための任意の提案があるなら、 さもなくばこのページを向上させるための任意の提案があるなら、
@ -279,26 +286,28 @@ $fwcmd add 65435 deny log ip from any to any</programlisting>
<sect1> <sect1>
<title>質問</title> <title>質問</title>
<qandaset> <qandaset>
<qandaentry> <qandaentry>
<question> <question>
<para> <para>
組込みの ppp フィルタを使ってもよいのに、 組込みの &man.ppp.8; フィルタを使ってもよいのに、
なぜ natd と ipfw を使っているのですか?</para> なぜ &man.natd.8; と &man.ipfw.8 を使っているのですか?</para>
</question> </question>
<answer> <answer>
<para> <para>
正直に言うと、 正直に言うと、
組込みの ppp フィルタの代わりに 組込みの <command>ppp</command> フィルタの代わりに
ipfw と natd を使う決定的な理由はないと言わなければなりません。 <command>ipfw</command> と <command>natd</command>
を使う決定的な理由はないと言わなければなりません。
いろいろな人と繰り返してきた議論より、 いろいろな人と繰り返してきた議論より、
ipfw は確かに ppp フィルタよりもパワフルで設定に融通がきく一方、 <command>ipfw</command> は確かに
<command>ppp</command> フィルタよりもパワフルで設定に融通がきく一方、
それが機能的であるために作り上げたものはカスタマイズの容易さを それが機能的であるために作り上げたものはカスタマイズの容易さを
失っているということで意見の一致をみたようです。 失っているということで意見の一致をみたようです。
私がそれを使う理由のひとつはユーザランドのプログラムでするよりも、 私がそれを使う理由のひとつはユーザランドのプログラムでするよりも、
カーネルレベルで行う防火壁の方を好むからです。</para> カーネルレベルで行うファイアウォールの方を好むからです。</para>
</answer> </answer>
</qandaentry> </qandaentry>
@ -308,7 +317,7 @@ $fwcmd add 65435 deny log ip from any to any</programlisting>
<errorname>limit 100 reached on entry 2800</errorname> <errorname>limit 100 reached on entry 2800</errorname>
のようなメッセージを受け取った後、 のようなメッセージを受け取った後、
ログの中にそれ以上の拒否を全く見なくなりました。 ログの中にそれ以上の拒否を全く見なくなりました。
防火壁はまだ動作しているのでしょうか?</para> ファイアウォールはまだ動作しているのでしょうか?</para>
</question> </question>
<answer> <answer>
@ -316,8 +325,15 @@ $fwcmd add 65435 deny log ip from any to any</programlisting>
単にルールのログカウントが最大値に達したということを意味しています。 単にルールのログカウントが最大値に達したということを意味しています。
ルール自身はまだ機能していますが、 ルール自身はまだ機能していますが、
ログカウンタをリセットするまでそれ以上ログを記録しません。 ログカウンタをリセットするまでそれ以上ログを記録しません。
これは ipfw コマンドに <literal>resetlog</literal>
オプションを頭につけて実行するだけでできます。</para> <command>ipfw resetlog</command> コマンドにより、
ログカウンタをリセットすることができます。
また、この限界値を上述の
<option>IPFIREWALL_VERBOSE_LIMIT</option> オプションで
変更することもできます。
さらに、この値は (カーネルを再構築して再起動せずに)
net.inet.ip.fw.verbose_limit を
&man.sysctl.8; で変更することができます。</para>
</answer> </answer>
</qandaentry> </qandaentry>
@ -329,21 +345,23 @@ $fwcmd add 65435 deny log ip from any to any</programlisting>
<literal>$fwcmd add deny all from any to 192.168.0.0:255.255.0.0 via tun0</literal> <literal>$fwcmd add deny all from any to 192.168.0.0:255.255.0.0 via tun0</literal>
のようなコマンドを のようなコマンドを
内部のマシンへ試みられる外部からの接続を防止するために 内部のマシンへ試みられる外部からの接続を防止するために
防火壁のルールに追加してもいいですか?</para> ファイアウォールのルールに追加してもいいですか?</para>
</question> </question>
<answer> <answer>
<para> <para>
端的な答えは no です。 端的な答えは no です。
この問題に対するその理由は この問題に対するその理由は
natd は tun0 デバイスを通して divert されている <command>natd</command> は
<devicename>tun0</devicename> デバイスを通して divert されている
<emphasis>あらゆるもの</emphasis> <emphasis>あらゆるもの</emphasis>
に対してアドレス変換を行っているということです。 に対してアドレス変換を行っているということです。
それが関係している限り、 それが関係している限り、
入ってくるパケットは動的に割り当てられた 入ってくるパケットは動的に割り当てられた
IP アドレスに対してのみ話し、 IP アドレスに対してのみ話し、
内部ネットワークに対しては *話さない* のです。 内部ネットワークに対しては<emphasis>話さない</emphasis>のです。
防火壁経由で外へ出て行くホストからあなたの内部ネットワーク上のホストを制限する ファイアウォール経由で外へ出て行くホストから
あなたの内部ネットワーク上のホストを制限する
<literal>$fwcmd add deny all from 192.168.0.4:255.255.0.0 to any via tun0</literal> <literal>$fwcmd add deny all from 192.168.0.4:255.255.0.0 to any via tun0</literal>
のようなルールを追加することができるということにも気をつけてください。</para> のようなルールを追加することができるということにも気をつけてください。</para>
</answer> </answer>
@ -377,7 +395,8 @@ $fwcmd add 65435 deny log ip from any to any</programlisting>
よって &man.pppd.8; による接続を始めるなら よって &man.pppd.8; による接続を始めるなら
<devicename>ppp0</devicename> の代わりに <devicename>ppp0</devicename> の代わりに
<devicename>tun0</devicename> を用いて下さい。 <devicename>tun0</devicename> を用いて下さい。
この変更を反映する防火壁のルールを編集する早道は以下に示されています。 この変更を反映するファイアウォールのルールを
編集する早道は以下に示されています。
元のルールセットは <filename>fwrules_tun0</filename> 元のルールセットは <filename>fwrules_tun0</filename>
としてバックアップされています。</para> としてバックアップされています。</para>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project The FreeBSD Japanese Documentation Project
Original revision: 1.9 Original revision: 1.10
$FreeBSD$ $FreeBSD$
--> -->
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [ <!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
@ -336,7 +336,9 @@ hostname altair.example.com</programlisting>
-r-xr-xr-x 1 root wheel 1992 Jun 10 1995 ./dev/MAKEDEV.local -r-xr-xr-x 1 root wheel 1992 Jun 10 1995 ./dev/MAKEDEV.local
-r-xr-xr-x 1 root wheel 24419 Jun 10 1995 ./dev/MAKEDEV</screen> -r-xr-xr-x 1 root wheel 24419 Jun 10 1995 ./dev/MAKEDEV</screen>
<para><filename>dev</filename> ディレクトリで <command>MAKEDEV all</command> <para>(FreeBSD&nbsp;5.X において初期状態で有効になっている) &man.devfs.5;
を利用していないのであれば、<filename>dev</filename> ディレクトリで
<command>MAKEDEV all</command>
するのを忘れずに。</para> するのを忘れずに。</para>
<para><hostid>altair</hostid> の <filename>/etc/rc</filename> は <para><hostid>altair</hostid> の <filename>/etc/rc</filename> は