FreeBSDのパケットフィルタpfでポートフォワーディングを設定する方法

提供: FreeBSD入門
移動: 案内検索
スポンサーリンク

pfとは、 OpenBSD プロジェクトで開発された カーネルパケットフィルフィルタ です。 pf では、アドレス変換やポートフォワーディングなどのアクセスコントロールが実現できます。今回は、22番ポートへのアクセスを2222番ポートへポートフォワーディングする設定を紹介します。設定は簡単なので、同じような設定であれば、3分ぐらいでできます。

読み方

pf
ぴーえふ

概要

Linux では、 iptables でポートフォワーディングを行えます。 FreeBSD の場合は、 pf を利用して行えます。 ipfw でも可能かもしれませんが、今回は、 pf を利用しました。Linuxユーザの方は、pf の書式が iptables と異なるので、戸惑うかもしれません。なれるまでの辛抱です。

インターネットからの TCP 22番ポートへのアクセスは、 2222 番ポートで受け、プライベートネットワークからのアクセスは、22番で受けることを実現することを目的としています。こういった制御は、ルータでやれば良いのですが、たまたま利用していたルータにその機能がなかったため、 pf で補うことになりました。

今回の要件は、ハニーポット を 2222番で動かしているけど、 2222番だとボットの訪問数が少なくて寂しいため、 22番のアクセスも許したくて、設定しました。

要件

  • プライベートネットワークからの TCP 22番ポート(ssh)へのアクセスは、22番にアクセスを許可する。
  • プライベートネットワーク以外からの TCP 22番ポート(ssh)へのアクセスは、2222番にポートフォワーディングする。
  • それ以外の通信は、すべて許可する。

前提

  • インタフェース名は ue0
  • 対象となる FreeBSD のホストの IPアドレスは 192.168.0.100
  • プライベートネットワークのアドレスは 192.168.0.0/24, 192.168.60.0/24

インストール

デフォルトで備わっているため、インストールは不要です。

設定

/etc/pf.conf を編集・作成します。

前提は、以下のとおりです。

IF="ue0"
 
MYHOST="192.168.0.100"
trusted = "{ 192.168.0.0/24 192.168.60.0/24 }"
rdr pass on $IF proto tcp from $trusted to any port ssh -> $MYHOST port ssh
rdr pass on $IF proto tcp from any to any port ssh -> $MYHOST port 2222

使い方

pf をスタートするコマンドは、以下の通りです。

sudo service pf start
# or
sudo service pf onestart

OS起動時にpfを有効にする

OS (FreeBSD) が起動したときに、 pf を有効にしたい場合は、 /etc/rc.conf に以下の設定を追加します。

pf_enable="YES"

関連項目




スポンサーリンク