パケットフィルタリング

※リモートアクセスサーバ自体のパケットフィルタリングについてはこちらを参考にして下さい。

原則

pppを通常のダイヤルアップ接続に使用する場合はプロバイダが相手となりますが、リモートアクセスサーバの場合はpppの相手はクライアント(ユーザー)です。
よって、リモートアクセスサーバの場合はpppをダイヤルアップ接続用に利用する場合などとはフィルタリングの方向の設定が逆になります。

フィルタリングの設定方法の基本は man ppp で確認して下さい。
ここでは実際の設定について簡単に説明します。(詳しく書くとボロが出るので)

フィルタリングの設定は/etc/ppp/ppp.confに記述します。
記述場所はdefaultエントリ内が普通ですが、回線毎に設定を変えたい場合など条件によって違うフィルタリングをしたい場合は適切な場所に書きます。また、loadコマンドを使って必要場所に読み込む方法もあります。

設定1. defaultエントリに記述する場合

/etc/ppp/ppp.confの構造 (set filter ・・・はフィルタリングの設定部分)

default:
        set ・・・
        set ・・・
        set filter ・・・ set filter ・・・
エントリA:
        set ・・・
エントリB:
        set ・・・

設定2. 条件別に記述する場合

/etc/ppp/ppp.confの構造 (set filter ・・・はフィルタリングの設定部分)

default:
        set ・・・
        set ・・・
エントリA:
        set ・・・
        set filter ・・・
        set filter ・・・
エントリB:
        set ・・・
        set filter ・・・
        set filter ・・・

設定3. loadコマンドでdefaultエントリ内に読み込む場合

/etc/ppp/ppp.confの構造 (set filter ・・・はフィルタリングの設定部分)

default:
        set ・・・
        set ・・・
        load エントリC
エントリA:
        set ・・・
エントリB:
        set ・・・
エントリC:
        set filter ・・・
        set filter ・・・

設定4. loadコマンドで条件エントリ内に読み込む場合

/etc/ppp/ppp.confの構造 (set filter ・・・はフィルタリングの設定部分)

default:
        set ・・・
        set ・・・
エントリA:
        set ・・・
        load エントリC
エントリB:
        set ・・・
        load エントリD
エントリC:
        set filter ・・・
        set filter ・・・
エントリD:
        set filter ・・・
        set filter ・・・

※設定1、設定2、設定3、設定4の設定方法を混在させることも可能です。

原則不許可型フィルタリング

クライアントに提供するサービスを完全に限定する場合には原則不許可型のフィルタリングが適しています。
下の例はクライアントにFTP,メール(SMTP,POP3,IMAP4),TELNET,HTTP,ICMPサービスのみ提供する設定です。

/etc/ppp/ppp.confの最後に追加します。(loadコマンドで読み込む場合。filter: 行はエントリ名)

filter:
# ftp
set filter out 0 permit tcp src eq 21 estab
set filter in 0 permit tcp dst eq 21
set filter out 1 permit tcp src eq 20 dst gt 1023
set filter in 1 permit tcp dst eq 20
# telnet
set filter out 2 permit tcp src eq 23 estab
set filter in 2 permit tcp dst eq 23
# smtp
set filter in 3 permit tcp dst eq 25
set filter out 3 permit tcp src eq 25
# dns
set filter in 4 permit udp dst eq 53
set filter out 4 permit udp src eq 53
# http
set filter out 5 permit tcp src eq 80 estab
set filter in 5 permit tcp dst eq 80
# pop3
set filter out 6 permit tcp src eq 110 estab
set filter in 6 permit tcp dst eq 110
# imap4
set filter out 7 permit tcp src eq 143 estab
set filter in 7 permit tcp dst eq 143
# icmp(ping)
set filter in 8 permit icmp
set filter out 8 permit icmp

指定した許可ルール以外は全て不許可となります。

上のようにFTPを通したい場合はppp.conf内の適切な場所に

    nat enable no     

を記述してpppによるNATを禁止しておかないと期待した通りの動作が得られない場合があるようです。

原則許可型フィルタリング

クライアントに一部のサービスを除いてその他のサービスを全て提供する場合には原則許可型のフィルタリングが適しています。
こちらは大幅に省略します。

/etc/ppp/ppp.confの最後に追加します。(loadコマンドで読み込む場合。filter: 行はエントリ名)

filter:
set filter in 0 deny ・・・
set filter out 0 deny ・・・
set filter in 1 deny ・・・
set filter out 1 deny ・・・
        ・
        ・
        ・
# Other
set filter in 9 permit 0
set filter out 9 permit 0

この例では最後のルールセット9で指定以外の全てを許可にしています。