過去の日記: 2002/04

以前の日記らしきもの。

戻る


2002/04/28(Sun) [ サーバ関係メモ ]

最近、RedHat 7.2 で Web サーバを構築したので、一応、そのメモ。

まず、インストールが完了したら、不要なサービスを切って、セキュリティ、バグ関係のアップデートを行う。RedHat 7.2 のバグフィックス、アップデートについては、Red Hat Support のページを参照。

いつも時間を合わせるのに、ntpdate を使っているのだが、インストール時に入っていない場合は ntp をインストールする必要がある。

RedHat CD-ROM Disk1 に入っているので、そこから rpm パッケージを取り出してインストール。

ntp のインストールには以下の2つのパッケージをインストールする必要がある。

libcap-1.10-5.i386.rpm
ntp-4.1.0-4.i386.rpm

rpm コマンドを実行して ntp をインストールして、NTPサーバにアクセスして時刻を合わせる。

# rpm -ivh libcap-1.10-5.i386.rpm ntp-4.1.0-4.i386.rpm
# ntpdate [NTPサーバ]
# clock -w

NTPサーバは、プロバイダが用意している場合はそのサーバを指定。Asahi-net の場合は、

# ntpdate ntp.asahi-net.or.jp

と実行すると、時間が合わせられる。プロバイダが NTPサーバを用意していない場合は、

 ntp1.jst.mfeed.ad.jp (210.173.160.27)
 ntp2.jst.mfeed.ad.jp (210.173.160.57)
 ntp3.jst.mfeed.ad.jp (210.173.160.87) 

を利用させてもらうという方法があるようだ。ただ、この3つのサーバは、テスト的に公開されているだけなので、Experimental NTP Servers (Public Stratum 2) というページをチェックしておく必要がある。

clock コマンドは ハードウェアクロックを現在のシステムクロックに合わせるという機能があるので、特に不都合あるということが分からない人は実行しても問題ない。

一応、Web サーバなので、Apache をインストール。といっても、特に注意することもなく、インストール可能。

$ tar zxvf apache_1.3.24.tar.gz
$ cd apache_1.3.24
$ ./configure
$ make
$ su
# make install

SSL や、PHP などのモジュールを使用する場合は、 --enable-module=so などのオプションをつけてコンパイルするくらい。後は、/usr/local/apache/conf/httpd.conf を編集して、

# /usr/local/apache/bin/apachectl configtest

を実行して、 Syntax OK と表示されれば問題ない。

後は、 httpd.conf に必要な設定。ログの取り方とかを変更してみる。一週間ごとにログをローテートさせるとか。ServerSignature は大して効果はないけど、 Off にしておくと、無駄な情報を提供しないようになるので、 Off に設定。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /www/logs/access_log combined
CustomLog "|/usr/local/apache/bin/rotatelogs /www/logs/access_log 604800 540" combined
CustomLog "|/usr/local/apache/bin/rotatelogs /www/logs/error_log 604800 540" combined
ServerSignature Off

安全にサーバにログインするために sshd の設定

ssh で DSA 鍵を作成

$ ssh-keygen -t dsa
$ cp ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys

sshd の設定

# vi /etc/ssh/sshd_config

以下のように、ssh のプロトコルはバージョン2のみ、Rootによるログインは認めない、通常のパスワードによるログインを認めない、X のフォワーディングはしないように設定。

Protocol 2
SyslogFacility AUTHPRIV
PermitRootLogin no
PasswordAuthentication no
X11Forwarding no

後は、サーバ上に ~/.ssh/authorized_keys を置き、 クライアントに ~/.ssh/id_dsa を置いた状態で、ssh でログインしてみて、パスフレーズによるログインができるようになれば成功。

sshd の設定で通常のパスワードによるログインはできないように設定しているので、少しは安全かも。



2002/04/21(Sun) [ VineLinux 2.5 ]

