FreeBSD6.2-RELEASEのインストール

1. インストール前に

1-1.起動ディスク作成ツールとFDイメージの取得

エクスプローラーFTPサイトにアクセスして
起動ディスクを作成するためのツールをダウンロード
ftp://ftp.freebsd.org/pub/FreeBSD/tools/

00_index.txt
README.TXT
boot.bin
bootinst.exe
bsdboot/
ckdist.exe
ckdist.man
dist/
extipl.exe
fdimage.exe
fips.doc
fips.exe
fips.faq
gunzip.exe
gzip.exe
ide_conf.exe
md5.exe
osbs135.exe
osbsbeta.exe
pfdisk.exe
presizer.doc
presizer.exe
rawrite.exe
restorrb.exe
srcs/

 

エクスプローラーFTPサイトにアクセスしてFDイメージを取得
ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/6.2-RELEASE/floppies/
CHECKSUM.MD5
CHECKSUM.SHA256
README.TXT
boot.flp
fixit.flp
kern1.flp
kern2.flp
kern3.flp
1-2. 起動ディスクの作成

fdimage.exeを利用してフロッピーイメージを作成。
※Cドライブ直下にtoolsとfloppiesを入れカレントをC:toolsにした場合
C:tools>fdimage ../floppies/boot.flp A:

続けて、
C:tools>fdimage ../floppies/fixit.flp A:
C:tools>fdimage ../floppies/kern1.flp A:
C:tools>fdimage ../floppies/kern2.flp A:
C:tools>fdimage ../floppies/kern3.flp A:
2. インストール

2-1.インストーラーの起動

FDからブートできるようにBIOSの設定を調整してBootディスクを入れて起動します。

次にKernel floppy 1を入れるように支持されるのでkern1ディスクを入れます
Kernel floppy 1
Kernel floppy 2
Kernel floppy 3
boot floppy

この後インストーラーが立ち上がります。

2-2. インストールパッケージの選択

Country Selection -> japan
System Console Keymap -> Japanese 106 keymap
sysinstall Main Menu -> Custom -> Distributions -> Minimal

2-3. パーティションの設定

実は手動で設定すると何故かインストール終了後マウントポイントがぶっ飛んでいたので、オートにしました。
/ 495MB
swap 995MB
/var 1470MB
/tmp 495MB
/usr 33515MB

2-4. Mediaの設定

Media -> FTP を選択する
LANカードの設定はcase by case
2-5. ユーザ管理

User Managementでwheelグループのユーザを作成。できればシェルはtcsh

2-6. その他
タイムゾーンの設定 JST
マウスの設定 無効

これでcommitしインストール開始すると必要なパッケージがダウンロードされてインストール完了
3. インストール後の設定

3-1. SSH環境の設定

まずはSSHでログインできるように
ee /etc/rc.confに

sshd_enable=”YES”

を追加

/etc/ssh/ssh_config
/etc/ssh/sshd_config

上記2つで

PasswordAuthentication yes

と設定されいることを確認する。ちなみに6.2の/etc/ssh/ssh_configはデフォルトでYesになっていました。
そのあとsshdを起動するためrebootでSSHログイン可能。

SSHユーザーの制限は/etc/ssh/sshd_configにAllowUsersの項目を追加し

AllowUsers user1 user2

のように記述する。
3-2. リソースの節約

6.0の時と同様使用しないコンソールは動作させない。

ee /etc/ttys

gettyを0と1を残して全てコメントアウト、さらにシリアル接続は使わないので全てコメントアウトして再起動。
3-3. セキュリティ強化でちょっと工夫

ログインメッセージの編集⇒/etc/motd
3-3. カーネル再構築とファイヤーウォールの設定

以前と同じ方法なのでファイヤーウォールの設定を参照

とりあえずここまで設定してダメだったのがLAN用に購入したカードがCardBusの自動認識で失敗していることかな。これは6.0側もダメだったのでこちらの新しいサーバで確かめながらやって行こう…。

ファイヤーウォールの設定

