FreeBSDで使えるファイアーウォールって何があるの?
はじめに
ファイアーウォールと聞くと、CentOSが大人気の令和の時代、 iptables かfirewalld が頭に浮かぶところでしょうか。もしかしたらiptables自体もレガシーと言われかねない時代になってるのかも?豊富なリソースがあるのは良い事なんですが、どんどんと進化をしているものですね。
業務で関連するOSで一部FreeBSDも管理しており、さてどうしたものかと色々と調べる事数時間。どうやらこちらも歴史があって色んなソフトウェアが存在しているようです。ネットワーク周りにそこまで詳しくない自分の勉強の為にも、少し勉強していきながらメモを残していこうかと思います。
FreeBSDにはどんなファイアーウォールが存在するの?
FreeBSDでファイアーウォールの導入をするには、複数の選択があります。私が観測したもので下記の3種類です。
- pf
- ipfw
- ipfillter
インターネット上にある記事を見る前にまずはマニュアルを
「第30章ファイアウォール」
https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls.html
色々とあって選べるのは有難いようで迷う所、詳細を見てみましょう。
pf
https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-pf.html
FreeBSD 5.3以降、OpenBSDのPFファイアウォールの移植版が ベースシステムの統合部分として含まれています。 PFは、サービスの品質(QoS)を提供するALTQ(代替キューイング)をオプションでサポートする完全なフル機能のファイアウォールです 。
ipfw
https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-ipfw.html
IPFWは、IPv4と IPv6の両方をサポートするFreeBSD用に記述されたステートフルファイアウォールです。カーネルファイアウォールフィルタールールプロセッサとその統合パケットアカウンティング機能、ロギング機能、NAT、dummynet(4)トラフィックシェーパー、転送機能、ブリッジ機能、およびipstealth機能のいくつかのコンポーネントで構成されています 。
ipfillter
https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-ipf.html
IPFILTERはIPFとも呼ばれ 、クロスプラットフォームのオープンソースファイアウォールであり、FreeBSD、NetBSD、OpenBSD、Solaris ™ などのいくつかのオペレーティングシステムに移植されています。
IPFILTERは、ユーザーランドプログラムによって制御および監視できるカーネル側のファイアウォールおよびNATメカニズムです。ファイアウォールルールはipfを使用して設定または削除でき、 NATルールはipnatを使用して設定または削除 でき、IPFILTERのカーネル部分の実行時統計はipfstatを使用して出力でき、 ipmonは IPFILTERアクションをシステムログファイルに記録できます。
どれも良さげな事ばかりでどれが標準なのかよくわからないですね。どれが良く選ばれてるのかネットの情報を探ってみたいと思います。
第115回 blacklistd(8)を使ってsshd DoS攻撃を防止する方法 ipf編
https://gihyo.jp/admin/serial/01/bsd-yomoyama/0115
FreeBSDでこれから新しくファイアウォール機能を使う場合には,
FreeBSDネイティブで性能が期待できるipfw(4)か, OpenBSD由来でなにかと便利なpf(4)かどちらかを選ぶというのが現在では主な選択肢ではないかと思います。ipf(4)はこれまで使ってきたipf(4)のルールがあるため継続して利用したいといった場合に使うことが多いのではないかと思います。
間もなく登場! FreeBSD 10.0、IT技術者なら知っておくべき11の新機能
https://news.mynavi.jp/article/20131230-s_bsd/5
FreeBSDにおいてもっとも開発が進んでいるファイアウォールがipfw(8)だ。FreeBSDでファイアウォールを使う場合はipfw(8)を選択するものだと考えておいて問題ない。ipfw(8)はマルチコア/メニーコアにおいて性能が発揮できるようによく開発が進められており、動作も軽快。
一方、OpenBSDで開発されたpf(4)もFreeBSDでは人気がある。pf(4)はフィルタルールの記述がわかりやすく強力な指定を記述できる。FreeBSD 10のpf(4)はさらにマルチコアへの対応も進められ、従来のバージョンよりも性能が発揮できるようになっている。
ただし、FreeBSDのpf(4)を使う場合にはいくつか検討した方がよい点がある。まず、性能の面ではipfw(8)の方が優れていること、ロバスト性の面でもipfw(8)がよいと見られていることだ。仮想環境で動作させた場合もipfw(8)の方が堅牢に動作する傾向がある。pf(4)を採用する場合には高負荷時にpf(4)がちゃんと動作するか検証した上で採用した方がよいといえる。
どうやら「ipfwを選んでおけば間違い無いだろう」という感じですね。またネットの記事のサンプル数を見ていくと確かにipfwの情報が一番豊富な印象も。という訳で、確実そうなipfwをこれから勉強していきたいと思います。