さくら VPS で FreeBSD を使う

インストール直後に、一気にやってしまう設定を残しておく。

  1. さくら VPS にFreeBSDをインストールする
  2. FreeBSD 8.1 から FreeBSD 9.0 にアップグレードする
  3. portupgrade をインストールする
  4. make.conf をサーバー用途に変更する
  5. portsnap.conf を編集する
  6. sshd の設定をする
  7. ntpd の設定をする
  8. その他

1. さくら VPS に FreeBSD をインストールする

インストール方法は、

を参考にすれば、ちゃんとインストールできる。ただ、初めて FreeBSD を使う場合に戸惑うかもしれないけれど、不安な場合は最初から再インストールを気軽にできるのが、VPS のいいところ。

2. FreeBSD 8.1 から FreeBSD 9.0 にアップグレードする

ZFS を使わなければ、8.1 のままでいいとは思うけれども、FreeBSD 稼働後にバージョンアップをする作業はけっこう手間なので、初期状態から 9.0 にバージョンアップをしてしまう。
バージョンアップ方法は、FreeBSD の公式サイトで紹介されている。

VNC コンソールから作業を行う。

# freebsd-update fetch install
WARNING: FreeBSD 8.1-RELEASE is approaching its End-of-Life date.
It is strongly recommended that you upgrade to a newer
release within the next 2 months.
# freebsd-update upgrade -r 9.0-RELEASE

すべて「yes」で実行する。そして、2回目の「freebsd-update install」を実施後、再起動する。

# freebsd-update install
# shutdown -r now

そして、2回連続の「freebsd-update install」を実施した後に、再々起動する。

# freebsd-update install
# freebsd-update install
# shutdown -r now

再起動後に、バージョンを確認する。

# uname -a
FreeBSD www*****.sakura.ne.jp 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Tue Jan  3 07:46:30 UTC 2012     root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

これで、この作業は完了。

3. portupgrade をインストールする

次に、ports ツリーをインストールする。

# portsnap fetch extract update

時間がかかるので、気長に待つ。終わったら、portupgrade をインストールする。

# cd /usr/ports/port-mgmt/portupgrade
# make install clean

portupgrade もインストールに時間がかかるので、気長に待つ。インストール途中で、オプションの設定があるけれども、初期状態のまま「OK」で処理を進めればよい。

4. make.conf をサーバー用途に変更する

サーバー用途で使うならば、GUI や X Window は必要ないので、予めこれらをインストールしないように設定しておく。

# cp /usr/share/examples/etc/make.conf /etc/
# cp /etc/make.conf /etc/make.conf.orig
# vi /etc/make.conf

vi で make.conf を修正する。

diff -u /etc/make.conf.orig /etc/make.conf > ~/patch_make.conf.txt

変更点を diff で取ると次のようになる。

$ less ~/patch_make.conf.txt
--- /etc/make.conf.orig 2012-04-06 16:48:37.000000000 +0900
+++ /etc/make.conf      2012-04-06 17:12:56.000000000 +0900
@@ -284,3 +284,6 @@
 #
 # Another approach is to use /usr/ports/ports-mgmt/portconf which has
 # its own config file for port specific options.
+NO_GUI=yes
+WITHOUT_X11=yes

make.conf に追加したのは、「NO_GUI=yes」と「WITHOUT_X11=yes」のみ。

5. portsnap.conf を編集する

make.conf 同様に、portsnap.conf も編集する。ports tree の参照先を国内のもの変更し、ディスク容量の節約のために必要ではない ports tree を更新しないように設定する。

# cp /etc/portsnap.conf /etc/portsnap.conf.orig
# vi /etc/portsnap.conf
diff -u /etc/portsnap.conf.orig /etc/portsnap.conf > ~/patch_portsnap.conf.txt

参照先をさくらの ports tree に変更し、使わない言語関係の ports を更新しないようにする。

$ less ~/patch_portsnap.conf.txt
--- /etc/portsnap.conf.orig     2012-04-06 17:15:53.000000000 +0900
+++ /etc/portsnap.conf  2012-04-06 17:19:28.000000000 +0900
@@ -10,7 +10,8 @@
 # this to point at a specific server if you want, but in most cases
 # using a "nearby" server won't provide a measurable improvement in
 # performance.
-SERVERNAME=portsnap.FreeBSD.org
+#SERVERNAME=portsnap.FreeBSD.org
+SERVERNAME=portsnap.sakura.ad.jp

 # Trusted keyprint.  Changing this is a Bad Idea unless you've received
 # a PGP-signed email from <security-officer@FreeBSD.org> telling you to
