ゼロ円でできるブロードバンド・ルータ 2
1FD Linuxで作る高機能ルータ [設定・運用編]

北浦 訓行
2002/1/26

パケットフィルタの設定

 パケットのフィルタリングによって、必要のないパケットを制限することは、インターネットからPCを守るための基本です。パケットフィルタリングがファイアウォールのかなめとなるのです。

 パケットフィルタリングに関しては、ポリシーを定め、それに従って設定していきます。パケットフィルタリングでは、セキュリティを重視するとネットワークの使い勝手が悪くなり、使い勝手を優先するとセキュリティがおろそかになりがちです。要は、どの辺りで折り合いをつけるかという作業になります。

 セキュリティポリシーは、人によってさまざまです。INPUT(入ってくるパケット)、OUTPUT(出ていくパケット)、FORWARD(転送するパケット)の全部をDENY(拒否)に設定して、必要なパケットだけを通す人もいるでしょうし、OUTPUTに関してはACCEPT(許可)で構わないと考える人もいるでしょう。どのようなセキュリティポリシーにするかは、専門の書籍などを参考にしてください。@ITのLinux Squareフォーラムにも、Linuxで作るファイアウォール[パケットフィルタリング設定編]という解説記事があります。

 WebAdminでパケットフィルタリングの設定を行うときは、画面左側のメニューの[詳細設定]をクリックします。[詳細設定]で設定できるのは、以下の項目です。

  • Routing
  • Proxy Arp
  • Hosts
  • IP Aliases
  • IP Filter
  • Masquerade
  • PortFoward

 パケットフィルタリングを設定するには、画面右上の[IP Filter]をクリックします。すると、画面10が表示されます。

画面10 [IP Filtering]の設定画面(画像をクリックすると拡大表示します)

デフォルトポリシーの設定

 右の画面を下にスクロールさせていくと、デフォルトポリシーとパケットフィルタの設定画面(画面11)が現れます。

画面11 デフォルトポリシーとパケットフィルタの設定画面(画像をクリックすると拡大表示します)

 デフォルトポリシーは、ルールが設定されていないときの振る舞いを設定します。設定するのは、[INPUT](入力パケット)、[OUTPUT](出力パケット)、[FORWARD](転送パケット)の3つです。それぞれについて、ACCEPT(許可)かDENY(拒否)を設定します。SPOOF Protectionはdisableのままでいいでしょう。ここでは、[INPUT]と[FORWARD]をDENYにし、[OUTPUT]をACCEPTにしました。

パケットフィルタの設定

 次に、パケットフィルタの設定を行います。どのパケットをフィルタリングするかは、どこまでセキュリティを重視するかによります。ここでは、次のように設定します。

ローカルループバックインターフェイスからのパケットは受け入れる
内部ネットワークのパケットは受け入れる
インターネットからの接続要求は拒否する
インターネットへ接続するために必要な返信パケットは受け入れる
1024番以上のUDPポートの通信を許可する
外部からの偽装パケットは拒否する
外部からのICMPパケットは受け入れる

 まずは、のローカルループバックインターフェイスからのパケットを受け入れる設定を行いましょう。[Policy]を「accept」に、[Device]を「all」に、[direction]を「input」に設定し、[src addr]と[dest addr]に「127.0.0.1」を入力します。最初、画面上では設定欄が2つしかありませんが、設定後に[OK]ボタンをクリックすると、新たに2つの設定欄が追加されます。

 続いて、です。最初に[Policy]を「accept」に、[Device]を「in」に、[direction]を「input」に設定し、[src addr]に「192.168.0.0/24」を、[dest addr]に「0/0」を入力します。続いて、[Policy]を「accept」に、[Device]を「in」に、[direction]を「output」に設定し、[src addr]に「0/0」を、[dest addr]に「192.168.0.0/24」を入力します。「0/0」と記述するとすべてのIPアドレスを示すことになります。

 入力できたら[OK]ボタンをクリックします。これで、LANのパケットはすべて受け入れられます。

画面12 ローカルループバックインターフェイスおよびLANのパケットに関する設定(画像をクリックすると拡大表示します)

■コラム ウェルノウンポート
ポート 意味
21 FTP
22 SSH
25 SMTP
53 DNS
80 WWW
110 POP
113 IDENT
 [src port]に21,22……というポートを入力しましたが、それぞれの意味は右のとおりです。

 これらのポート番号は、RFC 1700で決められています。

 次に、インターネットからの接続要求を拒否します()。インターネットからの接続要求は、SYNというパケットによって行われますから、SYNパケットを拒否します。[Policy]を「deny」に、[Device]を「out」に、[direction]を「input」に、[protocol]を「syn」に設定し、[src addr]と[dest addr]に「0/0」を入力します。続いて、インターネットへ接続するために必要な返信パケットを受け入れます()。[Policy]を「accept」に、[Device]を「out」に、[direction]を「input」に、[protocol]を「tcp」に設定し、[src addr]と[dest addr]に「0/0」を入力します。また、[src port]に「21,22,25,53,80,110,113,1024:65535」を、[dest port]に「1024:65535」を入力します(コラム ウェルノウンポート参照)。

 [src port]に複数IPアドレスを入力する際は、「,」(カンマ)で区切ります。また、範囲を入力するときは「:」(コロン)で区切ります。[OK]ボタンをクリックしたら、の設定は終わりです。

