WP-Super-Cacheのときに懲りていたはずなんですが、またやってしまいました。(スーパーキャッシュのときは、通販サイトのカートがクロスサイトスクリプティング対策をやってて、そのワンタイムトークンごとキャッシュしてたので、キャッシュを読むとXSSエラーになるという。orz…)
 
Apacheに cache と disk_cache というモジュールがあって、Apacheレベルでキャッシュしてくれるなら、きっと汎用性が高いだろう(スーパーキャッシュのときのようなことはないよね)と勝手に思って、この2つを available にしたんですが、WordPress Muでリダイレクト無限攻撃!orz…
 
「キャッシュがある程度溜まる」&「ブラウザのCookieの状態」&「なにか」で無現リダイレクトになるみたいで、ちゃんと追っかけきれてないんですが、301攻撃の嵐!
mod_evasiveを入れていたので、DoS攻撃だとみなされて、403 Forbiddenと踏んだり蹴ったりです。
気をつけましょう。

いまのところ使わないけど、そういうニーズも出そうだなと思うのがこれ↓
連続投稿を可能にするプラグイン Continuous Post Plugin
 
これはきっと使うなと思うのがこれ↓
Post Templates
Post templates 日本語リソース
投稿ごとにデザインテンプレートを変更するプラグイン – Custom Post Template
特定の記事やページをテンプレートにするプラグイン[WP]
ここに気になる追記が。

※2009/5/9追記 – ショップや不動産関係など、同じ雛形の記事を更新するサイトの場合は、AddQuicktagsというプラグインを利用した方が簡単です。後々のサイト管理を楽に行いたい場合は、カスタムフィールドを使用してテーマを直接カスタマイズした方が良いでしょう。

なるほどね。

[Linux] プロセスIDを調べてみる
ps aux とか ps -ef 、 pgrep なんかは普段使っていなかったので、勉強になった。
 
Apache で mod_cache を使う

# a2enmod cache
# a2enmod disk_cache

# e /etc/apache2/mods-available/disk_cache.conf
CacheEnable disk /

これでOK。
WordPress Muで問題が発生したので組込み中止!
 
ubuntu(Debian系Linux)のApache2.2の設定管理
有効化したモジュールは、/etc/apache2/mods-enabledにファイルが作成される、ということが知りたかった。

必要に迫られてmod_evasiveをインストールしたのでメモ。Ubuntu9.04でのことです。
そのものずばりの記事がこちら ⇒ How to mod_evasive Ubuntu 9.04

sudo apt-get install libapache2-mod-evasive

こうするだけでいいよ(That is all there is to it.)と。
ほんとかなぁ?
ほんとに動いているかどうか心配だって?(How to test that it works ?)
じゃあ、F5連打してみなよ、すぐわかるから。(Simply open any browser, got to your server’s home page, and click the reload button as fast as you can.)
 
で、やってみました。
1秒間に2、3回程度なら全然拒否られません。
ガーっと連打というか押し続けると、こんな画面が。

Forbidden

You don't have permission to access / on this server.

みごとです。しばらくは間をおいてもこの画面でした。ちなみにサーバ側は 403を返しています。
 
Ubuntuではこれだけですが、ソースから入れたりしての詳しい設定方法などは、以下を参照。
Apache DoS攻撃対策 mod_evasiveインストール&設定 – Linux

ちょっといろいろあって「お断り」したいアクセス元があったので、しばらくIPアドレスで拒否っと。
まず、どこから来てるか、それを調べる。

# lsof -i:80

COMMAND   PID     USER   FD   TYPE   DEVICE SIZE NODE NAME
apache2 23768 www-data   17u  IPv6 54246506       TCP ubuntu904A:www->i125-201-8-158.s05.a023.ap.plala.or.jp:53982 (ESTABLISHED)
apache2 23770 www-data    5u  IPv6 54100032       TCP *:www (LISTEN)
apache2 23770 www-data   17u  IPv6 54246505       TCP ubuntu904A:www->i125-201-8-158.s05.a023.ap.plala.or.jp:40936 (ESTABLISHED)
apache2 23778 www-data    5u  IPv6 54100032       TCP *:www (LISTEN)
apache2 23778 www-data   17u  IPv6 54246518       TCP ubuntu904A:www->i125-201-8-158.s05.a023.ap.plala.or.jp:38658 (ESTABLISHED)
apache2 23780 www-data    5u  IPv6 54100032       TCP *:www (LISTEN)
apache2 23780 www-data   17u  IPv6 54247178       TCP ubuntu904A:www->spider79.yandex.ru:54332 (ESTABLISHED)
apache2 23794 www-data    5u  IPv6 54100032       TCP *:www (LISTEN)
apache2 24506 www-data    5u  IPv6 54100032       TCP *:www (LISTEN)
apache2 24506 www-data   17u  IPv6 54246543       TCP ubuntu904A:www->i125-201-8-158.s05.a023.ap.plala.or.jp:41587 (ESTABLISHED)

ま、こんな感じのレポートが出てくるわけです。(この例は、aguse.jpを動かしたときのもので、aguse.jpを拒否りたいわけではないので。念のため)
 
この例で言うと「i125-201-8-158.s05.a023.ap.plala.or.jp」を拒否りたいので、これをIPアドレスをなんでもいいんですけど、調べる。

# dig i125-201-8-158.s05.a023.ap.plala.or.jp

;; ANSWER SECTION:
i125-201-8-158.s05.a023.ap.plala.or.jp. 3600 IN A 125.201.8.158

 
で、「125.201.8.158」をしばらく拒否ろうかなと。

# iptables -I INPUT -s 125.201.8.158 -j DROP

 
iptablesの状態を見てみると、

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  i125-201-8-158.s05.a023.ap.plala.or.jp  anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

 
戻すときは、

# iptables -D INPUT 1

指定している数字は、iptables -Lで出てくる順番です。いまは1つしかないから1。
 
このやり方(プロバイダのIP制限)をすると、巻き添えを食ってアクセスできない人がたくさん出ると思うので、緊急事態だけね。
 
参考:
iptables で特定IPからのアクセスを拒否
第9回 IP認証によるアクセス制限のテクニック

1つ1つの投稿に後から画像やカスタムフィールドを付けるのって、面倒ですよね。
DBを直接いじれる前提ですが、手順を書いておきます。
これをやる前に画像はまとめて、メディア ≫ ライブラリ に新規追加しておきます。(タイトルがファイル名になっている前提)
 

select ID,post_title from wp_posts where post_type='post';

とりあえず、投稿した IDを取りだします。
 

insert into wp_postmeta (post_id, meta_key, meta_value) values (930,'cf_price','3150');
insert into wp_postmeta (post_id, meta_key, meta_value) values (930,'cf_image_1','http://satake7.net/files/2010/05/b-005.jpg');

カスタムフィールドは、post_id に投稿IDをセットして追加します。
 

update wp_posts set post_parent = 930 where post_title='b-005' and post_parent=0 and post_type='attachment';

メディア ≫ ライブラリ に追加しただけの画像ファイルは投稿に紐づいていないので、post_parent=0 になっています。この post_parentに投稿IDをセットすればOKです。