Monthly Archives: 8月 2009 - Page 2

Postfix エラー 設定変更

以前から気になっていたエラー
support for restriction “reject_maps_rbl” will be removed from Postfix; use
“reject_rbl_client domain-name” instead
を解決する方法を見つけたので紹介します。

# ALIAS DATABASE
#
# The alias_maps parameter specifies the list of alias databases used
# by the local delivery agent. The default list is system dependent.
#
# On systems with NIS, the default is to search the local alias
# database, then the NIS alias database. See aliases(5) for syntax
# details.
#
# If you change the alias database, run "postalias /etc/aliases" (or
# wherever your system stores the mail alias file), or simply run
# "newaliases" to build the necessary DBM or DB file.
#
# It will take a minute or so before changes become visible.  Use
# "postfix reload" to eliminate the delay.
#
#alias_maps = dbm:/etc/aliases
#alias_maps = hash:/etc/aliases

alias_maps = hash:/etc/aliases
場所をここに指定します。

エラー
restriction `reject’ after `check_relay_domains’ is ignored :
support for restriction “check_relay_domains” will be removed from Postfix; use
“reject_unauth_destination” instead :
の解決方法

smtpd_recipient_restrictions =
                permit_mynetworks,
		regexp:/etc/postfix/recipient_checks.reg,
				permit_sasl_authenticated,
				check_relay_domains,
		reject

これを下記の様に変更しました。

smtpd_recipient_restrictions =
                permit_mynetworks,
		regexp:/etc/postfix/recipient_checks.reg,
				permit_sasl_authenticated,
				reject_unauth_destination

クラッキング(ハッキング)ツール BBDoS.a

このクラッキングツールはDos攻撃をする為に作られたツールです。
どうやらソースを見ると掲示板に連続投票するために書かれてますね^^;
Perlで記述されています。

Dos攻撃とはターゲットに大量のリクエストを送り
サーバーの処理能力を極端に低下させる攻撃です。

お願いですからウチに攻撃しないでくださいね(≧人≦;)

このプログラムはコマンドプロントや端末(ターミナル)を利用し
使用します。

ダウンロードして、このまま使おうとしても使用できません。
なぜかPerlまでのパスの上に説明文が書かれています。
# phpBB <= 2.0.15 Register Multiple Users Denial of Service (perl code) この文章を削除することで利用可能になります。 WS000015

ソースを読んでみましたが攻撃が始まると止められません。。。。。
9999回続きますw
WS000017

作者さんquitとかで終了できるようにしましょうよ^^;

Clam AntiVirus WARNING: Can’t open file /~

朝起きてLOGを確認したところ下記の様になっていました

