FreeBSD 4.4R で ipf&ipnat とか
※未完
----------------------------------------------------------------------
■作業環境
FreeBSD 4.4R
----------------------------------------------------------------------
●OpenSSH
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-4.4-release/security/OpenSSH-2.9_3.tgz
を拾ってきて pkgadd する。
もしくは root で /stand/sysinstall Configure>Packages> でインストールしても可。
※最新版が使用したい場合は ports current で make install。
# vi /etc/rc.conf
sshd_enable="no" と編集し元から入っている sshd を無効化する。
新しく入れた ssh の起動スクリプトは /usr/local/etc/rc.d/sshd.sh
# cd /usr/bin/
# mv ssh ssh_old
# mv ssh-add ssh-add_old
# mv ssh-agent ssh-agent_old
# mv ssh-keygen ssh-keygen_old
※元から入っている ssh 関連のコマンドをリネームする。
# ssh-keygen -t rsa -f /usr/local/etc/ssh_host_rsa_key -N ""
※足りないホスト鍵の生成
ssh_host_key , ssh_host_dsa_key はインストール時に生成されるみたい。
なかったら # ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N ""
# ssh-keygen -t dsa -f /usr/local/etc/ssh_host_dsa_key -N ""
# vi /usr/local/etc/sshd_config
Protocol 2 ※SSH2(DSA) のみ使用
PasswordAuthentication no ※パスワード認証を許可しない
# reboot
----------------------------------------------------------------------
●apache+ipv6-1.3.20_1
root で /stand/sysinstall Configure>Packages>ipv6>apache+ipv6-1.3.20_1
# vi /usr/local/etc/apache/httpd.conf
ServerName irecs-rt.local.alma.jp
# /usr/local/sbin/apachectl start
----------------------------------------------------------------------
●ip-filter+NAT
# cd /usr/src/sys/i386/conf/
# cp GENERIC IPFILTER
# vi IPFILTER
#options NFS #Network Filesystem
#options NFS_ROOT #NFS usable as root device, NFS required
※コメントアウトしておく(セキュリティ上の問題らしい)
options IPFILTER
options IPFILTER_LOG
options IPFILTER_DEFAULT_BLOCK ※デフォルトは全て通さない。
options TCP_DROP_SYNFIN ※SYN+FIN フラグの TCP パケットを落す
と編集。
# config IPFILTER
Don't forget to do a ``make depend''
Kernel build directory is ../../compile/IPFILTER
# cd ../../compile/IPFILTER/
# make depend
# make
# make install
# vi /etc/ipf.rules
pass in all
pass out all
と編集。
※仮のルール:とりあえず全部通す。
# vi /etc/rc.conf
gateway_enable="YES"
ipfilter_enable="YES"
ipfilter_rules="/etc/ipf.rules"
ipfilter_flags=""
ipmon_enable="YES" #ログを取る
ipmon_flags="-D /ver/log/ipflog" #ログファイルを指定
ipnat_enable="YES"
ipnat_rules="/etc/ipnat.rules"
tcp_drop_synfin="YES" #SYN+FIN フラグの TCP パケットを落す
と編集。
※デフォルトは全て通さない設定なので、
これらの設定をしておかないと再起動後 IPv4 のパケットは全て送受信できなくなる。
(IPv6 は送受信可能。)
# vi /etc/ipnat.rules
map fxp0 10.21.64.0/24 -> 10.21.2.56/32 portmap tcp/udp auto
map fxp0 10.21.64.0/24 -> 10.21.2.56/32
# reboot
※ipv6 のファイアウォールを構築する場合は ip6fw というアプリをインストする。
(多分 BSD only)
ipf の v6 化は難航しているらしい。
BSD だけで使用するならおとなしく ipfw+ip6fw という組み合わせが吉。
----------------------------------------------------------------------
●Apache rewrite module
・パスワードファイルを作成する。
irecs-gw# cd /usr/local/etc/apache/
irecs-gw# htpasswd -c alma.pwd alma
※alma.pwd:ファイル名、alma:ユーザー名
irecs-gw# vi httpd.conf
こういう記述を最後に挿入。
RewriteEngine on
RewriteRule ^/alma/www/data/eden/(.*) http://irecs-mon.alma.jp/eden/$1 [P]
※eden は自身でも BASIC 認証を行うためここでは設定しない。
設定するとかえって変になる。
AuthType Basic
AuthName alma
AuthUserFile /usr/local/etc/apache/alma.pwd
require valid-user
RewriteEngine on
RewriteRule ^/alma/www/data/irecs-trns/(.*) http://101.1.64.3:6200/$1 [P]
※変なポートで起動している http server には hoge.com:6200 とか名前で
リライトしようとしても名前解決に失敗してしまうので、
IP address で記述してやる。
irecs-gw# apachectl configtest
Syntax OK