28日で即戦力! サーバ技術者養成講座

サポートページ

この記事を読むのに必要な時間:およそ 0.5 分

ダウンロード

利用するファイルのダウンロード

本書の第1日,第4日,第6日,第11日目で使用するファイルをまとめたtarballが,以下からダウンロードできます。tarballについては,本書p.63をご覧ください。

なお,第11日の作業については,本パッケージ内のREADME.txtをWindows上で一時解凍して熟読の上,利用して下さい。

なお,第6日にダウンロードする評価ツール「eval」ですが,最新(2010/12/06現在)のバージョン「eval-general.13.tar.gz」を利用することもできます。

第20日全部と第21日と第22日の一部をカバーするなど,さまざまなオプションや機能が追加されていますので,こちらもご利用ください。こちらのバージョンをお使いになる場合は,以下からダウンロードし,本書の記載の「eval-general.10.tar.gz」を「eval-general.13.tar.gz」と読み替えてお使いください。

なお,本データの利用につきましては,通常の使用状態においては何の問題も発生しないことを確認しておりますが,万が一障害が発生し,その結果いかなる損害が発生したとしても,弊社および著者は何ら責任を負うものではありませんし,一切の保証をいたしかねます。必ずご自身の責任においてご利用ください。

本データは著作権法上の保護を受けています。収録されているファイルの一部あるいは全部について,いかなる方法においても無断で複写,複製,再配布することは禁じられています。 以上のことをご確認,ご了承の上,データをご利用願います。

サーバ実装操作におけるUNIX/Linux OS別のポイント

本書で解説している技術は,UNIX/Linux OSで共通に利用することができます。

ただ,サーバ実装処理を行うとき,OSによって,操作上で多少の違いがあります。

本書のサーバ実装に関係する主な操作ポイントの比較(差異)をリストアップした表が,以下からダウンロードできます。

補足情報

「サーバ技術者養成講座」よくある質問

「よくある質問」ページをご用意いたしました。こちらもご参照ください。

P.50 「第3日 2.4.1 telnet操作」

Windows Vista におけるtelnet
  • Vistaではデフォルトではtelnetが利用できない。
  • [コントロールパネル]→[プログラム追加]→[Windows機能有効化]でtelnetを追加すると利用可能になる。

P.137 「第8日 リスト22-1 SMTP-AUTHの設定と起動」

①mcの変更中に以下追加(オリジナルのコメント化)

117c119
< FEATURE(`accept_unresolvable_domains')dnl
---
> dnl FEATURE(`accept_unresolvable_domains')dnl

解説)mc中の説明にあるように,セキュリティのため,着信相手サーバ名のDNS名前解決を行う(mcデフォルトは名前解決を行う)。sendmail.def説明(P136)785行目参照。

P.142 「第8日 1.5.1 RHL9システム(サーバ)上でのメール読み出し」

リスト8-12のメール読み出し(②)を行うためには,WindowsのOutlook Expressで自分宛にメールを送るだけ(受信しない)を行っておく必要がある。

P.153 「表9-1 httpd.confの設定変更」

⑥⑦部分について,⑥372行目と⑦379行目のオリジナルからの変更は,⑥372行目または⑦379行目のどちらか一方の変更のみでよい。

P.180 「第10日 表10-1 samba構成ファイルの設定」

「③28行:アクセスを許可するクライアントの設定」

「192.168.0.」を「192.168.0」とする(最後の「.」を忘れる)と192.168.0のネットワーク上のすべてのシステムのアクセスが拒否されてしまうので注意。

また,「192.168.0.」と「127.」との間には1つ以上の空白が必要。

P.194「第10日 2.3.2 vsftpdの2つの起動方法 1 スタンドアロンモード」

①の設定の「listen=YES」を行先頭から記述しない(先頭に空白が入る)とエラーとなる。

なお,vsftpd.confのマニュアルには重要な注意として「オプション=値」で空白をはさむのはエラーである,と記述されている。つまり,行先頭が「#」ならばコメント文で無視され,その他の行では,英文字から始まるオプション,=,値,の間には空白をはさんではいけないのだが,さらに「前後(前も後ろも,行の先頭も行の最後も)」に空白をはさんでもエラーとなる。

