Google Earth API

Google Earth API を使うことで
Web ページに Google Earth を埋め込んで使えます
これにより
マーカーや線の描画、地形へのが王の重ね合わせ
3Dモデル追加、KMLファイルの読み書きが可能になり
3Dマップアプリなどがつくれるようになります
Google Earth API の詳細については
http://code.google.com/intl/ja/apis/earth
webページに埋め込まれた Google Earth をブラウザで表示するには
Google Earth プラグインが必要

RHELへDBと開発環境導入 その4

RHELへDBと開発環境導入 その3

ひととり設定できたので、動作確認します
mkdir ~/rails
cd ~/rails
rails sample -d postgresql
cd sample
ruby script/server mongrel

rails用 webサーバー Mongel を起動します
次に iptables を設定します
別の端末を開いて
vim /etc/sysconfig/iptables

開きます

Generated by iptables-save v1.4.7 on Sun Jan  8 18:54:31 2012
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:148]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m limit --limit 3/hour -j LOG --log-prefix "[INPUT Dropped] "
COMMIT
# Completed on Sun Jan  8 18:54:31 2012

となっているので

# Generated by iptables-save v1.4.7 on Sun Jan  8 18:54:31 2012
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:148]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT

-A INPUT -m limit --limit 3/hour -j LOG --log-prefix "[INPUT Dropped] "
COMMIT
# Completed on Sun Jan 8 18:54:31 2012

というように追記します
追記後
service iptables restart
で iptable を再起動します
AWSを使っているので、さらにセキュリティグループの設定で
80
3000
のポートも開放します
これで、ブラウザからサーバーのIPアドレスへアクセスすればページが表示されます
ちなみに
http://サーバーIPアドレス:3000
というように、最後に3000ポートを指定する必要があります
似たようなもので
tomcat のときにも 8080 版ポートを指定することもあります

RHELへDBと開発環境導入 その3

RHELへDBと開発環境導入 その2

postgresql 設定ができたので
次に ruby on rails を導入します
最初に
useradd rails
passwd rails

rails ユーザを作成し
vim /etc/ssh/sshd_config
でファイルを開き
DenyUsers rails
を最下行に追記します
service sshd restart
で設定を反映するのを忘れずに
では、ruby on rails の導入になります
yum install ruby ruby-lib postgresql-devel ruby-devel
を実行し
RPMパッケージを導入します
次に
RubyGems ruby on rails を導入するのですが
ここから先は rails ユーザで行いますので
su – rails で
パスワードを入力し
rails ユーザで行います
環境変数を設定するため
vim .bashrc
で設定ファイルを開き
export PATH=$PATH:~/gems/bin
export RUBYLIB=$RUBYLIB:~/gems/lib
export GEM_HOME=~/gems
を最下行へ追記
source .bashrc
で設定反映します
mkdir ~/gems
mkdir ~/work
で必要なディレクトリ作成し
wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz
でファイル取得
tar zxvf rubygems-1.3.7.tgz -C ~/work/
で work ディレクトリに解凍
ruby work/rubygems-1.3.7/setup.rb –prefix=~/gems
で rubygemsを導入します
続いて
ruby on rails と 関連パッケージを導入します
gem install rdoc postgres mongrel
gem install rake -v0.8.7
gem install rails -v2.3.14
続いてサンプルアプリで動作確認します

RHELへDBと開発環境導入 その2

RHELへDBと開発環境導入
の続きを行います
今回はログ出力とローテーション設定です
vim /var/lib/pgsql/data/postgresql.conf
で設定ファイルを開き
最終行へ
log_destination = ‘syslog’
syslog_facility = ‘LOCAL0’
syslog_ident = ‘postgres’
log_line_prefix = ‘%u %d ‘
log_connections = on
log_disconnections = on
log_statement = ‘all’
を追記し保存します
続いて rsyslog のファイル出力設定です
vim /etc/rsyslog.conf
でファイルを開き
/info;mail
で検索し

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

*.info;mail.none;authpriv.none;cron.none;local0.none                /var/log/messages

というように追記します
そして 次の行へ

local0.*                                                -/var/log/postgresql

を追記します
-/var/log/postgresql
というように - がファイルパスの前についているのは
ログをファイルに書き出す際に
ディスクキャッシュのフラッシュを抑制するため
ここまで追記したら保存し
service rsyslog reload
service postgresql restart
で設定を反映するためのサービス再起動をします
続いて、ログローテーションの設定をします
これをやらないと、ログファイルがどんどん肥大化していきます
vim /etc/logrotate.d/syslog
でファイルを開き

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron /var/log/postgresql {
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}