ClamAV update process started at Thu Aug 13 03:00:00 2009
main.cvd is up to date (version: 51, sigs: 545035, f-level: 42, builder: sven)
Downloading daily-9680.cdiff [100%]
Downloading daily-9680.cdiff [100%]
Downloading daily-9681.cdiff [100%]
Downloading daily-9681.cdiff [100%]
Downloading daily-9682.cdiff [100%]
Downloading daily-9682.cdiff [100%]
Downloading daily-9683.cdiff [100%]
Downloading daily-9683.cdiff [100%]
Downloading daily-9684.cdiff [100%]
Downloading daily-9684.cdiff [100%]
Downloading daily-9685.cdiff [100%]
Downloading daily-9685.cdiff [100%]
daily.cld updated (version: 9685, sigs: 64251, f-level: 43, builder: ccordes)
Database updated (609286 signatures) from db.jp.clamav.net (IP: 120.29.176.126)
WARNING: Can't open file /sys/block/sda/sda1/uevent
WARNING: Can't open file /sys/block/sda/uevent
WARNING: Can't open file /sys/block/md0/md/new_dev
WARNING: Can't open file /sys/block/md0/uevent
WARNING: Can't open file /sys/block/hda/hda3/uevent
WARNING: Can't open file /sys/block/hda/hda2/uevent
WARNING: Can't open file /sys/block/hda/hda1/uevent
WARNING: Can't open file /sys/block/hda/uevent
~長いので省略~
LibClamAV Error: cli_readn: read error: Input/output error
WARNING: Can't open file /sys/devices/pci0000:00/0000:00:1d.7/uevent
WARNING: Can't open file /sys/devices/pci0000:00/0000:00:1d.5/uevent
LibClamAV Error: cli_readn: read error: Input/output error
WARNING: Can't open file /sys/devices/pci0000:00/0000:00:1d.4/uevent
WARNING: Can't open file /sys/devices/pci0000:00/0000:00:1d.1/usb2/2-0:1.0/uevent
WARNING: Can't open file /sys/devices/pci0000:00/0000:00:1d.1/usb2/uevent
LibClamAV Error: cli_readn: read error: Input/output error
WARNING: Can't open file /sys/devices/pci0000:00/0000:00:1d.1/uevent
WARNING: Can't open file /sys/devices/pci0000:00/0000:00:1d.0/usb1/1-0:1.0/uevent
WARNING: Can't open file /sys/devices/pci0000:00/0000:00:1d.0/usb1/uevent
LibClamAV Error: cli_readn: read error: Input/output error
WARNING: Can't open file /sys/devices/pci0000:00/0000:00:1d.0/uevent
WARNING: Can't open file /sys/devices/pci0000:00/0000:00:1c.0/uevent
LibClamAV Error: cli_readn: read error: Input/output error
LibClamAV Error: cli_readn: read error: Input/output error
WARNING: Can't open file /sys/devices/pci0000:00/0000:00:03.0/0000:01:01.0/uevent
WARNING: Can't open file /sys/devices/pci0000:00/0000:00:03.0/uevent
WARNING: Can't open file /sys/devices/pci0000:00/0000:00:00.0/uevent
WARNING: Can't open file /sys/devices/pci0000:00/uevent
WARNING: Can't open file /sys/devices/platform/serial8250/uevent
WARNING: Can't open file /sys/devices/platform/i8042/serio1/drvctl
WARNING: Can't open file /sys/devices/platform/i8042/serio1/uevent
WARNING: Can't open file /sys/devices/platform/i8042/serio0/drvctl
WARNING: Can't open file /sys/devices/platform/i8042/serio0/uevent
WARNING: Can't open file /sys/devices/platform/i8042/uevent
WARNING: Can't open file /sys/devices/platform/vesafb.0/uevent
WARNING: Can't open file /sys/devices/platform/uevent

----------- SCAN SUMMARY -----------
Known viruses: 608645
Engine version: 0.95.2
Scanned directories: 21535
Scanned files: 197957
Infected files: 0
Data scanned: 9781.63 MB
Data read: 15115.82 MB (ratio 0.65:1)
Time: 5134.285 sec (85 m 34 s)

無事対策のかいあってアップデートできてるなと安心していたら
何やらエラーがズラリ。。。。。。
こりゃ何だ!?
と調べた所
Clam AVでスキャンすると大量のエラーがでます
に同じような事で質問している方がいましたので参考にさせていただきました。
どうも、プロセスがファイルロックしてスキャンできなかったとの事です。

まぁ、気にはなりますが問題無いことなので無視で^^;

一応、他の方は
# echo “/proc/” >> clamscan.exclude
# echo “/sys/” >> clamscan.exclude
でスキャンしないようにリストに追加しているみたいですね~

クラッキング(ハッキング)ツール AnonyMail

今回は匿名メールを送信するクラッキングツールAnonyMail
について紹介します。

AnonyMailはドメインを偽り成りメールを送信することが可能です。
WS000006

Perlで記述されています。
Sendmailを利用しメールを送信します。
確かに下らないし、ありふれたツールですね^^;
まぁ、立派な名前があるので紹介しました。

この手のツールを使った成りすましメールは大抵の物が
メールヘッターを読み取ることにより簡単に見破る事が可能です。

