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