AmazonEC2 で公開サーバーを構築する予定ですが、思ったようには
いきません
まずは、初期の状態をどうにかしないとだめです
とりあえず、まずはそれはおいておくとして
この機会にセキュリティに関して勉強をすることにしました
今回は、日経 Linux 2011-09 を使って勉強しています
今回は、SQLインジェクションについてです
SQLインジェクションの脆弱性は
sqlmap を使うことで見つけることができるようです
ubuntu の場合
sudo apt-get -y install sqlmap
でインストール
デモ用サイトへ実行するには
sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1
使い方に関しては
http://charie99.egloos.com/m/category/IT/page/2
が参考になります
SQLインジェクションは
データベースの問い合わせ言語であるSQLを Webさいとへ送りつけ
操作できないデータベースを外部から操る手法です
照合用のプログラムがユーザ名を検索するとき
SQL文で
SELECT * FROM users WHERE user name~’user1′ AND password=’****’;
となります
ユーザ名に ‘ OR 1=–
パスワードなしで認証したときに
ユーザ名で使用可能な文字列以外を破棄する
ロジックを組み込んでいないと
SELECT * FROM users WHERE user name=” OR1=1–‘ AND password=”;
が実行され
すべてのユーザアカウントが閲覧可能になってしまいます
これとは別のもうひとつ興味深いものとして
GPGPUによるハッシュ値の解読なども特集にありましたが
残念ながら、私のマシンではGPUがないので、実践はできませんでした
ちなみに、今回の特集で使われたのは
GeForce GTS 450
になります
月別: 2011年9月
CentOS AMI に入れておきたいもの
AmazonEC2 のAMI作成のため
必要となるものをまとまめてみました
アプリケーション
・エディタ
・テキストベースのインターネット
開発
・開発ツール
サーバー
・DNSネームサーバー
ベースシステム
・システムツール
・ベース
・管理ツール
言語
・日本語のサポート
用途としては、公開するWebサーバーとメールサーバーにする予定です
もし、他にも使えるAMIがあれば、先にそちらで実践してみようと思います
EC2用にCentOS5.2のAMIを作ってみた
の記事によりますと
RightScaleがCentOSのイメージを公開しているとのことですので
もしできるようなら、こちらも試して見ようとおもいます
AmazonEC2 CentOS 5.5
SUZ-LAB謹製 CentOS AMI 6.0.0の作り方
でAMIを作成していた情報がありました
micro Instance で
このAMIを使わせていただこうと思います
EC2 Dashboard を選択し
Launch Instance をクリック
どのAMIを使うかを聞かれるので
community AMI タグを 選び
Viewing で 32bit を選択
検索欄へ suz を入力
表示されたAMIから 今回はCentOS5.5 を選びました
AmazonEC2 でサーバ構築する場合
最近は停電、震災などが多いため、自宅サーバーだけでなく
クラウドを活用しようと思って AmazonEC2 を始めたのですが
VMware のような仮想マシン作成とは少しことなります
基本的に AMI と呼ばれるものからイメージ(仮想マシン)を
探して、起動する方法
(VMware などのできているマシンをダウンロードして使うようなもの)
これらに関しては
SUZ-LAB謹製 CentOS AMI (6.0.0 64bit ap-northeast-1)
にありますように、バージョンやOS、AMIの番号から調べて選び
起動するというようになります
もしくは、自分でAMIを作成し、そこから作っていく方法になります
本来、この方法を使おうと思っていたのですが
VMware のように、インストールメディアのISOからすすめると
思っていたのですが、実際には、コマンドを使って作り上げるようです
AmazonEC2 CentOS AMI 作成
と検索した結果、いくつかヒットしましたので
メモしておきました
CentOS5のAMIを作ってみる
2011年7月29日金曜日 “SUZ-LAB謹製 CentOS AMI 6.0.0″の作り方
が参考になりそうです
じゃらんAndroid JUnit テストのメモ
を参考に、サンプルアプリを作っていましたが、XMLの解析でつまづきました
ようやく、解決したのでメモしておきます
今回、つまづいたのは102ページのところの
ResultsFactoryTest.java のテストコードの実装のところ
ちなみに、JUnit Test Code のクラスを作成するには
File > new > Package
でパッケージ を作成
ResultsFactoryTest を作成するには
File > new > JUnit TestCode で作成することができます
基本的にはそのままでよいのですが、
int iRet =svr.requestText(“http://jws.jalan.net/APIAdvance/StockSearch/V1/?key=取得したAPIキー&s_area=330202&stay_date=20110129”);
となっているのをそのままにして Android JUnit Test を
行うと、エラーになりました
エラーの内容は
junit.framework.AssertionFailedError: expected:<0> but was:<1230>
at com.sample.data.ResultsFactoryTest.testGetResponse(ResultsFactoryTest.java:26)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
原因を探してみた結果
&stay_date=20110129
の部分は、じゃらんWebサービス 空室検索API
にあるように、
宿泊開始日になります
このままだと、テストするにはすでに日付が過ぎているので、ここを変更します
&stay_date=20110129
を
&stay_date=20110929
というように、先の日付に変更します
これで一度保存し、
右クリック > Run As > Android JUnit Test を実行すると
再びエラーになります
junit.framework.AssertionFailedError: expected:<537> but was:<1230>
at net.linuxliker.data.ResultsFactoryTest.testGetResponse(ResultsFactoryTest.java:26)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
ただし、今回は 少し変化があります
junit.framework.AssertionFailedError: expected:<0> but was:<1230>
だったところが
junit.framework.AssertionFailedError: expected:<537> but was:<1230>
となっています
これは、105ページに注意書きが書いてあったのですが
引数で指定するリクエストURLに対し
レスポンスが常に同じになるとは限らないというためのようです
今回の数値が expected 537 に対し 1230 となっているのが原因でエラーとなったので
assertEquals(results.getNumberOfResults(), 1230);
を
assertEquals(results.getNumberOfResults(), 537);
と修正することで。エラーがなくなり、緑色の成功になります
ただ、日付を変更したりした場合、修正が必要になりそうです
AmazonS3 とEC2
x2go クライアントでEC2接続
AmazonEC2 デスクトップ環境構築
で作成した仮想マシンにGUI接続するため
x2go で接続します
前回、仮想マシン側に x2goclient を入れましたが
これは x2goserver の間違いでした
このため、まず
ssh -p22 -i ap-north.pem ubuntu@175.41.199.50
のように、端末からログインし
仮想マシンへログインできたら
sudo apt-get -y install x2goserver
でインストールします
次に、ネットブック(クライアント)側で
x2goclient &
で起動し
ホスト名に AmazonEC2 マシンの public DNS
ユーザ名へ ubuntu
Use RSA/DSA key for ssh connect へ鍵ファイルの場所を指定します
これでログインできるようになります
AmazonEC2 デスクトップ環境構築
東京データセンターで ubuntu 公式イメージを使うなら
http://uec-images.ubuntu.com/releases/11.04/release/
へアクセスし
32bit を選択します
リージョンとイメージの選択になるので
ap-northeast-1
32bit
ebs
を選択
ebs は micro instance を意味します
ap-north.pemという鍵作成 & download
chmod 600 ap-north.pem
でアクセス権限変更
あらかじめ、Security Group で
ssh ポートを開放しておくことが条件です
sshログインは公開鍵認証
ユーザ名はubuntu
-p22 で22ポートを指定
-i 鍵ファイル名
IPは、AmazonEC2 の PublicDNSになります
例えば
ssh -p22 -i ap-north.pem ubuntu@175.41.199.50
ログインしたら
sudo apt-get update
して
デスクトップ環境がほしいので
sudo apt-get -y install ubuntu-desktop
日本語が最初は使えないので
wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add –
wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- |sudo apt-key add –
sudo wget https://www.ubuntulinux.jp/sources.list.d/natty.list -O- /etc/opt/sources.list.d/ubuntu-ja-list
sudo apt-get update
sudo apt-get install ubuntu-desktop-ja
次に Unity-2D インストール
(EC2仮想マシンではGPUをつかう通常のUnity は使えない)
sudo apt-get install unity-2d
続いてリモートデスクトップ環境構築
まずはリポジトリ登録
sudo add-apt-repository ppa:x2go/stable
これでGONOMEと unity-2d インストール
sudo apt-get update
sudo apt-get -y install x2gouser x2gognomebindings
ここまでEC2側の設定
次は、クライアントになるネットブックに設定するので
http://www.kkaneko.com/rinkou/linux/x2go.html
を参考に設定
今回、参考資料として
を使いましたが、ここの部分が違っていました
書籍はまちがっていたようです
: が i になっているようです
AmazonEc2 リージョン選択
AmazonEC2 1リージョン選択のときのメモです
ap-southeast
がわからなかったので調べてみました
どうやら、シンガポールらしいとのこと
http://jaws-users.687672.n3.nabble.com/AP-Southeast-td764525.html
が参考になりました
ap-northeast
は東京のこと
http://blog.suz-lab.com/2011/06/asia-pacific-tokyoap-northeast-1us-east.html
が参考になりました
引き続き、AmzonEC2 でのデスクトップ環境構築へ進みます
アプリの外部ストレージ保存の注意点
Android 2.2 以降は、アプリを外部ストレージ
例えば microSD などに保存することができるようになりました
しかし、このアプリの保存についても
注意すべき点があるようです
現在、アプリ作成をしていますが、開発する側でも
いろいろと外部保存については問題があったりします
今回は、
アプリケーションのインストール領域を考える (Dev Guild – App Install Location 和訳
を参考にさせていただきました
とくに気をつけたいのがサービス系です
外部ストレージをアンマウントした時
外部ストレージが再マウントされてもリスタートされないということです