SMTPのメール不正中継の拒否設定の重要さがわかりますね^^

今回少し私が気になったのが、このAnonyMail
実はダウンロードしてサーバーにアップロードし権限を投与しても
ページを開くことはできない事です。

ソースを読んで気づいた事なのですが、実は基礎的な文法ミスがあります。

第6行目
$admin = “napalmed@fuck.au”;

おそらく作者は
変数adminにメールアドレス(napalmed@fuck.au)
を格納しようと記述したのでしょうが
この記述では、メールアドレスの@以下(@fuck.au)が
配列と認識されてしまいError500になります。

そのため
この二重引用符(ダブルクオート)を単一引用符(シングルクオート)に変更する
必要があります。
こうする事により単一引用符(シングルクオート)で括る間の全ての
記号($,@,%,n,t等)が無視されます。

訂正例)
第6行目
$admin = ‘napalmed@fuck.au’;

クラッキング(ハッキング)ツール PHP Haxplorer.a

今回世界のハッカーが作ったウイルスやクラッキングツールを拝める機会がありまして
ちょっとしたクラッキングツールを紹介しようと考えました。

今回紹介するクラッキングツールはサーバーを遠隔操作できるツールです。
パーミッションやユーザーの権限の重要性がよく分かります。

Haxplorer.a
をターゲットのサーバーにアップロードします。
PHPなので属性の設定は必要ありません。
ただブラウザから表示するだけです。
※残念ながらダウンロードできるサイトを紹介することはできません。

以下の画像が表示されます。
WS000003

サーバーのファイルを操作することが可能です。
WS000004

権限があるディレクトリならどこでも自由に行き来、閲覧できます。
WS000005

Apacheユーザーでで実行させているのでしょうか
コマンドも実行できます。
これがもしRootで動いていたら。。。。。
なんて考えるととても恐ろしいです。
WS000002

これらのことから分かった事は
このようなツールを使えば知識の無い人でもサーバーを遠隔操作することが可能です
Windowsを利用した、なんちゃってサーバーは乗っ取られる可能性が十分ありますし
権限の設定はとても重要だという事です。

このツールはClam AntiVirusにより、正確に検知し駆除できる事を確認しました。

VineLinux 4.2 Clam AntiVirus

サーバーにClam AntiVirusをインストールしてみました
以前もClam AntiVirusをインストールしていましたが
VineLinuxのapt-getでインストールしたClam AntiVirusはバージョンが古く
サーバーのLOGにアホみたいに警告が残るので今回以下の組み合わせで
インストールしました。

Clam AntiVirus + clamav-update

clamav-updateとはclamav-update自身とClam AntiVirusを
自動的にアップグレードしてくれるソフトです。

# apt-get upgrade
# apt-get install clamav
で自動的にインストールし

[root@localhost root]# wget http://osdn.dl.sourceforge.jp/clamav-update/26300/clamav-update-2.2.3.tar.gz
--00:02:54--  http://osdn.dl.sourceforge.jp/clamav-update/26300/clamav-update-2.2.3.tar.gz
           => `clamav-update-2.2.3.tar.gz'
osdn.dl.sourceforge.jp をDNSに問いあわせています... 202.221.179.23
osdn.dl.sourceforge.jp|202.221.179.23|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 26,941 (26K) [application/x-gzip]

100%[====================================>] 26,941        --.--K/s

00:02:55 (279.43 KB/s) - `clamav-update-2.2.3.tar.gz' を保存しました [26941/26941]

このようにwgetコマンドで
clamav-update-2.2.3.tar.gzをダウンロードしてきます。