VineLinux 2.5 をインストールしてみた。インストールしたハードウェアは CPU が Pentium Pro 200MHz、メモリが 64MB と少し昔の非力なマシンだったが、それでもそれほど問題もなくインストールは完了した。

デスクトップは GNOME 環境を撰択したはずだが、初回起動時に startx で X を起動させると、なぜか WindowMaker が起動。ランレベルが 3 だと、インストール時の設定は反映されないのかも。

とりあえず、 ~/.wm_style を編集して GNOME が起動するように設定した。~/.wm_style が WindowMaker になっていた部分を以下のように変更。

GNOME

なんとなく、日経ネットワークセキュリティを読みながら、セキュリティツールのインストールなどを行ってみたので、そのインストールメモでも。使い方などの詳しい情報は雑誌で。OS は VineLinux 2.5 なので、他の OS ではこの通りに作業してもインストールできる保証はありません。

  1. hping 2.0.0-rc1 <http://www.hping.org/>
    $ wget http://www.hping.org/hping2.0.0-rc1.tar.gz
    $ tar zxvf hping2.0.0-rc1.tar.gz
    $ cd hping2
    $ ./configure
    $ make
    $ su
    # make install
    
  2. Netscat 1.10 <http://www/atstake.com/research/tools/>
    $ wget http://www.atstake.com/research/tools/nc110.tgz
    $ mkdir nc110
    $ mv nc110.tgz nc110
    $ cd nc110/
    $ tar zxvf nc110.tgz
    $ make linux DFLAGS="-DGAPING_SECURITY_HOLE -DTELNET"
    

    make に失敗した場合は、 netcat.c の 1317行目から1320行目までの

    #ifdef HAVE_BIND
    ..............
    #endif
    

    を削除して make コマンドを再度実行。

    ./nc -h

    を実行してバージョンが表示されれば成功。

  3. Whisker 1.4 <http://www.wiretrip.net/rfp/p/doc.asp/i1/d21.html>
    $ wget http://www.wiretrip.net/rfp/bins/whisker/whisker.tar.gz
    $ tar zxvf whisker.tar.gz
    $ cd v1.4/
    $ perl whisker.pl
    

    ヘルプ画面が表示されれば成功。

  4. smtp-cracker <http://packetstormsecurity.org/UNIX/misc/rcpt-analisys.tgz>
    $ wget http://packetstormsecurity.org/UNIX/misc/rcpt-analisys.tgz
    $ mkdir smtp-cracker
    $ mv rcpt-analisys.tgz smtp-cracker/
    $ cd smtp-cracker/
    $ tar zxvf rcpt-analisys.tgz
    $ mv rcpt-analisys.tgz ../
    $ gcc -Wall -O3 smtp-cracker.c -o smtp-cracker
    $ ./smtp-cracker
    

    ヘルプ画面が表示されれば成功。

  5. John the Ripper 1.6 <http://www.openwall.com/john/>
    $ wget http://www.openwall.com/john/john-1.6.tar.gz
    $ tar zxvf john-1.6.tar.gz
    $ cd john-1.6/src/
    $ make linux-x86-any-elf
    $ cd ../run/
    $ ./john
    

    バージョンが表示されれば成功。

あと、apt-get で Ethereal や nmap、Nessus などをインストールしておけば充分かも。とりあえず、サーバのセキュリティチェックなどを定期的に行っておくと少し安心。どちらにしても、セキュリティアップデートはこまめに。

ネタ的に FreeBSD に Apache 2.0.35 と PHP 4.2.0 RC4 をインストールしたので、そのメモ。何も考えずに Apache 2.0.35 をインストールした後、PHP 4.2.0RC4 をインストールしようとしたら、FreeBSD の場合は GNU pth をインストールするように言われてしまったので、PHP のインストールの前に Ports などでインストールする必要があります。

