Linux: 2009年3月アーカイブ

 前回は、リモート管理に関する機能について、iptalesを用いたファイアウォールで、IPアドレスによる発信元制限をかけることについて触れましたが、httpサーバーである、Apacheにも似たような機能があります。例えば、ログ閲覧等の管理者のみがアクセスすべきページやスクリプトなどに、制限をかけることができます。

 Apacheの設定ファイルはetc/httpd/conf/httpd.confですが、この設定ファイルに、<Directory>ディレクティブや<Files>ディレクティブで、指定のディレクトリやファイルを指定し、Deny Allowディレクティブ等で、アクセスの許可、不許可を記述します。

例)

<Directory /var/www/html/admin/>    
  Order Deny,Allow
  Deny from all
  Allow from 222.222.222.222
</Direcroty>

 

 ※adminというディレクトリについて、ホストがIPアドレス222.222.222.222の場合だけ閲覧を許可し、それ以外のホストは拒否(Forbidden)する。という例。

 サーバーホスティングの設定でよく見かける、「.htaccess」というファイルは、このhttpd.confファイルの、<Directory>ディレクティブ等の記述を、ディレクトリごとに記述できるファイルのことです。共有サーバー等、自分でhttpd.confの編集ができない場合に用いる場合が多いです。逆、httpd.confファイルを編集できる場合は、できるだけ.htaccessファイルを用いずに、httpd.confファイルで指示した方が良いそうです。

 但し、あまりにもディレクティブが増えすぎると、httpd.confも乱雑になってしまうので、いくつかのconfファイルに分けて、登録する方法もあるようです。特にヴァーチャルホストの設定をした場合、それぞれのドメインごとに設定が分かれますので、ドメインごとにconfファイルをつくるのが良いようです。Plesk等の場合は自動的にvhosts.confの様な設定ファイルを生成してくれるので、便利なんですが。

 

社内サーバーが一通りできあがったので、公開サーバーに挑戦することに。

色々事情があって、光回線を2本ほど増やしたので、それらを使って公開サーバーのテストをしています。

手順としては、以下の通り。

1 ダイナミックDNSサービスを使って、ドメインを設定

2 ルーターのアドレス変換機能を使って、httpやssh等のポートのみを開き、サーバー機に渡すようにする

3 サーバー機のファイアウォールの設定をする

4 apache php mysql 等の設定を行う

 

1 ダイナミックDNSサービスには、無料、有料のものがある。有料でいうと、DynDNS等。無料のものが、MyDNSや、ルーター会社がルーター購入者専用に用意しているもの等。

まずは、coregaのルーターで実験したので、coregaの無料ダイナミックDNSサービス「corede.net」でドメインを設定してみる。このサービスでは、corede.netのサブドメインであれば、無料、独自ドメインであれば、有料ということなので、まずはサブドメインから実験してみる。

次に、有料ダイナミックDNSも試してみる。DynDNSは、英語のみだが、設定はDotstar並なので、慣れればそれほど難しくはない。バッファローのルータが、DynDNSに対応しているので、こちらで登録。年間$27.50と、固定IPを取得することと比較すると格安。

最後に無料サービスも試してみる。MyDNSは無料で使えるサービス。但し、ルーターが自動的にIPを更新してくれる、上記のサービスとは異なり、FTP、メール、BASIC認証、手動設定等の方法でIPアドレスの通知が必要。

 

2 ドメインの設定が完了したら、ルーターの設定を変更。アドレス変換機能を使って、ルーターのWAN側のIPアドレスにあるポートに要求がきた場合にローカールアドレスに変換するように設定する。例えば、WAN側のIPが222.222.222.222として、ローカルのサーバ機のローカルIPアドレスが192.168.0.30とすると、222.222.222.222宛に22番ポート(SSH)の要求がきた際に、192.168.0.30のポート22番にわたすように設定する(バッファローのルーターの設定例)ルーターのアドレス変換は、最低限必要なポートだけ開けるようにする。

 

3 サーバー機の側でもポートの設定は必要。特に、SSH(22番ポート)やFTP(21番ポート)については、送信元IPアドレスを設定する等して、誰でもが接続することができないようにすることが肝要。遠隔操作を前提にしているので、webmin(10000番ポート)も設定。これで大体の設定は可能に。もちろんこのポートも発信元IPの制限をかける。

 

4 サーバーの設定。sshやftpは通常使うように設定する。apacheの設定について、今回仮想サーバーの設定を試してみる。上記2番のダイナミックDNSの設定で、複数のドメイン設定をしてみた。その上で、apacheの仮想サーバーを設定。例えば、domain.comのサブドメインをtest.domain.comとして、上記ダイナミックDNSにて両方のドメインを登録したとする。

バーチャルドメインの設定は以下のような感じ。

<VirtualHost 192.168.0.30>
DocumentRoot /var/www/vhosts/domain.com/html
ServerName www.domain.com
<Directory /var/www/vhosts/domain.com/html>
allow from all
Options +Indexes
</Directory>
</VirtualHost>
<VirtualHost 192.168.0.30>
DocumentRoot /var/www/vhosts/domain/subdomains/test/html
ServerName test.domain.com
<Directory /var/www/vhosts/domain/subdomains/test/html>
allow from all
Options +Indexes
</Directory>
</VirtualHost>

これで、www.domain.com とtest.domain.comは別々の内容を表示させることができるようになります。もちろんサブドメインだけでなく、別々のドメインの表示もできます。

 

xoopsの設定もやってみたかったので、色々実験。CentOS5で、標準に用意されていないのは、php-mbstringなので、yumでインストールしておく。また、open_basedirの設定もされていないので、上記バーチャルホスト設定のディレクトリに、

    php_admin_flag safe_mode off
     php_admin_value open_basedir "/var/www/vhosts/domain.com/html:/var/www/vhosts/domain.com/xoops_trust_path"

等の記述を入れておくことを忘れずに。safe_modeもmasterではonにしておき、このディレクトリのみoffにしておくとよいのではないかと思う。