[root@localhost root]# tar zxvf clamav-update-2.2.3.tar.gz
clamav-update-2.2.3/
clamav-update-2.2.3/changelog.ja.utf-8.txt
clamav-update-2.2.3/clamav-update-update.conf
clamav-update-2.2.3/clamav-update.conf
clamav-update-2.2.3/clamav-update.pl
clamav-update-2.2.3/COPYING
clamav-update-2.2.3/INSTALL
clamav-update-2.2.3/install.command
clamav-update-2.2.3/INSTALL.ja.utf-8
clamav-update-2.2.3/install.sh
clamav-update-2.2.3/README.en.txt
clamav-update-2.2.3/README.ja.utf-8.txt
clamav-update-2.2.3/template/
clamav-update-2.2.3/template/clamav-update.conf

解凍後clamav-update-2.2.3へ移動しinstall.shを実行します。

[root@localhost root]# cd clamav-update-2.2.3
[root@localhost clamav-update-2.2.3]# ./install.sh

ROOTディレクトリに戻り解凍したディレクトリと
ダウンロードしてきた圧縮ファイルを削除します。

[root@localhost clamav-update-2.2.3]# cd
[root@localhost root]# rm -rf clamav-update-2.2.3
[root@localhost root]# rm -f clamav-update-2.2.3.tar.gz

設定ファイルの編集

[root@localhost root]# vi /usr/local/etc/clamav-update.conf
#$Setting{option}->{src} = 'http://jaist.dl.sourceforge.net/sourceforge/clamav';
#を消去して有効化
$Setting{option}->{src} = 'http://jaist.dl.sourceforge.net/sourceforge/clamav';
[root@localhost root]# vi /etc/freshclam.conf
Exampleを無効化するために#を追記
#Example

# By default when started freshclam drops privileges and switches to the
# "clamav" user. This directive allows you to change the database owner.
# Default: clamav (may depend on installation options)
#DatabaseOwner clamav
実行ユーザーをROOTにするため下記に変更
DatabaseOwner root

# Run command when freshclam reports outdated version.
# In the command string %v will be replaced by the new version number.
# Default: disabled
#OnOutdatedExecute command
OnOutdatedExecute /usr/local/bin/clamav-update.pl --config /usr/local/etc/clamav-update.conf
Clam AntiVirusアップデート時にclamav-updateを実行

DatabaseMirror database.clamav.net
ウィルスデータベース入手元を日本に変更
DatabaseMirror db.jp.clamav.net
# vi /etc/clamd.conf
Exampleを無効化するため#を追記
#Example

LogFile /var/log/clamd.log
ログの保存場所の変更

Clam AntiVirusの起動

[root@localhost root]# /etc/rc.d/init.d/clamd start
Starting ClamAV Daemon:                                    [  OK  ]

ウィルス定義ファイル更新

[root@localhost root]# freshclam
ClamAV update process started at Tue Aug 11 00:16:14 2009
main.cvd is up to date (version: 51, sigs: 545035, f-level: 42, builder: sven)
WARNING: getfile: daily-9451.cdiff not found on remote server (IP: 120.29.176.126)
WARNING: getpatch: Can't download daily-9451.cdiff from database.clamav.net
Trying host database.clamav.net (218.44.253.75)...
WARNING: getfile: daily-9451.cdiff not found on remote server (IP: 218.44.253.75)
WARNING: getpatch: Can't download daily-9451.cdiff from database.clamav.net
Trying host database.clamav.net (219.94.128.99)...
WARNING: getfile: daily-9451.cdiff not found on remote server (IP: 219.94.128.99)
WARNING: getpatch: Can't download daily-9451.cdiff from database.clamav.net
WARNING: Incremental update failed, trying to download daily.cvd
Trying host database.clamav.net (203.178.137.175)...
Downloading daily.cvd [100%]
daily.cvd updated (version: 9672, sigs: 63892, f-level: 43, builder: acab)
Database updated (608927 signatures) from database.clamav.net (IP: 203.178.137.175)

自動起動設定

[root@localhost root]# chkconfig clamd on
[root@localhost root]# chkconfig --list clamd
clamd           0:off   1:off   2:off   3:on    4:on    5:on    6:off

自動スキャンの設定は多くのサイトで紹介されているんで省略させていただきます。

