メニュー 蕭寥亭 検索

自宅サーバ

4. libretto ff1100 : Vine Linux 4.1・まず最初に

 前回( 3. libretto ff1100 : Vine Linux 4.1 インストール )は Vine Linux 4.1 をインストールして起動を確認するまででしたが、今回はその後、わたしがインストール直後にしている設定について。

 新しいOSをインストールしたら、すぐにいろいろいじりたくなるのが人情というものですが、そこをグッとこらえて、まず、しておいた方がいいんじゃないかな、ってなことを書いてみます。書いておかんとわたしも忘れるし・・・。

 今回も内容的にはあんまり信用できないわけですが、とりあえず。

1.文字化け対策

 libretto ff1100 へ Vine をインストールした時に、ブートローダの設定で文字化け対応のオプションを指定していない場合は、おそらくコンソール画面で日本語が文字化けするはずです。

 どんな風に?

 こんな風に。

ブート・オプション設定前の日本語表示

 楔形文字とハングルをデタラメに混ぜたような状態になっていますが、もちろん日本語で書かれたもので、 Vine Linux 4.1 のインストールCDに入っているリリース案内のテキスト・ファイル RELEASE-NOTES.euc を、less で表示させてみた時のコンソール画面です。これではメッセージが全然読めず、後の作業に支障をきたしますので、真っ先に対処します。

 前回も書きましたが、テキスト・エディタで /boot/grub/menu.lst を編集してブート・オプションを追加し、再起動することで正常な日本語表示が可能になります。ここでエディタに vi とか使えるとカッコよいのですが、ヌルいわたしは使いやすい jed を使います。

# jed /boot/grub/menu.lst

 これで jed が起ち上がり、編集画面になります(下の画像)。

jed:/boot/grub/menu.lst の編集

 Vine Linux 4.0 になってブートローダが lilo から grub に変更され、設定の書き方も変わりましたが、ここでは " vga=0x301" というオプションを追加する(上の画像赤枠部分)だけなのであまり頭をひねらなくても済みました。追加したら保存して jed を終了させます。

 lilo.conf を書き換えたら lilo コマンドで設定を更新する必要がある lilo と違い、grub は menu.lst を変更するだけで設定が更新されますので、すぐに再起動させます。

 再起動後、もう一度 RELEASE-NOTES.euc をコンソール画面で表示させると、

ブート・オプション設定後の日本語表示

 これで日本語が正常に表示されるようになりました。

2.アップデート

 セキュリティ上の観点からアップデートは必須です。インストール後、速やかに実行し、その後も定期的に行うことが必要です。

 アップデートには APT を使います(基本的にアップデートはインターネットに接続できる状態になっていることが必要ですが、前回、インストール自体をネット経由でしているので、そのへんの設定はできているという前提で話を進めます)。APT はアップデートの他、ソフトウェア・パッケージのインストール・削除・検索にも使われる管理ツールです。詳細は Vine Linux のマニュアル を参照してください。

 最初は下記のコマンドで、ソフトウェア・パッケージの情報データベースを更新することから。

# apt-get update

 そうすると、

apt-get update の実行

 以上のような表示が出て、データベースが最新の状態に更新され、その情報を元に更新すべきソフトウェア・パッケージが判断されます。

 次に下記のコマンドで、更新が必要なソフトウェア・パッケージのアップグレードを行います。

# apt-get upgrade

 更新すべきソフトウェア・パッケージがある場合はその旨表示され、続行するか否か確認を求めてきます(ない場合は終了します)ので、リターンキーか "Y" キーを押すことで処理が続行します(下の画像)。

apt-get upgrade の実行・1

 続行を選ぶと、必要ファイルのダウンロードが始まり、それが終わると順次新しいソフトウェア・パッケージがインストールされていきます(下の画像)。

apt-get upgrade の実行・2

 最後に "完了" と表示されてアップグレードが終了します(下の画像)。

apt-get upgrade の実行・3

 ただし、カーネルについては他のソフトウェア・パッケージとは別に、選択するパッケージを明示的に指定してアップグレードする必要があります。

 カーネルをアップグレードする場合は、まず下記のコマンドでインストール可能なカーネルパッケージの候補を確認します。

# apt-cache show kernel

 インストール可能なカーネルパッケージのリストが表示されています(下の画像・赤枠部分)。

apt-cache show kernel の実行

 必要であれば下記のコマンドで、現在インストールされているカーネルパッケージも確認します。

# rpm -q kernel

 現在インストールされているカーネルパッケージが表示されています(下の画像・赤枠部分)。

rpm -q kernel の実行

 確認したらバージョンを指定して、必要なカーネルパッケージをインストールします。下記のコマンドは apt-cache show kernel で確認したカーネルパッケージのリストから最新の 2.6.16-0vl73 をインストールする場合の例です。

# apt-get install kernel#2.6.16-0vl73

 実際に使用する場合は "#" 以下の部分にインストールしたいカーネルパッケージのバージョンを指定します。

 コマンドを実行するとダウンロード・インストールの処理に入り、最後に "完了" と表示されてアップグレードが終了します(下の画像)。