@@ -26,8 +27,8 @@
 # directives and experience problems, remove them and update your tree
 # before asking for help on the mailing lists.
 #
-# REFUSE arabic chinese french german hebrew hungarian japanese
-# REFUSE korean polish portuguese russian ukrainian vietnamese
+REFUSE arabic chinese french german hebrew hungarian
+REFUSE korean polish portuguese russian ukrainian vietnamese

 # List of INDEX files to build and the DESCRIBE file to use for each
 INDEX INDEX-7 DESCRIBE.7

6. sshd の設定をする

設定内容は以前、記述したものと変わりない。

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
$ sudo vi /etc/ssh/sshd_config
$ diff -u /etc/ssh/sshd_config.orig /etc/ssh/sshd_config > ~/patch.sshd.conf.txt

sshd.conf の diff は次の通り。

$ less ~/patch.sshd.conf.txt
--- /etc/ssh/sshd_config.orig   2012-04-06 17:46:18.000000000 +0900
+++ /etc/ssh/sshd_config        2012-04-06 17:58:06.000000000 +0900
@@ -16,13 +16,13 @@

 #VersionAddendum FreeBSD-20110503

-#Port 22
+# sshd のポート番号を22番から10000番台以降の番号を任意で割り当てる
+Port 12345
 #AddressFamily any
 #ListenAddress 0.0.0.0
 #ListenAddress ::

 # The default requires explicit activation of protocol 1
-#Protocol 2
+Protocol 2

 # HostKey for protocol version 1
 #HostKey /etc/ssh/ssh_host_key
@@ -38,19 +38,19 @@
 # Logging
 # obsoletes QuietMode and FascistLogging
 #SyslogFacility AUTH
-#LogLevel INFO
+LogLevel INFO

 # Authentication:

 #LoginGraceTime 2m
-#PermitRootLogin no
+PermitRootLogin no
 #StrictModes yes
 #MaxAuthTries 6
 #MaxSessions 10

 #RSAAuthentication yes
-#PubkeyAuthentication yes
-#AuthorizedKeysFile    .ssh/authorized_keys
+PubkeyAuthentication yes
+AuthorizedKeysFile     .ssh/authorized_keys

 # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
 #RhostsRSAAuthentication no
@@ -63,8 +63,8 @@
 # Authentication:

 #LoginGraceTime 2m
-#PermitRootLogin no
+PermitRootLogin no
 #StrictModes yes
 #MaxAuthTries 6
 #MaxSessions 10

 #RSAAuthentication yes
-#PubkeyAuthentication yes
-#AuthorizedKeysFile    .ssh/authorized_keys
+PubkeyAuthentication yes
+AuthorizedKeysFile     .ssh/authorized_keys

 # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
 #RhostsRSAAuthentication no
@@ -63,8 +63,8 @@
 #IgnoreRhosts yes

 # Change to yes to enable built-in password authentication.
-#PasswordAuthentication no
-#PermitEmptyPasswords no
+PasswordAuthentication no
+PermitEmptyPasswords no

 # Change to no to disable PAM authentication
 #ChallengeResponseAuthentication yes
@@ -88,12 +88,12 @@
 # If you just want the PAM account and session checks to run without
 # PAM authentication, then enable this but set PasswordAuthentication
 # and ChallengeResponseAuthentication to 'no'.
-#UsePAM yes
+UsePAM no

 #AllowAgentForwarding yes
 #AllowTcpForwarding yes
 #GatewayPorts no
-#X11Forwarding yes
+X11Forwarding no
 #X11DisplayOffset 10
 #X11UseLocalhost yes
 #PrintMotd yes

設定を変更したら、sshd を再起動させる。

$ sudo /etc/rc.d/sshd restart
Stopping sshd.
Waiting for PIDS: 865.
Starting sshd.

7. ntpd の設定をする

% sudo cp /etc/ntp.conf /etc/ntp.conf.orig
% sudo vi /etc/ntp.conf
% diff -u /etc/ntp.conf.orig /etc/ntp.conf > ~/patch.ntpd.conf.txt

変更内容は次の通り。

% less ~/patch.ntpd.conf.txt
--- /etc/ntp.conf.orig  2012-04-06 19:07:34.000000000 +0900
+++ /etc/ntp.conf       2012-04-06 19:09:44.000000000 +0900
@@ -20,11 +20,15 @@
 # The option `iburst' is used for faster initial synchronisation.
 # The option `maxpoll 9' is used to prevent PLL/FLL flipping on FreeBSD.
 #
