FreeBSD 9.0

さくらVPS (v3) 2GコースでFreeBSD 9.0をインストールしたメモ。

手順概要

FreeBSD 9.0インストール

  1.  まずはカスタムOSからFreeBSD 8.1をインストール。

    具体的な手順は、さくらのマニュアルどおり。
    cf. http://support.sakura.ad.jp/manual/vps/mainte/custom_freebsd.html

    OSは、FreeBSD 8.1 i386を選択。
    インストールできるものの制約が大きそうなので、amd64はパスした。
    Minimalインストールで。

  2. /etc/freebsd-update.confの次の行を編集して、srcを削除する。
    ※/usr/src/lib/libc/gen/libc_dlopen.cがないとエラーが出る不具合への対処。

    Components src world kernel
  3. まず現状を最新版に

    freebsd-update fetch install
  4. 9.0へアップグレード

    freebsd-update -r 9.0-RELEASE upgrade install

    freebsd-update installとrebootを適宜繰り返し。

  5. パスワードファイルを更新しておく。

    pwd_mkdb -p -d /etc /etc/master.passwd

    これをしておかないと、後々adduserでユーザ追加するときにエラーが出たり、ユーザ追加を含むパッケージインストールが失敗したりする。

    cf. 「pwd_mkdb: パスワードファイルの作成」(北澤私的記録)

ネットワーク設定の変更

  1. 転送速度を上げるため、OSのネットワーク変数を変更。

    sysctl net.inet.tcp.tso=0
  2. /etc/sysctl.confを開き、次の行を追加。

    net.inet.tcp.tso=0

    cf. 「さくらのVPSで「FreeBSD」を利用していますが、回線速度が遅くアクセスに時間がかかります。」(さくらインターネットFAQ)

su許可ユーザの設定

  1.  rootでsshログインしなくて済むよう、管理者ユーザーがsuできるように設定しておく。/etc/group で wheel に管理者ユーザ名を追加。

    cf. 「suでrootになろう」(自宅サーバをめぐる冒険)

ログインメッセージの抑制

  1. ログイン時に長いシステムメッセージが表示されるのを抑制。
    というか、削除。

    mv /etc/motd /etc/motd.orig
    touch /etc/motd

ssh設定

  1. ファイルがないとエラーが出てうるさいので、ファイルを作成しておく。

    ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -t ecdsa -N ''

    cf. 「OpenSSH 5.7p1 で新しい鍵形式(ECDSA)の警告」(matoken’s memo)

  2. pwagentを使って自動接続するため、サーバとクライアント側に鍵を登録する。
    登録する鍵は、Windows上でPuTTYgen.exeを使って生成。

    生成した鍵は、秘密鍵と公開鍵をそれぞれファイルに保存する。(ここでは秘密鍵をid.ppk、公開鍵をid.pubに保存したものとする。)

  3. Windows上で、pageaent.exeをスタートアップに登録し、引数に保存した秘密鍵のファイル名を指定。
    "C:\Program Files\PuTTY\pageant.exe" "C:\ssh\id.ppk"
  4. 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
  5. PC上に保存したパスフレーズを削除したい場合は、レジストリを直接編集して次のキーを削除。
    HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Passphrases
  6. PuTTYを使って接続し、パスフレーズなしでログインできることを確認する。
  7. /etc/ssh/ssh_configを開き、次の行を変更する。
    PasswordAuthentication no
    Protocol 2

    セキュリティ強化のため、ユーザIDとパスワードでの認証を禁止しておく。

  8. sshdを再起動。
    service sshd restart

最新のportsの取得

  1. 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設定

  1. ひな形からports更新用のファイルをコピーし、supfile作成。

    cp /usr/share/examples/cvsup/ports-supfile /usr/local/etc
  2. コピー後のファイル (/usr/local/etc/ports-supfile) を編集して、default hostを変更する。
    default host=cvsup.jp.FreeBSD.org
  3. 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インストール

  1. portsから。
    cd /usr/ports/security/sudo
    make install clean distclean
  2. visudoで次の行を編集(コメントをはずす)。
    %wheel ALL=(ALL) NOPASSWD: ALL

xinetdインストール

  1. xinetdのインストール
    portmaster security/xinetd
    
  2. /etc/servicesに次の行を追加。
    telnet-private  11223/tcp
    telnet-private  11223/ucp

    ポート番号は適当。ポートスキャン対策で、プライベートに番号を割り当てておく。ここで定義したポート番号を指定すればtelnet接続ができる。

  3. /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で接続できる場所を特定しておく。

  4. /etc/rc.confに次の行を追加。

    xinetd_enable="YES"

cf. 「xinetd の設定方法」 (NEC)

bashインストール

  1. 自分はbashに慣れているので、追加インストール。
    cd /usr/ports/shells/bash
    make install clean
  2. /etc/passwdも編集して、自分の使用するシェルを変更しておく。

タイトルとURLをコピーしました