PPP - Pedantic PPP Primer
Prev | Chapter 6. 熱心な学習者への練習問題 |

# 6.2. PPP フィルタとの戯れ

PPP プログラムには, PPP 経由のトラフィックに対して, 選択的にフィルタをかける能力があります. これが正式のファイアウォールほどセキュアーだとはとても言えませんが, リンクの使用についてある種のアクセス制御を提供することはできるのです.

(FreeBSD システムをよりセキュアーにする方法を知りたい方は 'man ipfw' してください)

PPP 下で使用できる様々なフィルタとその制御法についての完全な説明は PPP の man にあります.

PPP プログラムに適用できる制御法には四つのクラスがあります.

- afilter - アクセスカウンタ (または "Keep Alive") のフィルタ

  設定ファイル中の `set timeout=` 文に無視されるイベントの種類を制御します.

- dial - ダイアリングフィルタ

  デマンドダイアルモードの PPP に無視されるイベントの種類を制御します.

- in - インプットフィルタ

  システムに入ってくるパケットを, 破棄すべきものと通過してよいものに仕分けるやり方を制御します.

- out - アウトプットフィルタ

  システムから出てゆくパケットを, 破棄すべきものと通過してよいものに仕分けるやり方を制御します.

以下は実際に稼働しているオペレーティングシステムから一部拝借して来たものです. このシステムは「通常の」インターネットオペレーションに十分な素地を提供しつつ, PPP がすべてのデータをダイアルアップ接続越しにやり取りすることのないようにしています. 各ルールセットのロジックを解説する簡単なコメントをつけてあります.

    #
    # KeepAlive フィルタ
    # ICMP,DNS と RIP パケットが流れても「通信中」とはみなさない
    #
     set filter alive 0 deny icmp
     set filter alive 1 deny udp src eq 53
     set filter alive 2 deny udp dst eq 53
     set filter alive 3 deny udp src eq 520
     set filter alive 4 deny udp dst eq 520
     set filter alive 5 permit 0/0 0/0
    #
    # ダイアルフィルタ
    #  注意:  この設定では ICMP もダイアルアウトのトリガになる
    #
     set filter dial 0 permit 0/0 0/0
    #
    # ident パケットの通過を許可する
    #
     set filter in 0 permit tcp dst eq 113
     set filter out 0 permit tcp src eq 113
    #
    # インターネットへの telnet 接続を許可する
    #
     set filter in 1 permit tcp src eq 23 estab
     set filter out 1 permit tcp dst eq 23
    #
    # インターネットへの ftp アクセスを許可する
    #
     set filter in 2 permit tcp src eq 21 estab
     set filter out 2 permit tcp dst eq 21
     set filter in 3 permit tcp src eq 20 dst gt 1023
     set filter out 3 permit tcp dst eq 20
    #
    # DNS への問い合わせを許可する
    #
     set filter in 4 permit udp src eq 53
     set filter out 4 permit udp dst eq 53
    #
    # DNS ゾーン転送を許可する
    #
     set filter in 5 permit tcp src eq 53
     set filter out 5 permit tcp dst eq 53
    #
    # ローカルネットワークから / へのアクセスを許可する
    #
     set filter in 6 permit 0/0 192.168.1.0/24
     set filter out 6 permit 192.168.1.0/24 0/0
     set ifilter 6 permit 0/0 192.168.1.0/24
     set ofilter 6 permit 192.168.1.0/24 0/0
    #
    # ping と traceroute への返答を許可する
    #
     set filter in 7 permit icmp
     set filter out 7 permit icmp
     set filter in 8 permit udp dst gt 33433
     set filter out 9 permit udp dst gt 33433
    #
    # cvsup を許可する
    #
     set filter in 9 permit tcp src eq 5998
     set filter out 9 permit tcp dst eq 5998
     set filter in 10 permit tcp src eq 5999
     set filter out 10 permit tcp dst eq 5999
    #
    # 時間の同期のために NTP を許可する
    #
     set filter in 11 permit tcp src eq 123 dst eq 123
     set filter out 11 permit tcp src eq 123 dst eq 123
     set filter in 12 permit udp src eq 123 dst eq 123
     set filter out 12 permit udp src eq 123 dst eq 123
    #
    # SMTP もいいかも!
    #
     set filter in 13 permit tcp src eq 25
     set filter out 13 permit tcp dst eq 25
    #
    #
    # `whois` を多用するので, これも通す
    #
     set filter in 14 permit tcp src eq 43
     set filter out 14 permit tcp dst eq 43
     set filter in 15 permit udp src eq 43
     set filter out 15 permit udp dst eq 43
    #
    # 上記のどのルールにもマッチしない場合, パケットはブロックされる.
    #-------

フィルタクラス一つにつき, 20 個までのフィルタリングルールを適用することができます. 各クラスのルールは 0 から 20 までの連続した数字である必要がありますが, あるフィルタクラスに対するルールは, ルールセット '0' が定義されるまでは有効になりません!

PPP の設定でフィルタリングルールを使用しない場合, ISP への接続中はすべてのトラフィックがシステムに出入りすることになります.

フィルタリングルールを使用したいなら, 上記の設定を `/etc/ppp/ppp.conf` ファイルの "default:", "demand:", または "interactive:" セクションのどれか (あるいはすべて - 選ぶのはあなたです) に追加してください.

Prev | Home |
熱心な学習者への練習問題 | Up |