2009年04月の記事
2009-04-25 (土)
Posted at: 00:15:00 - Posted by: yashikiba - Category: Nucleus
--------------------------------------------------------------
Nucleus バージョン3.41 日本語版が登場
2009/04/23 - Permalink
--------------------------------------------------------------
今日、Nucleusのアップグレードをしました。
この新しいバージョン3.40から、インストールパッケージが1つに統一されました。
(今までは、UTF-8版とEUC-JP版の2つがあったのです。)
これで、このブログツールでの文字コードの選択は、スキンとデータベースの使用の際にだけ行うことになるようです。
また、今回のアップグレードは「メジャーバージョン」へのアップグレードです。
したがって、「データベーステーブルのアップグレード」も必要です。
* プラグインについては、使用時の文字コードに合わせて修正しなければならないものもあります。
(PHPスクリプト内にマルチバイト列が使用されている場合などが、そうです。)
以下に、自分用のアップグレード方法をメモして置きます。
1.データベースとconfig.phpのバックアップ。
phpMyAdminで、ブログのデータベースをクライアントPCにバックアップします。
WinSCPなどのファイル転送ソフトで、config.phpをクライアントPCにバックアップします。
2.アップグレード用アーカイブのダウンロードとファイルの更新。
今回のアーカイブ圧縮ファイルは、NucleusCMS_3.41Upgrades.zipでした。
これを展開してできた「NucleusCMS_3.41Upgrades」を、サーバ上のブログの規定の場所に上書きします。
WinSCPなどで、NucleusCMS_3.41Upgradesフォルダ内のすべてのフォルダとファイルをNucleusブログのディレクトリ直下に上書きコピーします。
※ 私の場合、あらかじめ、変更したコアファイル(templateなど)のオリジナルファイル(.original)とバックアップファイル(.bak)を作成しておきます。
・~.originalは、アップグレード時のデフォルトのファイルそのままのものです。
・~.bakは、自分のブログ用に変更したコアファイルです。
・使用するコアファイルは、ファイルの更新後、「~.bak」で上書きコピーします。
3.アップグレードスクリプトのダウンロードと実行。
アーカイブスクリプト・3.41Upgrades-script.zipをダウンロードして展開します。
そのとき出来た「upgrades」フォルダをNuclesuの管理用ディレクトリ(/nucleus/ディレクトリ)直下にアップロードします。
あとは、http://~/~/nucleus/upgrades/index.phpにアクセスして、表示された手順に従ってアップグレードを完了させます。
(1)
--------------------------------------------------------------
まずはログインして下さい
--------------------------------
下記の情報を入力して下さい:
・名前:
・パスワード
「ログイン」
* このとき、ブログへのログイン前なので、以下の表示が出るかもしれません。
--------------------------------------------------------------
mySQL error with query UPDATE nucleus_member SET (省略) 'field list'
mySQL error with query UPDATE nucleus_member SET (省略) in 'field list'
--------------------------------------------------------------
(2)
--------------------------------------------------------------
アップグレードスクリプト集
(省略)
ここをクリックしてデータベースを Nucleus v3.4 用にアップグレードします
↑ これをクリックします。
(省略)
extra/htaccess/media/readme.ja.txt
extra/htaccess/skins/readme.ja.txt
(3)
・再び、ログイン画面が出ます。
(4)
--------------------------------------------------------------
mySQL error with query UPDATE nucleus_member SET (省略) 'field list'
mySQL error with query UPDATE nucleus_member SET (省略) in 'field list'(??)
アップグレードの実行
--------------------------------
Altering nucleus_template table ... 成功!
Altering nucleus_template_desc table ... 成功!
Creating DebugVars config value ... 成功!
Creating DefaultListSize config value ... 成功!
Adding a new row for the autosave member option ... 成功!
Updating DatabaseVersion in config table to 340 ... 成功!
アップグレード完了!
--------------------------------------------------------------------------------
アップグレード成功
アップグレード最初のページにもどる → これをクリック。
(5)
--------------------------------------------------------------
・再び、ログイン画面が出ます。
(6)
--------------------------------------------------------------
アップグレードスクリプト集
(省略)
いくつかの変更は手動で行う必要があります。下記にその手順を示します。
手動変更は必要ありません。今日はラッキーな日ですね!
(7)
--------------------------------------------------------------
・アップグレード正常完了後、使用した「upgrades」ディレクトリを削除します。
以上で、Nucleusのバージョンを最新のv3.41にアップグレードできました。
追記
Firefoxでブログのソースを見ると、
<meta name="generator" content="Nucleus CMS v3.41" />
となっています。
また、「管理画面」の表示も雰囲気が変わったような…。
追追記 - 2009/06/28 -
私がアップグレードした後、「修正」が公表されていたので、NP_Ping.phpファイルの修正しておきました。
参考:
<Nucleus CMS v3.41 日本語版 >
--------------------------------------------------------------
(引用)
アップグレード用アーカイブに含まれるNP_Pingの62行目にカンマ(,)が無いため、63行目でエラーとなります。
--------------------------------------------------------------
2009-04-22 (水)
Posted at: 00:17:00 - Posted by: yashikiba - Category: General
ブログツールで記事を作成する場合、普通は自動的にHTMLタグが挿入され、レイアウトが整えられます。
また、プロバイダやレンタルサーバ会社がユーザに提供する(無料)ブログサービスでは、
改行タグの自動挿入以外に、特殊文字の実体参照への変換や「\n(改行コード)」の削除が施されたりするそうです。
以上の事柄は、記事内にJavaScriptコードを記述するのを難しくしています。
けれども、自宅サーバの場合、簡単に外部JavaScriptファイルを作成できるので、
それを埋め込むという方法で、容易に、記事内でJavaScriptを動作させることができます。
そこで、この場所で、「アナログ時計」を表示させて見ました。
参考:
<ブログ記事内でJavascriptを動かす方法 - まとめ>
参考:
<第5回:アナログ時計を作ってみよう! - Think IT>
参考:
<ClocX 1.5 beta 2 Standard - ClocX>
* JavaScriptのことは、ほとんど知らないのですが…。
2009-04-18 (土)
Posted at: 00:34:00 - Posted by: yashikiba - Category: Nucleus
この頃、また、私の地域の回線が混雑しているのでしょうか?
一日に、2~3回、IPアドレスが変わっているようです。
IPCPによる動的IPアドレスの割当は、実際、どのように行われるのでしょうか?
Webブラウザでサイト閲覧している最中に、「あれ、このサイト、表示できないのかな?」などと思っているとすでに、再接続の過程に入っているのです。
(一定の間隔でアクセス信号を送って接続を継続する方法などもあるようですが?)
数少ない、私のブログへの訪問者が、こちらのマシントラブルだと思わないかと気にしたりもします。
最近は、自宅サーバに新しい機能を追加したり、基本性能を改善したりすることは、時間が取れないので出来ないのですが、サーバ監視には結構気を使っています。
(起床時と就寝時は特に?)
★ こういうコメントをしておかないと、本当にこのサイトへアクセスする人がいなくなるようなので、あえて書いて置きます。(^_^;
追記
ところで、Nucleusでは、WYSIWYGの機能はプラグインで追加するのですが、Serendipityだとインストール時の段階ですでに選択的に使用可能です。
Nucleusの場合は、TinyMCEとMitasNomのどちらかを使うことになると思うのですが、私は今までアイテムをWindowsのノートパッドで作成していました。
なぜかというと、Nucleusでは、書き込む際に時間制限がある(ような)のです!
のんびり編集画面を開いていると、ドラフトに登録されてしまいます。
(いきなりで癪に障ったので、わざと、このことについては調べていないのです。)
参考:
<NP_TinyMCEをインストール - みちくさノート>
参考:
<NP_MitasNom - FCKeditor利用のWYSIWYGなHTMLエディター。複雑な表組みも簡単!>
2009-04-12 (日)
Posted at: 00:12:00 - Posted by: yashikiba - Category: CentOS5
また、前回と同じようなログが記録されました。
ログウォッチのHTTPのセクションに以下のようなメッセージがありました。
--------------------- httpd Begin ------------------------
A total of 1 sites probed the server
aaa.bbb.ccc.ddd
A total of 1 possible successful probes were detected (the following URLs
contain strings that match one or more of a listing of strings that
indicate a possible exploit):
/xxx xxx xxx http://www.google.co.jp/search? xxx xxx xxx xxx → (B)
xxx xxx xxx xxx xxx xxx xxx xxx xxx HTTP Response 200
(省略)
---------------------- httpd End -------------------------
上の(B)の部分には、Googleでの検索時の文字列があります。
ただし、前にも言ったように、この文字列は、私のサーバ側で付加されたものです。
直接アクセスされたページのURLにはないものです。(、と思うのですが。)
また、/usr/share/logwatch/scripts/services/httpの@exploitsには、
エクスプロイトのアクセスと判断するために参照する文字列を、
「'\\\xNN … … \\\xNN',」(NNは16進数を表す数字)の形式で記述しているので、
それに該当しそうな箇所を調べて見ました。
--------------------------------------------------------------
\xe3\x82\xa2\xe3\x82\xaf\xe3\x82\xbb\xe3\x82\xb9\xe3\x82\xab\xe3\x82\xa6\xe3\x83\xb3\xe3\x82\xbf
\xe8\x87\xaa\xe4\xbd\x81 → ここに、「\x81」があります。
・行としては、2箇所にしました。
--------------------------------------------------------------
@eploitsには、「'\\\x81',」が配列に含まれているので、これが検出対象になったようです。
ここで試しに、URLエンコードされた検索文字列を日本語にしてみました。
--------------------------------------------------------------
# touch code_test_url.txt → URLエンコードされた文字列を入れるファイルです。
# vi code_test_url.txt
\xe3\x82\xa2\xe3\x82\xaf\xe3\x82\xbb\xe3\x82\xb9\xe3\x82\xab\xe3\x82\xa6\xe3\x83\xb3\xe3\x82\xbf
\xe8\x87\xaa\xe4\xbd\x81 → 上の2行を貼り付けます。
--------------------------------------------------------------
次に、文字(コード)変換をするのに、nkfコマンドを使います。
* nkfコマンドは、--cap-inputと--url-inputオプションで、それぞれ、':'、または、'%'の後に続く16進数を指定した文字に変換できます。
・--cap-inputオプションを使う場合は以下のようにします。
--------------------------------------------------------------
# sed -i.bak 's/\\x/:/g' code_test_url.txt → .bakの指定は必要ありません。
# vi code_test_url.txt
:e3:82:a2:e3:82:af:e3:82:bb:e3:82:b9:e3:82:ab:e3:82:a6:e3:83:b3:e3:82:bf
:e8:87:aa:e4:bd:81
# nkf -w --cap-input code_test_url.txt
アクセスカウンタ
自佁
・--url-inputオプションを使う場合は以下のようにします。
--------------------------------------------------------------
# sed -i 's/\\x/%/g' code_test_url.txt
# vi code_test_url.txt
%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%ab%e3%82%a6%e3%83%b3%e3%82%bf
%e8%87%aa%e4%bd%81
# nkf -w --url-input code_test_url.txt
アクセスカウンタ
自佁
--------------------------------------------------------------
・「自佁」というところに、検索の雰囲気が出ているようです。
参考:
<Linux上で文字コードを変換できるコマンドnkfのオプション一覧>
* サイト名:
<Knowledge Database IT>
参考:
<URLで日本語を扱う場合、ASCIIにエンコードする必要がある>
* サイト名:
<日本人のルーツを探るブログ>
2009-04-09 (木)
Posted at: 20:48:02 - Posted by: yashikiba - Category: General
今日、googleで検索してみると、ページが文字化けしていました。
Internet Explorer7の「ツール」で、「インターネット一時ファイル」と「履歴」を削除しましたが、改善されません。
PCを再起動しても、文字化けは直りませんでした。
(「表示」のエンコードは、「自動選択」で「トルコ語(Windows)」が選択されてしまいます。)
仕方なく、Yahooで検索して調べると、どうやら、新しく配布されたgoogleツールバーが原因のようでした。
そこで、Googleツールバーを一度、アンインストールして見ました。
すると、確かに、正常に表示されるようになりました。
IE7のエンコードは、「自動選択」で、Unicode(UTF-8)や日本語(EUC)、日本語(シフト JIS)を正しく選択するようになりました。
パソコンがウイルスに感染したのかと思いました。
「検索最大手のサイト」にドキリとさせられました。
修復されたツールバーが配布されるまで、googleホームページから検索することにします。
追記
表示に不具合のあるgoogleのページは、
--------------------------------------------------------------
<!doctype html><head><title> … </title> … <script> … </script></head>
--------------------------------------------------------------
のように、<meta http-equiv="Content-Type" content="text/html; charset=***" />の設定がありません。
参考:
<google検索結果の文字化け - goo 教えて!goo>
追追記
4月10日(00:55)時点。
* googleツールバー6をインストールしたところ、正常な表示に戻りました。
--------------------------------------------------------------
… <head><meta http-equiv=content-type content="text/html; charset=UTF-8"><title> …
--------------------------------------------------------------
2009-04-04 (土)
Posted at: 00:15:00 - Posted by: yashikiba - Category: CentOS5
最近、ログウォッチのHTTPのセクションに以下のようなメッセージがありました。
--------------------------------------------------------------
--------------------- httpd Begin ------------------------
A total of 1 sites probed the server
aaa.bbb.ccc.ddd
A total of 1 possible successful probes were detected (the following URLs
contain strings that match one or more of a listing of strings that
indicate a possible exploit):
/xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx → (A)
xxx xxx xxx xxx xxx xxx xxx xxx xxx HTTP Response 200
Requests with error response codes
403 Forbidden
/ppp/qqq/…
404 Not Found
/rrr/sss/…
---------------------- httpd End -------------------------
・アクセスログも見てみました。
# less /var/log/httpd/access_log.x
(省略)
aaa.bbb.ccc.ddd - - [xx/Mar/2009:ii:jj:kk +0900] "GET /xxx/xxx HTTP/1.1" 200 nnnn
(省略)
"http://xxx.xxx.xxx/ppp…boot.ini…" "…Windows…Firefox…"
(省略)
--------------------------------------------------------------
・上のログの内容では、IPアドレスがaaa.bbb.ccc.dddのサイトがこのサーバをプローブしたことになっています。
・また、(そのサイトによる)成功した可能性がある(?)プローブが検出されたとされています。
・ログメッセージでは、プローブだと指摘した理由を、実際のexploit(セキュリティホール探索・攻撃コード?)のアクセスを示す文字列リストの中の1つ以上の文字列が、アクセスURLに含まれているからだ、としています。
そこで、分からないながらも、プローブとexploitを調べて見ました。
プローブは、業務などでは、ネットワークのトラフィック状態の遠隔監視装置のことや、文字通り、システムの調査・探査の事を指すと思います。
けれども、上記のログでは、外部から他人のサーバのポートの開閉状態をスキャンしたり、アクセス可能なファイルを探査するという意味で使われています。
exploitは、本来は「つけこむ・搾取する(または、資源を利用・開発する)」という意味ですが、ここでは、(ネットワークの)セキュリティ分野に転用されて使われている場合の意味です。
この言葉も、もともとはシステムのプログラムの脆弱性である「セキュリティホール」を探査・検証するためのプログラムコードのことだったそうです。
それが、ハッカー(クラッカーの意味で。)の特定、または、不特定サイトの攻撃のために改変されて悪用されることから、サーバ攻撃用のプログラムコード(?)を意味するようになったそうです。
(インターネットの記事では、2000年ごろからのものもありますから、相当古い言葉です。)
・それを知らなかったといわれると、…。
ただ、このことは、あくまで、ログウォッチのメールで知らされたものですから、logwatchの実行スクリプトで作成されています。
CentOS5.3の場合、logwatchの実行スクリプトとログウォッチの各セクション作成用のスクリプトは以下の場所にあります。
--------------------------------------------------------------
# ls -l /usr/share/logwatch/scripts/
合計 76
(省略)
-rwxr-xr-x 1 root root 48801 5月 25 2008 logwatch.pl
* 実行スクリプトです。
# ls -l /usr/share/logwatch/scripts/services/
合計 1212
(省略)
-rwxr-xr-x 1 root root 24704 5月 25 2008 http
* HTTPセクション作成用のスクリプトです。
--------------------------------------------------------------
上の1つ目はPerlのスクリプトですが、後の方はその中で展開されて実行されるスクリプトだと思うのですが。
/usr/share/logwatch/scripts/services/httpの中を見ると、なぜ、「プローブを検出した」というメッセージが出たのかが分かります。
--------------------------------------------------------------
# vi /usr/share/logwatch/scripts/services/http
- - - 省略 - - -
#
# what to look for as an attack USE LOWER CASE!!!!!!
#
my @exploits = (
'^null$',
'/\.\./\.\./\.\./',
'\.\./\.\./config\.sys',
- - - 省略 - - -
'boot\.ini', → 最初に載せたhttpdログのURLの(A)の部分にありました。
- - - 省略 - - -
#
# loop to check for typical exploit attempts
#
$isahack = 0;
for (my $i = 0; $i < @exploits; $i++) {
# print "$i $exploits[$i] $field{lc_url} \n";
if ($field{lc_url} =~ /$exploits[$i]/i) {
$hacks{$field{client_ip}}{$exploits[$i]}++;
$total_hack_count += 1;
$ban_ip{$field{client_ip}} = " "; → ban_ipを取得しています?
if ($field{http_rc} < 400) {
$hack_success{$field{url}} = $field{http_rc};
} → HTTPステータスコードが「200」ですから、「hack_success」となります。
$isahack = 1;
}
}
- - - 省略 - - -
#
# List (wannabe) blackhat sites → ログの出力パートです。
#
$flag = 1;
foreach my $i (sort keys %ban_ip) {
if ($flag) {
print "\nA total of ".scalar(keys %ban_ip)." sites probed the server \n";
$flag = 0;
}
#if ($detail > 4) {
print " $i\n";
#}
}
#
# List possible successful probes → ログの出力パートです。
#
$flag = 1;
if (keys %hack_success) {
print "\nA total of " . scalar(keys %hack_success) . " possible successful probes were detected (the following URLs\n";
print "contain strings that match one or more of a listing of strings that\n";
print "indicate a possible exploit):\n\n";
foreach my $i (keys %hack_success) {
print " $i HTTP Response $hack_success{$i} \n";
}
}
・私はPerlを知らないので、コードの流れだけを見ただけです。
--------------------------------------------------------------
上のスクリプトを見ると、配列「@exploits」内の文字列と一致する部分のあるURLでアクセスしてきた場合に、
--------------------------------------------------------------
A total of X sites probed the server
aaa.bbb.ccc.ddd
--------------------------------------------------------------
のメッセージが出るようです。
また、そのリクエストに対して、HTTPステータスコードの「200」が返された場合に、
--------------------------------------------------------------
A total of X possible successful probes were detected (the following URLs
contain strings that match one or more of a listing of strings that
indicate a possible exploit):
/xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx → (A)
xxx xxx xxx xxx xxx xxx xxx xxx xxx HTTP Response 200
--------------------------------------------------------------
のメッセージが出るようです。
ところで、私のWebサイトには(A)で指定されたページはありません。
それでも、ステータスコードが「200」になるのは、Googleで検索した際に付加されたGetメソッドの文字列がリファラとしてWebページのURLに付加されることがあるからです。
(自分でも、この辺はよく分かりません…。)
したがって、今回のログについては、問題はないと考えています。
もちろん、boot.iniはWindows OSの「ブート情報ファイル」です。
追記
プローブ検出のログがあり、実際にそのファイルが存在しアクセスされたのなら、対応します。
たいていの場合、そのような重要なファイルには「ステータスコード:403」が返されるでしょうが。
(exploitや何かのツールでアタックされた時です。)
ネットで見てみると、リスポンスコードが403や404の場合についても書かれていました。
そのときは、「A total of X possible successful probes were detected…」は記録されないと思うのですが。
参考:
<プローブ probe - ITpro Dictionary>
参考:
<Exploitとは(エクスプロイト) - ITpro Keyword>
参考:
<いろいろ誤爆? - にっき - ほしにねがいを>