2011年5月30日月曜日

"skipfish"でWebアプリのセキュリティ診断

スズキです。

Googleが"skipfish"というWebアプリのセキュリティ診断ツールを公開しているので、
ちょっと試してみました。

コチラより最新版をダウンロードして"make"コマンドを実行すると、
下記のように"skipfish"バイナリが作成されます。

# curl -OL http://skipfish.googlecode.com/files/skipfish-1.88b.tgz
# tar xvzf skipfish-1.88b.tgz
# cd skipfish-1.88b
# make
cc -L/usr/local/lib/ -L/opt/local/lib skipfish.c -o skipfish -O3 -Wno-format -Wall -funsigned-char -g -ggdb -I/usr/local/include/ -I/opt/local/include/  -DVERSION=\"1.88b\" \
              http_client.c database.c crawler.c analysis.c report.c -lcrypto -lssl -lidn -lz
See dictionaries/README-FIRST to pick a dictionary for the tool.
Having problems with your scans? Be sure to visit:
http://code.google.com/p/skipfish/wiki/KnownIssues
# ls skipfish
skipfish

とりあえず、下記のように実行してみるとスキャンが始まります。

# ./skipfish -W dictionaries/minimal.wl -o /tmp/skipfish http://localhost/

スキャンが終わると、"/tmp/skipfish"以下に
下記のような結果レポート(HTML)が出力されます。


Googleのツールはよく出来てるなー...
--------
http://www.suz-lab.com

MySQL接続(PDO)確認用PHPスクリプト

スズキです。

RDSとの接続確認でよく使うので、コピペ用として...

$dbs    = "mysql:host=suzlab.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com;dbname=suz-lab";
$user   = "suzlab";
$pass   = "xxxxxxxx";
$sql    = "select now()";
$dbh    = new PDO($dbs, $user, $pass);
$stmt   = $dbh->query($sql);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($result);

Oracle用も作っとくか!?
--------
http://www.suz-lab.com

Debianに"nrpe"をインストール

スズキです。

"apt-get"の練習もかねて、"nrpe"をDebianにインストールしてみました。

まずは"nrpe"の検索ですが、こんな感じで探します。

# apt-cache search nrpe
...
nagios-nrpe-server - Nagios Remote Plugin Executor Server
...

そして、"apt-get"でインストールです。

# apt-get install nagios-nrpe-server

設定ファイルは
/etc/nagios/nrpe.cfg
です。

/etc/nagios-plugins/config
といったディレクトリもあり、

# ls -1 /etc/nagios-plugins/config/
load.cfg
...

といった感じで、コマンドの設定ファイルが置かれています。

コマンドの設定ファイルの中身はこんな感じです。

# cat load.cfg 
--------
# 'check_load' command definition
define command {
    command_name    check_load
    command_line    /usr/lib/nagios/plugins/check_load --warning='$ARG1$,$ARG2$,$ARG3$' --critical='$ARG4$,$ARG5$,$ARG6$'
}

ということで、チェックスクリプトは
/usr/lib/nagios/plugins
にあることがわかります。

やっぱりCentOSとはちょっと違うけど、"apache"の設定ファイルの構成の違いは、ヤバかったなー...
--------
http://www.suz-lab.com

CloudFrontのオリジンをS3にするか?Customにするか?

スズキです。

利点/欠点を説明することが多いので、まとめておきます。


S3オリジン Customオリジン
利点コンテンツ保存先が以下のように超強力。
- 99.999999999%の耐久性
- 99.99%の可用性
他のプログラムファイルなどと同じように
同一のサーバにコンテンツファイルの
アップロードや同期などを行うことができる。
欠点別途対象コンテンツをS3にアップロード、
もしくは同期する必要性がある。
オリジンサーバが負荷などで不安定になると、
CloudFrontのキャッシュも不安定になる。


S3オリジンを利用する場合でも、"s3fs"や"s3cmd"を利用することで、
効率化することは可能だと思います。

個人的には、S3オリジンの利点が魅力的すぎるので、
可能な限り、S3オリジンが利用できれば、と思ってます。

「S3を制する者はAWSを制す」、だと思う...
--------
http://www.suz-lab.com

CloudFrontのInvalidation(キャッシュクリア)用のポリシー

スズキです。

以前コチラで、PHPによるCloudFrontのInvalidationを紹介しましたが、
その時は、"AWS Management Console"がIAMに対応していなかったため、
CLIツールでポリシーの調整をしていました。

"AWS Management Console"で設定する場合は、下記のように記述すればOKです。

