はじめに

インストール直後の状態は決して使い易いとは言えないので、細かなセッティングを行います。

shell の設定

デフォルトの状態では tcsh を使うのが慣例となっているので、 tcsh を少し使いやすくします。

user の tcsh

> vi ~/.cshrc

setenv	LESSHISTFILE	-

set prompt = "[%n@%m]%B%~%b%# "
set autolist

> source ~/.cshrc

root の tcsh

# vi /root/.cshrc

setenv	LESSHISTFILE	-

#set prompt = "`/bin/hostname -s`# "
set prompt = "[%Broot@%m%b]%B%~%b%# "
set autolist

# source /root/.cshrc

新しいユーザを作る際に使われる tcsh

# vi /usr/share/skel/dot.cshrc

setenv	LESSHISTFILE	-

set prompt = "[%n@%m]%B%~%b%# "
set autolist

キーボードの設定

変更しなくても問題はありませんが、使い勝手向上の意味合いで設定します。

# vi /etc/rc.conf

keymap="jp.106"
keyrate="fast"
keybell="off"

起動時の待ち時間を短くする

デフォルトの起動時間は少し長すぎるので 3 秒に変更する。

# vi /boot/loader.conf

autoboot_delay="3"

ログイン時のメッセージを短くする

コンソールや SSH 接続時に表示されるメッセージを短くする

# vi /etc/motd

Welcome to FreeBSD!

root のメールをユーザーに転送する

基本的に作業するのはユーザーなので、 root のメールを転送するようにすれば管理しやすい。

# vi /etc/mail/aliases

root: user

# newaliases

make.conf を設定する

make.conf を設定しておくと利便性があがる。
主にコンパイル時に利用される。
CPUTYPE については GCC Manual を参照すること。

# vi /etc/make.conf

CPUTYPE?=athlon64

NO_GAMES=	true
NO_INET6=	true
NO_PROFILE=	true

DOC_LANG=	en_US.ISO8859-1 ja_JP.eucJP

WITHOUT_X11=	yes
WITHOUT_IPV6=	yes
WITH_BDB_VER=	42

MTU を調整する

通常でしたら MTU を調整する必要はないのですが、これを調整することによって若干パフォーマンスが向上する場合があります。
- NTT 東日本の B フレッツハイパーファミリーの MTU の推薦値は 1454 です。

下記の例では MTU 1448 に設定しています。

# vi /etc/rc.conf

ifconfig_bge0="inet 192.168.1.100 netmask 255.255.255.0 mtu 1448"

コマンドラインでは下記のように入力します。

# ifconfig bge0 mtu 1448

fsck の対話的質問に全て yes で答える

遠隔操作で FreeBSD を運営している場合は fsck が自動実行された時の対話的質問に答える事が出来ません。
よって、この機能はあまり意味がないと思いますので fsck が自動実行された時、全て yes で答えるようにします。

# vi /etc/rc.conf

fsck_y_enable="YES"

全てのログを取る

サーバを運営していると様々な問題に遭遇します。
そう言った時の為に、ログを一箇所に集めておいたほうが良い場合もあります。

# touch /var/log/all.log
# chmod 600 /var/log/all.log
# vi /etc/syslog.conf

#*.*						/var/log/all.log
*.*						/var/log/all.log

root のディレクトリを一般ユーザに見せない

root ディレクトリには管理の利便を確保する為、シェルスクリプトを置いている場合があると思います。
そういった場合に、一般ユーザが root ディレクトリを覗けてしまうのは好ましくありません。

# chmod 0750 /root

syslogd(8) のネットワークソケットを閉じる

syslogd(8) はネットワーク上の syslogd とやり取りが出来るが、自宅のサーバ構成ではあまり意味を成さないので、ソケット自体を閉じてしまう。

# vi /etc/rc.conf

syslogd_flags="-ss"

SYN+FIN パケットの破棄

SYN+FIN パケットは TCP コネクション上の意味で言うと接続 + 切断になります。
通常の TCP コネクションでこのパケットが来た場合は高い確立で悪意のあるユーザによるものです。
また、このパケットを受信するようにしてしまうと DOS 攻撃の要因となってしまいます。

注意事項として、このオプションはカーネルに TCP_DROP_SYNFIN オプションを付けて再構築しないといけません。
カーネル再構築については こちら をご覧ください。

# vi /etc/rc.conf

tcp_drop_synfin="YES"

ポートスキャン対策

ポートスキャンが行われる時、デフォルトの状態の FreeBSD では閉じているポートも応答を返してしまいます。
悪意あるユーザにこちら側の情報を教えてしまっているようなものなので、この応答を返さないようにします。

# vi /etc/sysctl.conf

net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1

カーネルの RST 応答を制限する

詳細は こちら をご覧ください。
噛み砕いて説明すると、ポートスキャン ( または DOS 攻撃 ) が行われた時に、閾値を超えている場合はカーネルが警告メッセージを出力します。
この閾値を調整する事で、アタックされているのかどうかある程度判断出来ます。

# vi /etc/sysctl.conf

net.inet.icmp.icmplim=400

ICMP REDIRECT パケットの破棄

ICMP REDIRECT パケットは一般的には経路情報を伝えるものですが、通常このパケットが外から飛んでくる事はありません。
よって ICMP REDIRECT パケットは破棄する設定にした方が良いでしょう。

# vi /etc/rc.conf

icmp_drop_redirect="YES"

他ユーザのプロセス情報を隠す

一般ユーザが自分以外のプロセス情報を見えなくなるようにします。

# vi /etc/sysctl.conf

security.bsd.see_other_gids=0
security.bsd.see_other_uids=0

その他のチューニングなど

今まで主にインストール直後に行ったほうが良い設定やセキュリティ関連の設定を行いましたが、これ以降はチューニングの部類に入るので別ページに分けます。
このチューニングはシステムの稼動状況によって数値を変えなければいけないので万人にお勧めできる設定というものがありません。
FreeBSD をチューニングする際にはその点を十分ご留意ください。