本当はサーバーの前段に設置したいのですが余裕ないのでサーバーに組み込み。なぜ前段にしないといけないのかというとDos攻撃によって回線がパンクするだけならまだしもログでパーティションがパンクしたりCPUの過負荷でデーターが破損したりと二次災害の危険があるからです。

ファイヤーウォールの設定はカーネルの再構築かカーネルモジュールの組み込みが必要になるので慎重に作業を進めてください。(リモートで接続できなくなっても保証できませんよ)

まずは、カーネルに組み込まれているか確認

# kldstat
Id Refs Address Size Name
1 7 0xc0400000 63070c kernel
2 16 0xc0a31000 568dc acpi.ko
3 1 0xc15af000 15000 linux.ko

# kldstat -v | grep ip
106 ips/ipsd
107 pci/ips
119 miibus/ciphy
160 ppbus/plip
# kldstat -v | grep fw
91 fwohci/firewire
92 pci/fwohci
93 cardbus/fwohci
94 firewire/fwe

カーネルモジュールがあるか確認

# find / -name ipl.ko
/boot/kernel/ipl.ko

設定ファイルがあるか確認

# find /etc -name ipf.rules

いきなり有効にするとSSHが切断されるので
ipf.rulesを編集してlocalhostとSSHの経路のみ確保。
ifconfigコマンドでインターフェースを確認を忘れずに

fxp0:WAN
lo0:localhost

# プログラム本体があるかどうか
# which ipf
/sbin/ipf

# vi /etc/ipf.rules

rc.confに記述を追加
# vi /etc/rc.conf

ipfilter_enable=”YES”
ipfilter_rules=”/etc/ipf.rules”
ipmon_enable=”YES”
ipmon_flags=”-D /var/log/ipf.log”
/boot/loader.confに記述を追加(最小環境では空でした)
ipl_load=”YES”

モジュール組み込み
# kldload ipl

上手くいったかな?すぐに確認
# kldstat
Id Refs Address Size Name
1 8 0xc0400000 63070c kernel
2 16 0xc0a31000 568dc acpi.ko
3 1 0xc15af000 15000 linux.ko
4 1 0xc1aa0000 2a000 ipl.ko

とりあえず切断はされていない。

運命の再起動
# reboot

SSHでまったく問題なしに入れた。
ここまで楽にできると本当にファイヤーウォールが機能しているか不安だ。

PostgreSQLが起動しているのでtelnetで不正アクセスしてみる。
反応しました、全然機能していません。orz…

起動しているか確認
# /etc/rc.d/ipfilter status
ipf: IP Filter: v4.1.8 (416)
Kernel: IP Filter: v4.1.8
Running: yes
Log Flags: 0 = none set
Default: pass all, Logging: available
Active list: 0
Feature mask: 0x10f

フィルターの確認(-iはイン、-oはアウト)
# ipfstat -i
# ipfstat -o

全然フィルタリングされていませんでした。orz…
設定ファイルの修正
# vi /etc/ipf.rules

設定を反映
# ipf -Fa -Z -f /etc/ipf.rules

2005年12月 1日 07:51
/var/log/auth.logを見ると見知らぬIPからSSHを狙われているのを発見。どうもファイアーウォールが効いてない。実際にログインされた形跡はないので実害はありませんがipf.rulesを見直し。

『全ブロックの後に必要なIPとポートのみ受け入れ』のつもりが『全パスの後に…』になっていた。orz…

要するに単なる設定ミスだが、初めてLinuxサーバー立てたときに漏れクシを作ってしまった以上に恥ずかしい失敗をしてしまった。二段階に予防しておいて良かったと思ったのはSSHハッキングを受けるときに使用されたユーザー名がwww, web, root, test, bin等システムで登録されている事が多いアカウントでした。SSH側でログインユーザーを限定し、システムで不要なユーザーは削除していたので助かったもののこれがLinuxでパッケージに入れたままの状態ならログイン成功してサーバーを破壊されていたかもしれません。

こわいこわい・・・。