さくらVPS (v3) 2GコースでFreeBSD 9.0をインストールしたメモ。
手順概要
- FreeBSD 9.0インストール
- ネットワーク設定の変更
- su許可ユーザの追加
- ログインメッセージの抑制
- ssh設定
- 最新のportsの取得
- csup設定
- sudoインストール
- xinetdインストール
- sshのセキュリティ設定
- bashインストール
- portmasterインストール (別記事)
- メールの設定 (別記事)
- webの設定 (別記事)
FreeBSD 9.0インストール
- まずはカスタムOSからFreeBSD 8.1をインストール。
具体的な手順は、さくらのマニュアルどおり。
cf. http://support.sakura.ad.jp/manual/vps/mainte/custom_freebsd.htmlOSは、FreeBSD 8.1 i386を選択。
インストールできるものの制約が大きそうなので、amd64はパスした。
Minimalインストールで。 -
/etc/freebsd-update.confの次の行を編集して、srcを削除する。
※/usr/src/lib/libc/gen/libc_dlopen.cがないとエラーが出る不具合への対処。Components src world kernel
-
まず現状を最新版に
freebsd-update fetch install
-
9.0へアップグレード
freebsd-update -r 9.0-RELEASE upgrade install
freebsd-update installとrebootを適宜繰り返し。
-
パスワードファイルを更新しておく。
pwd_mkdb -p -d /etc /etc/master.passwd
これをしておかないと、後々adduserでユーザ追加するときにエラーが出たり、ユーザ追加を含むパッケージインストールが失敗したりする。
ネットワーク設定の変更
-
転送速度を上げるため、OSのネットワーク変数を変更。
sysctl net.inet.tcp.tso=0
-
/etc/sysctl.confを開き、次の行を追加。
net.inet.tcp.tso=0
cf. 「さくらのVPSで「FreeBSD」を利用していますが、回線速度が遅くアクセスに時間がかかります。」(さくらインターネットFAQ)
su許可ユーザの設定
- rootでsshログインしなくて済むよう、管理者ユーザーがsuできるように設定しておく。/etc/group で wheel に管理者ユーザ名を追加。
ログインメッセージの抑制
-
ログイン時に長いシステムメッセージが表示されるのを抑制。
というか、削除。mv /etc/motd /etc/motd.orig touch /etc/motd
ssh設定
-
ファイルがないとエラーが出てうるさいので、ファイルを作成しておく。
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -t ecdsa -N ''
-
pwagentを使って自動接続するため、サーバとクライアント側に鍵を登録する。
登録する鍵は、Windows上でPuTTYgen.exeを使って生成。生成した鍵は、秘密鍵と公開鍵をそれぞれファイルに保存する。(ここでは秘密鍵をid.ppk、公開鍵をid.pubに保存したものとする。)
- Windows上で、pageaent.exeをスタートアップに登録し、引数に保存した秘密鍵のファイル名を指定。
"C:\Program Files\PuTTY\pageant.exe" "C:\ssh\id.ppk"
- PuTTYgen の「OpenSSHのauthorized_keysファイルにペーストするための公開鍵」の欄にあるコードをコピー&ペーストして、サーバ側の ~/.ssh/authorized_keysファイルに書き込む。または、id.pubをサーバに転送し、次のコマンドでOpenSSH用に変換す る。
ssh-keygen -i -f id.pub >> ~/.ssh/authorized_keys
authorized_keysファイルの書き込み許可がowner以外に与えられていると参照されないので、必要に応じてファイルパーミッションも設定。
chmod 644 ~/.ssh/authorized_keys
- PC上に保存したパスフレーズを削除したい場合は、レジストリを直接編集して次のキーを削除。
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Passphrases
- PuTTYを使って接続し、パスフレーズなしでログインできることを確認する。
- /etc/ssh/ssh_configを開き、次の行を変更する。
PasswordAuthentication no Protocol 2
セキュリティ強化のため、ユーザIDとパスワードでの認証を禁止しておく。
- sshdを再起動。
service sshd restart
最新のportsの取得
-
FTPでお手軽に。
FTPサーバーは、さくらインターネット内にあるftp3.jp.freebsd.orgを利用。cd /tmp fetch ftp://ftp3.jp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz cd /usr tar xvfoz /tmp/ports.tar.gz
csup設定
-
ひな形からports更新用のファイルをコピーし、supfile作成。
cp /usr/share/examples/cvsup/ports-supfile /usr/local/etc
- コピー後のファイル (/usr/local/etc/ports-supfile) を編集して、default hostを変更する。
default host=cvsup.jp.FreeBSD.org
-
ports自動更新のため、crontabに登録。
crontab -e
次の行を追加。
0 3 * * * /usr/bin/csup -L 0 -l /var/run/csup.pid /usr/local/etc/ports-supfile; /usr/local/sbin/portmaster -L | grep "New version available";
これで、インストール済みのportに更新されたものがないか毎夜自動的にチェックしてメールで知らせてくれる。インストールは手動で。
cf. 「csupを使った kernel ソースツリーの更新」 (@OMAKASE)
sudoインストール
- portsから。
cd /usr/ports/security/sudo make install clean distclean
- visudoで次の行を編集(コメントをはずす)。
%wheel ALL=(ALL) NOPASSWD: ALL
xinetdインストール
- xinetdのインストール
portmaster security/xinetd
- /etc/servicesに次の行を追加。
telnet-private 11223/tcp telnet-private 11223/ucp
ポート番号は適当。ポートスキャン対策で、プライベートに番号を割り当てておく。ここで定義したポート番号を指定すればtelnet接続ができる。
- /usr/local/etc/xinetd.confを作成し、次の内容を記述。
defaults { instances = 25 log_type = FILE /var/log/servicelog log_on_success = HOST PID log_on_failure = HOST per_source = 5 } service telnet-private { flags = NAMEINARGS socket_type = stream protocol = tcp wait = no user = root server = /usr/libexec/telnetd server_args = telnetd log_on_success += DURATION USERID log_on_failure += USERID only_from += 111.222.333.444 only_from += .provider.ne.jp }
only_fromで接続できる場所を特定しておく。
-
/etc/rc.confに次の行を追加。
xinetd_enable="YES"
cf. 「xinetd の設定方法」 (NEC)
bashインストール
- 自分はbashに慣れているので、追加インストール。
cd /usr/ports/shells/bash make install clean
-
/etc/passwdも編集して、自分の使用するシェルを変更しておく。