というように
追記して保存します
次は Ruby on Rails を導入します

RHELへDBと開発環境導入

今月の日経Linux に先月号からの特集で
RHEL(Red Hat Enterprise Linux) でサーバー構築
が載っていましたので
実践しています
ちなみに、今月号は

です
通常はOSが有償であまり使うことはないのですが
AmazonEC2 で時間単位で借りれるため、これを使って
構築していきます
今回は PostgreSQL のインストールからです
ただし SELinux は停止しておきましょう
これが原因で初期化失敗がおきるリスクがあります
まず、最初に停止しているインスタンスを起動します
ちなみに、時間単位で課金されるため、稼働時間が
1分でも1時間と変わりませんので
注意しましょう
yum install postgresql-server postgresql-docs
で導入
次に
service postgresql initdb

DB初期化
chkconfig postgresql on

次回から起動時にスタートするように設定
(これをやらないと、またコマンドでサービス立ち上げが必要になります)
service postgresql start
で postgresql をスタート
次にユーザ作成します
su – postgres
でユーザを root から postgres へ切り替え
psql -c “ALTER USER postgres encrypted password ‘任意のパスワード'”
でパスワードを設定します
psql -c “CREATE USER rails encrypted password ‘任意のパスワード’ createdb”

rails ロールを作成、DB作成権限を与えます
次に、認証方式の設定ファイルを変更します
vim /var/lib/pgsql/data/pg_hba.conf
でファイルを開き
最下行付近にある設定を変更します

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
# IPv6 local connections:
host    all         all         ::1/128               ident

これを

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all         all                               md5
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

というように
最後の
METHOD を md5 に変更します
ちなみに、md5はパスワード認証という意味です
ここまで完了したら、設定反映のため、サービスの再起動をします
一度
su –
で管理者権限 root へ戻り
service postgresql restart
を実行します
postgres ユーザだと、エラーになります
接続確認のため
psql -l -U rails
を実行し、パスワードを入力してDB一覧が出れば成功です

Metasploit ダウンロード

今回購入した Hacker Japan には、
脆弱性ツールをつかったローカル環境での
セキュリティ関連特集が載っています

今回、実験をするOSは windows xp です
(個人的には ubuntu などでおこなってみたいのですが)
まず、必要なものを揃える必要があります
ある程度のツールは、付録DVDに収録されていますが
Metasploit はダウンロードする必要があります
付録DVDにある index.html にもリンクがありますが
普通にダウンロードすることも可能です
ダウンロード先は
http://www.metasploit.com/download/
(ちなみに英語のページになります)
いくつかフリーだったり。有料だったりしますが
windows で使えるものとなると
Metasploit Communitiy Editionだけになります
OSSなので、ソースコードはフリーで入手できます
ちなみに、ダウンロードそのものはフリーなのですが
Web UI を使うには。ユーザ登録とアクティベーションが必要になります
あと、インストールするときに
アンチウィルスソフトは停止しておいたほうがよいそうです
著者の環境によれば
インストールは正常に終了しないのに各種プロセスが稼働し
コントロールパネルからもアンインストールできないという
悲惨な状況に陥ったそうです
あと、ユーザ登録して、これを使えるようになるのですが
もうひとつ。
脆弱性調査をするのに必要なNexpose Community Edition
これをつかうときもユーザ登録が必要になります
ただし。Metasploit がメルアドだけに対して
こちらは
フリーメール以外のメルアド(Gmail もNGです)
氏名
会社名
役職
電話番号
の登録が必要になります
本格的にやるなら使うかもしれませんが
今回の特集では、こちらのツールはつかわれませんでした
ちなみに、metasploit インストールで検索すれば
ubuntu 関連でのインストールもでてきます
参考サイトとしては
UbuntuにMetasploit Frameworkをインストールする方法
セキュリティ診断ソフト「metasploit」
installed metasplit4 in ubuntu 11.04
また、英語の動画となりますが Youtube にもアップされています
以前、動画でわかるというプログラミングなどの学習教材を買ったことがありますが
動画だと、イメージしやすいので覚えやすいかもしれません
ちなみに、いかがその動画リンク先です
Ubuntu: Metasploit Framework installieren

HTMLコードで Windows7 ダウン?

