<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>自宅サーバ構築Fedora core4編</title>
    <link>http://www.fedoraz.com/</link>
    <description>Linux(Fedora Core4)でのウェブサーバ、メールサーバ、FTPサーバー等の構築方法を紹介。回線・サーバの冗長化についても。</description>
    <!-- optional tags -->
    <language>ja</language>           <!-- valid langugae goes here -->
    <generator>Nucleus CMS v3.21</generator>
    <copyright>ｩ</copyright>             <!-- Copyright notice -->
    <category>Weblog</category>
    <docs>http://backend.userland.com/rss</docs>
    <image>
      <url>http://www.fedoraz.com//nucleus/nucleus2.gif</url>
      <title>自宅サーバ構築Fedora core4編</title>
      <link>http://www.fedoraz.com/</link>
    </image>
    <item>
 <title><![CDATA[01 SSHを鍵交換方式に]]></title>
 <link>http://www.fedoraz.com/index.php?itemid=18</link>
<description><![CDATA[SSHの認証方法をパスワード式から鍵交換方式に変更<img src="media/new.gif"><h3>鍵交換方式のメリット</h3>
　SSHの認証方法がパスワード式だと、パスワードを総当たりでアタックしてくるツールもあるようで、万が一ということもあります。また、本人がパスワードを忘れてしまったり、あるいは忘れないようにモニタの横にメモを貼っていたりというセキュリティ上問題なケースもあります。<br>
　そこでより安全な鍵交換方式（公開鍵と秘密鍵を使う方式）に変更します。鍵交換方式はサーバにクライアントPCの公開鍵を登録しておき、クライアントPCの秘密鍵と照合して認証します。パスワードを併用することもできますが（鍵＋パスワード）、後にSCPやRSYNCを用いたほかのサーバへの自動バックアップを設定する時に利便性が高いので、鍵のみ（パスワードなし）の認証方法をとります。

<h3>暗号鍵（公開鍵と秘密鍵）の作成</h3>
クライアントPCで公開鍵と秘密鍵を作成し、そのうち公開鍵をサーバに登録しておきます。<br>
OSやSSHクライアントソフトによって作成方法が異なりますので、詳しくはお使いのSSHクライアントソフトのマニュアルやヘルプを参照してください。<br>
ここでは例としてLinux(Fedora)での作成方法と、Mac（実は隠れマカーなので）での作成方法を紹介します。Windowsの場合は「windows sshクライアント」でググってお調べください。

<h4>Linux(Fedora)での作成方法</h4>
下記操作はサーバではなく、<font color=RED>クライアント側のLinux</font>での操作です。お間違えなく。
<blockquote>
cd 　※ホームディレクトリに移動（ルートなら/root）<br>
ssh-keygen -t rsa　※対話的に鍵を作成するコマンド<br><br>
Generating public/private rsa key pair.<br>
Enter file in which to save the key (/root/.ssh/id_rsa): （enter)<br>
Enter passphrase (empty for no passphrase): (enter)　※パスワードなし<br>
Enter same passphrase again: (enter)　※パスワードなし<br><br>
すると下記のようなメッセージが表示されます。<br>
Your identification has been saved in /root/.ssh/id_rsa.<br>
Your public key has been saved in /root/.ssh/id_rsa.pub.<br>
The key fingerprint is:<b4>
69:91:33:f8:8f:1b:8e:25:52:63:ea:cf:52:fe:00:b8 root@client.network.domain
</blockquote>

<h4>Mac osXでの作成方法</h4>
osXはUNIXベースなので上記のLinuxでの方法と同じやり方でできます。アプリケーション/ユーティリティにある「ターミナル.app」を使用します。
<blockquote>
cd 　※ホームディレクトリに移動<br>
ssh-keygen -t rsa　※対話的に鍵を作成するコマンド<br><br>
Generating public/private rsa key pair.<br>
Enter file in which to save the key (/home/fedoraz/.ssh/id_rsa): （enter)<br>
Enter passphrase (empty for no passphrase): (enter)　※パスワードなし<br>
Enter same passphrase again: (enter)　※パスワードなし<br><br>
すると下記のようなメッセージが表示されます。<br>
Your identification has been saved in /home/fedoraz/.ssh/id_rsa.<br>
Your public key has been saved in /home/fedoraz/.ssh/id_rsa.pub.<br>
The key fingerprint is:<b4>
69:91:33:f8:8f:1b:8e:25:52:63:ea:cf:52:fe:00:b8 fedoraz@macBook.local
</blockquote>

