Hardened Gentoo のインストール
このページはHardened Gentoo をインストールしたときのメモです。
Hardened Gentoo とは、seLinux 等を採用した、セキュリティを重視したGentoo Linux です。
seLinuxはカーネルに組み込むセキュリティモジュールで、アクセス制御機能が強化されています。
ただ、seLinuxはファイアーウォールのように、進入を防ぐと言う事に主眼を置いているのではなく、
侵入された後に被害の拡大を防ぐことに着目しています。
そのため、従来からのセキュリティ対策も、引き続き必要です。
なお、今回インストールするマシンには、マスター(hda)には Windows が既にインストール済みであるため、
スレーブ(hdb)に Hardened Gentoo をインストールし、デュアルブートを行うこととします。
マシンスペック
今回インストールを行うマシンのスペックは次の通りです。
マシン | 自作PC |
OS | Windows XP HomeEdition SP2 |
CPU | AMD Athlon XP 2500+ |
メモリー | 256MB |
ビデオカード | RADEON9200 メモリー:128MB |
HD | マスター:Maxtor 80G スレーブ:Maxtor 30G |
LiveCDの入手
Hardened Gentoo をインストールするために、Hardened Gentoo 用の LiveCDを入手する必要が
あります。
ISOイメージは、ダウンロードミラーから取得できます。
experimental/x86/hardened/livecd ディレクトリ内から ISOファイルを入手してください。
今回、ダウンロードしたファイルは、vecd-x86-selinux-20040616-1.iso でした。
このISOイメージをCDに焼いてLiveCDを作成し、CDからマシンを起動します。
LiveCDによる起動
LiveCDにてマシンを起動すると、「Your default context is root:sysadm_r:sysadm_t.Do you want to choose different one?」
と問われます。ここは [n]を入力してください。(何も入力せずにEnterボタンを押せば、[n]を選択した事になります。)
Rootパスワードの設定を行います
# passwd
設定するパスワードを2度入力するように求められます。
同じパスワードを2度入力してください。
ハードディスクがDMA対応であれば、DMAを有効にします。
# hdparm -d 1 /dev/hdb
ネットワーク環境の準備
IPアドレスの設定を行います。例ではIPアドレスを 192.168.1.1 に設定しています。
# ifconfig eth0 192.168.1.1
ゲートウェイの設定を行います。
例ではゲートウェイとして、192.168.1.2を指定しています。
# route add default gw 192.168.1.2
DNSを設定するために、/etc/resolv.confを以下のように編集します。
例ではDNSサーバーとして、192.168.1.3を指定しています。
nameserver 192.168.1.3
ファイルシステムの準備
fdiskを用いてパーティションの作成を行います。
# fdisk /dev/hdb
パーティションの作成については、ハードディスクの容量や用途等で千差万別と思います。
今回の場合は以下の様にパーティションを作成しました。
Device Boot Start End Blocks Id System
/dev/hdb1 1 13 104391 83 Linux
/dev/hdb2 14 30 136552+ 83 Linux
/dev/hdb3 31 2000 15824025 83 Linux
/dev/hdb4 3736 3736 13944420 83 Linux
/dev/hdb1・・・Bootパーティション
/dev/hdb2・・・Swapパーティション
/dev/hdb3・・・/ パーティション
/dev/hdb4・・・home パーティション
ファイルシステムとしてはext3を採用しました。ext3パーティションを作成します。
# mkfs.ext3 /dev/hdb1
# mkfs.ext3 /dev/hdb3
# mkfs.ext3 /dev/hdb4
スワップパーティションを作成します。
# mkswap /dev/hdb2
スワップを有効にします。
# swapon /dev/hdb2
各パーティションをマウントするためのディレクトリを作成し、マウントします。
# mount /dev/hdb3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/hdb1 /mnt/gentoo/boot
# mkdir /mnt/gentoo/home
# mount /dev/hdb4 /mnt/gentoo/home
インストール
/mnt/gentoo に移動します。
# cd /mnt/gentoo
ステージ圧縮ファイルのダウンロードを行います。
linksを用いて、ステージ圧縮ファイルをダウンロードします。
ダウンロードミラー
にアクセスし、experimental/x86/hardened/stages ディレクトリから stage1-x86-selinux-pie-ssp-20041123.tar.bz2
をダウンロードします。
保存した圧縮ファイルを展開します。
# tar -xvjpf /mnt/gentoo/stage1-x86-2004.2.tar.bz2
コンパイルオプション変更のため、/etc/make.confの編集をします。
# vim /etc/make.conf
/etc/make.confは以下のようになりました。
CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
MAKEOPTS="-j2"
chroot環境の準備のために、マウントとDNSの設定を行います。
# mount -t selinuxfs none /mnt/gentoo/selinux
# mount -t proc none /mnt/gentoo/proc
# cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
chroot環境に入ります。
# chroot /mnt/gentoo /bin/bash
# env-update
>>> Regenerating /etc/ld.so.cache...
# source /etc/profile
最新のPortage ツリーを取得を取得します。
# emerge sync
ブートストラップを実行します。
# cd /usr/portage
# scripts/bootstrap.sh
ブートストラップを実行完了後,残りのシステムをインストールします。
まずはインストールされるパッケージを確認後にインストールを実行します。
# emerge -p system
# emerge system
カーネルの設定
カーネルは2.6対応のhardened-dev-sourcesを選択しました。
# emerge hardened-dev-sources
カーネルの構築を行います。
# cd /usr/src/linux
# make menuconfig
以下のオプションを確認します。
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
General setup --->
[*] Auditing support
File systems --->
<*> Ext3 journalling file system support (If using ext3)
[*] Ext3 extended attributes
[ ] Ext3 POSIX Access Control Lists
[*] Ext3 security labels
Pseudo Filesystems --->
[*] /proc file system support
[ ] /dev file system support (EXPERIMENTAL)
[*] /dev/pts Extended Attributes
[*] /dev/pts Security Labels
[*] Virtual memory file system support (former shm fs)
Security options --->
[*] Enable different security models
[*] Socket and Networking Security Hooks
<*> Capabilities Support
[*] NSA SELinux Support
[ ] NSA SELinux boot parameter
[ ] NSA SELinux runtime disable
[*] NSA SELinux Development Support
[ ] NSA SELinux MLS policy (EXPERIMENTAL)
カーネルをコンパイルします。
# make && make modules_install
ブートイメージをコピーします。
# cp /usr/src/linux/arch/i386/boot/bzImage /boot
システムの設定
私は viエディターが好きなので、viエディターをインストールします。
# emerge app-editors/vim
タイムゾーン設定を行います。
ln -sf /usr/share/zoneinfo/Japan /etc/localtime
/etc/fstab を編集し、マウントするパーティションを設定します。
# vi /etc/fstab
編集後の/etc/fstab は以下の様になりました。
/dev/hdb1 /boot ext3 noauto,noatime 1 1
/dev/hdb3 / ext3 noatime 0 1
/dev/hdb4 /home ext3 noatime 0 2
/dev/hdb2 none swap sw 0 0
none /proc proc defaults 0 0
none /selinux selinuxfs defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
syslogとcronをインストールし、デフォルトランレベルに設定します。
# emerge metalog
# rc-update add metalog default
# emerge vixie-cron
# rc-update add vixie-cron default
ネットワークの設定をします。起動時にネットワークデバイスも起動するようにします。
# rc-update add net.eth0 default
ネットワーク起動時のIPアドレス、Gatewayを設定するために
起動オプションを編集します。編集するファイルは /etc/conf.d/net です。
iface_eth0="192.168.1.1 broadcast 192.168.1.255 netmask 255.255.255.0"
gateway="eth0/192.168.1.2"
普段作業するためのユーザーを作成し,パスワードを設定します。
またユーザーが su できるようにwheelグループへ所属させています。
# useradd hoge -m -G users,wheel -s /bin/bash
# passwd hoge
-m ホームディレクトリが存在しない場合作成される。
-G ユーザーが所属するグループのリスト
-s ログインシェルの名前
ホスト名を hoge に、ドメイン名を gside.org に設定します。
# echo hoge > /etc/hostname
# echo gside.org > /etc/dnsdomainname
キーマップと時間の設定のために /etc/rc.conf を修正します
KEYMAP="jp106"
CLOCK="local"
GRUBの設定
BOOTローダーGRUBはデフォルトでインストールされています。GRUBの設定を行います。
ここでは、GRUBをMBR(マスターブートレコード)にインストールし、Windows とデュアルブート
を行うように設定します。
# grub
grub>とプロンプトが現れるので、以下のコマンドでインストールします。
grub> root (hd1,0)
grub> setup (hd0)
/boot/grub/grub.confを編集します。今回のマシンでは以下の様になりました。
timeout 5
default 0
splashimage=(hd1,0)/boot/grub/splash.xpm.gz
title Gentoo Linux
root (hd1,0)
kernel (hd1,0)/boot/bzImage root=/dev/hdb3 gentoo=nodevfs
title Windows XP
rootnoverify (hd0,0)
makeactive
chainloader +1
# cd /etc/security/selinux/src/policy/
# make load
私の環境ではここでエラーが発生しました。カーネルとポリシーのバージョンが違うと言う
内容でした。2005/3/16現在のポリシーの最新バージョンは18ですが,LiveCDのkernelがサポートする
バージョンは16になっています。
そこで、ロードするポリシーのバージョンを指定するため、/etc/security/selinux/src/policy/Makefileを修正します。
POLICYCOMPAT = -c 16
再度ポリシーのロードを行います。
# make load
# make chroot_relabel
以上でインストールは完了です。マシンをrebootします。
# exit
# cd /
# umount /mnt/gentoo/boot
# umount /mnt/gentoo/home
# umount /mnt/gentoo/proc
# umount /mnt/gentoo/selinux
# umount /mnt/gentoo
# reboot
再起動後、もう一度ラベルを振りなおします。
# cd /etc/security/selinux/src/policy
# make relabel