OSのインストールと初期設定


目次

  1. このページについて
  2. NetBSDのインストール
  3. ネットワーク接続
  4. すべて遮断する
  5. ユーザの作成
  6. pkgsrc(7)のインストール

このページについて

ここではなんらかの環境(ノートPC・デスクトップPCのような物理的なものやVirtualBox・KVM・Bhyve・Xenなどの仮想マシン)にNetBSDをインストールし、日本語デスクトップ環境をインストールする前段階について説明します。したがって内容はNetBSDに強く依存してしまいますが、手順そのものはほとんどのUnix系OSに通じると思われます。NetBSD以外のOSをインストールしたい場合、NetBSD以外のBSD Unixであればpkgsrc(7)のインストールを読み飛ばしてもらい、GNU/Linuxであればインストーラの時点でほぼすべての手順が完了していると思うのですべて遮断するだけを読んでもらえればいいです(ただしSlackware系のディストリビューションは除く。しかしこれを選んだのであればこの文書自体読む必要はないでしょう)。

NetBSDのインストール

多くの場合amd64(64bit)アーキテクチャのインストーラをFTPサーバからダウンロードしてそれをブートすることになります。http://nycdn.netbsd.org/pub/NetBSD-daily/netbsd-8/latest/images/ からISOファイルやgzip圧縮されたimgファイルをダウンロードできます。

多くのIT技術系ブログでNetBSDのインストール手順について画像つきで詳しく解説されています。しかし僕はThe NetBSD Projectから提供されているChapter 3. Example Installationを読むことをおすすめします。これがあるのでインストール手順についてあらためて紙面を割く必要もありません。この文書は英語ですが、どのみちNetBSDのインストーラも英語なので気にしなくて結構です。

仮想マシンにNetBSDをインストールするのであれば、NetBSDで遊ぼうのこーなを参考に仮想化ソフトウェアを選ぶといいでしょう。このページから引用し、さらに僕が普段使っているBhyveや使ったことのあるXenも加えると次のようになります。

ソフトウェア Addin 状況
VirtualBox x GuestAdditionsは未対応だが他問題なし
VMware o 非ネット共有フォルダに失敗
クライアントHyper-V x SMPとACPIを無効化しないとネット不可。ネットはレガシーアダプタ要
QEMU x 起動に失敗
Bhyve ? vm-bhyveで確認。
Xen ? Domain 0はNetBSD

物理的な環境にインストールする場合、まずは動作が確認されている機器を慎重に選ぶところから始まります。ThinkPadはだいたい動くようです。僕が使ってきたマシンについてはNetBSD on ThinkPadを参照してください。

ネットワーク接続

ifconfig(8)でネットワークインタフェースの名前を確認します。有線接続する場合はmedia: Ethernet autoselect、無線接続する場合はmedia: IEEE802.11となっているネットワークインタフェースを探します。

# ifconfig
wm0: flags=0x8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
        capabilities=7ff80<TSO4,IP4CSUM_Rx,IP4CSUM_Tx,TCP4CSUM_Rx>
        capabilities=7ff80<TCP4CSUM_Tx,UDP4CSUM_Rx,UDP4CSUM_Tx,TCP6CSUM_Rx>
        capabilities=7ff80<TCP6CSUM_Tx,UDP6CSUM_Rx,UDP6CSUM_Tx,TSO6>
        enabled=0
        ec_capabilities=7<VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU>
        ec_enabled=0
        address: 4d:a8:1f:24:ab:03
        media: Ethernet autoselect (none)
        status: no carrier
iwn0: flags=0x8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ssid SSID nwkey *****
        powersave off
        bssid 6d:d4:18:01:a6:14 chan 10
        address: 7d:99:25:7a:23:c9
        media: IEEE802.11 autoselect (OFDM36 mode 11g)
        status: active
        inet 192.168.100.102/24 broadcast 192.168.100.255 flags 0x0
        inet6 fe80::629b:d0c1:135b:eb24%iwn0/64 flags 0x0 scopeid 0x2
        inet6 2001:268:c146:5657:63c1:78ae:4457:e5ae/64 flags 0x0
lo0: flags=0x8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33624
        inet 127.0.0.1/8 flags 0x0
        inet6 ::1/128 flags 0x20<NODAD>
        inet6 fe80::1%lo0/64 flags 0x0 scopeid 0x3

この出力は既に無線接続が設定されているものですが、ここで有線接続のネットワークインタフェースはwm0、無線ではiwn0ということがmediaの行から分かります。

ネットワークの設定後はnetworkデーモンを再起動します。

# service network restart

有線接続(固定IPアドレス)

あらかじめどのIPアドレスを使うか定められており有線接続する場合、ifconfig.if(5)を書きます。IPアドレスが192.168.200.40/24でネットワークインタフェースがwm0のとき/etc/ifconfig.wm0を次のように編集します。

inet 192.168.200.40 netmask 255.255.255.0

有線接続(動的IPアドレス)

DHCPサーバに問い合わせてIPアドレスを動的に割り振るネットワーク環境の場合dhcpcd(8)を使うだけで済みます。ネットワークインタフェースがwm0だとすると次のように実行します。

# dhcpcd wm0

OS起動時に自動的にdhcpcd(8)を実行するには/etc/rc.confに次の2行を追記します。

dhcpcd=YES
dhcpcd_flags="wm0"

無線接続(動的IPアドレス)

無線を使うには次の手順に従います。

  1. SSIDとパスフレーズ(パスワード)の確認
  2. wpa_passphrase(8)の実行
  3. wpa_supplicant(8)の実行
  4. dhcpcd(8)の実行