-server 0.freebsd.pool.ntp.org iburst maxpoll 9
-server 1.freebsd.pool.ntp.org iburst maxpoll 9
-server 2.freebsd.pool.ntp.org iburst maxpoll 9
+#server 0.freebsd.pool.ntp.org iburst maxpoll 9
+#server 1.freebsd.pool.ntp.org iburst maxpoll 9
+#server 2.freebsd.pool.ntp.org iburst maxpoll 9
 #server 3.freebsd.pool.ntp.org iburst maxpoll 9

+server 210.173.160.27  iburst maxpoll 9 # ntp1.jst.mfeed.ad.jp
+server 210.173.160.57  iburst maxpoll 9 # ntp2.jst.mfeed.ad.jp
+server 210.173.160.87  iburst maxpoll 9 # ntp3.jst.mfeed.ad.jp
+
 #
 # If you want to pick yourself which country's public NTP server
 # you want sync against, comment out the above servers, uncomment
@@ -35,6 +39,8 @@
 # server 1.CC.pool.ntp.org iburst maxpoll 9
 # server 2.CC.pool.ntp.org iburst maxpoll 9

+server 133.243.238.163 iburst maxpoll 9 # ntp.nict.jp
+
 #
 # Security: Only accept NTP traffic from the following hosts.
 # The following configuration example only accepts traffic from the
@@ -52,6 +58,14 @@
 #restrict -6 ::1
 #restrict 127.127.1.0

+restrict default ignore
+restrict 127.0.0.1
+restrict 192.168.0.1 mask 255.255.255.0 noquery nopeer notrust
+restrict 210.173.160.27  noquery
+restrict 210.173.160.57  noquery
+restrict 210.173.160.87  noquery
+restrict 133.243.238.163 noquery
+
 #
 # If a server loses sync with all upstream servers, NTP clients
 # no longer follow that server. The local clock can be configured

8. その他

ログインシェルを変更した際に、下記のエラーが発生した。

$ chsh -s /usr/local/bin/zsh
Password:
chsh: entry inconsistent
chsh: pw_copy: Invalid argument

調べたら、pwd_mkdb を実行すれば、直るということで修復する。

$ sudo pwd_mkdb /etc/master.passwd
$ sudo pwd_mkdb -p /etc/master.passwd
$ chsh -s /usr/local/bin/zsh
chsh: user information updated

仮想コンソールは必要最小限で稼働していればいいので、不要な仮想コンソールを止めてメモリを少しだけ節約する。

% sudo cp /etc/ttys /etc/ttys.orig
% sudo vi /etc/ttys
% diff -u /etc/ttys.orig /etc/ttys ~/patch.ttys.txt
% less ~/patch.ttys.txt
--- /etc/ttys.orig      2012-04-06 19:30:02.000000000 +0900
+++ /etc/ttys   2012-04-06 19:31:23.000000000 +0900
@@ -33,11 +33,11 @@
 # Virtual terminals
 ttyv1  "/usr/libexec/getty Pc"         xterm   on  secure
 ttyv2  "/usr/libexec/getty Pc"         xterm   on  secure
-ttyv3  "/usr/libexec/getty Pc"         xterm   on  secure
-ttyv4  "/usr/libexec/getty Pc"         xterm   on  secure
-ttyv5  "/usr/libexec/getty Pc"         xterm   on  secure
-ttyv6  "/usr/libexec/getty Pc"         xterm   on  secure
-ttyv7  "/usr/libexec/getty Pc"         xterm   on  secure
+ttyv3  "/usr/libexec/getty Pc"         xterm   off  secure
+ttyv4  "/usr/libexec/getty Pc"         xterm   off  secure
+ttyv5  "/usr/libexec/getty Pc"         xterm   off  secure
+ttyv6  "/usr/libexec/getty Pc"         xterm   off  secure
+ttyv7  "/usr/libexec/getty Pc"         xterm   off  secure
 ttyv8  "/usr/local/bin/xdm -nodaemon"  xterm   off secure
 # Serial terminals
 # The 'dialup' keyword identifies dialin lines to login, fingerd etc.
% sudo shutdown -r now

vim を GUI 環境なしでインストールする。念のため、オプションを付けておく。

% cd /usr/ports/editors/vim
% sudo make NO_GUI=yes install clean
SECURITY NOTE: The VIM software has had several remote vulnerabilities discovered within VIM's modeline support.  It allowed remote attackers to execute arbitrary code as the user running VIM.  All known problems have been fixed, but the FreeBSD Security Team advises that VIM users use 'set nomodeline' in ~/.vimrc to avoid the possibility of trojaned text files.

あとは、この辺を備忘録として参照する。