Basic認証を掛けているディレクトリに対して特定のUserAgentだけスルーさせる

セキュリティ論で言うなれば、ナシの設定ですが世の中こう言う穴をあけておく必要もある訳です。
私の中では、物の存在理由を肯定する利便性は正義です。多少のリスクを冒しても正義は貫くものです。

ということで、タイトル通り、Basic認証されてるディレクトリへのアクセスに対して、
スマホからのリクエストはスルーさせようという設定はこちら。

# basic認証の設定
AuthUserFile /path/to/.htpasswd
AuthGroupFile /dev/null
AuthName "please input your ID and PW"
AuthType Basic
require valid-user

# スルーさせる条件に合致したらスルー
Order Deny,Allow
SetEnvIf User-Agent "iP(hone|[ao]d)" allow_ua
SetEnvIf User-Agent "Android" allow_ua
Deny from all
Allow from env=allow_ua

# スルーできなかったら正常処理(これが無かったら403)
Satisfy Any
0

「WordPressの更新」が途中でハングする件

件名通り、「WordPressの更新」が途中でハングする件。
実はサーバのせいだと思ってたんですが、サーバの仕様のせい、の間違いでした。
でも色々やってみたら何とかなりました。

まず、遅くなったりハングして止まっちゃう原因は、
アップデートするファイルの所有者がphpで触れないからっぽいのです。

私が使ってるサーバの設定では、phpの操作するファイルはパーミッションが777に設定されてるフォルダに対して、apacheの実行権限ユーザーでしかファイルを書き出す事が出来ません。
なので、wordpressでアップデートされるべきファイルたちは777に設定されてるディレクトリ以下に存在していて、自分のアカウント(つまり、apacheの実行権限ユーザーではない)で設置したwordpressのファイルはパーミッションを666にしてあげる必要があるのです。

ってことでコマンドは荒々しくこんな感じで。

cd [インストールディレクトリ]
find ./ -type d | xargs chmod 777
find ./ -type f | xargs chmod 666

次にwp-config.php に以下の行を追記します。

define('FS_METHOD','direct');

あまりこれの意味が分かってないのですが、この行を追加する事で、
FTPアカウントの要求をされなくなって、1ステップすっ飛ばす事になります。
http://wpdocs.sourceforge.jp/wp-config.php_の編集 を見ても今一理解できません。詳細説明も無いですし。

あとは、wp-adminから更新をやったって下さい。
あまりの更新速度でちょっと感動しました。

ちなみに私は面倒なのでやりませんが、セキュリティを考えてアップデート後のパーミッションを戻すのならば、

cd [インストールディレクトリ]
find ./ -type d | xargs chmod 755
find ./ -type f | xargs chmod 644

とすればいいのかな。

[12/02/12 追記]
wordpressのディレクトリ以下をapacheを動かしてる権限に書き換えてやる方法が安定してる気がします。

chown -R apache:apache /path/to/wordpress/
0

Nagiosでサーバ監視 part1

久しく更新してなかったので、wpのアップデートであたふた。
sakuraのVPSはI/Oが残念なのか、はたまた私の設定が行けないのか、
スポーンとwebUIから簡単アップデートができないのです。
と言う事で、ここを見ながらアップデートです。

さて、結構な台数を監視する必要があるので、便利に管理する為に
Nagiosという監視ツールに手を出してみました。

具体的に何をやりたいかと言うと
1. 結構な台数を簡単に監視したい
2. サーバの種別毎にチェック項目を分けたい
3. それらをコンパネみたいなので制御したい(例えば種別とかチェックON/OFFとか)

上の二つはNagiosで、最後のをphpでやってみようという話で。
とか言いながら、実は既に稼働してるので、思い出しながらやった事を書いて行こうという。

まずはNagiosの準備から。
Nagios自体はFreeBSD9.1R上のportsでやりました。

cd /usr/ports/net-mgmt/nagios
make
make install clean

config 画面で色々要求されますが、そのままエンターでデフォルトのまま行きました。
やがて、インストールが成功するとこんなメッセージが出ます。

 Enable Nagios in /etc/rc.conf with the following line:

   nagios_enable="YES"

 Configuration templates are available in /usr/local/etc/nagios as
 *.cfg-sample files.  Copy them to *.cfg files where required and
 edit to suit your needs.  Documentation is available in HTML form
 in /usr/local/www/nagios/docs.

 If you don't already have a web server running, you will need to
 install and configure one to finish off your Nagios installation.
 When used with Apache, the following should be sufficient to publish
 the web component of Nagios (modify the allow list to suit):

   <Directory /usr/local/www/nagios>
     Order deny,allow
     Deny from all
     Allow from 127.0.0.1
     php_flag engine on
     php_admin_value open_basedir /usr/local/www/nagios/:/var/spool/nagios/
   </Directory>

   <Directory /usr/local/www/nagios/cgi-bin>
     Options ExecCGI
   </Directory>

   ScriptAlias /nagios/cgi-bin/ /usr/local/www/nagios/cgi-bin/
   Alias /nagios/ /usr/local/www/nagios/

言われるがままrc.confに追記し、既に稼働中のapacheにあわせて、
先の内容をhttpd.confに追記。

ちなみにNagios自体のインストールはこれにて完了。
ここからが本番です。

apacheの再起動後、NagiosのDocumentRootに対してBASIC認証を掛ける必要があります。
DocumentRootのディレクトリに.htaccessでBASIC認証を設定した上で、
[nagiosadmin]というIDでログインできるように.htaccessに対応した.htpasswdを作ってください。

次に、動かすために必要な設定ファイルを用意しなければ行けません。
/usr/local/etc/nagios に設定ファイルを設置して行かないと行けないのですが、
サンプルがあるので、それにあわせて設定ファイルを設置します。

必要だったファイルは
・nagios.cfg
・cgi.cfg
・resource.cfg
・objects/commands.cfg
・objects/contacts.cfg
・objects/timeperiods.cfg
・objects/templates.cfg
・objects/localhost.cfg
サンプルを見て”とりあえず”用意します。

一通り出来たならば、Nagiosを動かしてみましょう。

/usr/local/etc/rc.d/nagios start

失敗すれば間違ってる設定ファイルと行が表示され、
うまく行けば以下のようにプロセスが稼働します。

# /usr/local/etc/rc.d/nagios start
Performing sanity check of nagios configuration: OK
Starting nagios.

と言う所で、長くなったので今日はここまで。
ここからが面倒なところなんですわ。

ちなみにボールペンappはapple様にくだらないから却下と言われました。
”それこそ”面白い所だったはずなので、ご理解頂けなかった事に
ちょっとだけ、いや、かなり凹みました。なのでこんなネタで茶を濁してる訳です。

0