まず無線接続に必要なSSIDとパスフレーズを控えます。ここではSSIDをhome-ssid、パスフレーズをpassword、ネットワークインタフェースはiwm0とします。

wpa_passphrase ssid passphraseという形式でwpa_passphrase(8)を実行します。

# wpa_passphrase home-ssid password
network={
        ssid="home-ssid"
        #psk="password"
        psk=d5264ac3e0512b34b5f6856bbb224b87ce84256de9023decb076ff974fbe06a2
}

このコマンドで得られた出力を/etc/wpa_supplicant.confに書き込みます。

# wpa_passphrase home-ssid password >> /etc/wpa_supplicant.conf

wpa_supplicant(8)を実行します。

# wpa_supplicant -B -i iwn0 -c /etc/wpa_supplicant.conf

無線のランプが光るなど無線デバイスが使えるようになったら、dhcpcd(8)でIPアドレスを取得してください。

# dhcpcd iwn0

OS起動時にこれらの手順を自動でおこなうには/etc/rc.confに以下を追記します。

wpa_supplicant=YES
wpa_supplicant_flags="-B -i iwn0 -c /etc/wpa_supplicant.conf"
dhcpcd=YES
dhcpcd_flags="iwm0"

すべて遮断する

ネットワーク接続をしたあとはすぐに外からのあらゆるアクセスを遮断します。アクセスさせたいプロトコルやポート番号のみを開け、ユーザ認証が必要な場合はなるべくパスワード認証を避け公開鍵認証方式に切り替えます。どうしてもパスワード認証を使わざるを得ないときはパスワード生成ソフトウェアを通じて可能な限り長くランダムなパスワードを使ってください。

自宅で使うPCに対してこのポリシーは意味がないようにみえますが、これを習慣づけておくといざインターネットに公開するサーバを運用するとき役に立ちます。HTTPサーバを運用するだけでも、ありもしないwp-login.phpにアクセスしようとしたりrootでSSHログインを試みたりした痕跡がログにつくものです。自衛のために日頃から訓練しておくべきです。

アクセス制御にはlibwrapによるものとnpf(7)によるものがあります。ここでは前者について説明します。

libwrapによるTCPアクセス制御

NetBSDでTCPアクセス制御を実現するにはinetd(8)のlibwrapを設定します。設定ファイルはhosts.allow(5)hosts.deny(5)の2つです。

はじめに/etc/hosts.denyを次のように書きます。

ALL: ALL

そして必要に応じて/etc/hosts.allowを編集します。hosts.deny(5)のルールが優先されるため、hosts.deny(5)で全て遮断したあとはhosts.allow(5)に書いてあるルールだけが通るようになります。たとえばSSHを通したい場合、次のようにします。

sshd: ALL

自宅や職場のローカルネットワークの場合、たとえばこのようにすれば十分でしょう。

sshd: LOCAL

サーバを外部に公開している場合traceroute(8)でプロバイダのドメインを調べてそこからのみアクセスできるようにします。

traceroute(8)は次のように使います。

# traceroute www.google.com

出力の中ではauやKDDI、ソフトバンクのようなプロバイダの名前が確認できるはずです。/etc/hosts.allowにそれを指定します。

sshd: .au-net.ne.jp

設定後は許可したネットワーク以外からはアクセスできないことを確認してください。たとえ公開用のサーバで設定が失敗してSSHログインできなくても、Webのコンソールからいつでも操作できるので問題ありません。

ユーザの作成

特権を持ったユーザで常にシステムにログインして作業し続けるのは一見快適かもしれません。が、操作ミスで消してはいけないファイルを誤って消す/編集してしまう危険を常に抱えることでもあります。また一般的に、SSHであっても直接rootユーザでログインするのは避けられる傾向にあります。

そこで普段は特権を持たない一般ユーザを作り、それでログインしてなんらかの作業をおこないます。ソフトウェアのインストールや設定ファイルの編集などで権限が必要になったときだけsu(1)でrootユーザになるポリシーとします。

ユーザの追加にはuseradd(8)を使います。作成予定のユーザ名をjohnとすると次のように実行します。NetBSDのuseradd(8)では-mオプションを付けないとホームディレクトリが作られないことに注意してください。

# useradd -m john

パスワードはpasswd(1)にユーザ名を渡して実行します。johnに設定するパスワードを2回尋ねられます。入力した文字は画面に印字されません(「エコーされない」とも言います)。

# passwd john

su(1)でrootユーザになるにはwheelグループにユーザを追加します。/etc/groupを編集します。wheelの行にカンマ区切りでユーザ名を追記してください。

wheel:*:0:root,john

pkgsrc(7)のインストール

NetBSDでは第三者製ソフトウェアパッケージのビルドとインストールにpkgsrc(7)というビルドシステムを使います。

pkgsrc(7)のtarballをダウンロードします。NetBSDのFTPサーバだけでなく、国内の大学や企業が運営しているFTPサーバからもダウンロードできるでしょう。たとえばftp.iij.ad.jpやftp.jaist.ac.jpです。ダウンロードしたtarballを/usrの下に展開するだけでNetBSDでのpkgsrc(7)のインストールは終わりです。

# ftp ftp://ftp.iij.ad.jp/pub/pkgsrc/stable/pkgsrc.tar.gz
# tar zxf pkgsrc.tar.gz -C /usr
# cd /usr/pkgsrc

pkgsrc(7)はstable版とcurrent版の2種類を選ぶことができます。stable版は3か月に一度更新される安定版で、current版は不安定な開発版です。しかし一番新しいFirefoxを使いたいときなど、最新のバージョンのソフトウェアを使いたい場合は後者を選ばざるを得ません。とりあえずここではstable版で話を進めますが、用途に応じてどちらを選ぶか考えてください。