apt-get install kernel の実行

 ・・・ただし、単に "apt-get install kernel" だけでカーネルパッケージのバージョンを指定しなくても、勝手に最新パッケージを選択してインストールしてくれるようですが・・・(下の画像)。

カーネルパッケージのバージョンを指定せずに apt-get install kernel を実行

 ともあれ、アップグレードが終了したら、システムを再起動しアップグレードを反映させます。

3.不要なデーモンの停止

 Linux の初心者向け案内などを読むと、たいがい「セキュリティ上、不要なデーモン(常駐しているサーバー・ソフトのこと)は停止しておくこと」という注意が書いてあります。でも、具体的にどれとどれを停めればいいかについてはあまりはっきりとは書いていないことが多く、初心者にとっては困惑してしまうところです。私も最初の頃は「んなこと言ったって、どれが不要なんだかさっぱりわかんないよ~(泣)」と半分投げてました。

 初期状態で動いているデーモンはディストリビューションによって違いますし、同じディストリビューションでもインストール・タイプが違えばインストールされるソフトも違うのでデーモンも同じ組み合わせで動いているとは限りません。だから、どれが不要かはっきりと指摘できないのはしかたないトコなんでしょうが、そういう事情がよくわからないのが初心者というものだし。

 参考までに Vine Linux 4.1 をインストールの種類を "Server" にした場合、初期状態で登録されているデーモンは下記の通り。インストール直後の段階ではわたしはそれらのほとんどを使わないので、名称・機能が赤字で記載されているもの以外全部とりあえず停止することにしています。機能の説明はいい加減なんで、そのつもりで。

名称 機能
acpid 電源その他ハードウェア管理。
anacron 定期的に実行されるコマンドスケジューラ。crond を補完する機能を持つ。
apache2 Web サーバー。
atd 指定時間にコマンド実行を行う。at コマンドを使用したい場合に利用。
autofs Automatic File System。/etc/auto.master 設定ファイルを参照し、自動的にファイルシステムをマウントする。
avahi-daemon DNS サービス・ディスカバリー(マルチキャスト)。
avahi-dnsconfd DNS サービス・ディスカバリー(ユニキャスト)。
cpuspeed システムのアイドル比率に応じ、CPUの動作周波数を上下させて消費電力を最小化する。
crond プログラムを指定した時間に定期的に実行する。
cups 標準印刷システム。
haldaemon ハードウェア情報を収集する。
iptables パケットフィルタ。
irqbalance マルチCPU環境で複数CPU割り込みを行うためのツール。
keytable /etc/sysconfig/keyboard を参照し,キーボードマップを読み込む。
kudzu ハードウェア設定ツール。
mdmonitor ソフトウェアRAIDのモニター。
mdmpd ソフトウェアRAIDのモニター(マルチパスデバイス対応)。
messagebus アプリケーション間のメッセージを送るデーモン。
netfs NFS 等のマウントポイントのマウント、アンマウントを行う。
network ネットワークインターフェース設定。
nfs ファイル共有システム。NFS 。
nfslock 必要に応じて NFS のファイルをロックする。
nscd ネームサービスキャッシュ。
portmap RPC プログラム番号を TCP/IP ポート番号に変換する。NFS で使用。
postfix メールサーバー
pppoe PPPoE 接続サービス。
random 乱数を発生させる。
rdisc ルーター検索デーモン。
rsync ファイル同期サーバー。
saslauthd 認証デーモン。
sshd セキュアシェルデーモン。
syslog システムログを記録する。
xfs X フォントサーバー。
ypbind NIS 接続サービス。

 ただし、初期状態でシステム・スタート時に起動される設定になっているのは、上記の一部だけです。これらのデーモンをシステム・スタート時に起動する・しないを設定するには ntsysv コマンドを使います。

# ntsysv ntsysv の設定画面

 使い方は上下のカーソルキーで対象とするデーモンを選び、スペースキーで設定。カッコ内に "*" が表示されたデーモンがシステム・スタート時に起動されます。タブキーで "完了" に移ってからエンターキーを押すと設定が保存されて終了します。

 ntsysv での設定が終了したらシステムを再起動。設定が反映されます。

 個々のデーモンをすぐに起動・停止したい場合は sevice コマンドを使います。

# sevice [デーモンの名称] start
# sevice [デーモンの名称] stop

 デーモンの名称は ntsysv で表示されるものと同じです。オプションが start なら起動、stop なら停止です。また、

# /etc/init.d/[デーモンの名称] start
# /etc/init.d/[デーモンの名称] stop

でもデーモンの起動・停止ができます。むしろ、こちらが一般的かもしれません。

 で、例えば、apache2 を停止させる場合は

# sevice apache2 stop

か、あるいは

# /etc/init.d/apache2 stop

となります。

4.ユーザー作成と su の制限

 Vine Linux 4.x ではテキスト・インストールの際、3.x まではあった一般ユーザー作成の工程が省かれました。セキュリティ上、通常作業は一般ユーザーで行い、必要がある場合のみコマンド su で root になるようにと、これまた Linux の初心者向け案内によく書いてありますが、使える一般ユーザーがないんじゃ、しょうがないですわね。ということで一般ユーザーを作成します。

 例として新規に一般ユーザー "dareka" を作成します。

