Google App Engineセットアップ

Eclipse3.6 Heliosにセットアップしました。
プラグインを次のURLにてインストールします。
Migrating from the Google Plugin for Eclipse  |  Cloud Tools for Eclipse  |  Google Cloud

AppEngine1.6.1とWebToolKit2.4を設定する。WTKは使わないと思うがとりあえず正しくセットアップしておきました。

セットアップができたら新規プロジェクトを作成する。Web Application Projectを作成する。
デフォルトのままでコンパイルと実行するが、コンパイルエラーになる場合がある。
Jreの設定の変更が必要になる場合がある。Eclipse > 環境設定 > Java > Installed Jre の設定をインストールしてあるJDK1.6を以下のように設定する。

Web脆弱性診断ツール Parosの使い方

ParosはWeb脆弱性自動検査ツールですが、全てのページを自動的に検査してくれるものではありません。あらかじめ検査するページを登録した上での検査になります。
以下にインストールから利用方法までを順に説明します。

ツールを「ダウンロードファイル一覧 - Paros - OSDN」からダウンロードします。Windows版とUnix版というものがあります。Unix版であればMacでも使えます。

適当なディレクトリに解凍して、startserver.shを起動します。Windowsの場合はstartserver.batか起動アイコンをクリックしてください。

実行はJavaVM上になってますが、Java8、Java7では起動できませんでした。JDK5で実行するのが安全です。
$JAVA_HOME/bin/javaw -jar paros.jar で起動できますので、適切なバージョンのJAVA_HOMEを指定して実行してみてください。

Paros側の設定は特にありません。ParosがProxyサーバとして動きますので「Tools > Option > Local Proxy」にてProxyサーバとなるホスト名とポートが指定されていることを一応確認します。

ブラウザの設定を行います。ブラウズのプロキシ設定からサーバにlocalhost、ポート番号を8080として設定します。

ブラウザでアクセスした内容を元にParos(Proxy Server)を経由したRequest、Responseの内容の脆弱性検査を行います。


次にデモ用にXSSを検出できるような簡単なHTMLを用意します。POSTした内容をHTML上に表示するというXSS対策していないCGIを用意しました。

test.pl

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<HTML><BODY><form action='post.pl' method='POST'><input type='text' name='goo' value=''><input type='submit' value='Go'></form></BODY></HTML>";

post.pl

#!/usr/bin/perl

if ($ENV{'REQUEST_METHOD'} eq 'POST') {
  read(STDIN, $alldata, $ENV{'CONTENT_LENGTH'});
} else {
  $alldata = $ENV{'QUERY_STRING'};
}
foreach $data (split(/&/, $alldata)) {
  ($key, $value) = split(/=/, $data);

  $value =~ s/\+/ /g;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1))/eg;
  $value =~ s/\t//g;

  $in{"$key"} = $value;
}
print "Content-Type: text/html\n\n";
print "<html>\n";
print "<head><title>TEST</title></head>\n";
print "<body>\n";
print $in{'goo'};
print "</body>\n";
print "</html>\n";

exit;

検査するページが用意できたら、プロキシ設定したブラウザからtest.plのフォームからデータを入力してpost.plに入力した内容をPOSTします。
実行した内容はParosに記録されます。

検査したい画面の読み込みができたら、Siteツリーの検査するURLを選択して、メニューの「Analyze > Scan」を実行します。
実行した結果は下部ウィンドウに検出した脆弱性の内容が出力します。またこの結果についてはメニューの「Report > Last Scan Report」を選択してHTMLで保存ができます。

検査結果のさらなる調査のために手動での検査がツールを使って行えます。

ツールバーの「Trap」を選択して、「Trap Request」にチェックをして、検査したい画面をブラウザで実行します。
実行するとRequestパラメータがParos画面に表示されますので、ここでRequest Parameterを書き換えることができます。
書き換えたらContinueボタンでPOSTを継続します。

HTML画面からの入力ではJavaScriptチェックでどうしても入力できない内容が発生しますので、手動で実行したい場合もこのツールは有効です。

OpenVAS セットアップ on Ubuntu10

リポジトリと配布先サイトの公開鍵を追加します。

$ sudo sh -c "echo \"deb http://download.opensuse.org/repositories/security:/OpenVAS:/STABLE:/v4/xUbuntu_10.10/ ./\">> /etc/apt/sources.list"
$ sudo apt-key adv --keyserver hkp://keys.gnupg.net --recv-keys BED1E87979EAFD54
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver hkp://keys.gnupg.net --recv-keys BED1E87979EAFD54
gpg: requesting key 79EAFD54 from hkp server keys.gnupg.net
gpg: key 79EAFD54: public key "security OBS Project " imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1

パッケージソフトをインストールします。