インストールを含め現在エラーは見当たらないので紹介させていただきました。
RedHat系でclamav-updateのインストールについての記事は
見受けられませんでしたけど無事動いてるのかな^^;?

まぁ、サーバー側からまだ何も怒られていないので良しとしましょう(笑

参考元
VineLinuxで自宅サーバー
ARISONサーバー

(追記)
LOGを見たら
ウイルス移動先ディレクトリやバックアップディレクトリを何度もチェックされるという
なんとも困った事が発生してので解決方法を
[root@localhost root]# echo “/var/clamav/virus/” >> clamscan.exclude
[root@localhost root]# echo “/media/BACKUP/” >> clamscan.exclude
これでスキャン対象外にする事ができます。

色々なサイトを見回って
あまり気に入るスクリプトが無かったので
多くのサイトで紹介されているスクリプトを改造して使おうかと考えました。

新たに付け加えた機能としては
# vi /var/log/clamav.log
にLOGを取りながら見つけたウイルスは
# /var/clamav/virus
へ隔離します。
yumコマンドはRedHad系では使えないので
今回clamav-updateもインストールした分けですし
freshclamを実行するように書き換えました。

#!/bin/bash

PATH=/usr/bin:/bin

# lof file
LOG='/var/log/clamav.log'

# clamd update
freshclam > $LOG

# excludeopt setup
excludelist=/root/clamscan.exclude
if [ -s $excludelist ]; then
    for i in `cat $excludelist`
    do
        if [ $(echo "$i"|grep /$) ]; then
            i=`echo $i|sed -e 's/^([^ ]*)/$/1/p' -e d`
            excludeopt="${excludeopt} --exclude-dir=$i"
        else
            excludeopt="${excludeopt} --exclude=$i"
        fi
    done
fi

# virus scan
CLAMSCANTMP=`mktemp`
clamscan -i --move=/var/clamav/virus -r ${excludeopt} / >> $LOG 2>&1
[ ! -z "$(grep FOUND$ $LOG)" ] && 

# report mail send
grep FOUND$ $LOG | mail -s "Virus Found in `hostname`" orbit

grep FOUND$ $CLAMSCANTMP | mail -s “Virus Found in `hostname`” orbit
この設定ではorbitに送信されることになってますのでorbitを好きなユーザーに変更してください。

実行例)
メールで捕まったウイルスリストを送信します。
今回比較的新しいあの猛威を振るったHDDをフォーマットするウイルスも
対応しているか試してみましたところ無事隔離された事が分かります。
WS000000

サーバーに保存されているLOGです。
アップデートされたかも詳しく書かれています。
WS000001

これでコレクションの標本も増えると一石二鳥です^^

特定の文字を一括書き換えできるプラグイン WordPress

ドメインを変更してBLOG内の画像のURLがバラバラで、
これは自分で一つずつ書き換えていかないといけないのかな・・・・・
と困っていたところ、凄い便利なプラグインを見つけたので紹介します。

タイトルの通り特定の文字を一括置換してくれます。
プラグイン名:Search Regex
プラグイン=>新規追加=>プラグインの検索
でインストールすることが可能です。

ツールからSearch Regex をクリックし
Search patternに検索したい文字
Replace patternに置き換えたい文字を入力します。
Searchをクリックし、リストが表示されたらReplaceをクリックします。
確認のためもう一度、置換されたリストが表示されますので確認し
Replace & Saveをクリックし保存します。

これで簡単に画像の古いドメインを新しいドメインに変更できます。

これは実に感動的でしたね^^
作成者に感謝です。

WS000003

WS000001

WS000004

WS000002

参考元:今日の覚え書き Tickler’s bunkum days

WordPress コメント 画像認証 スパム対策

有名なブログレンタルサイトであるような
画像の文字を入力しないとコメントできないようにするプラグインを発見しましたので
使ってみました^^

プラグイン名:SI Captcha Options
プラグイン=>新規追加=>プラグインの検索
でインストールすることが可能です。