# useradd dareka

 これでユーザー "dareka" は作成されましたが、まだパスワードがない状態なので設定します。

# passwd dareka passwd

 パスワードが設定できたら作成した一般ユーザーで改めてログインしてみます。

一般ユーザーでログイン

 ホーム・ディレクトリは /home/[ユーザ名] になります。

 以後、通常は一般ユーザーでログインし、ルート権限が必要な時だけコマンド su で root になるようにしますが、どの一般ユーザーでも root になれるというのはセキュリティ上問題があるので、制限をかけときます。

 まずはテキスト・エディタで /etc/login.defs にそのための設定を追加します。

# jed /etc/login.defs

 ファイルの最後に "SU_WHEEL_ONLY yes" を追加します(下の画像赤枠部分)。

login.defs の編集

 できたら続けて /etc/group を編集します。

group の編集

 11行目にある "wheel:x:10:root" の次にカンマで区切って root 権限を与える一般ユーザーを指定します。この例では ",dareka" を追加しています(上の画像赤枠部分)。

 さらに /etc/pam.d/su をテキスト・エディタで開き、6行目の "#auth required pam_wheel.so use_uid" から "#" を削除してこの行を有効にします。

su の編集

 これで完了です。できたら root 権限を与えた一般ユーザーと与えていない一般ユーザーの両方で

$ su -

を使い、制限が有効になっているかどうか確認します。

5.時刻合わせ

 パソコンに内蔵されているシステム時計って意外に不正確で、ウチのサーバー機は1日に10秒弱早くなってしまいます。ウチのサーバー機・ libretto ff1100 がお古だからってのもあるでしょうが。

 それはともかく、放っておくとどんどん時間記録が信頼できないものになってしまいますから、定期的に時刻合わせをするようにしたいものです。

 時刻合わせをする方法はいくつかあります。電話で時報を聞いてそれをキーボードから入力してもいいわけですが、それじゃいくらなんでもあんまりなので NTP サーバーから NTP で正確な現在時刻を取得して修正することにしています。NTP とは Network Time Protocol の略で、ネットワークに接続される機器の時刻同期のためのプロトコルです。

 ただし、Vine 4.1 のインストールの種類を "Server" にしていた場合、NTP のパッケージは省かれていますので、APT で追加インストールする必要があります。

# apt-get install ntp

 インストールできたらコマンド ntpdate でオプションに NTP サーバーをホスト名もしくは IP アドレスで指定して、現在時刻を取得・修正します。NTP サーバーはプロバイダが加入者向けに提供していればそれを使えばいいのですが、提供していない場合は公開されている NTP サーバーを使います。検索すればいろいろ見つかると思います。ここでは 情報通信研究機構 が提供している NTP サーバーを使ってみます。

# /usr/sbin/ntpdate ntp.nict.jp

 なお、コマンド ntpdate で修正されるのは Linux のカーネルが管理している時刻だけで、ハードウエアが管理している CMOS の時刻はそのままです。ついでにコマンド hwclock を使ってそちらも合わせます。

# /usr/sbin/hwclock --systohc ntpdate と hwclock

 これで時刻合わせはできたわけですが、ほっとくとまたどんどんズレていってしまいますから、以後も定期的に合わせなければなりません。今回のように手でコマンド打ってやってもいいのですが、それはちょっとメンドくさい・・・。そういう時には cron です。初期状態で登録されているデーモンの中に crond というのがありますが、それを使います。では crond はすでに常駐させているという前提で簡単に説明を。

 手順としては crond への命令を記載した所定のファイル /var/spool/cron/root を編集するだけです。

# jed /var/spool/cron/root

 書式は1行に  分 時 日 月 曜日 コマンド  の順に各項目を書いていき、各項目の間にはスペースを入れて区切ります。コマンドを除く各項目は、コマンドを実行させたい月日時分曜日に相当する数字(曜日は 0 [日] ~ 6 [土] )もしくはすべてを意味する "*" で指定します。

 上の例では、毎月毎日各曜日の午前1時30分に ntpdate と hwclock を実行させる設定になっています。これを保存すれば後は crond が自動的に時刻あわせをしてくれるはずです。

6.iptables に注意

 前回も掲載しましたが Vine Linux 4.x をインストールする際、"ファイアウォールを有効にする" を選択した場合、デフォルトで適用されるフィルタリングルールは下記の通りになります。

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

 これの詳細についての説明は省略させていただきますが、外部(LANの中と外とを問わず)からのアクセスは基本的に拒否するようになっています。これをこのままにしておくと、apache2 や postfix 、samba といった主要なサーバー・ソフトウェアが提供するサービスが、クライアントからはことごとく利用できません。「設定は完璧なはずなのに、どうして使えないんだろう・・・(泣)」ってなことになるわけです。なので、必要に応じてアクセス許可の設定をしておくことをお忘れなく。