PHP はマルチバイト対応と最適化オプションを付けてコンパイルしています。

  1. Apache 2.0.35 をインストール
    $ tar zxvf httpd-2.0.35.tar.gz
    $ cd httpd-2.0.35
    $ ./configure --enable-so
    $ make
    $ su
    # make install
    
  2. GNU pth をインストール
    # cd /usr/ports/devel/pth
    # make install
    # exit
    
  3. PHP 4.2.0RC4 のインストール
    $ tar zxvf php-4.2.0RC4.tar.gz
    $ cd php-4.2.0RC4
    $ ./configure \
        --with-apxs2=/usr/local/apache2/bin/apxs \
        --without-mysql \
        --with-pgsql \
        --enable-trans-sid \
        --enable-mbstring \
        --enable-mbregex \
        --enable-mbstr-enc-trans \
        --enable-inline-optimization \
        --disable-debug \
        --with-tsrm-pth
    $ make
    $ su
    # make install
    

実際にベンチマークを取ってみた感じとしては、Apache 2.0 になったからといって速くなったわけではなさそう。オプションを付けずにインストールした場合は 1.3.24 の方がパフォーマンスは良かったような気がする。

FreeBSD の問題なのか、Apache の問題なのかはよく分からないが、まあ、詳しく調べたわけではないし、試しただけなので、何とも言えない。・・・しばらくは様子を見るくらいで、Apache 2.0 を実際のサーバに使うことはなさそう。



2002/04/14(Sun) [ VineLinux 2.1.5 でファイルシステムを ext3 に ]

VineLinux 2.1.5で ext2 ファイルシステムを ext3 に変更する方法

VineLinux のメーリングリストで、既にファイルが存在する ext2 のパーティションを ext3 に変換することが可能という情報があったので、試してみた。

ファイルシステムが ext2 の /dev/hda1 を ext3 に変更するための例ということで。

ext3 を使用するには、カーネル 2.2.19 以降が必要なので、カーネルが 2.2.18 以下の場合はアップグレードしておくこと。

カーネルのアップグレードについては、http://www.vinelinux.org/manuals/kernel-upgrade.html を参照。

また、e2fsprogs というパッケージが必要なので、なければ追加する必要がある。

$ rpm -qa | grep e2fsprogs

を実行して、何も表示されなければ e2fsprogs パッケージをインストールする。

# apt-get install e2fsprogs

まず、シングルモードにした方が安全なので、root で

# telinit 1

を実行してシングルモードで起動する。本当は、対象のパーティションをアンマウントした方が安全だが、アンマウントしなくても大丈夫のようだ。

次に、

# tune2fs -j /dev/hda1

を実行。ジャーナリング領域が追加される。後は、ファイルシステムが正常かどうかをチェック。

# fsck /dev/hda1

変換された hda1 が ext3 として認識するように /etc/fstab で ext2 を ext3 に変更する。

再起動して、

# df -T

を実行して、ファイルシステムの形式が ext3 と表示されれば成功。

http://www.turbolinux.co.jp/knowledge/public/361.html では、ext2 を ext3 ファイルシステムに変換する以外にも、新規で ext3 ファイルシステムを作成する方法も記載されているので、こちらを参考にした方がいいかもしれません。



2002/04/07(Sun) [ PHPのチューニング関係メモ ]

相変わらず時間がないので、短めに。

PHP の動作を速くするには、いくつか方法があるが、とりあえず、プログラムを高速に動くようにチューニングする以外の方法をメモ。

一つはコンパイル時に、

--enable-inline-optimization --disale-debug

を追加して configure を行う。メモリの使用量は少し多くなるが、有効な方法らしい。

stripコマンドを使用する事で、少しは高速になるようだ。php を apache の実行モジュールとしてコンパイルした場合のPHPモジュールは、

/usr/local/apache/libexec/libphp4.so

にあるので、root で

# strip /usr/local/apache/libexec/libphp4.so

として、シンボルを削除すると結構速くなる。何か問題があるかもしれないので、こういうチューニングは自己責任で。



戻る