インストール後いつものように有効化しログアウトすると以下の画像のように読みにくい画像が
表示されるようになります。
WS000001

コメントの閉鎖されたURLを連続して書き込んでいたりする所をみると
ウイルスに感染させたPCを利用して書き込んでいるのか自動的に書き込ませているので
今回のプラグインは、大いに役に立つのではないかと考えています。

SSH 鍵交換方式による接続設定

この鍵交換方式も凄く悩まされていました^^
簡単なんですけどね・・・・・・
root権限でペアの鍵を作ってRootのLoginを禁止している・・・・・・・
何て矛盾でしょうw
今日の朝気づいたので試したら見事接続に成功しました^^

#vi /etc/ssh/sshd_config
管理者権限で設定ファイルを変更します。

鍵交換方式による接続のみ認証
PasswordAuthentication no

ROOTでのLOGINを禁止
PermitRootLogin no

PassなしのユーザーのLOGINを禁止
PermitEmptyPassword no

特定ユーザーのみ接続を許可
AllowUsers ユーザー名

暗号強度を1024Btに強化
ServerKeyBits 1024

SSHサーバーの再起動
# /etc/rc.d/init.d/sshd restart

SSHに接続するユーザーへ切り替える
# su – SSH接続ユーザー名

鍵のペアを作成

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/SSH接続ユーザー名/.ssh/id_rsa):
保存場所を聞かれるがEnterを押す
Created directory '/home/SSH接続ユーザー名/.ssh'.
Enter passphrase (empty for no passphrase):
Passを入力する。
Enter same passphrase again:
確認の為、再度Passを入力する。
Your identification has been saved in /home/SSH接続ユーザー名/.ssh/id_rsa.
Your public key has been saved in /home/SSH接続ユーザー名/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SSH接続ユーザー名@orsx.net

鍵のペアを確認する

#ls -al .ssh/
drwx------  2 SSH接続ユーザー名 SSH接続ユーザー名 4096  8月10日 06:45 ./
drwxr-xr-x 27 SSH接続ユーザー名 SSH接続ユーザー名  4月26日 08:36 ../
-rw-------  1 SSH接続ユーザー名 SSH接続ユーザー名 1743  8月10日 06:45 id_rsa
-rw-r--r--  1 SSH接続ユーザー名 SSH接続ユーザー名  409  8月10日 06:45 id_rsa.pub

ディレクトリ.sshへ移動
$ cd ~/.ssh

公開鍵のリネーム
mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

秘密鍵をHTTP公開でディレクトリへ移動
# cp ~/.ssh/id_rsa ~/public_html/id_rsa

FTPを利用し、ダウンロードします。
FTPが利用できない環境であればブラウザからダウンロードします。
※必ずダウンロード後は削除してください。

PuTTY Download Page
ここからPuTTYgenをダウンロードしてputtygen.exeを実行します。

Loadをクリックしてファイルの種類(T)でAll Files(*.*)に設定し
先ほどダウンロードしたid_rsaを選択します。

下記の表示が出たら鍵を作成した時に使ったPassを入力します。
WS000024

変換が完了したらSave private keyをクリックします。
保存するファイル名を聞かれますので適当に名前を付けます。

hdk の自作ソフトの紹介
よりPuTTYjp Version 0.60-jp20070603をダウンロードし、解凍する。
解凍後、フォルダー内のputtyjp.exeを実行

左側のメニューからSSH>認証を選択
WS000027
認証のためのプライベートキーファイル(K)を選択
先ほど変換した秘密鍵を選択します。

WS000025
ホスト名(またはIPアドレス)(N)を設定し、セッション一覧(E)に適当な名前を入力し
保存します。
※次回起動する場合、このセッションを読み込ませて起動します。

保存したセッションを選択し開く(O)をクリックし
黒い画面が出たら接続するユーザー名を入力しパスワードを入力します。
無事LOGINできたらSSH接続設定終了です。