画面13 インターネットからの接続要求の拒否と接続するために必要な返信パケットの受け入れ設定(画像をクリックすると拡大表示します)

 については、[Policy]を「accept」に、[Device]を「out」に、[direction]を「input」に、[protocol]を「udp」に設定し、[src addr]と[dest addr]に「0/0」を、[dest port]に「1024:65535」を入力します。については、[Policy]を「deny」に、[Device]を「out」に、[direction]を「input」に、[protocol]を「all」に設定し、[src addr]に「192.168.0.0/24」を、[dest addr]に「0/0」を入力します。[OK]ボタンをクリックしたら、の設定は終わりです。

画面14 1024番以上のUDPポートの通信を許可と外部からの偽装パケットの拒否設定(画像をクリックすると拡大表示します)

 最後にの設定を行います。ICMPパケットを拒否すると、pingなどの結果が戻ってこなくなり、何かと不便です。[Policy]を「accept」に、[Device]を「all」に、[direction]を「input」に、[protocol]を「icmp」に設定し、[src addr]と[dest addr]に「0/0」を入力します。[OK]ボタンをクリックしたら、の設定は終わりです。

画面15 ICMPパケットを受け入れる設定(画像をクリックすると拡大表示します)

■コラム WebAdminが起動できなくなったら
 WebAdminの設定に問題があり、WebAdmin自体が起動できなくなったときは、Mosquitoにrootでログインして、以下のコマンドを実行します。これにより、すべてのパケットが受け入れられるようになります。

# ipchains -F input
# ipchains -P input ACCEPT
# ipchains -F output
# ipchains -P output ACCEPT

 なお、フィルタの順番を変更したいときは、設定欄の[▲]および[▼]の部分をクリックします。[▲]をクリックすると1つ上に移動し、[▼]をクリックすると1つ下に移動します。削除するときは[×]の部分をクリックします。もし、うまくいかないフィルタがある場合は、[disable]のチェックボックスをオンにしてください。一時的に、そのフィルタが無効になります。また、ログを記録するときは、[logging]のチェックボックスをオンにします。

 設定が終了したら、画面左側にある[設定保存]をクリックします。終了したら、Mosquitoを再起動してください。ちなみに、設定内容をコンソールで確認するときは、以下のコマンドを実行します。

# ipchains -vL

 ここで紹介したのはパケットフィルタリングの一例にすぎません。Linux JF Projectのipchainsなどのドキュメント(http://www.linux.or.jp/JF/JFdocs/IPCHAINS-HOWTO.html)を参照して、安全かつ便利なフィルタリングを行ってください。

■コラム FTPクライアントをパッシブモードにするには
 FTPでは、21番ポートのほかに20番ポートも使用されます。ところが、20番ポートにはFTPサーバからSYNパケットが送られてくるため、SYNパケットを拒否する設定を行ったルータではFTPが使えません。これを防ぐには、FTPをパッシブモード(PASV)で使用しなければなりません。通常のFTPクライアントソフトであれば、PASVモードにするためのオプションがあるので、それをオンにしてください。

 IEなどのWebブラウザにもFTPサーバにアクセスする機能があるので、同様にPASVモードをオンにする必要があります。IEでPASVモードをオンにするには、[ツール]メニューの[インターネットオプション]を選択して、[インターネットオプション]ダイアログボックスの[詳細設定]タブをクリックします。そして、設定の一覧から[ファイアウォールおよびDSLモデムとの互換性を保つためにPASVモードをサポートするFTPを使用する](6.0では[パッシブFTP(ファイアウォールおよびDSLモデム互換用)を使用する])をオンにします。

ログの転送

 最後に、ログを転送する方法を紹介しましょう。ここでは、192.168.0.2に接続されたLinuxにMosquitoのログを転送する設定を行います。最初に、Mosquitoのログを受け取るLinuxの/etc/rc.d/init.d/syslogをテキストエディタで開きます。

# vi /etc/rc.d/init.d/syslog

 そして、「daemon syslogd -m 0」という行を探して、「-r」を追加します。

        daemon syslogd -r -m 0

 保存終了したら、syslogを再起動します。

# /etc/rc.d/init.d/syslog restart

 次にMosquitoの設定を変更します。Mosquitoの/etc/syslog.confをテキストエディタで開いて、以下の行を追加します。

#*.*                    @host.ip.address-or-name.here
*.*                 @192.168.0.2 ←この行を追加

 Mosquitoのsysklogdを再起動します。

# /etc/init.d/sysklogd restart

■コラム MosquitoでWebサーバを公開
 Mosquitoには、ez-ipup.lrpというDynamic DNSサービス用のクライアントが用意されています。これを利用すれば、固定IPアドレスを持っていなくても、Dynamic DNSで独自のWebサーバなどを公開することができます。MosquitoのWebサイト(http://www.s-me.co.jp/mosquito/ez-ipup.html)では、DynDNS.org(http://www.dyndns.org/)の利用例が紹介されているので、必要な方は参照してください。

2/2

Index
ゼロ円でできるブロードバンド・ルータ2
1FD Linuxで作る高機能ルータ[設定・運用編]
Page 1
WebAdminによるネットワークの設定
 WebAdminへのアクセス
 基本的なネットワーク設定
  Page 2
パケットフィルタの設定
 デフォルトポリシーの設定
 パケットフィルタの設定
ログの転送

Linux Square全記事インデックス


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間