これで[ホームディレクトリ]/.ssh/内に秘密鍵（id_rsa）と公開鍵(id_rsa.pub）が作成されます。鍵の名称は任意のものに変更可能です。

<h3>公開鍵の登録</h3>
作成した公開鍵をサーバに登録しておきます。公開鍵はSCPやFTPなどで送ってもいいですし、単なる文字列なのでコピペでもOKです。<br>
登録するファイルはユーザーのホームディレクトリ/.ssh/authorized_keysです。もしこのファイルがなければ作成します。
<blockquote>
cd　※/home/fedorazに移動<br>
mkdir .ssh<br>
touch .ssh/authorized_keys　※登録ファイル作成（なければ）<br>　
<br>
■id_rsa.pubをFTPやSCPで転送した場合<br>
cat id_rsa.pub >> .ssh/authorized_keys<br>
<br>
■コピペで済ます場合（id_rsa.pubを開いて文字列をコピーしてから）<br>
pico .ssh/authorized_keys<br>
最終行にペースト<br>
改行された場合は必ず改行を削除（一行にする）<br>
ctl+o→ctl+x→yes
</blockquote>
これで公開鍵がサーバに登録されました。<br>
<br>
※SCPでの転送のやり方<br>
クライアントで、scp (-P ポート番号） ファイル名 ユーザ名@サーバ名：ディレクトリ<br>
<blockquote>
scp -P 12345 id_rsa.pub fedoraz@www.fedoraz.com:
</blockquote>
"-P"は大文字です。ポート番号はサーバでSSH用に開けているポートを指定します。省略すれば22番を使用します。上記例だと/home/fedorazディレクトにid_rsa.pubを送り込みます。ディレクトを省略すればホームディレクトリになりますが、その場合でも最後の":"は省略してはいけません。<br>


<h3>SSHサーバの設定変更</h3>
SSHサーバは引き続きOpenSSHを使用します。<br>
openサーバの設定変更は極簡単で、いくつかの値を変更するだけです。ファイルは/etc/ssh/sshd_configになります。

<h4>鍵交換方式の認証方法を許可</h4>
<blockquote>
# pico /etc/ssh/sshd_config<br><br>

RSAAuthentication yes   →行頭の#をはずす。値は'yes'<br>
PubkeyAuthentication yes   →行頭の#をはずす。値は'yes'<br>
AuthorizedKeysFile      .ssh/authorized_keys　変更なし
</blockquote>

<h4>パスワード方式の認証方法を使用できなくする</h4>
<blockquote>
PasswordAuthentication no　→値を'no'に
</blockquote>

上記の設定で、パスワードではログインできなくなります。<br>
もしリモートで上記設定変更を行っていて、なにかミスがあった場合<font color=RED>二度と接続できなくなる</font>ので、サーバが目の前にない場合は<font color=RED>今のセッションを継続したまま新たに別のセッションを結んで</font>sshサーバを再起動してください。<br>

<blockquote>
/etc/init.d/sshd restart
</blockquote>

<h3>鍵交換方式でのssh接続方法</h3>
クライアント側の設定により、サーバへのssh接続がとても簡単になります。<br>
クライアントPCのホームディレクト/.ssh/config　というファイルに下記のように記述しておきます。

<blockquote>
# pico .ssh/config<br>
<br>
HOST FED1　　※任意の短い名称<br>
 HostName www.fedoraz.com　※サーバ名<br>
 User fedoraz　※サーバでのユーザ名<br>
 port   12345　※もし22番ポートから変更していたら<br>
 CheckHostIP no<br>
 IdentityFile ~/.ssh/id_rsa　　※クライアントPCでの秘密鍵の場所<br>
</blockquote>

このように設定しておくと、サーバへの接続が下記のようなコマンドで済みます。
<blockquote>
ssh FED1
</blockquote>
パスワードなしに設定してあるので、すぐにログイン状態になります。<br>
これはサーバ間のssh接続時にも有効で、sshを利用する通信、例えばscpなどでも使えます。前述のscpでの転送では、<br>
scp -P 12345 id_rsa.pub fedoraz@www.fedoraz.com:<br>
と記述していたのが、<br>
scp id_rsa.pub FED1:<br>
でOKです。これをシェルスクリプトとして用意しておき、cronで定期的に動かせば、自動バックアップができます。<br>
（実際にはscpではなくrsyncを利用することになるかと思いますが。）

]]></description>
 <category>level2</category>
<comments>http://www.fedoraz.com/index.php?itemid=18</comments>
 <pubDate>Fri, 09 Feb 2007 23:49:19 +0900</pubDate>
</item><item>
 <title><![CDATA[02 RSYNCでバックアップ]]></title>
 <link>http://www.fedoraz.com/index.php?itemid=19</link>
<description><![CDATA[別サーバへRSYNCで自動バックアップ<img src="media/new.gif"><h3>シェルスクリプトでバックアップ</h3>
万が一に備え、任意のデータを別のサーバへ定期的にバックアップすることにします。しくみは簡単で、rsyncをシェルスクリプトに記述しておき、cronで定期的に実行するだけです。<br>
応用編１のSSH鍵交換方式に変更していることが前提です。

<h4>.ssh/configの記述</h4>
<a href="index.php?itemid=18">応用編１のSSH鍵交換方式</a>を参考に、/root/.ssh/configを記述してください。<br>
例としてバックアップ先のサーバがbackup.fedoraz.com、バックアップ先でのユーザ名がadmin、sshのポート番号が12345とすると
<blockquote>
HOST BACKUP <br>
HostName backup.fedoraz.com<br>
User admin<br>
port 12345<br>
CheckHostIP no<br>
IdentityFile ~/.ssh/id_rsa
</blockquote>
と記述しておきます。

<h4>スクリプトの記述</h4>
/rootにwww_to_backup.shを作成します。バックアップ元は/home以下の全て、バックアップ先のディレクトリはwww_backupとします

<blockquote>
#pico www_to_backup.sh<br>
<br>
#!/bin/bash　　※この一行忘れずに<br>
<br>
rsync -avhe ssh --delete /home/ BACKUP: www_backup > /dev/null 2>&1
</blockquote>
/homeの後の"/"は必要で、www_backupの後には"/"は付かないことに注意してください。--deleteオプションをつけているので、上記の動作は「同期」になります。つまりバックアップ先に存在してバックアップ元にないデータは消去されます。<br>
<br>
まずは直接コマンドで「rsync -avhe ssh --delete /home/ BACKUP: www_backup」を実行してみてテストしてください。<br>
バックアップ先の想定通りのディレクトリに、元の/home以下の全てが転送されていれば成功です。転送前にtarで固めておいて、それを転送してもよいでしょう。
<br>

作成したファイルに実行権を付与しておきます。
<blockquote>
chmod +x www_to_backup.sh
</blockquote>

<h4>定期的に実行する</h4>
定期的に自動で実行させるにはcronに登録しておきます。<br>
毎日4:00にバックアップをするには以下のようにします。

<blockquote>
crontab -e　※viによる編集画面になります<br>
<br>
「i」キーを押して編集モードに切り替え<br>
00 04 * * * /root/www_to_backup.sh<br>
「esc」キーを押して、<br>
shift+Z　を二回押すと保存<br>
</blockquote >
cronの詳しい使い方を紹介したサイトは色々ありますので、そちらを参照してください。
]]></description>
 <category>level2</category>
<comments>http://www.fedoraz.com/index.php?itemid=19</comments>
 <pubDate>Thu, 08 Feb 2007 02:00:00 +0900</pubDate>
</item><item>
 <title><![CDATA[04 メールサーバを暗号化]]></title>
 <link>http://www.fedoraz.com/index.php?itemid=20</link>