参考元
Homeserver on Vine Linux – Vine Linuxで自宅サーバーを作ろう
VineLinuxで自宅サーバー

WordPress 高速化 PHPアクセラレータ 簡単導入

もう半年位悩んでいましたWordPressが物凄く遅い件に関して
今回解決する方法を試してみました。

PHPアクセラレータを導入して高速化を図る。
と言う方法です。
PHPアクセラレータと言っても
何種類かあるようなのでその中のAPCと言うものを利用しPHPの処理を最適化します。

コマンドphpizeを実行して以下の様に表示されれば恐らく
php5-develが入っています。

[root@localhost root]# phpize
Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of the module

こんな風に表示されていない場合はphp5-develが入っていない可能性があります。
インストールしましょう。

#apt-get install php5-devel

APC
ここからダウンロードするAPCのURLを確認します。
今回はAPC-3.0.19.tgzを使用しました。

コマンドwgetでファイルを/rootへダウンロードします。

[root@localhost root]# wget http://pecl.php.net/get/APC-3.0.19.tgz
--14:15:28--  http://pecl.php.net/get/APC-3.0.19.tgz
           => `APC-3.0.19.tgz'
pecl.php.net をDNSに問いあわせています... 216.92.131.66
pecl.php.net|216.92.131.66|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 115,735 (113K) [application/octet-stream]

100%[========================================>] 115,735       80.27K/s

14:15:30 (80.04 KB/s) - `APC-3.0.19.tgz' を保存しました [115735/115735]

/rootにダウンロードされた事を確認し解凍します。

[root@localhost root]# ls
APC-3.0.19.tgz   bkup.sh~*                           rootkit.sh*
Desktop/         domain.sh~*                         rootkit.sh~*
Maildir/         ftp.sh*                             rpm/
OCN/             install.log                         upgrade-log
Xrootenv.0       install.log.syslog                  user.txt*
anaconda-ks.cfg  mod_layout-50-vine-by_orbit.tar.gz  webalizer.sh*
backup.sh*       mysql.sql*                          webalizer.sh~*
backup.sh~*      mysql_bkup.sh*
bkup.sh*         postfix-2.2.10-10vl4.src.rpm
[root@localhost root]# tar xzvf  APC-3.0.19.tgz
package.xml
APC-3.0.19/tests/apc_001.phpt
APC-3.0.19/tests/apc_002.phpt
APC-3.0.19/tests/apc_003.phpt
APC-3.0.19/tests/skipif.inc
APC-3.0.19/arch/i386/atomic.h
APC-3.0.19/arch/x86_64/atomic.h
APC-3.0.19/arch/atomic.h
APC-3.0.19/CHANGELOG
APC-3.0.19/INSTALL
APC-3.0.19/LICENSE
APC-3.0.19/NOTICE
APC-3.0.19/TODO
APC-3.0.19/TECHNOTES.txt
APC-3.0.19/apc.c
APC-3.0.19/apc.dsp
APC-3.0.19/apc.h
APC-3.0.19/apc_cache.c
APC-3.0.19/apc_cache.h
APC-3.0.19/apc_compile.c
APC-3.0.19/apc_compile.h
APC-3.0.19/apc_debug.c
APC-3.0.19/apc_debug.h
APC-3.0.19/apc_fcntl.c
APC-3.0.19/apc_fcntl.h
APC-3.0.19/apc_futex.c
APC-3.0.19/apc_futex.h
APC-3.0.19/apc_globals.h
APC-3.0.19/apc_lock.h
APC-3.0.19/apc_main.c
APC-3.0.19/apc_main.h
APC-3.0.19/apc_mmap.c
APC-3.0.19/apc_php.h
APC-3.0.19/apc_pthreadmutex.c
APC-3.0.19/apc_pthreadmutex.h
APC-3.0.19/apc_sem.c
APC-3.0.19/apc_sem.h
APC-3.0.19/apc_shm.c
APC-3.0.19/apc_shm.h
APC-3.0.19/apc_sma.c
APC-3.0.19/apc_sma.h
APC-3.0.19/apc_pool.c
APC-3.0.19/apc_pool.h
APC-3.0.19/apc_spin.c
APC-3.0.19/apc_spin.h
APC-3.0.19/apc_stack.c
APC-3.0.19/apc_stack.h
APC-3.0.19/apc_zend.c
APC-3.0.19/apc_zend.h
APC-3.0.19/apc_signal.c
APC-3.0.19/apc_signal.h
APC-3.0.19/config.m4
APC-3.0.19/php_apc.c
APC-3.0.19/php_apc.h
APC-3.0.19/pgsql_s_lock.c
APC-3.0.19/pgsql_s_lock.h
APC-3.0.19/apc_fcntl_win32.c
APC-3.0.19/apc_rfc1867.c
APC-3.0.19/apc.php