$ sudo apt-get update
$ sudo apt-get install greenbone-security-assistant gsd libmicrohttpd10 libopenvas4 openvas-administrator openvas-manager openvas-scanner openvas-cli sqlite3

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 /etc/init.d/openvas-scanner  start
Starting OpenVAS Scanner: openvassd.
$ sudo /etc/init.d/openvas-manager  start
Starting OpenVAS Manager: ERROR.
$ sudo /etc/init.d/openvas-administrator start
Starting OpenVAS Administrator: openvasad.
$ sudo /etc/init.d/greenbone-security-assistant start
Starting Greenbone Security Assistant: gsad.

OpenVAS用のアカウントを作ります。

$ test -e /var/lib/openvas/users/admin || sudo openvasad -c add_user -n admin -r Admin
Enter password: 

ad   main:MESSAGE:1614:2011-11-17 14h58.46 UTC: No rules file provided, the new user will have no restrictions.
ad   main:MESSAGE:1614:2011-11-17 14h58.46 UTC: User admin has been successfully created.

Ubuntu Desktopが使えるようにパッケージをインストール。結構時間掛かります。

$ sudo apt-get install ubuntu-desktop

vncのインストールをします。

$ sudo apt-get install vnc4server
$ vncserver :1
$ rm /home/ubuntu/.vnc/xstartup
$ ln -s /etc/X11/Xsession  /home/ubuntu/.vnc/xstartup
$ vncserver -kill :1
$ vncserver :1

AWS EC2 CentOSセットアップ

yumによるモジュールのアップデートとPostgreSQLのソースからのインストールコマンド。

yum install yum-fastestmirror
yum -y update
yum -y install wget
yum -y install make
yum -y install gcc
yum -y install readline-devel
yum -y install zlib-devel
wget ftp://ftp2.jp.postgresql.org/pub/postgresql/source/v9.0.5/postgresql-9.0.5.tar.gz

readline-develとzlib-develをインストールしていないとreadlineとzlibをインポートできないので注意が必要です。
flexというコマンドが無い場合は入れておいてください。

$ flex --version

PostgreSQLはデフォルトで/usr/local/pgsql にインストールされます。

./configure
make
make install

環境設定

export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH="$MANPATH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"

DBの初期化

initdb -D /usr/local/pgsql/data -E utf-8 --lc-collate=C
createdb <データベース名>

ユーザの追加とパスワード変更

SQL>create user xxxxxx with password 'パスワード';
SQL>alter role postgres with password 'パスワード';

Javaのダウンロードとインストール

wget http://download.oracle.com/otn-pub/java/jdk/6u29-b11/jdk-6u29-linux-x64.bin
chmod a+x jdk-6u29-linux-x64.bin
mkdir /usr/local/java
mv jdk-6u29-linux-x64.bin /usr/local/java
cd /usr/local/java
./jdk-6u29-linux-x64.bin
ln -s ./jdk1.6.0_29 java

JBoss AS 6.1をインストール。ダウンロードして適当な場所に解凍します。unzipもインストールしておきます。
jbossのモジュールはアプリケーションの実行ユーザを作り、そのオーナーにパーミションを書き換えておきます。

yum -y install unzip
wget http://download.jboss.org/jbossas/6.1/jboss-as-distribution-6.1.0.Final.zip
unzip jboss-as-distribution-6.1.0.Final.zip
mv jboss-6.1.0.Final /opt/
cd /opt
ln -s jboss-6.1.0.Final jboss

JBoss4.2.3 GAを使う場合はこちらからダウンロード。

http://jaist.dl.sourceforge.net/project/jboss/JBoss/JBoss-4.2.3.GA/jboss-4.2.3.GA-jdk6.zip
http://jaist.dl.sourceforge.net/project/jboss/JBoss/JBoss-4.2.3.GA/jboss-4.2.3.GA.zip


Apacheをインストールします。

yum -y install httpd
chkconfig --level 345 httpd on
service httpd start

EBSでディスクの増設を行います。6GのAMIテンプレートを使用したので必要に応じてディスクを増設します。EBSのVolumeメニューから「Create Volume」でディスクを作成します。
作成したら「Attach Volume」でmountさせるインスタンスを指定します。
EBSではデバイス名は、/dev/sdf 〜 /dev/sdp の指定しかできません。最近のLinuxカーネルのデバイス名は、/dev/xvdf 〜 /dev/xvdp なので、/dev/sdf で指定したデバイス名は、/dev/xvdf になるので気をつけましょう。Attachするときのダイアログに説明書きがあったプチはまりポイントでした。

次にデバイスのフォーマットを行います。

mkfs /dev/xvdf

いちおうマウンドができる確認を行います。

mount /dev/xvdf /mount_point

最後に/etc/fstab にデバイスマウントの記述を追加します。