====== prisoner fw設定 ======
prisonerのfwをfirewallとnatboxにする。
===== 事前設定 =====
jailerから各設定ファイルを直接編集する。各設定ファイルのプレフィックスは/usr/jail/fwとなる。
* etc/syslog.confでconsole出力をコメント化する。
# *.err;kern.warning;auth.notice;mail.crit /dev/console
* etc/crontabで不要なcronをコメント化する。
# 1,31 0-5 * * * root adjkerntz -a
* etc/pw.confを新規作成する。prisoner内のuid, gidとjailerのuid, gidが同じになるとセキュリティ上の問題が発生するため、uid, gidの範囲を設定する。
minuid 2001
maxuid 2100
mingid 2001
maxgid 2100
* etc/fstabをtouchで作成する。
* etc/resolv.confを作成する。
domain "ドメイン名"
nameserver "さくらのVPS指定 1"
nameserver "さくらのVPS指定 2"
* etc/hostsにfw自身と内側のホスト(jailer, prisoner)を登録する。
127.0.0.1 localhost localhost.example.com
fw fw.example.com
fw.example.com.
192.168.100.254 gw gw.example.com
192.168.100.254 gw.example.com.
192.168.100.1 web web.example.com
192.168.100.2 desktop desktop.example.com
192.168.100.253 vps vps.example.com
* etc/rc.confを新規作成する。
hostname="fw.example.com"
ifconfig_vtnet0="inet netmask "
ifconfig_epair1b="inet 192.168.100.254 netmask 255.255.255.0"
gateway_enable="YES"
defaultrouter="<さくらのVPS指定>"
firewall_enable="YES"
firewall_type="/etc/fw.txt"
firewall_logging="YES"
firewall_nat_enable="YES"
* ifcofig_epair1b\\ jailerで作成したepair1の一端。jailerからprisonerであるfwに割り当てる。
* firewall_type\\ 指定したファイルにfirewallのルールが記載される。
===== OS設定 =====
prisoner:fwを起動後、以下の設定を行う。
* prisoner:fwへ移動
# jexec fw /bin/sh
* newaliasesの実行
# newaliases
/etc/mail/aliases: 27 aliases, longest 10byte, 275 bytes total
* bsdconfigでそれぞれ設定。
* Root Password
* User Management
* Time Zone
===== ipfwルール設定(例) =====
/etc/rc.confで指定したfirewall_type="/etc/fw.txt"を作成する。
* /etc/fw.txt
-f flush
# nat設定 desktop向け ssh
add nat 1 log tcp from any to <外部向けsshポート>
nat 1 config log redirect_port tcp 192.168.100.2:<内部向けsshポート> :<外部向けsshポート>
add nat 2 log tcp from 192.168.100.2 <内部向けsshポート> to any
nat 2 config log redirect_port tcp 192.168.100.2:<内部向けsshポート> :<外部向けsshポート>
# nat設定 web向け http
add nat 3 log tcp from any to 80
nat 3 config log redirect_port tcp 192.168.100.1:80 :80
add nat 4 log tcp from 192.168.100.1 80 to any
nat 4 config log redirect_port tcp 192.168.100.1:80 :80
# nat設定 web向け https
add nat 5 log tcp from any to 443
nat 5 config log redirect_port tcp 192.168.100.1:443 :443
add nat 6 log tcp from 192.168.100.1 443 to any
nat 6 config log redirect_port tcp 192.168.100.1:443 :443
# nat設定 desktop向け novnc
add nat 7 log tcp from any to <外部向けnovncポート>
nat 7 config log redirect_port tcp 192.168.100.2:<内部向けnovncポート> :<外部向けnovncポート>
add nat 8 log tcp from 192.168.100.2 <内部向けnovncポート> to any
nat 8 config log redirect_port tcp 192.168.100.2:<内部向けnovncポート> :<外部向けnovncポート>
# nat設定 内部から外部
add nat 9 log ipv4 from any to any via
nat 9 config log ip
# ルール
add check-state
add deny log all from any to 192.168.100.0/24 in recv
add allow log tcp from any to 192.168.100.2 <内部向けsshポート>
add allow log tcp from any to 192.168.100.2 <内部向けnovncポート>
add allow log tcp from any to 192.168.100.1 80
add allow log tcp from any to 192.168.100.1 443
add allow log ip from 192.168.100.0/24 to any keep-state
add allow log ip from 127.0.0.1 to 127.0.0.1
* Global IP\\ em0に割り当てたIP
* 外部向けsshポート\\ 22から変更した方が無難かも
* 内部向けsshポート\\ desktopのssh listenポート
* add allow log ip from 127.0.0.1 to 127.0.0.1\\ fwのメールが Permission Deniedになるため開放
* /etc/fw.txt作成後、有効にする為、ipfwを再起動する。
# service ipfw restart