解凍したAPCのディレクトリに移動し
コマンドphpizeを実行し
コンパイルしてインストールします。

[root@localhost root]# cd APC-3.0.19
[root@localhost APC-3.0.19]# phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
[root@localhost APC-3.0.19]# ./configure --enable-apc
checking for egrep... grep -E
checking for a sed that does not truncate output... /bin/sed
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking how to run the C preprocessor... gcc -E
checking for icc... no
checking whether gcc and cc understand -c and -o together... yes
checking for system library directory... lib
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for PHP prefix... /usr
(長いので省略)
(pthread_mutexattr_setpshared), your system may not support shared mutex's.
configure: WARNING: It doesn't appear that pthread mutex's are supported on your system
checking Checking whether we should use spin locks... no
checking for sigaction... yes
checking for union semun... no
checking whether we should enable valgrind support... no
checking for shm_open in -lrt... yes
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for /usr/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm -B
checking whether ln -s works... yes
checking how to recognise dependent libraries... pass_all
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for g77... no
checking for f77... no
checking for xlf... no
checking for frt... no
checking for pgf77... no
checking for fort77... no
checking for fl32... no
checking for af77... no
checking for f90... no
checking for xlf90... no
checking for pgf90... no
checking for epcf90... no
checking for f95... no
checking for fort... no
checking for xlf95... no
checking for ifc... no
checking for efc... no
checking for pgf95... no
checking for lf95... no
checking for gfortran... no
checking whether we are using the GNU Fortran 77 compiler... no
checking whether  accepts -g... no
checking the maximum length of command line arguments... 32768
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC
checking if gcc PIC flag -fPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
configure: creating libtool
appending configuration tag "CXX" to libtool
appending configuration tag "F77" to libtool
configure: creating ./config.status
config.status: creating config.h
[root@localhost APC-3.0.19]# make
(長いので省略)
cp ./.libs/apc.so /root/APC-3.0.19/modules/apc.so
cp ./.libs/apc.lai /root/APC-3.0.19/modules/apc.la
PATH="$PATH:/sbin" ldconfig -n /root/APC-3.0.19/modules
----------------------------------------------------------------------
Libraries have been installed in:
   /root/APC-3.0.19/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

[root@localhost APC-3.0.19]# make install
Installing shared extensions:     /usr/lib/php5/

/usr/lib/php5/内にapc.soが作成されている事を確認。

[root@localhost APC-3.0.19]#  ls /usr/lib/php5/
apc.so*  build/      mysql.so*   pdo.so*        pdo_sqlite.so*
bin/     mcrypt.so*  mysqli.so*  pdo_mysql.so*

/rootへ戻りphp.iniを編集します。

[root@localhost root]# vi /etc/php5/php.ini
下記を最下部に追記
extension=apc.so

Apache2を再起動

[root@localhost root]# /etc/rc.d/init.d/apache2 restart
httpdを停止中:                                             [  OK  ]
httpdを起動中:                                             [  OK  ]
[root@localhost root]#

これでPHPで書かれたプログラム(WordPress等)を高速処理できます。