{
  "Statement": [
    {
      "Action": [
        "cloudfront:CreateInvalidation",
        "cloudfront:GetDistribution",
        "cloudfront:GetInvalidation",
        "cloudfront:ListDistributions",
        "cloudfront:ListInvalidations"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

これで、適当なCLIツールやSDKでInvalidation(キャッシュクリア)できるはずです。

IAMが身近になったなー...
--------
http://www.suz-lab.com

EC2で初Debian!

スズキです。

初めてEC2でDebianを利用してみました。

利用したAMIは、もちろん@ar1さんの"ami-a601aaa7"(debian6-64-0302a-ar@debian.org)です。

バージョン関係は、こんな感じです。(カーネルにUbuntuって文字があるぞ!?)

# uname -a
Linux ip-10-148-27-136 2.6.32-312-ec2 #24-Ubuntu SMP Fri Jan 7 18:30:50 UTC 2011 x86_64 GNU/Linux
# more /etc/debian_version 
6.0

現在は、6.0.1(squeeze)が最新の安定版のようなので、
早速、下記のようにアップグレードしておきました。

# aptitude update
# aptitude full-upgrade
# more /etc/debian_version 
6.0.1

CentOSに続き、"cloudpack"の標準OSになる日も近いか!?
--------
http://www.suz-lab.com

2011年5月29日日曜日

"RDS for Oracle"と"Oracleマスター"(書籍編)

スズキです。

コチラで"Oracleマスター"取得までの計画を立てたので、
次は試験対策に利用する書籍(参考書と問題集)の購入です。

参考書はGoldの対策まで出ている一種類(Platinumの参考書は存在しない...)
そして、問題集はSilverまでの対策が出ている二種類(Gold/Platinumの参考書は存在しない...)
を下記のように購入しました。

【11g SQL基礎】
Bronze Oracle Database 11g SQL基礎I編(試験番号:1Z0-051) (DVD付) (オラクルマスター教科書)
徹底攻略ORACLE MASTER Bronze 11gSQL 基礎I問題集[1Z0-051J]対応
完全合格 ORACLE MASTER Bronze 11gSQL基礎I 問題集

【Bronze DBA11g】
Bronze Oracle Database【DBA11g】編(試験番号:1Z0-018J)(DVD付) (オラクルマスター教科書)
徹底攻略 ORACLE MASTER Bronze DBA11g問題集 [1Z0-018J]対応
完全合格 ORACLE MASTER Bronze DBA11g 問題集

【Silver DBA11g】
オラクルマスター教科書 Silver Oracle Database DBA11g編 (試験番号:1Z0-052)(CD-ROM付)
徹底攻略ORACLE MASTER Silver DBA11g 問題集[1Z0-052J]
完全合格 ORACLE MASTER Silver DBA 11g 問題集

【Gold DBA11g】
オラクルマスター教科書 Gold Oracle Database DBA11g編 (試験番号:1Z0-053) (CD-ROM付)

月曜から参考書と問題集と"RDS for Oracle"で勉強開始!
--------
http://www.suz-lab.com

"RDS for Oracle"と"Oracleマスター"(計画編)

スズキです。

ついにRDSでOracleがサポートされました。

ということで、AWSの運用保守スキルにOracleのスキルが自動的に加わってしまいました...

といっても、僕は9i時代にOracleマスターPlatinum(昔のほう)を取得しており、
昔とった杵柄といえば、そうなります。(今もちょくちょくOracleやってますし)

なので、今後、AWSの得意なOracleマスターの需要が増えてくるのでは?、と予想し、
RDSがサポートしている"11g"のOracleマスターの資格をとることにしました。

まずはOracleマスター取得に必要な試験をコチラを参考にまとめてみました。
(選択できる項目は独断と偏見で勝手に決めています)


【ORACLE MASTER Bronze Oracle Database 11g】
11g SQL基礎選択22,260円
Bronze DBA11g選択22,260円
【ORACLE MASTER Silver Oracle Database 11g】
Silver DBA11g選択22,260円
【ORACLE MASTER Gold Oracle Database 11g】
Oracle Database 11g: 管理ワークショップ II (凝縮版)研修346,500円
Gold DBA11g選択22,260円
【Oracle Database 11g Performance Tuning Certified Expert】
Oracle Database 11g: Performance Tuning選択22,260円
【ORACLE MASTER Platinum Oracle Database 11g】
Oracle Database 11g: パフォーマンス・チューニング(凝縮版)研修346,500円
ORACLE MASTER 11g Platinum 特訓研修346,500円
ORACLE MASTER Platinum Oracle Database 11g 実技試験実技231,000円


ひとこと、Platinum取得にかかる金額にびっくりです...

とりあえず、二週間くらいで、Silverまでとって、その後の二週間(合計一か月)でGoldまでとって、
Platinumは、ちょっとそのときの状況みて考えるって計画でいこうと思います。

"RDS for Oracle"のMulti-AZ対応より早くGoldまで取得したい...
--------
http://www.suz-lab.com

2011年5月28日土曜日

IAMユーザーはS3やCloudFrontのログをダウンロードできない!?

スズキです

IAMユーザーでS3やCloudFrontのログをS3から取得しようとしたら、
実はできなかった、というお話です。(AWSのサポートにも確認済みです)

IAMユーザーには下記のように、S3のすべてのリソースに対して、
読み取りできるポリシーを与えています。

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:Get*",
        "s3:List*"
      ],
      "Resource": "*"
    }
  ]
}

