1. 管理メニュー
> /stand/sysinstall で管理メニューが起動できる。設定類はここにまとまっているので、それほど困ることはないか。
> /stand/sysinstall で管理メニューが起動できる。設定類はここにまとまっているので、それほど困ることはないか。
デフォルトで su できるユーザがいないので、/etc/group を編集する。(簡易)
# /etc/group [一部] wheel:root,[USER]
以下、/etc/rc.conf の個人的な設定例。/etc/hosts に freeb 192.168.1.17 が設定されている。コメントアウトされているものが多い。
hostname="freeb" ifconfig_de0="inet 192.168.1.17 netmask 255.255.255.0" defaultrouter="192.168.1.1" syslogd_flags="-s -s" ipv6_enable="NO" keymap="jp.106" #kern_securelevel_enable="YES" #kern_securelevel="2"
サービス類の設定。
#moused_enable="YES" sshd_enable="YES" inetd_enable="NO" portmap_enable="NO" named_enable="NO" xntpd_enable="NO" nfs_server_enable="NO" nfs_client_enable="NO" lpd_enable="NO" sendmail_enable="NONE" # sendmailの完全停止は NONE
ファイアウォールなどの設定。
# ipfw ---------------------- firewall_enable="YES" firewall_logging="YES" firewall_script="/etc/rc.ipfw" # ipfilter ------------------ #ipfilter_enable="YES" #ipfilter_rules="/etc/ipf.rules" #ipmon_enable="YES" #ipmon_flags="-D /var/log/ipflog" # other network security ---- #tcp_drop_synfin="YES"
Linuxでよく使われているext2(ext3)ファイルシステムのマウント。カーネルに options EXT2FS がされているか、カーネルモジュール(ext2fs.ko)が使用できればOKかと。以下は例。
mount_ext2fs /dev/ad1s1 /mnt
デバイス名(ハードディスクのパーティション名)がわからなければ、dmesg でも見て探すとする。
まぁ、IDEだと ad0 ad1 というカンジのディスク名?に、s1 とかパーティション名?がつくようだ 例:ad1s1)
dmesg | less
※ FreeBSD 4.10 での話。5系 では、GENERIC.hints (デバイスまわりの設定)という設定ファイルが増えている。
カーネル再構築(i386)。ここでの目的は、カーネルモジュールで使用している機能の組み込み。あと、不要なデバイスはついでに削除する。
まずは使用しているカーネルモジュールを確認。以下は実行例。
> kldstat Id Refs Address Size Name 1 3 0xc0100000 44ff80 kernel 2 1 0xc0aa1000 7000 ipfw.ko 3 1 0xc0b6b000 d000 ext2fs.ko
ipfw と Linuxのファイルシステム(ext2)の対応のためのモジュールが使われていることがわかる。
では、それを組み込む場合。
はじめにカーネルのソースをインストール。
/stand/sysinstall の Configuration -> Package -> Distribution から、src -> sys をインストール。
/usr/src/sys/i386/conf のなかにあるカーネルの設定ファイルを編集する(原本は残してコピーを編集)
> cd /usr/src/sys/i386/conf > cp GENERIC MYKERNEL
MYKERNEL の内容を編集する
# /usr/src/sys/i386/conf/MYKERNEL [一部] ident MYKERNEL # IPFW / IPFW Logging_ optinos IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 # ログ数のリミット # Linux EXT2 FileSystem options EXT2FS
あと、不要なデバイスをコメントアウトしたりする。
カーネルのコンパイルを実行する。この際、組み込まれなかった機能はカーネルモジュールとしてコンパイルされる。
> make depend > make > make install > make clean
以下はカーネルのみのコンパイル例。組み込まなかった機能を完全に無視するので、コンパイル時間は短縮される。(もちろん、組み込まなかった機能は使えなくなる)
> make kernel-depend > make kernel > make kernel-install > make kernel-clean
ベースとなる設定ファイルをコピーする。
> cp /usr/share/examples/cvsup/ports-supfile /etc/supfile
/etc/supfile を編集(例)
# /etc/supfile [一部] *default host=cvsup3.jp.FreeBSD.org *default base=/usr *default prefix=/usr *default release=cvs tag=. *default delete use-rel-suffix *default compress # 圧縮転送を有効にする ports-all # 全指定。 ジャンルごとに導入する場合、コメントにする #ports-base # ジャンルごとに導入する場合、必須 #ports-archivers #ports-astro #ports-audio
以下のコマンドでportsを更新する。(パイプ以降はログを残すため)
> cvsup -g -L 2 /etc/supfile | tee -a /var/log/ports/cvsup.log
※ ポート番号:5999への通信を許可しておく必要がある。
portsの更新状態を確認するには、更新後に
> portversion -v
コンパイル時に最適化がかかるようにするには、/etc/make.conf を修正する。
# /etc/make.conf [一部] CPUTYPE=i686 CFLAGS= -O -pipe COPTFLAGS= -O -pipe
以下、個人的に使っている設定スクリプトの内容抜粋。
#!/bin/sh
###############################################################################
# INIT_SECTION
###############################################################################
# ** Notice **
# if your Server has over 2 ip_address ,
# you may set "me" instead of setting "$SERVER" .
IPFW='/sbin/ipfw'
SERVER='192.168.1.18'
LOCALNET='192.168.1.0/24'
LOCALHOST='127.0.0.1'
ANY='0.0.0.0/0'
#sysctl -w net.inet.ip.fw.verbose=1
${IPFW} -f flush
###############################################################################
# DENY_HOST
###############################################################################
# Deny broardcast packets.
${IPFW} -q add 10001 deny all from ${ANY} to 192.168.1.255
${IPFW} -q add 10002 deny all from 192.168.2.0/24 to ${SERVER}
###############################################################################
# RULE_SECTION
###############################################################################
# "lo" LOOPBACK -----------------------
${IPFW} -q add 00010 allow all from ${ANY} to ${ANY} via lo0
# ICMP_Packets
${IPFW} -q add 30000 allow icmp from ${SERVER} to ${ANY} icmptype 0,3,4,8,11,12
${IPFW} -q add 30001 allow icmp from ${ANY} to ${SERVER} icmptype 0,3,4,8,11,12
# +-+- INPUT_RULES -+-+---------------------------------
# ESTABLISHED_PACKET ALLOW...
${IPFW} -q add 50000 allow tcp from ${ANY} to ${ANY} established
# HTTP tcp:80
${IPFW} -q add 00050 allow tcp from ${ANY} to ${SERVER} 80
# HTTP tcp:8080
${IPFW} -q add 00055 allow tcp from ${LOCALNET} to ${SERVER} 8080
# HTTPS tcp:443
#${IPFW} -q add 00060 allow tcp from ${ANY} to ${SERVER} 443
# SMTP tcp:25
${IPFW} -q add 00075 allow tcp from ${ANY} to ${SERVER} 25
# IMAP tcp:143
${IPFW} -q add 00070 allow tcp from ${LOCALNET} to ${SERVER} 143
# DNS return...
${IPFW} -q add 01000 allow udp from ${ANY} 53 to ${SERVER} 1024-65535
# NTP return
${IPFW} -q add 01100 allow udp from ${ANY} 123 to ${SERVER} 1024-65535
# SSH tcp:22 lan
${IPFW} -q add 00090 allow tcp from ${LOCALNET} to ${SERVER} 22
# Samba tcp:139 (udp:137,138) lan
${IPFW} -q add 00100 allow tcp from ${LOCALNET} to ${SERVER} 139
${IPFW} -q add 00101 allow udp from ${LOCALNET} to ${SERVER} 137-138
${IPFW} -q add 00103 allow udp from ${SERVER} to ${LOCALNET} 137-138
${IPFW} -q add 00104 deny tcp from ${LOCALNET} to ${SERVER} 445
# +-+- OUTPUT_RULES -+-+---------------------------------
# HTTP tcp:80
${IPFW} -q add 60010 allow tcp from ${SERVER} to ${ANY} 80
# DNS_Client udp:53
${IPFW} -q add 60011 allow udp from ${SERVER} to ${ANY} 53
# SSH tcp:22
${IPFW} -q add 60020 allow tcp from ${SERVER} to ${ANY} 22
# SMTP tcp:25
#${IPFW} -q add 60030 allow tcp from ${SERVER} to ${ANY} 25
# NTP_Client
${IPFW} -q add 60040 allow udp from ${SERVER} to ${ANY} 123
# == MAINTAINANCE =====
# FTP tcp:21
# ${IPFW} -q add 61000 allow tcp from ${SERVER} to ${ANY} 21
# ${IPFW} -q add 61001 allow tcp from ${ANY} to ${ANY} 1024-65535
# CVS tcp:5999
# ${IPFW} -q add 61100 allow tcp from ${SERVER} to ${ANY} 5999
# ${IPFW} -q add 61101 allow udp from ${SERVER} to ${ANY} 5999
# == /MAINTAINANCE =====
###############################################################################
# OTHER_DROP_RULES
###############################################################################
# DENY not match above rules...and LOGGING
${IPFW} -q add 65000 deny log udp from ${ANY} to ${ANY}
${IPFW} -q add 65001 deny log tcp from ${ANY} to ${ANY}
${IPFW} -q add 65002 deny log icmp from ${ANY} to ${ANY}
###############################################################################
# END_SECTION
###############################################################################
# COUNTER_RESET
${IPFW} zero