Linuxサーバ運用マニュアル

第10話「ユーザの登録,削除が必要なときは?」

サーバを運用していると,新しいユーザの登録作業は必ず発生します。

しかし,ユーザを登録すると言っても,単純にadduserなどで登録するだけでは不十分です。 1口にユーザといっても,それぞれ立場は異なっているため,サーバのセキュリティポリシーなどにもよりますが, ただ登録しただけではログインすらできないこともあります。 そのユーザに提供するサービスを明確にし,そのための設定もしなければなりません。
また,それらの作業をいいかげんにしていると,ユーザの状態を管理することも困難になりますし, セキュリティ上で,思わぬ危険をまねくことにもなりかねません。 ユーザを登録するときには,それに関連してやっておくべき作業はすべてやってしまうべきです。

そこで今回は,ユーザ登録時に行うべき作業について解説します。サーバ構築時に設定すべきこともありますが, ユーザ登録に関連することでもありますし,ひととおり解説することにします。

なお,ゲートウェイ・マシンにもユーザを作る場合がありますが, 通常の運用では,ユーザはサーバに対して作るものです。 セキュリティ上,ゲートウェイ・マシンには,ごく限られた管理用のユーザ以外作るべきではありません。

台帳に記入する

そのユーザがどのようなユーザかを決定し,ユーザ台帳に必要な項目を記入します。 具体的には,表計算ソフトなどを使用して管理するのが簡単でいいでしょう。 そのユーザに対して提供するサービスなどについても記入し,認識しておくことが重要です。

記入内容の例

なお,これらの情報は秘匿すべきものなので, サーバには置くべきではありません。 そして,ハードディスクではなく,MOなどの外部メディアに保存し,管理するべきです。

コマンドでユーザを作る

telnetログインしてスーパーユーザになってコマンドを入力します。 特に問題になるようなことはありませんが,記入ミスなどのないようにしましょう。

Linux# adduser

ユーザ台帳に記入した通りの設定でユーザを登録します。

ホストアクセスについての設定

そのユーザがtelnetやftpを必要としているなら設定が必要になります。 ホームページを作るのであれば,まずftpは必要になるでしょう。 なお,ローカルネットからのアクセスの場合には不要ですが, 外部プロバイダからアクセスする場合には必ず必要な設定です。

hosts.allow(許可情報)とhosts.deny(禁止情報)によって設定されます。 セキュリティ上,『host.allowで許可したもの以外は全て禁止する』というコンセプトで運用するべきなので, hosts.denyはすべて禁止する設定にしておき,hosts.allowに許可情報を追加するという方針で解説します。

まず,ローカルネット内部からのアクセスを認めるための設定を紹介します。

設定例
all: .ash.or.jp
all: 10.0.1.
all: localhost

そして,外部プロバイダなどからftp,pop,telnetなどのアクセスを行う場合には, ゲートウェイ,サーバ,双方のhosts.allowに記述を追加してやる必要があります。 サーバ側は当然必要ですし,ゲートウェイ側にも,中継しているDeleGateに対するアクセスを許可してやる必要があるわけです。

セキュリティのことを考えると,プロバイダ名だけでなく,アクセスポイントまで限定したいところです。 特にtelnetについては,許可するユーザもなるべく限定し,設定も厳しくするべきです。

サーバ側の設定例
in.telnetd: .point.network.ne.jp
wu.ftpd: .point.network.ne.jp
in.popd: .jp

.point.network.ne.jpなどと書いてありますが,pointは,架空のアクセスポイント,networkは架空のドメイン名です。 実際には,許可するユーザが使用しているドメイン名などを記述します。 この例では,popについては,国内からのアクセスは認める設定になっています。

ゲートウェイ側の設定例
telnetgate: .point.network.ne.jp
ftpgate: .point.network.ne.jp
popgate: .jp

telnetgate,ftpgate,popgateは,それぞれ,telnet,ftp,popを中継するDeleGateです。 後は,基本的にサーバ側と基本的に同じ設定です。

loginに関する設定

そのユーザがtelnetを必要としているならlogin.accessを設定します。 ローカルネットからのアクセスであってもこの設定は必要になるので注意が必要です。 loginに関する設定は,
/etc/login.access
に記述します。

login.accessは,具体的には以下のような形式で記述します。