<description><![CDATA[メールサーバをSMTP AUTH+TLS（暗号化）に。<img src="media/new.gif"><h2>＃＃＃このページはまだ書きかけです。＃＃＃</h2>

<h3>メール本文と認証を暗号化する</h3>
SMTP（POSTIFIX）はSMTP AUTHで構築しましたが、アカウントやパスワードが平文で流れることになり、外部に公開する場合あまりセキュアとはいえません。またメール本文も平文で流れていますので、第三者にみられる可能性も低くはありません（はがき程度の隠匿性しかないと言われています）。<br>
<br>
メールのやりとりを暗号化する場合、４つにわけて考える必要があります。<br>
<ul>
<li>メール送信時のユーザー認証（smtp = postfix）</li>
<li>メール送信時のメール本文（smtp = postfix）</li>
<li>メール受信時のユーザー認証（pop3 = dovecot）</li>
<li>メール受信時のメール本文（pop3 = dovecot）</li>
</ul>
クライアント側で上記４つを別々に設定する必要があるので、サーバの動作確認をするときはそれぞれ問題の切り分けが必要です。

<h2>＃＃＃このページはまだ書きかけです。＃＃＃</h2>


<h3>SMTP（POSTFIX）の設定変更</h3>
postfixにTLSの設定をします。まずは下記を設定ファイル（/etc/postfix/mail.cf）の末尾にでも付け加えます。
<blockquote>
#tls
smtpd_tls_loglevel=3　<br>
smtpd_use_tls = yes　<br>
smtpd_tls_cert_file = /etc/pki/tls/certs/fedoraz_cert.pem　※<br>
smtpd_tls_key_file = /etc/pki/tls/certs/fedoraz_key.pem　※<br>
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache<br>
# smtpd_tls_wrappermode = no　※とりあえずコメントアウトで
</blockquote>
※鍵（fedoraz_cert.pem）はHTTPのSSL対応で作成した鍵をそのまま使います。
<br>
<br>
次に/etc/postfix/master.cfを編集します。<br>
サブミッションポートにも対応させておきます。

<blockquote>
下記の行の行頭にある#をすべて削除します。<br>
<br>
submission inet n       -       n       -       -       smtpd<br>
  -o smtpd_enforce_tls=yes<br>
  -o smtpd_sasl_auth_enable=yes<br>
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject<br>
smtps     inet  n       -       n       -       -       smtpd<br>
  -o smtpd_tls_wrappermode=yes<br>
  -o smtpd_sasl_auth_enable=yes<br>
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject<br>
</blockquote><br>

<h2>＃＃＃このページはまだ書きかけです。＃＃＃</h2>
]]></description>
 <category>level2</category>
<comments>http://www.fedoraz.com/index.php?itemid=20</comments>
 <pubDate>Wed, 07 Feb 2007 10:37:00 +0900</pubDate>
</item><item>
 <title><![CDATA[01 回線と機器の準備]]></title>
 <link>http://www.fedoraz.com/index.php?itemid=3</link>
<description><![CDATA[ネットワークの構成と機器の準備<h3>はじめに</h3>
<ul>
<li>年中無休24時間フル稼働させられるよう、なるべく安定方向で構成を考えます。</li>
<li>使用する回線はNTT東日本のB-Fletハイパーファミリー1回線です。2セッション同時に使用して、2つのISPに接続します。</li>
<li>2つのネットワークの使い分けは、一方がサーバ用（NETWORK1）、もう一方が普段自分が使用するクライアントPC用（NETWORK2）です。NETWORK2にはセカンダリDNSも立てます。</li>
<li>サーバマシンは今回市販のサーバ専用機（IBMとDELL）を使用しています。</li>
</ul>
<h3>回線とプロバイダー</h3>
回線はNTT東日本のB-Fletsハイパーファミリーを1回線使用します。1回線の契約で2セッションの同時使用が可能です。これを利用してサーバ用とクライアント用のネットワークを分けて運用することにします。<br />
サーバ用のネットワークをNETWORK1（ドメインはfedoraz.com）、普段作業に使用するネットワークをNETWORK2（ドメインはfedoraz.net）と仮に名前を付けます。それぞれ別のISP（同じISPで2アカウントでもいい）に接続し、固定IPを各1個振ってもらいます。<br />
<ul>
<li>プロバイダによってはサーバを立てることを禁止している、あるいはポートが塞がっているところもあるようです。十分注意して契約しましょう。</li>
<li>帯域制限をかけているISPもあります。これは多くの場合問い合わせてみないとわからない（サイト上に記載がない）ようです。</li>
<li>固定IPのサービスがないISPもあります。ダイナミックDNSという手もありますが、今回は固定IPでの運用方法を説明しています。</li>
<li>逆引きの設定がオプションでできるところもありますので、これを利用するのもいいでしょう。</li>
</ul>

<h3>ドメイン取得</h3>
ドメインを最低1つは取得します。ネットワークが2つあるので、2つあった方が管理はしやすいでしょう。今回は2つ取得（fedoraz.comとfedoraz.net)した場合で説明していきます。（実際はバーチャルドメイン用にも複数取得しています。）<br />
独自ドメインの取得に関しては様々なセラーがサービスを提供していますので、好みで選択してかまわないと思いますが、注意しなければならない点が2つほどあります。
<ul>
<li>サーバに制約がある場合がある。そこのレンタルサーバを使用しなければならない等。</li>
<li>レジストラ移転（ドメイン管理の移転）ができない場合がある。プロバイダを通じて取得した場合、プロバイダを変えたい時に面倒だったりする。<li>
</ul>
<a href="http://muumuu-domain.com/">ここ</a>は安いのでよく使っています。

<h3>使用機材</h3>
以前は使わなくなったWindows機を流用してサーバを立てていましたが、熱対策が不十分だったこともあって安定稼働とはいえない感じでした。そこで今回は市販のサーバ専用機を2台と、自作の省電力・低発熱サーバ1台を用意しました。構築自体はどのようなマシンを使用しても同様の作業となります。<br />
<ul>
<li>サーバA　・・・1stDNS、WWW、FTP</li>
<li>サーバB　・・・MAIL</li>
<li>サーバC　・・・2ndDNS、ローカル用ファイルサーバ（NETWORK2内に立てる）</li>
</ul>
いずれのサーバもハードディスクを2台搭載し、Raid-1で使用します。簡単かつ安価にできる最低限の冗長化です。（ちなみにこのサイトのサーバは1台約4万円の、超安価な機種です。）
<p />
ネットワーク機器としては、ONUからの回線を2つのネットワークにわけるためのハブ、各ネットワーク用のルータ（計2台）を用意しました。1台のルータで2セッションはれるものもありますが、安価な機種だと、実は切替（同時接続不可）だったり、同時使用するととたんに挙動が不安定になったりするものもあるようです（実際ありました）。<br />
VRRPに対応しているかどうかもポイントですが、当初はルータの冗長化までは行わないことにします。
<p />
その他の機材として、ラインインタラクティブ型のUPS(無停電電源装置)を用意しました。Linuxの自動シャットダウンに対応しています。無停電とはいっても、今回の構成では約8分ほどしかもたない計算ですが、ないよりはずっと精神衛生上いいかと思います。]]></description>
 <category>level1</category>
