ソフトの窓様がVisitorsの日本語化をされていらっしゃいましたので、ファイルを元にその日本語化をもっと徹底的に行ないました。
修正内容
・残りの英語表記であった部分を日本語化しました。
・解析結果を表示するページが左寄でしたので中央寄せに修正しました。
使い方はソフトの窓様を参考にお願いします。
先程うちのブログがハッキングをうけて乗っ取られました。
被害状況としては、記事を勝手に作成され下記のような画像をアップロードされてました。
また、ハッキングのお土産としてHDDの使用率を100%にするウイルス?を残されていて下記のような訳のわからないファイルを自動作成されていました。
-rw-r–r– 1 apache apache 104857600 7月 28 20:40 Wed Jul 28 20:38:27 JST 2010.dat
-rw-r–r– 1 apache apache 104857600 7月 28 20:40 Wed Jul 28 20:38:31 JST 2010.dat
-rw-r–r– 1 apache apache 104857600 7月 28 20:40 Wed Jul 28 20:38:46 JST 2010.dat
-rw-r–r– 1 apache apache 35831808 7月 28 20:41 Wed Jul 28 20:40:33 JST 2010.dat
-rw-r–r– 1 apache apache 31326208 7月 28 20:41 Wed Jul 28 20:40:34 JST 2010.dat
-rw-r–r– 1 apache apache 30171136 7月 28 20:41 Wed Jul 28 20:40:39 JST 2010.dat
-rw-r–r– 1 apache apache 87064576 7月 28 20:37 date.dat
-rw-r–r– 1 blog blog 237787 7月 28 18:02 hACKED.jpg
-rw-r–rw- 1 apache apache 1731 7月 28 20:37 hACKED.ktai.jpg
これらの止め方と修復の方法をメモしておきます。
ディレクトリへ移動し、下記のコマンドを実行します。
# rm -f hACKED.jpg
# rm -f hACKED.ktai.jpg
# rm -f a.php
# rm -f date.dat
# rm -f Wed*
# pgrep -f ‘head’ | xargs kill
その他の症状としてはtopコマンドで確認したらわかるようにheadで占領されます。
一応ハッキングした人は日本人みたいなので皆さんもご注意下さい。
意外にもあまり紹介されていないのでメモしておきたいと思う。
EUC-JPの文字コード表では次の通りに並んでる。
!”#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~
よって/[!-~]/iこれで全ての半角英数文字をマッチすることが可能である。
ユーザディレクトリにクオータをかけたは良いが解除する方法が紹介されていない為書き込んでおこうと思う。
ユーザ:testのクオータを解除する。
# edquota -u test
Disk quotas for user test (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/cciss/c0d0p6 432 500000 512000 96 0 0
上記をviの方法で下記のように書き換える。
# edquota -u test
Disk quotas for user test (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/cciss/c0d0p6 432 0 0 96 0 0
あとは保存することでクオータが解除される。
Apacheのアクセスログ(/var/log/httpd/access_log)に含まれるIPアドレスを一斉にHOST名に変更したいと思うことがしばしばある。
しかし、あまり方法が紹介されていないようなので今回書いておこうと思った。
Apachjeにはログに含まれるIPアドレスを自動的にHOST名に変換してくれるlogresolveというコマンドがある。今回これを使い一括して変換を行なおうと思う。
コマンドの形式
# logresolve < 生ログのファイル > 変換した出力先ファイル
例:
# logresolve < /var/log/httpd/access_log > ./laccess_log
これにより/var/log/httpd/access_logに含まれるIPアドレスを一括して変換し./laccess_logへ結果を保存することができる。
/ パーティション肥満化原因が/var/cache関連でしたのでeAcceleratorのディスクキャッシュを止めました。
又、メモリーを大量消費しないように16MBまでに制限しました。
# vi /etc/php.d/eaccelerator.ini
; Enable eAccelerator extension module zend_extension = /usr/lib/php/modules/eaccelerator.so ; Options for the eAccelerator module eaccelerator.cache_dir = /var/cache/php-eaccelerator ;eaccelerator.shm_size = 0 eaccelerator.shm_size = 16 eaccelerator.enable = 1 eaccelerator.optimizer = 1 eaccelerator.check_mtime = 1 eaccelerator.filter = "" eaccelerator.shm_max = 0 eaccelerator.shm_ttl = 3600 eaccelerator.shm_prune_period = 0 ;eaccelerator.shm_only = 0 eaccelerator.shm_only = 1 eaccelerator.compress = 1 eaccelerator.compress_level = 9 ;eaccelerator.keys = "shm_and_disk" eaccelerator.keys = "shm_only" ;eaccelerator.sessions = "shm_and_disk" eaccelerator.sessions = "shm_only" ;eaccelerator.content = "shm_and_disk" eaccelerator.content = "shm_only" eaccelerator.debug = 0
eaccelerator.shm_only = 1
CPU使用率を監視しながら使用率が大幅に上がる場合等は考え直そうと思う。
http://jump.orsx.net/
リファラの隠蔽により掲示板等の設置場所をアクセス先の管理人に悟られなくする機能に加えブラウザクラッシャーや不快動画・画像、ウイルス、グロ画像、パス抜きサイト等のURLが含まれていた場合過去の経歴より判別し即座に警告表示を出す機能を追加しました。また今回、利用者自信も自分で危険なURLを登録することが可能です。よって自分でオリジナルの環境をカスタムすることが可能となっております。
利用例)
https://www.orsx.net/ へリンクしたい場合は下記の②通りの書き方が可能です
http://jump.orsx.net/www.orsx.net/blog/
http://jump.orsx.net/https://www.orsx.net/
このサービスはRental Orbit Spaceの公式サービスとして認定されております。
リファラから特定のサイトからのアクセスか判断し、指定したページにリダイレクトする.htaccessを公開します。
例:2chからのアクセスをhttp://jump.orsx.net/リファラに転送させてジャンプ確認画面を表示させます。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_REFERER} .*ime.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*2ch.*$ [NC] RewriteRule ^(.*)$ http://jump.orsx.net/%{HTTP_HOST}/$1 </IfModule>
あまり必要ないのか紹介が一切ないのでメモしておく。
試しに2chからのアクセスのみ別のログに保存しておくようにしてみる。
# vi /var/log/httpd/2ch_log
# vi /etc/httpd/conf.d/2ch.conf
SetEnvIf Referer "^http://.*.2ch.net" 2ch_log SetEnvIf Referer "^http://ime.nu" 2ch_log CustomLog /var/log/httpd/2ch_log combined env=2ch_log
# service httpd restart
余談だが、その気になれば特定のサイトからアクセスがあった場合はメールで知らせることも可能である。
参考元:今週のお題 – Apache のエラーログをメールする
# vi /root/2ch_log.pl
#!/usr/bin/perl use strict; my $addr = $ARGV[0] ? shift:"orbit"; while(1) { my $r = sysread(STDIN, my $m, 4096); if($m) { if(open(MAIL, "|/usr/bin/Mail -s '[httpd] 2ch Access' $addr")) { print MAIL $m; close MAIL; } } if($r <= 0) { last; } }
# vi /etc/httpd/conf.d/2ch.conf
SetEnvIf Referer "^http://.*.2ch.net" 2ch_log SetEnvIf Referer "^http://ime.nu" 2ch_log CustomLog "/var/log/httpd/2ch_log" combined env=2ch_log CustomLog "| /root/2ch_log.pl" combined env=2ch_log
# service httpd restart
追記
LAN内からのアクセスをロギングしない設定
SetEnvIf Referer "^http://.*.2ch.net" 2ch_log SetEnvIf Referer "^http://ime.nu" 2ch_log SetEnvIf Remote_Addr "^127.0.0." !2ch_log SetEnvIf Remote_Addr "^192.168.24." !2ch_log CustomLog "/var/log/httpd/2ch_log" combined env=2ch_log CustomLog "| /root/2ch_log.pl" combined env=2ch_log
全く同じ働きをするCGIを書いてみました。
※私の妄想にしか過ぎないので間違ってる可能性もあります。
#!/usr/bin/perl #=================================== #スクリプト名:ジャンプCGI #作者:ORBIT #=================================== # URLの後ろパスがついているかチェック if ($ENV{'PATH_INFO'} eq ""){&error;} # パスにhttp:/が含まれている場合削除 $ENV{'PATH_INFO'} =~ s/http:///; # URLの作成 $PATH = "http:/$ENV{'PATH_INFO'}"; # 出力 print "Content-type: text/htmlnn"; print <<EOT <html><head> <title>jump</title></head> <body> 以下のURLに飛びますよろしいですか?<br> <a href="$PATH">$PATH</a> </body></html> EOT ; # パスが見つからなかった場合は下記を出力 sub error { print "Content-type: text/htmlnn"; print <<EOT <html><head> <title>jump</title></head> <body> test </body></html> EOT ; exit; }
これをエラーページにしてるのかリダイレクトしてるのか多分そんなところかと思います。
最近のコメント