文書の表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。 ====== FreeBSD 11のipfwでパケットフィルタリング ====== WIP ===== 試した環境 ===== * FreeBSD 11.2-RELEASE-p7 * ipfw自体は相当昔から搭載されているので、かなり前のバージョンでも殆ど一緒だと思われる。 ===== 手順 ===== ==== ipfwの有効化 ==== おなじみ''/etc/rc.conf''に''firewall_enable''を追加する。''firewall_type''には下表の値が指定可能。 ^ firewall_type ^ 意味 ^ | open | 全てのトラフィックを通過 | | client | 自ホストのみを保護 | | simple | 自ネットワークを保護 | | closed | ループバックインタフェース以外のIPトラフィックを全て無効化 | | workstation | ステートフルルールで自ホストのみを保護 | | UNKNOWN | ファイアウォールのルールを読み込まない | | ファイルパス | ファイアウォールのルールファイルのフルパス | これらデフォルトルールの設定は''/etc/rc.firewall''で処理される。client, simple, workstationの場合、自ネットワークなどの追加設定が必要だが、変数名なども全て同ファイル内に記載がある。 ここではひとまず''open''とし全パケットを通過させる。 <code bash> # echo 'firewall_enable="YES"' >> /etc/rc.conf # echo 'firewall_type="open"' >> /etc/rc.conf </code> ファイアウォールを起動する(もしくはマシンを再起動)。確実に''firewall_type="open"''であることを再度確認のこと。ipfwのデフォルト設定は全パケット拒否なので、特にリモートで操作している場合に大変残念なことになる…。 <code bash> # service ipfw start </code> ''ipfw -a list''でフィルタルールが表示されれば成功。 <code bash> # ipfw -a list 00100 0 0 allow ip from any to any via lo0 00200 0 0 deny ip from any to 127.0.0.0/8 00300 0 0 deny ip from 127.0.0.0/8 to any 00400 0 0 deny ip from any to ::1 00500 0 0 deny ip from ::1 to any 00600 0 0 allow ipv6-icmp from :: to ff02::/16 00700 0 0 allow ipv6-icmp from fe80::/10 to fe80::/10 00800 0 0 allow ipv6-icmp from fe80::/10 to ff02::/16 00900 0 0 allow ipv6-icmp from any to any ip6 icmp6types 1 01000 3 216 allow ipv6-icmp from any to any ip6 icmp6types 2,135,136 65000 399 39044 allow ip from any to any 65535 0 0 deny ip from any to any </code> ==== 設定ファイルからのルール読み込み ==== ''firewall_type''にファイルのフルパスを設定すると、ルールをファイルから読み込ませる事ができる。 === firewall_typeとfirewall_scriptの違い === ''firewall_script''は、rcスクリプトが処理するファイアウォール用スクリプトファイルを表す。デフォルトでは''/etc/rc.firewall''、すなわちipfw用のスクリプトが指定されている。 ''firewall_type''は''/etc/rc.firewall''スクリプトに影響する設定変数である。よって''firewall_script''が独自のスクリプトの場合、特に意味のない値となる。とはいえ、ipfw自体がシステムに食い込んでいることもあり、デフォルト値''UNKNOWN''が設定されるようになっている。 ===== 参考サイト ===== * [[https://www.freebsd.org/doc/handbook/firewalls-ipfw.html|30.4. IPFW]] * [[http://www.usupi.org/info/ipfw.html|How to IPFW]] freebsd/freebsd_11_ipfw.1550226376.txt.gz 最終更新: 2019-02-15 19:26by Decomo