MicroSoft の OS
Windows 7 64bit にて HTMLタグ1つで攻撃できる脆弱性が
発見されたようです
情報元は、今回購入した Hakcer Japan

Windows 7 64bit で safari をインストール 使用している場合
iframe の高さ属性を巨大にすることにより
windows7 がクラッシュし
昔なつかしいブルースクリーンになるようです

Amazon Advertising API の Amazonクラス

Amazon クラスば Product Advertising API を利用するための
汎用的なクラス
実装しているメソッドは以下のとおり
setAcessKeyId
アクセスキー設定
引数はアクセスキー
getAccessKeyId
設定したアクセスキーを取得
引数はなし
setSecretAccessKey
シークレットキーを設定
引数はシークレットキー
getSecretAccessKey
設定したシークレットキーを取得する
引数はなし
setAssociateTag
アソシエイトタグを設定
引数はアソシエイトID
getAssociateTag
設定したアソシエイトタグを取得する
引数はなし
ItemSearch
商品を検索する
引数は API の ItemSearch オペレーションのパラメータ
ItemLookup
特定の商品の詳細を検索する
引数は API の ItemLookup のオペレーションのパラメータ
SimilarityLookup
特定の商品の関連商品を検索する
引数は API の SimilarityLookup のオペレーションパラメータ
JavariItemSearch
Javari の商品を検索
引数は API の ItemLookup のオペレーションパラメータ
JavariItemLookup
Javari の特定の商品の詳細検索
引数は API の ItemLookup オペレーションパラメータ
getUrl
署名つきリクエストURLを取得
引数は API のオペレーションおよびそのパラメータ
request
API にリクエストを送信
urlencode_rfc3986
文字列をRFC3986形式でURLエンコードする
引数は文字列
参考サイトも検索してみました
Product Adverstising API で検索すると結構でてきます
参考サイトは
PHPでAmazon Product Advertising APIを使う
Amazon product advertising api で遊んでみる
また、これらのAPIをつかうにはPHPの知識が必要ですので
PHP講座
などを参考に、PHP関連を学習することをおすすめします

curl_setopt() について調べました

基礎から学ぶ facebookアプリ開発
を参考に facebook アプリを作成してみます

今回、Facebook アプリを作成する項目の中に
Amazon の API を使ったサンプルがありました
そして、その中で
curl_setopt() があったので、これの意味を調べるため
リファレンス本である
PHP逆引き大全 516の極意

こちらを探したのですが
関数が見当たらないため検索
今回の参考サイトは
curl_setopt: cURL 転送用オプションを設定する
こちらの内容によりますと
bool curl_setopt ( resource $ch , int $option , mixed $value )
指定した cURL セッションハンドルのオプションを設定
というもののようです
この中で
サンプルに使用されていたオプションを
メモしてみました
CURLOPT_URL
取得するURL
CURLOPT_BINARYTRANSFER
TRUE を設定すると、
CURLOPT_RETURNTRANSFER が使用された場合に
出力結果を何も加工せずに返す
CURLOPT_HTTP_VERSION
CURL_HTTP_VERSION_NONE
(デフォルト。 使用するバージョンを決めるのは cURL にまかせる)、
CURL_HTTP_VERSION_1_0 (HTTP/1.0 を使用する)、
あるいは CURL_HTTP_VERSION_1_1 (HTTP/1.1 を使用する)
のいずれか

AmazonEC2 一般ユーザログインについて

AmazonEC2 で公開鍵認証で root ログインはできるものの
一般ユーザでは、ログインできないということでかなり悩みましたが
解決策が見当たりました
SSHでPermission denied (publickey,gssapi-keyex,gssapi-with-mic)の対処法
を参考にさせていただきました
リモートサーバの
ユーザのホームディレクトリに
公開鍵ファイルを置いてないと原因となるようです
(/home/ユーザ名/.ssh/公開鍵)
というように設定します
$ mkdir /home/ユーザ名/.ssh
$ su –
$ cp /root/.ssh/公開鍵 /home/ユーザ名/.ssh/
$ chown ユーザ名.ユーザ名 /home/ユーザ名/.ssh/公開鍵
$ chmod 0700 /home/ユーザ名/.ssh
$ chmod 0644 /home/ユーザ名/.ssh/公開鍵
ちなみに AmazonEC2 の場合、SSHポート開放状態になるので
パスワード認証はかなり危険と思われます
今月の日経 Linux – 2012-03 にも
クラッキングされた事例が掲載されました