サーバーの脆弱性の解析

OpenVAS を使うことで、ネットワーク経由でアプリを
スキャンし、セキュリティホールを見つけてくれます
よくあるパターンで
パッケージの更新忘れや
ソースからインストールしていて放置
などの脆弱性検出が可能
また、是に寿悪性を深刻度で分類してくれるのでアプリがわかりやすいなどなど
日経 Linux と
OpenVAS セットアップ on Ubuntu10
を参考にインストール&設定
Ubuntu はペッケージがるけど、最新版はまだ使えないので
開発元のrepository を追加して最新版をインストールできるように設定
sudo sh -c “echo \”deb http://download.opensuse.org/repositories/security:/OpenVAS:/STABLE:/v4/xUbuntu_11.10/ ./\” >> /etc/apt/sources.list”
sudo apt-key adv –keyserver hkp://keys.gnupg.net –recv-keys BED1E87979EAFD54
で配布元サイトの公開鍵を追加
sudo apt-get update
でパッケージリスト更新
sudo apt-get install greenbone-security-assistant gsd libmicrohttpd10 libopenvas4 openvas-administrator openvas-manager openvas-scanner openvas-cli sqlite3
でサーバーとクライアントのパッケージをインストール
インストール完了後、OpenVAS サーバとクライアントの設定
まず、SSL通信に使うためのデジタル証明書を作成
test -e /var/lib/openvas/CA/cacert.pem || sudo openvas-mkcert -q

test -e /var/lib/openvas/users/om || sudo openvas-mkcert-client -n om -i
を実行
次に、データベースとプラグインの更新
sudo openvas-nvt-sync
sudo /etc/init.d/openvas-manager stop
sudo /etc/init.d/openvas-scanner stop
sudo openvassd
sudo openvasmd –migrate
sudo openvasmd –rebuild
次に、サービスを起動します
sudo killall openvassd
sudo /etc/init.d/openvas-scanner start
sudo /etc/init.d/openvas-manager start
sudo /etc/init.d/openvas-administrator restart
sudo /etc/init.d/greenbone-security-assistant restart
最後に OpenVAS の管理者になる Admin ユーザを追加
test -e /var/lib/openvas/users/admin || sudo openvasad -c add_user -n admin -r Admin
このとき、パスワードを聞かれるけど、これは
sudo コマンドを使っているためなので、打つパスワードは
ubuntu のものになります
ユーザ作成後、gsd を実行すると Login 画面がでてきます
Profile には適当に名前を入れます
今回は test
次に
Serveraddress には、サーバーIPアドレスもしくは
自マシンのみなら localhostを指定
(今回はlocalhost に指定)
Username には admin
password には sudo のときに入れるユーザパスワードを入力します

PHPで文字列の暗号化

PHPでは、文字列の暗号化ができます
忘れないうちにメモ
crypt() の暗号化アルゴリズム一覧
CRYPT_STD_DES
標準DES アルゴリズム
0~9
A~Z と a~z の文字列のみ指定可能
最初の8文字しか暗号化しないので注意
シードは2文字
CRYPT_EXT_DES
拡張DES アルゴリズム
_の後に4バイトの反復回数、4バイトのシード文字列を指定
0~9
A~Z と a~z の文字列のみ指定可能
シードは9文字
CRYPT_MD5 
MD5アルゴリズム
シードは $1$で始まる12文字
CRYPT_BROWFISH
BlowFish アルゴリズム
シードは$2a$ で始まる33文字
$2a$の後に2桁のコスト値、その後に$で囲んだシード22桁の
文字列を指定
0~9
A~Z と a~z の文字列のみ指定可能
CRYPT_SHA256
SHA256アルゴリズム
シードは$5$ で始まる文字列
$5$ の後に16桁のシード文字列を指定
シード文字列に round~回数$をるけることで
ハッシュループ回数も指定できる
0~9
A~Z と a~z の文字列のみ指定可能
CRYPT_SHA512
SHA512アルゴリズム
シードは$6$で始まる文字列
$6$の後に16桁のシード文字列を指定
0~9
A~Z と a~z の文字列のみ指定可能
シード文字列に round~回数$をるけることで
ハッシュループ回数も指定できる

android アプリのバージョンアップ