<comments>http://www.fedoraz.com/index.php?itemid=3</comments>
 <pubDate>Thu, 09 Feb 2006 22:46:58 +0900</pubDate>
</item><item>
 <title><![CDATA[02 機器の構成]]></title>
 <link>http://www.fedoraz.com/index.php?itemid=4</link>
<description><![CDATA[サーバやルータなどの接続<h3>ネットワーク構成図</h3>
サーバやルータ、ハブなどをイーサネットケーブルで繋いでいきます。サーバにはNICが２枚刺さっていますが、まずはシンプルな構成で立ち上げます。<p />
<a href="http://www.fedoraz.com/media/1/20060210-network.png"></a><p />
まずONU（図中ではmodemとなっていますが）からハブ（レイヤー２スイッチ）へ接続し、ハブから各ネットワークのルータに接続します。ハブで物理的にネットワークを２つに分割します。<br />
RT1にはPROVIDER-Aへの接続設定を、RT2にはPROVIDER-Bへの接続設定をしておけば、２つのネットワークから問題なく接続することができます。<br />
サーバマシンへはハブを介してもいいですが、この図ではハブ内蔵のルータを想定して、直接ルータに接続しています。<br />
黄色の線はUPS（無停電電源）からその機器の電源をとることを意味しています。<p />

<h3>IPアドレス</h3>
NETWORK A : <ul>
<li>GlobalIP xxx.xxx.xxx.<font color="red">10</font>（ISPに固定IPを振ってもらう）</li>
<li>割り当てるドメイン名 fedoraz.com</li>
<li>LocalIP  192.168.<font color="red">1</font>.0/24</li>
<li>RT1（ルータ）　192.168.1.<font color="red">1</font></li>
<li>Server-A 192.168.1.<font color="red">100</font></li>
<li>Server-B 192.168.1.<font color="red">101</font></li>
</ul>
NETWORK B : <ul>
<li>GlobalIP xxx.xxx.xxx.<font color="red">20</font>（ISPに固定IPを振ってもらう）</li>
<li>割り当てるドメイン名 fedoraz.net</li>
<li>LocalIP  192.168.<font color="red">2</font>.0/24</li>
<li>RT2（ルータ）　192.168.2.<font color="red">1</font></li>
<li>Server-C 192.168.2.<font color="red">102</font></li>
</ul>
NETWORK AとNETWORK BでローカルIPが重複しても問題ありませんが、管理しやすいよう自分なりに工夫して振っておくといいでしょう。]]></description>
 <category>level1</category>
<comments>http://www.fedoraz.com/index.php?itemid=4</comments>
 <pubDate>Wed, 08 Feb 2006 16:55:00 +0900</pubDate>
</item><item>
 <title><![CDATA[03 ポートの開放]]></title>
 <link>http://www.fedoraz.com/index.php?itemid=5</link>