ここで,重要な「エラー」だが,エラーであるかどうかは,スタンドアロンモード時はvsftpdがプロセスとして起動しているか,xinetdモード時は実際にアクセスして接続できるかどうか,でしかわからない。つまり,messagesをはじめとしてログには記載されないので,十分な注意が必要である。

P.210「第12日 表12-2 sshd設定ファイル(/etc/ssh/sshd_config)の編集」

sshd_configの設定①②で「no」(小文字))とすべきところを「No」(大文字)とすると,sshd起動時に以下のエラーとなる。

①"PermitRootLogin No"の場合

sshdを起動中:/etc/ssh/sshd_config line 37: Bad yes/without-password/forced-commands-only/no argument: No
[失敗]

②"PasswordAuthentication No"の場合

sshdを起動中:/etc/ssh/sshd_config line 57: Bad yes/no argument: No
[失敗]

P.214「第12日 図12-13 telnetローカルホスト接続」

この画面は,Windows 98で「ファイル名を指定して実行」の名前欄に「telnet」とだけ入力して実行(OK)したときのもの。Windows XPの場合は,同じく「ファイル名を指定して実行」の名前欄に「telnet localhost」と入力して実行(OK)するとサーバのログイン画面(リスト12-10)となる。

なお,XPのtelnetに関しては,P.193「2.3.1 Windows XP下でのtelnetの日本語表示設定」を参照。

P.247 「第14日 リスト14-4 VNCサーバの設定」

③ロケール(日本語)設定の行は「=」の前後に空白を入れてはならない。

前後どちらか一方でも空白を入れると有効にならないので注意が必要。

P.258 「第15日 iptables 1.3.1 設定例 リスト15-1」

最後のCOMMIT(テーブル発効)の文字の後ろに空白があってはいけない(空白があると,エラーとなる)。

P.268 「1.2.1 インストールのポイント」

2行目の「...はEnglishのままインストールを行い,インストール完了後に日本語モジュールを組み込みます。」のように,WinSCPのインストールを行った後に「日本語」を組み込むために,7行目のようにWinSCPインストール先フォルダ内に「WinSCP.jp」を展開する。しかし,図16-10のような日本語設定メニューが表示されず,日本語設定ができない場合がある。

例えば,何回かインストールを繰り返した場合で,アンインストールしてからインストールせずに(WinSCPが既存のシステム上で),別フォルダにインストールしたような場合である。

このような場合,WinSCP再インストール時に以下の設定を行うことで,日本語設定メニューの表示ができる。

  • 「Select Additional Tasks」画面の「■Add installation directory to search path[%PATH%]」

なお,システムの環境変数PATHにWinSCPインストール先フォルダを設定してもよい。

P.308 「リスト19-5 ログローテーション設定変更」

5行目のローテーション対象のファイル名について

/var/log/snort/*/alert と /var/log/snort/*/*log はNIC(ネットワーク・インタフェース・カード)が複数時に,/var/log/snort/下に作成されるNIC毎のサブディレクトリ内のファイル。NICが1つの時には,これらは作成されないため,ログ・ローテーション時に毎回rootにエラー・メールが通知される。(/etc/rc.d/init.d/snortd参照)

