- 1. 概要
- 2. カーネル編集
- 3. カーネル再構築
1. 概要
「IP Firewall」は、
/sbin/ipfw
に存在します。
つまり、システムプログラムなので、特にインストールの必要はありませんが、うまく起動するためには、いくつかの基本設定が必要になります。
2. カーネル編集
「ipfw」をうまく起動するには、カーネルの再構築が必要になります。
実は、これをやらないと起動できないと思っていましたが、「FreeBSD 12.4 RELEASE」で、試してみたところ、「ipfw」自体は、「/etc/rc.conf」で設定してやれば、動作しますが。
以下に述べる、カーネル再構築を行っていないと、「なぜか『IPv6』が制御できているように見えない」とか「デフォルトクローズであるため、コンソールからでないと操作が危険」などの問題が発生します。
なので、ここは、ぜひカーネルの再構築を行っておくべきです。
プロセッサのアーキテクチャが「amd64」として。
「root」ユーザ権限で。
cd /usr/src/sys/amd64/conf/
設定するカーネルのファイルを「MYKERNEL」として、ファイルがなければ。
cp GENERIC MYKERNEL
編集します。
vi MYKERNEL
オプションを末尾に記述します。
下記のオプションを定義することで、初めて「ipfw」に対する操作が有効になります(何度も言うが、起動だけであれば構わないが、困ったことになる)
options IPFIREWALL
下記を定義すると通信のログを取ることができます。
options IPFIREWALL_VERBOSE
下記は上記でログを有効にしたとき、ログが大量に出力されることを防ぐためにあるそうです。
ここで定義した(単位がわかりませんが)量にログが達した場合、ログの出力が停止するとのこと。
出力が停止したら、コマンドで、ログの量をリセットしてやる必要があるそうです。
よって、この定義は有効にしない方がよさそうです。
options IPFIREWALL_VERBOSE_LIMIT=10
「ipfw」のデフォルトの動作では、すべてのパケットを「deny」するそうで、これを定義するとデフォルトの動作が「allow」になるそうです。
これは気をつける必要があるようで、下記の定義を有効にするか、後で示す、もう一つの方法で、パケットを通過させるようにしておかないと、ファイアウォールを有効にして起動したら、自分自身のパケットもふさいでしまって何もできない状態に陥ることになります。
options IPFIREWALL_DEFAULT_TO_ACCEPT
ということで、わたしのお勧めは、下記の状態です。
options IPFIREWALL
options IPFIREWALL_VERBOSE
#options IPFIREWALL_VERBOSE_LIMIT=10
options IPFIREWALL_DEFAULT_TO_ACCEPT
3. カーネル再構築
編集したファイルで、カーネルを再構築します。
コンパイルして、インストールすることになります。
「root」ユーザ権限で。
コンパイル。
cd /usr/src
make buildkernel KERNCONF=MYKERNEL
インストール。
cd /usr/src
make installkernel KERNCONF=MYKERNEL
それぞれ、大量にログを表示出力しますし、結構時間がかかります。
インストールが終れば、下記のコマンドで、再起動してやれば、新しいカーネルが有効になります。
shutdown -r now
まんがいち、新しいカーネルで起動できない場合は、「boot」のオプションで 3 を入力します。
コマンド入力モードになりますので、プロンプトが表示されたら
boot kernel.old
で、ひとつ前のカーネルで起動することができます。
|
|