ですが、実際にS3やCloudFrontのログが出力されているS3バケットから、
適当なログファイルをダウンロードしようとすると、
"Access Deny"になってしまいダウンロードできません。
(ファイルのリスト取得まではできます)

他のファイルは取得できるのに、ログファイルが取得できないのは、
ファイルオーナーの問題ではないか?と調べてみると、
ダウンロードできるファイルのオーナーは自分の親アカウントとなっており、
ダウンロードできない(ログ)ファイルのオーナーは"awsdatafeeds"という、
AWSのシステムユーザー(?)がオーナーになっていました。

AWSのサポートからは下記のように回答をいただいています。
CloudFrontのログなどはAWSシステムアカウントで書き込まれるように
なっていまして、現状ご自身がオーナー権限を持っているリソース以外の
ポリシーを適用することが出来ません。このことにより、IAMユーザーに
ログファイルを閲覧や削除する権限を渡せるポリシーを追加することは出来ません。

ということで、S3やCloudFrontのログ取得は親アカウントのみでしかできない、
ということになります。

ご注意を!

できると思ってS3の"Bucket Policy"とかまで調べてしまった...
--------
http://www.suz-lab.com

2011年5月27日金曜日

"R53 Fox"(新機能に対応済み)を利用してみた

スズキです。

"R53 Fox"が早速"Route 53"の新機能(新しいエイリアス機能/重み付けラウンドロビン)に
対応したということなので、これを機に導入してみました。

まずはコチラからFirefoxのアドオン(r53-fox-0.1.7-2.xpi)をダウンロードし、
下記のようにインストールします。


Firefox再起動すると、下記のように使えるようになっています。


早速右下の"Account"ボタンから、アクセスキーとシークレットキーを登録します。


すると、すでに設定済みのゾーンが表示されました。


さらにレコードを確認すると、ちゃんと新機能のレコードタイプタイプ"A (Alias)"(エイリアス)と
ラウンドロビン用の重み(Weight)が設定されていることも確認できます。


選択できるレコードタイプも下記の通りです。


これで、"Route 53"の新機能も簡単に扱うことができるはずです!

"AWS Management Console"には組み込まれないのかなー?
--------
http://www.suz-lab.com

IAMでCloudWatchのみ閲覧できるユーザーを作成

スズキです。

まず、下記のようなIAMのログインURLの数字の部分を分かりにくいので、変更します。


変更するには、"Create Account Alias"ボタンから下記のように入力します。


すると、以下のようにわかりやすいログインURLになります。


そして、いよいよCloudWatchの閲覧専用ユーザーの作成です。


まずはグループの作成です。


そのグループにポリシーを設定します。
幸いCloudWatchの閲覧のみができるポリシーテンプレート
(CloudWatch Read Only Access)があったので、それをそのまま利用します。


実際のポリシーは下記の通りです。


{
  "Statement": [
    {
      "Action": [
        "sns:Get*",
        "sns:List*",
        "autoscaling:Describe*",
        "cloudwatch:Describe*",
        "cloudwatch:List*",
        "cloudwatch:Get*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

そして、いよいよユーザーの作成です。



キー情報(Access Key / Secret Key)は下記の"Download Credentials"から
ダウンロード(credentials.csv)できます。


最初に調整したログインURLから、作成したユーザーでログインするには、
下記の"Manage Password"ボタンからパスワードの設定をする必要があります。


今回は、"Assign a custom password"を選択して、
自分の好きなパスワードを設定しました。


最後に最初で調整したログインURLから、作成したユーザーでログインします。


無事、CloudWatchのみ閲覧できることが確認できました。


ただ、CloudWatchのみだと、各リソースがIDのみでしか認識できないので、非常に分かりにくいです。
ですので、EC2やRDSなどの閲覧ポリシーも付与しておいたほうがいいと思います。

IAMがコンソールで対応してくれたのは大きいなー。
--------
http://www.suz-lab.com