
ゼロ円でできるブロードバンド・ルータ 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のパケットに関する設定(画像をクリックすると拡大表示します) | 
| ■コラム ウェルノウンポート | ||||||||||||||||
 
            
 これらのポート番号は、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でログインして、以下のコマンドを実行します。これにより、すべてのパケットが受け入れられるようになります。 
            
  | 
        
なお、フィルタの順番を変更したいときは、設定欄の[▲]および[▼]の部分をクリックします。[▲]をクリックすると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 | 
        
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 
           | 
           
             | 
        
 
            
  | 
        ||||
 
            
  | 
        ||||
| Linux Square全記事インデックス | 
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。 
 
  | 
 |