Android アプリの開発において
バージョンアップする方法についてのメモです
Android アプリを開発して、バージョンをあげるには
AndroidManifest.xml を編集します
編集するのは
android:versionCode=”1″
android:versionName=”1.0″
の部分
android:versionCode=”1″
は、Android システムに向けての情報
バージョンアップするときには、この数値を1ずつあげていきます
android:versionName=”1.0″
こちらは、ユーザ向けの情報
よく、ダウンロードするときに ver1.0 とか
ver1.1 とか書いてあるところにあたります
これらを修正して、再度アップロードすれば、
バージョンアップしたアプリの公開なのですが
新しく公開したときことは異なり、バージョンアップしたときは
新規アプリ扱いにはなりませんので
自分でマーケティングする必要があります
最近だと twitter, facebook で告知するといいのかもしれません

Yahoo Map API の情報収集開始

Google Maps API が来年から有料となるため、
Yahoo 地図に乗り換えるべく、情報収集しています
検索だけでは効率が悪いため、Google アラートに登録し
情報収集することにしました
現在、参考になりそうなサイトとして
Yahoo!地図WEB APIでマップ表示
Yahoo!地図APIに挑戦
Yahoo!地図 JavaScriptマップAPI入門
ゼロからはじめるYahoo! Maps API
MIT Media Lab新所長、伊藤穰一とPivotalのCTO,Ian McFarlandが語る会に行った
です

Android でライブラリプロジェクト

ソースコードをコピーするとプロジェクト間でコピーする前後で
機能差、バグ、バグの修正など、それぞれのバージョンで違うという状況が発生する
この場合、共通クラスを修正すると
他のプロジェクトにも繁栄するという面倒な作業が…….
これを一ヶ所にまとめれば、非常に効率的になる
というわけで
ライブラリプロジェクトを作成して
共通クラスをコピーしなくても使えるようにする
まずは、今回作成したYouTubeSearch プロジェクトに対してライブラリを適用
新規プロジェクトを作成して
プロジェクト名は
APILIBs
create acrtivity のチェックはいらないのではずして
build target は android 2.2
package name にはnet.linuxliker.APILIBs
テストもしてみたいのなら
JUnit テストプロジェクトも作成する(ただし、こちらはまだできていない)
とりあえず、できたら、プロジェクトのプロパティの設定
プロジェクトを右クリックして
Properties を選択
Android をクリックし、右側画面の下側にある
is Libray をチェック
Apply を押して適用します
liblary.png

Webサーバーログの多面解析

日経 Linux (リナックス) 2011年 12月号 [雑誌]
を参考に、Webサーバログの多面解析ソフト
Visitors をインストールしてみました

まずは、環境を整えます
sudo apt-get -y install ssh nautilus-open-terminal tasksel
sudo apt-get -y install vim
sudo apt-get -y install ia32-libs
sudo apt-get install build-essential graphviz
で必要なものをインストールします
ssh は、リモート操作に必須
nautilus-open-terminal は右クリックで端末を開くため
tasksel は LAMP を簡単構築するためです
vim はテキストエディタ
ia32-libs は32ビット互換ライブラリ
build-essential はC言語関連パッケージ
grahviz はグラフ作成です
sudo tasksel で起動して
LAMP を選択してインストールします
wget http://www.hping.org/visitors/visitors-0.7.tar.gz
でファイルを取得し
tar zxvf visitors-0.7.tar.gz
で解凍
cd visitors_0.7/
make
でファイルのコンパイル
sudo cp visitors /usr/bin/
でファイルを移動します
これで準備OKです
解析の手法は書籍どおりでOK
最後のほうで、自身のサイトのドメイン名を使うところがあるけど
これは
tasksel で apache2 がインストールされているから
http://localhost を指定すればOKです
実行した後、解析結果は
$HOME/visitors_0.7/
の中に
20111118_report.html
というように、年月日_report.html で保存されているので
解析結果をみたいのなら
このファイルをダブルクリックすれば
ブラウザが立ち上がり、解析結果をみることができます

is_array() について

PHPのめもです
配列かどうか調べるには
is_array() を使う
is_array() は、引数の変数の方が配列型であるなら、TRUE
そうでないなら FALSE を返す
is_array()
の使い方は
論理値 = is_array(変数);
sample では、ちょっとした三項演算子をまぜている
たとえば
echo “\$bool_var は”.((is_array_($bool_var))? “配列だよ” : “配列じゃねぇ”);
さて、これの解説
echo で、表示しているのが
\$bool_var は
というところ、
\がついているのは $の意味を無効化するため
無効化しないと、変数として作動してしまう
.(処理);
で続いているところの解説
. はPHPではその後に文字を書くことを意味している
つまり、その後の処理内容がかかれる
もし、is_array() の結果が配列なら
\$bool_var は配列だよ
となり、違うなら
\$bool_var は配列じゃねぇ
となる
あと、三項演算子が使われているけど、これを応用すると
いろいろとできる
今回の場合、is_array() の結果を三項演算子で使っている
まず、is_array() の実行結果が三項演算子の処理の条件にしていて
True なら、(配列の場合)
配列だよ
が実行され
FALSE なら(配列以外の場合)
配列じゃねぇ
が実行される