/etc/cron.daily/logrotate:
error: error accessing /var/log/snort/*: No such file or directory

P.323 DarwinStreamingServerのダウンロードについて

DarwinStreamingServer5.0.1.1がダウンロードできなくなっている(2010/8/12現在)ので,以下のようにDarwinStreamingServer 6.0.3 のソースからインストールを行う。

まずDarwinStreamingServer 6.0.3のソース(DarwinStreamingSrvr6.0.3-Source.tar)をMacOS forge(DSS公式サイト)(※1)から入手する。

また, MacOS forge のTicket #6(※2)の Attachments からLinux用のパッチ(※3)を入手する。

なお,ダウンロード時は「・dss-6.0.3.patch Downloadマーク (14.7 KB)」のDownloadマーク(小さな↓付き□)をクリックするとダウンロードできるが,このマークが見えにくく,他をクリックすると別ページ(内容表示ページ)へ飛んでしまうので特に注意を要する。

[root@dgx src]# tar -xvf DarwinStreamingSrvr6.0.3-Source.tar(ソースtarball展開)
[root@dgx src]# patch -p0 <dss-6.0.3.patch(Linux用パッチ)
[root@dgx src]# cd DarwinStreamingSrvr6.0.3-Source(ソースディレクトリへ)
[root@dgx DarwinStreamingSrvr6.0.3-Source]# ./buildtarball(バイナリtarball作成)
[root@dgx DarwinStreamingSrvr6.0.3-Source]# cd DarwinStreamingSrvr-Linux(インストールディレクトリへ)
[root@dgx DarwinStreamingSrvr-Linux]# ./Install

~以降は書籍通り,通常のインストール~

これで正常に完了するが,以下の参照(※7)でより自動的なインストール方法が紹介されている。

【参照】
※1)MacOS forge(DSS公式サイト)
http://dss.macosforge.org/
※2)MacOS forge のTicket #6 (new enhancement request)
http://dss.macosforge.org/trac/ticket/6
※3)Sverker Abrahamsson 氏作成のパッチ
http://dss.macosforge.org/trac/attachment/ticket/6/dss-6.0.3.patch
※4)Horace Hsieh 氏作成のパッチ
http://dss.macosforge.org/trac/attachment/ticket/6/dss-hh-20081021-1.patch
※5)修正インストールスクリプトInstall(by claydawg52)
http://dss.macosforge.org/trac/raw-attachment/ticket/6/Install
※6)Ubuntu インストール・スクリプト dss.sh(by claydawg52)
http://dss.macosforge.org/trac/attachment/ticket/6/dss.sh
※7)Clayton Shepard: Darwin Streaming Server 6.0.3 on Linux
http://cwshep.blogspot.com/2008/08/darwin-streaming-server-603-on-linux.html
●ファイル「Clayton_Shepard_DSS-6.0.3_source_install_on_Ubuntu」参照(Clayton Shepard: Darwin Streaming Server 6.0.3 on Linux(概要))

P.337 「第20日 XOOPSインストール後のディレクトリとメインファイルのパーミッションについて」

/var/www/html/xoopsディレクトリ内のXOOPSインストールを行うディレクトリinstallはインストール後,XOOPS運用を開始したならば不要である。したがって無用なセキュリティリスクを放置しないためにこのinstallは削除する。

また,mainfile.phpはインストール時に誰からも書き換え可能なようにパーミッションを0666にしてあるが,これもインストール後は0644に変更する。

これらについては,XOOPSインストール後に管理メニューに入った時に下記のような赤い注意メッセージで注意喚起されるのでそれにしたがう。

注意:
ファイル/var/www/html/xoops/install/がサーバ上に存在します。インストール完了後は必ず削除してください。
注意:
ファイル/var/www/html/xoops/mainfile.phpへの書き込みが可能となっています。このファイルのパーミッション設定を変更してください。

P.345 2 TSIG鍵によるDNSアクセスの確認テスト

2台のシステム間でこの確認テストを行う場合,その2台のシステムの日時が同期が取れていないと同期(sinchronization)エラーで処理が受け付けられない。あらかじめ,日時を同じにしておくか,インターネット接続可能な場合,2台のシステムがインターネット上のntp(Network Time Protocol。時間)サーバに接続して時刻同期調整しておく。

【詳細解説】TSIG時刻同期チェック処理

RFC2845(※1)で規定されているTSIG時刻同期チェックの規定で,BINDでもこれを使用している。

TSIG-RRには署名時間(タイムスタンプ「Time Signed」)とファッジ(許容時間間隔「Fudge」)が設定され,受け取り側の処理時の時間がこの許容時間外(「Time Signed」+/-「Fudge」範囲外)の場合には送受信者間の時刻同期がとれていないとしてエラーになる。

サーバ側でこの時刻同期はずれが検出された場合には,TSIGエラーコード18(BADTIME)のエラー応答をクライアントに返し(ログ=※2),クライアント側でサーバからの応答RRに時刻同期はずれを検出した場合には,タイム・エラーとする。

この時刻同期は中間者によるリプレイ攻撃などへの対策である。

したがって,双方はそれぞれNTP(Network Time Protocol)で時間を精確にしておく必要がある(※3)。

なお,ファッジは大き過ぎるとリプレイ攻撃されやすくなり,小さすぎるとNTP時刻同期失敗やネットワーク遅延などによる処理不可が発生しやすくなるので,RFC2845では「300秒(5分)」を推奨しており,BINDでもこの時間が設定されている。

※1)
RFC2845: Secret Key Transaction Authentication for DNS (TSIG)
※2)
/var/log/messagesに以下のようなエラーが記録される:
Sep 19 11:48:16 dgx named[2381]: client 192.168.0.37#1066: view intranet: request has invalid signature: TSIG dgx.example.com: tsig verify failure (BADTIME)
※3)
システム設定->「日付と時間」->「ネットワークタイムプロトコル」
■ネットワークタイムプロトコル(ntp)を有効にする(ntp)とサーバ選択

P.350「第21日 1.4 プライマリDNSとセカンダリDNS」

「リスト21-4 プライマリ/セカンダリDNS構成ファイルでのゾーン設定」
  • 【1.プライマリDNSサーバ(192.168.0.2)の/etc/named.conf】

    ここでは,プライマリDNSサーバ(192.168.0.2)からセカンダリDNSサーバ(192.168.3.2)への通知(notify)の仕組みについて触れていないが,セカンダリDNSサーバの名前解決(プライマリDNSサーバの正引きゾーンファイルの自分以外のNSレコードの右辺のホスト名の名前解決)を行って,そのホストにnotifyを行う。

    この名前解決にはhostsファイルではなく,DNSツリー構造(上位ルートネームサーバまで)による正引き問い合わせで行う。もし,この名前解決が不可能な場合()のために,明示的にnotify先を指定する方法がある。

    以下の2つの方法が可能である。

    • ①DNS上位問い合わせ自体の最初をセカンダリDNSに強制転送する
    • optionsセクションに以下の記述を加える。

      forwarders { 192.168.3.2; };
    • ②notifyでDNS検索を行わないように,notify先を明示する:
    • zoneセクションに以下の記述を加える。

      notify explicit;
      also-notify { 192.168.3.2; };
      

     上位名前解決が不可能な例

    • ①両者がローカル内で,かつ,グローバルゾーンとローカルゾーンの両方の顔を持つ場合。
    • ②相手がドメイン外にあり,プライマリDNSがファイアウォール内にありドメイン外へアクセスできない場合。

P.358「1.11.1 SMTP-AUTH方式の導入」

リスト22-1の3行目のように,CFパッケージのsendmail.defから作成(第8日)したsendmail.cfを保存しておいて,SMTP-AUTHの導入とテストを行った後,sendmail.cf.by-defをsendmail.cfに戻した場合のsendmail.cfに注意が必要。この後,sednmailを再起動する(/etc/rc.d/init.d/sendmail restart)と,自動的にsendmail.mcからmakeされてsendmail.cfが上書きされてしまう。正確には,makeのルールで,sendmail.mcの日時よりsendmail.cfの日時が古いとそうなる。/etc/rc.d/init.d/sendmail中の「make all -C /etc/mail -s」参照。

P.377 「メモ23-4 IPベースのバーチャルホスト」

"4.①オリジナルWWWサーバ(www.example.com)の設定追加(1060行目~)"
は,メイン設定(httpd.conf)の前部分で既存設定されているためここであえて設定しなくてもよい。

お詫びと訂正(正誤表)

第2刷訂正

本書(第2刷)の掲載内容に下記の誤りがございました。読者の皆様,および関係者の方々にご迷惑をおかけしましたことをお詫び申し上げます。

なお,第1刷をお持ちの方は,第1刷以降のすべての訂正・補足資料を,第2刷をお持ちの方は,第2刷(以降)のすべての訂正・補足資料を,それぞれご覧ください。


P.101 メモ7-1 インターネット上のName(名前)のRFC規定

3行目

最大24文字の英数字列で
最大255文字(ドット区切りの各ラベルは63文字)の英数字列で

P.206 1.1.5 suの無効化-手順5 4~5行目
~の6行目の最後のワード「use_uid」を削除します。
~の3行目として「pam_deny.so」モジュール認証行を追加して、root以外su使用を無効にします。

P.206 「リスト12-5」suの無効化
↓②6行目を変更する。
(変更前)#auth required /lib/security/$ISA/pam_wheel.so use_uid
-------- (変更後)auth required /lib/security/$ISA/pam_wheel.so
↓②3行目として以下の認証サービス行を追加する
auth required /lib/security/$ISA/pam_deny.so

P.210「表12-2」タイトル
sshd設定ファイル(/etc/ssh/ssd_config)の編集
sshd設定ファイル(/etc/ssh/sshd_config)の編集

P.225「リスト13-4 テスト用に自分でサイト証明書(CRT)生成」

サイト証明書の有効期間を365日に設定するパラメータを指定する。

openssl x509 -in server.csr -out server.crt -req -signkey server.key
openssl x509 -days 365 -in server.csr -out server.crt -req -signkey server.key
備考.1

224頁「リスト13-3 サイト証明書発行要求(CSR)の作成」でCSR作成と自己署名CRTを1コマンドで生成可能。

openssl req -new -x509 -days 365 -key server.key -out server.crt

この証明書でhttpdを再起動すると、以下のように,自己署名のサーバ証明書がCA証明書(他のサーバ証明書発行に利用する証明書)となる警告メッセージが表示される。

  • [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)

そこで、自己署名サーバ証明書がCA証明書とならない、つまり、単にサーバ証明書とするように、openssl設定ファイル(/usr/share/ssl/openssl.cnf)で以下のような変更を行う(オリジナルとの差異)。

[root@dgx root]# diff /usr/share/ssl/openssl.cnf.original /usr/share/ssl/openssl.cnf
229c229
< basicConstraints = CA:true
---
> basicConstraints = CA:false
※)basicConstraints
証明書の使い方を定義する。例えば、CA:TRUE は、その証明書が root CA 証明書であること。
備考.2

作成された証明書の内容は以下のコマンドで詳細表示可能

openssl x509 -noout -text -in server.crt

P.230「リスト13-14 stunnel証明書の作成」

下から3行目と2行目を訂正。

Common Name (eg, your name or your server's hostname) []:www.example.com←サーバ名
Email Address []:apache@example.com ←管理者メールアドレス
Common Name (eg, your name or your server's hostname) []:mail.example.com←サーバ名
Email Address []:postmaster@example.com ←管理者メールアドレス

P.266 「図16-1 鍵生成(鍵タイプの選択)」図中説明
SSH-2 DDSA選択
SSH-2 DSA選択

P.289 「リスト18-7」リスト中③のコマンド
more rightrsasigkey
more rightrsasigkey.lst

P.290「リスト18-9」

解説行②2行目

ルをそのまま,DNS逆引きゾーンファイルのKEYレコード…
ルを③のように編集して,DNS逆引きゾーンファイルのKEYレコード…

解説行③

more dnskey.lst ③KEYレコードの内容
vi dnskey.lst ③2行目の第1フィールド(サーバ名)を削除して以下のように編集する。

解説行⑧

…(リスト18-3)と同じ
…(リスト18-5)と同じ

P.304「1.1.2 スニファ・モード」2行目
snortのFAQ(How do I run snort? 節末のFAQ…
snortのFAQ(How do I run snort?P303[備考]関連URLのFAQ…

P.336「リスト20-5 MySQL動作環境の設定」
chmod 0600 /etc/my.cnf      ←②パーミッション(管理者のみの読み書き属性)設定
chmod 0600 /etc/my.cnf      ←②パーミッション(管理者のみの読み書き属性)設定
chown mysql.mysql /var/lib/mysql/mysql     ←②'mysqlディレクトリ所有者/グループ設定

P.359「リスト22-1」リスト中5行目
> DAEMON_OPTIONS(`Port=smtp, Name=MSA, M=E')
> DAEMON_OPTIONS(`Port=smtp, Name=MTA')

P.361「リスト22-2「sasldb作成による送受信別ユーザによる認証」解説行③
③クライアントで送受信者別アカウントを設定…
sendmailを再起動してから,クライアントで送受信者別アカウントを設定…

P.376「メモ23-3 バーチャルホストの設定」2.④
ServerName www.network-mentor.com:80
ServerName www.example.com:80

P.377「メモ23-4 IPベースのバーチャルホスト」4.①
ServerName www.network-mentor.com:80
ServerName www.example.com:80

第1刷訂正

本書(第1刷)の掲載内容に下記の誤りがございました。読者の皆様,および関係者の方々にご迷惑をおかけしましたことをお詫び申し上げます。


P.89 【備考】カーネルとxinetdのダウンロードサイト

囲み全体を以下のように修正

以下からダウンロードする(「ftp:」は「http:」でもよい)。

  • Linux-Kernel
    (マシンタイプは,i386,i586,i686のいずれかとなる。Linuxリリースとマシンタイプに応じて,以下の下線部分を適宜変更する
    http://archive.download.redhat.com/pub/
    redhat/linux/updates/9/en/os/i586/kernel-2.4.20-28.9.i586.rpm
  • xinetd
    http://archive.download.redhat.com/pub/redhat/linux/updates/9/en/
    os/i386/xinetd-2.3.11-1.9.0.i386.rpm

P.108「リスト7-3 h2nのパッケージ(bind-contribパッケージ)の準備(入手と解凍)」

下から6行目:「.」を空白をあけて入力

mv ../bind-contrib.tar.gz.
mv ../bind-contrib.tar.gz .

P.113 「第7日 備考 ゾーンファイル」

最終行-

なお,最新のh2では…
なお,最新のh2nでは…

P.139 「リスト8-8②データベース有効化」

以下の行

</etc/mail/sendmail.spamlist

もゴシック(前行の続きの入力文字列を表す)となる


P.226 「第13日 リスト13-7 httpd.confの設定変更」

273行目を変更,の部分

ServerName wwww.example.com:80
ServerName www.example.com:80

P.332 「第20日 2 データベースサーバ」の前段

前段(「2.1MySQL利用環境の設定」の前)に以下を追加する。

最初に,「/usr/bin/mysql_install_db」スクリプト・コマンドにより,権限管理の mysql データベースとテスト用の test データベース,root ユーザの権限エントリなどを作成します。

P.349 「第21日 1.3 サブドメインのメールサーバの設定」
  • 外向けDNS正引きゾーンファイルのMX-RR
; Wild Card MX
*	IN MX 10 mail.example.com.
; MX for domain itself
@	IN MX 10 mail.example.com.
; Wild Card MX for subdomains
*	IN MX 10 mail.example.com.

P.350 「第21日 リスト21-4プライマリ/セカンダリDNS構成ファイルでのゾーン設定」

「④ゾーン転送先(スレーブ)IPアドレス」の行

allow-transfer { 192.168.3.2 };
allow-transfer { 192.168.3.2; };

「⑧ゾーン転送先(スレーブ)IPアドレス」の行

allow-transfer { 192.168.3.2 };
allow-transfer { 192.168.3.2; };

P.364 「第22日 1.3.2 設定 1 外向けDNSのMXレコード」
  • 外向けDNS正引きゾーンファイルglobal/db.exampleのMX-RR
*	IN MX 10 dns.example.com.
@	IN MX 10 dns.example.com.
*	IN MX 10 dns.example.com.