許可情報:ユーザー:アクセス元
許可情報
+(許可する)と-(許可しない)のどちらか。
ユーザー名
ユーザ名,または,グループ名を指定する。 グループ名で管理する方がわかりやすいでしょう。
アクセス元
console 本体のキーボード
LOCAL ローカルネット内
ALL どこでも
など

また,ユーザー名,アクセス元,ともに, EXCEPTと書くことで,それ以後を例外とすることができます。

login.accessの設定例
-:ALL EXCEPT wheel root:console

この例の場合コンソールからのログインは,全てのユーザ(wheelとroot以外)について不許可。 つまり,rootとwheel以外は,コンソールログインを禁止するという意味です。

ただし,login.accessではグループに対して許可を与え, 特定のユーザにアクセスを許可するときには,
/etc/group
を修正して,アクセスを許可しているグループにそのユーザを追加する方が,運用がわかりやすくなるのでいいでしょう。

linux# vi /etc/group

sendmailについての設定

メールを受信するためのpopは,DeleGateの設定で行うので,これは 外部プロバイダから,サーバにログインして,そこからメールを出すための設定です。

まずユーザに対して許可を出すために,
/etc/sendmail.roamusers
に許可するユーザを追加します。

次に,接続先に対する許可を設定します。 IPで指定するの場合は,
/etc/sendmail.roamip
ドメイン名で指定する場合は,
/etc/sendmail.roamdomain
に,許可するアドレス(IP)を追加します。 なお,この場合でも,アクセスポイントまで限定して記述するべきでしょう。
これらのファイルには,特別な記述方法はなく,ごく単純にアドレスやユーザ名を並べるだけでOKです。 なお,これらはsendmail.cf内で定義されています。

ホームページ領域の設定

2重化作業などを行うため,各ユーザのホームページ領域は, 一個所にまとめておく設定にしたいところです。 また,不注意にCGIを使うのはセキュリティ上,非常に危険なので,特定の信頼できるユーザにしか, CGIを使わせたくはありません。 そこで,apacheのルートディレクトリ下に,HTML用とCGI用の領域を作り, 各ユーザのホームページデータなども全てここに置くことにします。 CGIについては,このCGI領域でしか動作できない設定にします。
また,各ユーザが自分のホームページ領域にアクセスしやすくするためと,
http://ash.or.jp/~ユーザ名/
でホームページを見ることができるようにするために, 各ユーザのホームディレクトリから, HTML領域へシンボリックリンクをはります。

このような作業を行わなくても,ユーザのホームディレクトリにpublic_htmlを作るだけでもホームページは公開できます。 ただし,バックアップ作業に余計な手間が必要になりますし,CGIを制限することが困難になります。

具体的な作業は以下の通りです。

HTML領域を作る

ユーザ用のHTML領域を
/usr/local/apache/htm/usr
とし,ユーザ名はhasimoto,グループはash-gとします。

linux# cd /usr/local/apache/htm/usr
linux# mkdir hasimoto

次に,chownコマンドで,ディレクトリのオーナーを変更します。 オーナーを変更しないと,そのユーザがホームページを作れなくなります。 chownコマンドは,
chown [オーナー].[グループ名][ディレクトリ名]
という形式で用います。

linux# chown hasimoto.ash-g hasimoto

次に,そのユーザのホームディレクトリから,apacheのユーザ領域に,シンボリックリンクをはります。

linux# cd ~hasimoto
linux# ln -s  /usr/local/apache/htm/usr/hasimoto public_html

ダミーのindex.html(簡単なテキストでOKでしょう)を作り, 動作確認をします。

linux# su hasimoto
linux# cd /usr/local/apache/htm/usr/hasimoto/
linux# vi index.html

ブラウザを立ち上げ,
http://ash.or.jp/~hasimoto/
というURLでページが表示されることを確認します。

CGI領域を作る

必要であれば,CGI領域を作ります。
ユーザのCGI領域を
/usr/local/apache/cgi/usr(apacheの設定によって異なります)
とし,ユーザ名はhasimoto,グループはash-gとします。

linux# cd /usr/local/apache/cgi/usr
linux# mkdir hasimoto

次に,chownコマンドで,ディレクトリのオーナーを変更します。 オーナーを変更しないと,そのユーザがCGIファイルを作れなくなります。

linux# chown hasimoto.ash-g hasimoto

次回予告

サーバを運用するには,DNSなどの設定が欠かせませんし,また,それの変更もしなければなりません。
と,いうわけで次回は「ホストの追加,削除が必要なときは?」です。

(ASHマルチメディア研究会/joe,はしもと)