YouTube の Data API メモ


Google Android WebAPIプログラミング入門
をみながら YouTube Data API のサンプルを再現してみたときに
つまづいたことがあったのでメモです
インターネットに接続するのに必要なパーミッション
<uses-permission android:name=”android.permission.INTERNET”></uses-permission>
そして
アプリを実行して、検索結果のリストを出すときに
<activity android:name=”SearchActivity” android:icon=”@drawable/icon” android:label=”@string/app_name”></activity>
が必要になります
ちなみに、サンプルソースをダウンロードして、
プロジェクトをインポートしたときに
インターネットに接続するのに必要なパーミッション
<uses-permission android:name=”android.permission.INTERNET”></uses-permission>
が AndroidManifest.xml の中で抜けているため、
そのまま実行してもエラーとなりますのでご注意
また、JUnit Test のところも
数値が異なるため、JUnit のテスト結果にある
エラーメッセージを参考に、コードの修正が必要になります

Pocket WiFi GP02 検討中

Pocket WiFi GP02 への機種変を最近検討しています
現在、使用している端末が D12HW というかなり古い機種です
これを ubuntu で使うには
ubuntu でイーモバイル接続(D12HW)
で記述した方法を使います
今回、機種変を考えているのは、このGP02 を使うことで
WiFi 環境ができるのなら、Apple iPod touch 32GB MC544J/A
を外出時につかったり

現在、Android開発の実験端末に使用している
Creative ZEN Touch 2 Android エンターテイメントプレーヤー 8GB ブラック ZN-T28G-BK

これらも使うことができそうなためです
あと、もう一つ気になるのが、米国などではすでに行われているパケット定額の見直し
現在、au の IS04 使っていますが
通信速度をみても、GP02 のほうが早いし
パケット料金を抑えるのにも使えるかもしれません
ちなみに、GP02の詳細は
Pocket WiFi (GP02)
です
ただ、懸念すべきものがあります
それは、使っている環境が Mac でも Windows でもなく
ubuntu ということ
以前、設定ファイルを変更したりといろいろと手間取ったように
今回も設定ができるのかが微妙な点です
このあたりを ubuntu GP02 で検索してみました
Pocket WiFi GP02 設定
を参考にさせていただきました
Pocket WiFi GP02を繋ぐためには「プロファイルの設定」
が必要とのことです
ちなみに、もう一つ考えているのが通常は 4G回線で届くのでOK
では、トンネルなどの電波のとどかない場所では
WiFi 機能だけは使えるのか?それともどちらもNGなのか?
というところです
こればかりは、実験してみないとわかりません
バッテリーの持ちも気になりますので、できれば予備のバッテリーの購入なども
検討したほうがいいのかもしれません
現在、情報収集と資金の検討していますので、
実機導入後、また書き込んで行こうと思います

連動する様々なクロス通貨レート

ひさしぶりに、お昼のニュースで為替レートで
ユーロ円がでていたので、書き込んでみました
とはいっても表示されていたのが数日前ですが
表示されていたのが、ユーロ円でした
ちなみに、ユーロ円の値動きの要因は
ユーロ/ドル と ドル/円 がメインで決まります
クロス円の計算は、対ドルレート x ドル円レートですので
さて、このユーロの値動きに影響を与える要素が実は他にもいくつか
存在します
例えば、ユーロ/スイスフラン
そして、
ユーロ/ポンド
この2つが意外に関係します
ドル円、ユーロドルの通貨ペアに特に値動きがないときには
この通貨ペアが影響していることが多いのです
特に、突然の影響を受けるのがスイスフランです
スイスフランも、日本円と同様に、リスク回避のときには買われる通貨です
以前、リーマンショックのときには、円高であると同様に
スイスフランがかなり高値を更新しました
スイスフランは、まれにスイスフラン高により介入しますので
値動きの要因の1つとして考えられます
FX取引の場合、クロス円単体で見がちですが
その国に関係する通貨をみることで、ある程度の要因をつかむことができます
ユーロ/ポンド 以外にも
剛ドル/NZドル
とか、クロススイスフランレートなどもありますので
円以外にも注目してみると取引のチャンスがでてきます