<description><![CDATA[ルータのポート開け<h3>運用するサービスと担当するサーバ</h3>
どのマシンでなんのサービスを担当するか（何のサーバを立てるか）を決めます。今回は贅沢にウェブサーバとメールサーバを分けて立てることにしました。セカンダリのネームサーバだけを用意するのはもったいないので、ローカルユーザ用のファイルサーバも同じマシンで運用することにします。<p />

<h4>SERVER A（192.168.1.100）</h4>
<ul>
<li>dns （ポート53）　プライマリネームサーバ。ドメイン名の解決。</li>
<li>www　（ポート80）　ウェブサーバ。ウェブサイトの公開に。</li>
<li>ftp　（ポート20,21）　FTPサーバ。ファイルのアップ＆ダウンロードに。</li>
<li>ssh　（ポート22）　SSHサーバ。リモートでのサーバの管理に。</li>
</ul>
<h4>SERVER B（192.168.1.101）</h4>
<ul>
<li>smtp （ポート25）　SMTPサーバ。メールの送信に。</li>
<li>pop3　（ポート110）　POP3サーバ。メールの受信に。</li>
<li>ssh　（ポート22）　SSHサーバ。リモートでのサーバの管理に。</li>
</ul>
<h4>SERVER C（192.168.2.102）</h4>
<ul>
<li>dns （ポート53）　セカンダリネームサーバ。ドメイン名の解決。</li>
<li>ftp　（ポート20,21）　FTPサーバ（ローカル用）。ファイルのアップ＆ダウンロードに。</li>
<li>ssh　（ポート22）　SSHサーバ。リモートでのサーバの管理に。</li>
<li>Samba　・・・Win用のファイルサーバ。ポートは開けない（外部不可）</li>
<li>Netatalk　・・・Mac用のファイルサーバ。ポートは開けない（外部不可）</li>
</ul>

<h3>ルータのアドレス変換設定</h3>
どのポートのパケットをどのマシン（ローカルIP）に送るのかを設定します。具体的なやり方についてはルータのヘルプ（取説）を見て下さい。<br />
下記で使用するポートのみ開放して、他の全てのポートは塞いでおきます。<p />

<h4>RT1（NETWORK Aのルータ）</h4>
<table border=1>
<tr><th>ポート</th><th>name</th><th>TCP/UDP</th><th>宛先IP</th></tr>
<tr><td colspan="4"><font color="444">※Server A用の設定</font></td></tr>
<tr><td>53</td><td>dns</td><td>TCP/UDP</td><td>192.168.1.100:53</td></tr>
<tr><td>80</td><td>www</td><td>TCP</td><td>192.168.1.100:80</td></tr>
<tr><td>20,21</td><td>ftp</td><td>TCP/UDP</td><td>192.168.1.100:20,21</td></tr>
<tr><td>22</td><td>ssh</td><td>TCP</td><td>192.168.1.100:22</td></tr>
<tr><td colspan="4"><font color="444">※Server B用の設定</font></td></tr>
<tr><td>25</td><td>smtp</td><td>TCP</td><td>192.168.1.101:25</td></tr>
<tr><td>110</td><td>pop3</td><td>TCP</td><td>192.168.1.101:110</td></tr>
<tr><td>10022</td><td>ssh</td><td>TCP</td><td>192.168.1.101:22</td></tr>
</table><br />

<h4>RT2（NETWORK Bのルータ）</h4>
<table border=1>
<tr><th>ポート</th><th>name</th><th>TCP/UDP</th><th>宛先IP</th></tr>
<tr><td colspan="4"><font color="444">※Server C用の設定</font></td></tr>
<tr><td>53</td><td>dns</td><td>TCP/UDP</td><td>192.168.2.102:53</td></tr>
<tr><td>20,21</td><td>ftp</td><td>TCP/UDP</td><td>192.168.2.102:20,21</td></tr>
<tr><td>22</td><td>ssh</td><td>TCP</td><td>192.168.2.102:22</td></tr></table><p />

その他、https（ポート443）やimap（ポート143）を使用する場合は該当のルータに設定を追加しましょう。<br />
Server-BのSSHはポート10022のパケットを192.168.1.101のポート22に流すことで、SSHを2つのサーバ両方で利用できるようにします。同じプロトコルを複数のサーバで使いたいときは、このようにルータのポート変換機能を利用することで可能になります（クライアント側でのポートの指定がいりますが）。<p />
Server-Bにリモートログインする時のコマンド
<blockquote>$ ssh -p 10022 admin@xxx.xxx.xxx.xxx</blockquote>

]]></description>
 <category>level1</category>
<comments>http://www.fedoraz.com/index.php?itemid=5</comments>
 <pubDate>Tue, 07 Feb 2006 17:31:00 +0900</pubDate>
</item><item>
 <title><![CDATA[04 OSのインストール]]></title>
 <link>http://www.fedoraz.com/index.php?itemid=6</link>
<description><![CDATA[サーバにOS(Fedora Core4）をインストール<h3>インストールCDの用意</h3>

今回はLINUXのディストリビューションひとつであるFedoraのCore 4をサーバのOSとして使用します。まずはインストール用のCDイメージ（.ISO）をダウンロードします。<p />

Red Hat社の<a href="http://fedora.redhat.com/" target="_blanc">Fedora Project</a>からでもいいですし、日本の<a href="http://fedora.jp/" target="_blanc">Fedora JP Project</a>にあるリンク先からでもいいので、4枚分ダウンロードしましょう。<br />
下記は理研のページです。<br />
<a href="http://ftp.riken.jp/Linux/fedora/core/4/i386/iso/" target="_blanc">http://ftp.riken.jp/Linux/fedora/core/4/i386/iso/</a>
<p />

必要なCDイメージはこの4つです。名前にSRPMSがないほうですのでご注意ください。<ul>
<li>FC4-i386-disc1.iso</li>
<li>FC4-i386-disc2.iso</li>
<li>FC4-i386-disc3.iso</li>
<li>FC4-i386-disc4.iso</li>
</ul>

ダウンロードしたら、それぞれをCD-Rに焼いておきましょう。<br />
※ダウンロードからCD-Rまでの作業は、当然ネット環境とWindowsやMacなどのPC（とCDRドライブ）が必要です。この作業が無理であれば、書店に行きましょう。LINUX系の雑誌にインストールCDが付録になっているものがあります。<p />

<h3>インストール</h3>
サーバの電源を入れ、1枚目のCDをセットし、CDからサーバを立ち上げます。あらかじめBIOSでCDから立ち上がるように設定しておく必要があるかもしれません。<p />
最初のプロンプトで、単にEnterを押せば通常のグラフィカルインストール画面に進みます。もしその画面で表示の不具合（画面が出ない、画面が大きくて全体が表示されない等）の場合は、再度電源を入れ直し、最初のプロンプトで、
<blockquote>linux nofb</blockquote>
<blockquote>linux resolution="640x480"</blockquote>
などを試してみましょう。それでもだめな場合は、
<blockquote>linux text</blockquote>
でテキストモードでのインストールが可能です。
<br />

<h4>1 Welcome to Fedora Core</h3>
インストール画面になったらまず左下のHide Helpをクリックして画面を広くしておきましょう。それから→NEXT。<br />

<h4>2 Language Selection</h4>
使用する言語の選択です。Japanese（日本語）を選択。<br />

<h4>3 キーボード設定</h4>
デフォルトで日本語が選択されているはずなのでそのまま次へ。<br />

<h4>4 インストールの種類</h4>
サーバーを選択。<br />

<h4>5 ディスクパーティションの設定</h4>
ここは運用方針で設定が変わります。HDが1台しかない時や複数HDがあってもまとめて1台として扱いたい時は「自動パーティション設定」でもOKです。各パーティションの用途・容量を自分でコントロールしたい、Raid１を使用してHDの冗長化をしたいときは「Disk Druid」を使用して手動パーティション設定」を行う必要があります。<br />
ここでは後者の「手動パーティション」で、HD1台の場合と、同容量HDを2台使用してのRaid 1の場合の設定を説明します。<p />

<h5>■パーティションの構成例</h5>
<table border=1>
<tr><td>マウントポイント</td><td>パーティションの用途</td><td>確保する容量</td></tr>
<tr><td>/</td><td>ルートディレクトリ</td><td>1000MB</td></tr>
<tr><td>/boot</td><td>ブート用</td><TD>100MB</td></tr>
<tr><td>/usr</td><td>プログラムをインストール</td><td>4000MB</td></tr>
<tr><td>/var</td><td>ログファイルなど</td><td>2000MB</td></tr>
<tr><td>/home</td><td>ユーザーのデータ領域</td><td>残り全部</td></tr>
<tr><td>swap</td><td>メモリのスワップ領域</td><td>1024MB（メモリの2倍が目安）</td></tr>
</table><p />
データベースを動かす予定なら/varはもっとあってもいいかもしれません（/var/lib/mysqlなどを使うので）。もっぱらyumでしかインストールしないこともあり、/usr/localは特に分けていません。

<h5>■HD1台構成での手動パーティション</h5>
まずなんらかのパーティションが存在した場合は、すべてのパーティションを削除してまっさらな状態にしてください。特に既にLinuxのパーティションが存在しているハードディスクだと、インストール中ほぼ確実にエラーが出ます。<br>
それから上記のパーティションの構成例を参考に、パーティションを1個ずつ設定していきます。なお、4個目以降のパーティションは自動で「拡張領域」となりますが気にする必要はありません。<p />
以下Disk Druidの画面での操作説明です。
<ol type="1">
<li>マウントポイントを入力または選択します。ex:"/boot"　（SWAPのみマウントポイントはありません。）</li>
<li>ファイルシステムを選択します。"ext3"　（SWAPのみファイルシステム"swap"を選択してください。）</li>
<li>固定容量を選択し、確保したい容量を入力します。単位に注意。　ex:"100"（/homeのみ"最大許容量まで使用"にチェックし、適当な数字を入力しておきます。）</li>
<li>"/"および"/boot"はプライマリパーティションにチェックを入れます。</li>
<li>OK→これをすべてのパーティションが確保できるまで繰り返します。上記の構成例の場合、6回行うことになります。</li>
</ol>

<h5>■HD2台でRaid 1を構成する場合</h5>
HDは2つとも容量の同じものの方が無駄がなくいいと思います。容量の異なるHDでもRaidは構成できますが、その場合小さい方のHDの容量が優先されます。また、同一メーカーの同一品番で揃えると、同じ原因で2台同時に故障するかもしれないとの理由で、別メーカーのものをわざわざ搭載したという話も聞きました。ご参考まで。<br />
1台構成の場合と同様、既存のパーティションなどは削除してまっさらな状態にしておきます。<br />
流れとしては、片方のHDにパーティションを設定し、その情報を2台目にコピーし、２つを束ねてRaidを構成するという流れになります。
<p />
以下Disk Druidの画面での操作説明です。
<ol type="1">
<li>左端の「新規」をクリックします</li>
<li>ファイルシステムから「software RAID」を選択します。</li>
<li>使用可能なドライブはマスターとなる1台（sda、hda等）にチェックを入れ、もう1台のほう(sdb、hdｂ等）はチェックを<font color=RED>はずします</font>。</li>
<li>固定容量を選択し、確保したい容量を入力します。単位に注意。　ex:"100"（/homeにする予定のパーティションのみ"最大許容量まで使用"にチェックし、適当な数字を入力しておきます。）</li>
<li>"/"および"/boot"にする予定のパーティションは、プライマリパーティションにチェックを入れます。</li>
<li>OK→これをすべてのパーティションが確保できるまで繰り返します。上記の構成例の場合、6回行うことになります。</li>
<li>続いてパーティション情報をもう1台のHDにコピーします。右から2番目の「RAID」をクリックします</li>
<li>"Clone a drive to create a RAID device"を選択し、パーティションを設定したHDからもう1台へパーティション情報をコピーします。コピー元、コピー先を間違えないように。</li>
<li>次に2台のHDのパーティションを束ねてRAIDを構成していきます。「RAID」をクリックします</li>
<li>"Create a RAID device"を選択します。</li>
<li>マウントポイントを選択します。ex:"/boot"（SWAPのみマウントポイントはなしです。）</li>
<li>ファイルシステムを選択します。"ext3"　（SWAPのみファイルシステム"swap"を選択してください。）</li>
<li>RAIDデバイスを選択します。（上から順番に。）ex:md0</li>
<li>RAIDメンバーを選択します。該当するパーティション（順番は入れ替わってしまっているので、容量から判断してください）を2つのHDから選択しますが、全選択されていますので、該当パーティション以外のチェックをはずすという作業になります。ex:"sda1とsdb1以外のチェックをはずす"</li>
<li>RAIDレベルは1を選択。デフォルトでRAID0が選択されているので、忘れずに変更します。</li>
<li>スペアは0です</li>
<li>OK→パーティション数の分9から繰り返します。</li>
</ol>

<h4>5 ブートローダの設定</h4>
そのままで次へ。<br />

<h4>6 ネットワークの設定</h4>
<ol type="1">
<li>編集をクリックし、ローカルIPアドレスとネットマスクを入力します→OK。ex:"192.168.1.100/255.255.255.0"</li>
<li>ホスト名を手動設定します。ex:"server-a.fedoraz.com"</li>
<li>ゲートウェイにルータのIPアドレスを入力します。ex:"192.168.1.1"</li>
<li>必須ではありませんが、DNSの1番目と2番目にプロバイダのネームサーバを入力しておきます。</li>
</ol>

<h4>7 ファイヤーウォール設定</h4>
ファイヤーウォールはルータで設定したので「ファイヤーウォールなし」でOKです。インストール後iptableを手動設定することも可能です。<br/>
SELinuxは無効を選択します。<br />

<h4>8 タイムゾーンの選択</h4>
アジア/東京が選択されているはずですので、そのまま次へ。<br />

<h4>9 Rootパスワードを設定</h4>
サーバを管理するためのrootアカウント用のパスワードです。絶対に忘れないようにしてください。そうかといって簡単すぎるパスワードにするとhackingされる恐れもあります。最低でも8文字以上あったほうがいいかと思います。<br />

<h4>10 パッケージグループの選択</h4>
あらかじめサーバ用途に適したパッケージグループが選択されていますが、ここはすべて選択を解除してしまいます。あとから必要なものだけ最新のバージョンでインストールしていきます。ただしソースをコンパイルすることもありますので「開発ツール」だけ選択しておくといいでしょう。<br />

<h4>11 インストール準備完了</h4>
あとはディスクのフォーマット、実際のインストールと進みますので、画面の指示に従いCDを入れ替えればいいだけです。（※HDのところでLVMを使用した場合はインストール前に再起動が必要なことがあります。この場合パーティション以降の設定をやり直さなければならなかったりします。）<br />
(追記）既にLINUXで使用していたHDを流用したりすると、フォーマット時にほぼ確実にエラーがでるようです。この場合何らかの方法でHDをまっさらにしておかなければなりません。サーバ専用機の場合は購入時についてくるユーティリティディスクを使用すれば可能です。ない場合はいったんHDをほかのWindows機につないで、Windowsで初期化しておくといった技があります。<br />

<h4>12 インストールの完了</h4>
「おめでとうございます。インストールが完了しました。」とメッセージが出たら無事に完了です。再起動してください。]]></description>
 <category>level1</category>
<comments>http://www.fedoraz.com/index.php?itemid=6</comments>
 <pubDate>Mon, 06 Feb 2006 16:45:00 +0900</pubDate>
</item><item>
 <title><![CDATA[05 初期設定]]></title>
 <link>http://www.fedoraz.com/index.php?itemid=7</link>
<description><![CDATA[サーバの各種初期設定<h3>サーバへログインと管理用アカウントの作成</h3>
無事インストールが終わり、サーバが立ち上がると次のような画面が表示されているはずです。今はまだrootアカウントしかありませんのでrootアカウントでログインします。パスワードはインストール時に設定したパスワードです。<br />
なお、デフォルトでSSHが最初から有効になっているので、この後の操作はすべてリモートから行うこともできます。

<blockquote>
Fedora Core release 4(Stentz)<br />
Kernel 2.6.11-1.1359_FC4 on an i386<br /><br />
linux login:root<br />
Password:*******  ※実際は表示されません<br /><br />
[root@linux ~]#
</blockquote>

まず最初に管理用のアカウントを作成します。一般に"admin"という名前が使用されますが、任意の名前でもOKです。ユーザーを作成するコマンドは"useradd"、パスワードの設定は"passwd"です。
<blockquote>
# useradd admin<br />
# passwd admin<br/>
Changing password:******** ※実際には表示されません<br />
Retype new UNIX password:********　※パスワードは同じものを2度入力します<br />
passwd: all authentication tokens updated successfully.
</blockquote>
パスワードが短かすぎる場合は"BAD PASSWORD: it is too short"と怒られます。<br>
ほかにも簡単すぎたり、ユーザー名から簡単に推測されるものだと怒られますが、どちらの場合もそのまま設定できます（警告だけ）。<br />
1度目と2度目のパスワードが異なった場合は"Sorry, passwords do not match"と出てやり直しになります。<br />
ユーザーを削除するのは"userdel ユーザー名"ですが、確認も何もなくすぐ消されるので注意しましょう。<p />

それでは、今作ったadminアカウントでログインし、さらにsuコマンドでスーパーユーザー（＝root）になってみます。
<blockquote>
# exit<br /><br />
linux login: admin<br />
Password: *******   ※実際は表示されません<br /><br />
$su -<br >
Password: *******　※rootのパスワードを入力します<br /><br />
#　　　←スーパーユーザー（＝root）になった
</blockquote><br />
<p />

<h3>エディターpicoのインストール</h3>
各種設定ファイルを書き換えるのにテキストエディターは多用します。最初から入っているviでもいいのですが、ここは使いやすいpicoをインストールします。<br />
<blockquote>
# wget ftp://ftp.cac.washington.edu/pine/pine-4.64-1.i386.rpm<br />
# rpm -ivh nodeps pine-4.64-1.i386.rpm
</blockquote>
もし上記のURLにない時はGoogleなどで<a href="http://www.google.co.jp/search?q=pine+linux&lr=" target="_blanc">"pine linux"</a>で検索するとすぐ見つけられます。<p />

<h3>yumでアップデート</h3>
カーネルも含めて、パッケージ類をすべて最新のものにアップデートします。アップデートにはyumを使いますが、以後のパッケージのインストールやアンインストールにもyumを使用します。<p />

<blockquote># yum -y update</blockquote>
ダウンロードとインストールを自動で行ってくれますが、かなりの時間がかかると思います。レポジトリを近くのもの（日本国内）に書き換えておくと早くなります。<p />

<h3>不要なサービスの停止</h3>
デフォルトでいろいろなサービスが起動しています。不要なサービスを動かしていると、思わぬセキュリティホールになったり、システムリソースを喰われたりしますので、停止しておきます。<p />
<blockquote># ntsysv</blockquote>
上記コマンドでグラフィカルな設定画面がでます。[*]となっているものが起動中のサービスです。カーソルの上下で移動し、スペースキーでonとoffを切り替えます。設定が終わったらTabでOkに移動し、Enterで終了します。<br/>
最初は下記のサービスだけ起動しておけばいいでしょう。<br />
<ul>
<li>crond</li>
<li>network</li>
<li>sshd</li>
<li>syslog</li>
</ul>
<p />

<h3>rootになれるユーザーの制限</h3>
サーバを管理できるユーザーを"admin"だけに制限しておきます。"admin"以外のユーザーでsuしてもスーパーユーザーにはなれないよう、設定します。<p />

<blockquote>
# pico /etc/group<br />
wheel:x:10:root → wheel:x:10:root,admin　に書き換え<br /><br />
# pico /etc/login.defs<br />
最終行に"SU_WHEEL_ONLY yes"を一行追加<br /><br />
# pico /etc/pam.d/su<br />
6行目の行頭の#を削除して有効にする<br />
auth required /lib/security/$ISA/pam_wheel.so use_uid
</blockquote>
<br /><p />

<h3>ファイル検索データベースのアップデイト</h3>
locateコマンド用にデータベースをアップデイトしておきます。
<blockquote>#updatedb</blockquote>

]]></description>
 <category>level1</category>
<comments>http://www.fedoraz.com/index.php?itemid=7</comments>
 <pubDate>Sun, 05 Feb 2006 20:46:00 +0900</pubDate>
</item><item>
 <title><![CDATA[06 ネットワークの設定]]></title>
 <link>http://www.fedoraz.com/index.php?itemid=8</link>
<description><![CDATA[サーバのネットワーク周りの設定<h3>ドメインネームの設定</h3>
自分（サーバ）が所属するドメインを設定します。もしHOSTNAME（サーバの名称）やGATEWAY（ルータのこと）を変更する場合は、このファイルを書き換えます。
<blockquote>
# pico /etcsysconfig/network<br />
NETWORKING=yes<br />
DOMAINNAME=fedoraz.com　※一行追加<br />
HOSTNAME=server-a.fedoraz.com<br />
GATEWAY=192.168.1.1
</blockquote>
ドメインネームには"www"などのホスト部分は含みません。なお、言うまでもありませんが上記の"fedoraz.com"は適宜書き換えてください。<p />

<h3>HOSTSファイルの設定</h3>
HOSTSファイルはDNSに問い合わせるまでもない、LAN内のホスト名の解決（IPからホスト名を引く）をするために設定します。IPに対応するホスト名をスペースで区切って羅列します。
<blockquote>
# pico /ets/hosts<br />
127.0.0.1 server-a.fedoraz.com www dns localhost.localdomain localhost<br />
192.168.1.100 server-a.fedoraz.com www dns
</blockquote>
server-bの場合は"127.0.0.1 servser-b.fedora.com mail"などとなります。<p />

<h3>RESOLVファイルの設定</h3>
RESOLVファイルはドメイン名の解決に使用するネームサーバ（DNS）を指定するのに使用します。ここが間違っているとドメイン名からIPを引けず、結果ネットに繋がらないということになります。<br />
この時点ではまだ自前のネームサーバを立てていないので、その設定はしません。
<blockquote>
# pico /etc/resolv.conf<br>
nameserver xxx.xxx.xxx.xx　※プロバイダ指定のネームサーバ1<br />
nameserver xxx.xxx.xxx.xx　※プロバイダ指定のネームサーバ2<br />
search fedoraz.com　※一行追加<br />
domain fedoraz.com　※一行追加
</blockquote>
<p />

上記の一連の書き換えが終わったら、ネットワーク周りを再起動します。
<blockquote># etc/init.d/network restart</blockquote>
ホストネームを書き換えた場合など、ネットワーク周りの再起動だけでは反映されないことがあります。（"hostname"コマンドで確認できます。）<br />
その場合はサーバを再起動してしまいましょう。
<blockquote># reboot</blockquote>
]]></description>
 <category>level1</category>
<comments>http://www.fedoraz.com/index.php?itemid=8</comments>
 <pubDate>Sat, 04 Feb 2006 22:07:00 +0900</pubDate>
</item><item>
 <title><![CDATA[07 SSH（OpenSSH）]]></title>
 <link>http://www.fedoraz.com/index.php?itemid=9</link>
<description><![CDATA[SSHサーバであるOpenSSHの設定<h3>OpenSSHの設定</h3>
SSHは遠隔地から（もちろんLAN内からでも）リモートでサーバを管理するためのもので、Telnetと違い内容が暗号化されています。<br />
ログイン方法に2種類あり、ひとつは通常のアカウント名＋パスワードによるログイン、もうひとつは公開鍵と秘密鍵を交換することにより認証を行う、よりセキュアな方法です。<br />
今回は基本的にLAN内からしかリモート接続しない場合を想定して、アカウント名＋パスワードによるログイン方法をとります。ただしIPによって制限をかけ、外部からのパスワード総当たり式のアタック（これが非常に多い）をはじめからはじくようにしておきます。

<h4>rootログインの禁止</h4>
<blockquote>
# pico /etc/ssh/sshd_config<br /><br />

#PremitRootLogin yes → PermitRootLogin no　※行頭の#を削除し、yesをnoに<br>
#permitEmptyPasswords no →　行頭の#を削除
</blockquote>
上記を書き換えたらsshdを再起動します。
<blockquote>
# /etc/init.d/sshd restart
</blockquote>
<p />

<h4>IPによるアクセス制限</h4>
まず接続を許可するIPを設定します。下記ではLANと外部一カ所を許可しています。
<blockquote>
# pico /etc/hosts.allow<br>
sshd:  192.168.1.　※最終行に追加。最後の"."を忘れないように。<br />
sshd:  xxx.xxx.xxx.xx　　※外部のグローバルIPまたはドメイン名
</blockquote>
次にその他すべてのIPからの接続を禁止します。
<blockquote>
# pico /etc/hosts.deny<br />
sshd: ALL　※最終行に追加
</blockquote>

allow、denyの設定は慎重に行ってください。たとえば許可するIPを書き間違えたりすると以後の操作を全く受け付けなくなってしまいます。この場合サーバマシンに直接モニタとキーボードを接続して操作するしかありません。もし遠隔地から操作していた場合は・・・・。<p />
また、外部から接続したい時に（たとえばサーバが会社にあり、自宅から接続したいといった場合）、その環境が固定IPではないとIPによる許可ができないことになります。その場合下記のようにその環境で利用しているプロバイダのURLを設定することで接続を許可する方法もあります。ただしそのプロバイダーを利用している全ユーザーの環境から接続可能になってしまいますが。
<blockquote>
/etc/hosts.allowの設定に下記を追加<br>
sshd: .ppp.il24.net
</blockquote>
]]></description>
 <category>level1</category>
<comments>http://www.fedoraz.com/index.php?itemid=9</comments>
 <pubDate>Fri, 03 Feb 2006 22:47:00 +0900</pubDate>
</item>
  </channel>
</rss>