railsプロジェクトで利用するapacheのconfigureオプション
こんにちは
いっつもどれのオプションを使うか迷うので、いくつか例を記録しておきます
./configure --prefix=/usr/local/apache2 --enable-proxy --enable-cache --enable-disk-cache --enable-proxy-balancer --enable-ssl
一括grant!!
こんにちは
今回は、Postgresのユーザ作成方法を記載します。
su - postgres createuser hogehoge
次に作成したユーザに対して権限付与を行うわけですが、テーブル数が多くなったDBのユーザに対する権限付与は、テーブル単位での権限付与となるので非常に面倒くさい。
なので、スクリプトを組んでみました。
お役に立つか分からないですが、参考までにどうぞ。。。
## grant.sh #!/bin/sh DBNAME=${1:?"enter dbname"} DB_USERNAME=${2:?"enter db username"} CREATE_USERNAME=${3:?"enter create username"} COMMAND=${4:?"enter select or 'select,update' or 'select,update,delete' ..."} # --共通関数定義-- LIST=/tmp/table.lst # リスト作成 psql -U ${DB_USERNAME} -d ${DBNAME} -c "select relname from pg_class where relkind='r' and relnamespace=(select oid from pg_namespace where nspname='public' order by relpages desc);" -t -A > ${LIST} # コマンド実行 while read line do echo psql -U ${DB_USERNAME} -d ${DBNAME} -c \"grant ${COMMAND} on $line to ${CREATE_USERNAME}\;\" psql -U ${DB_USERNAME} -d ${DBNAME} -c "grant ${COMMAND} on $line to ${CREATE_USERNAME};" done < ${LIST} # listファイル削除 rm -f ${LIST} exit 0
上記スクリプト実行方法は以下の通り
/grant.sh dbname db_username create_username 'select' ./grant.sh dbname db_username create_username 'select,update,delete'
.screenrcだよ
僕がよく使う設定残します。いろんなサイトから引っ張りだしてます。
- 一応インストール方法
yum install screen ※使用しているディストリビューションはCentOSです
- .screenrc
escape ^t^t #エスケープをCtrl+tに変更します。 hardstatus alwayslastline "%{=r dd} %-w%{=b dd} %n %t %{-}%+w %=" #画面の下に現在の時間とウインドウをタブみたいに表示 bind w windowlist -b #windowの一覧表示 defscrollback 10000 #scrollを10000行行えるようにする bind 2 split #画面分割 bind o focus #画面移動 bind 1 only #一画面に戻す bind 0 remove #画面削除 bind r eval ‘echo “Resize window”‘ ‘command -c resize’ #Ctrl+trで分割した画面サイズを変更。 bind -c resize ^] command bind -c resize j eval ‘resize +1′ ‘command -c resize’ #jで1行大きく bind -c resize k eval ‘resize -1′ ‘command -c resize’ #kで1行小さく vbell off #警告オフ #caption always shell bash startup_message off #スタートアップメッセージを表示しない sorendition 7 74 #画面の下に表示するタブの色調整 export TERM=xterm
エクセプション発生!!
libWand.so.10: cannot open shared object file: No such file or directory - /usr/lib/ruby/gems/1.8/gems/rmagick-2.2.2/lib/RMagick2.so
こんなエラーが発生しました。特に何も触ってなかったんですが、いきなりだったのでビビりました。
対処法は、以下の通り。
/usr/lib以下のシンボリックリンクにlibWand.soがあるか確認。
なければ以下追加
ln -s /usr/local/lib/libWand.so.* /usr/lib
後、/usr/libにlibMagick.soがあるかも確認してなければ同様に
ln -s /usr/local/lib/libMagick.so.* /usr/lib
あっても変な動きする場合あるので、バイナリが/usr/libにある場合は一度退避させて、libWandとlibMagickのシンボリックリンクを全て削除し、
上記の方法で追加してみて下さい。
クッキーをセキュアにする〜Session FixationとかSession Hijackとか〜
こんにちは。
クッキーをセキュアにする必要が出てきたため、色々探したんですがなかなか情報が発見できませんでした。結局、人の助けを借りて見つけたので記載します。(Railsのリファレンスには記載あったと思います。。。)
まず、用語の説明。
- Session Fixation
アプリケーションが生成したセッションIDを盗むことができないなら攻撃者自身が生成したセッションIDをクライアントに使わせてしまおう、という攻撃。
- セッション・ハイジャック(session hijack)
他人が確立したTCPの通信路を横取りする行為。 ほかのユーザーのセッションIDやセッション・クッキー(セッション管理に使用しているクッキー)を盗むことで、別のコンピュータからそのユーザーになりすました アクセスが行える危険性がある。例えば、セッション・クッキーが類推可能な簡単なものであったり、セキュアでない通信経路で送られた過程で盗まれたりすると、 セッション自体が盗まれる可能性がある。セッションが盗まれると、そのセッションを利用していたユーザーになりすましたアクセスが行える。これにより、個人情報が 盗まれたり、コンピュータに侵入されたりする危険性がある。 セッション・ハイジャックを防ぐには、類推が難しいセッションIDやクッキーを生成し、セッションIDやクッキーの有効期間を短くすることが重要だ。また、重要な 通信ではIPSecやSSLを利用するなどの配慮も行いたい。
ではRailsでクッキーをセキュアにする方法を以下に示す。
- プロジェクト以下、app/controller/application.rbに以下を追記。
session :session_key => 'hogehogehogeho', :session_secure => true
FireFoxのオプションからCookieの表示を見て、送信制限欄が他のものと違う表示になってればOK
HTTPSのみセッションを有効にするので、アプリケーションによって、ログイン周りでSSLを設定しておかないとうまく動いてくれないので、SSLの設定をしていないサーバでは上記の記述は入れないようにした方がいい。
また、自動ログインにも影響でるので、日坊主日記さんを参考にさせて頂いて、試してみようかと思ってます。。。
自分の場合はこうしてます。
- app/controller/application.rb
if SESSION_SECURE session :session_key => 'hogehogehogeho', :session_secure => true else session :session_key => 'hogehogehogeho' end
- config/environments/development.rb
SESSION_SECURE=true
- config/environments/production.rb
SESSION_SECURE=fale
上記のように設定して、Secureな設定が必要な環境はproductionで起動し、それ以外はdevelopmentで動かすようにしました。必要なパターンに合わせて上記フラグを調整して下さい。
※セキュリティー対策の一部です。
- 参照URL
Webアプリケーションに潜むセキュリティホール
セキュリティ用語−セッション・ハイジャック(session hijack)
Session Hijack
FastladderをCentOS5にインストール
こんにちは
本日、「livedoor Reader」の英語版である「Fastladder」のオープンソース版を公開しました。
という記事を受けて、さっそくインストール。若干戸惑うところあったので、ここに纏めました。
- 環境
- SVNでソースを落としました
svn checkout http://fastladder.googlecode.com/svn/trunk/ fastladder-read-only
fastladder-read-onlyというディレクトリが作成されて、なかみてみるとrailsプロジェクトとbatファイルなどが入ってます。
batファイル中見ましたが、mongrel動かしたり、serviceに登録したりをシェル化しているだけです。なので、今回は特に使わず、自分で設定しました。
では、さっそくfastladerを動かすための設定をしたいと思います。
- yml設定(プロジェクト以下config/以下にdatabase.ymlとかdatabase.yml.mysqlとかあるので環境に合わせて切り替える。自分はMySQLが元々環境に入っているので、MySQLを利用します。)
$ mv database.yml database.yml.base
$ mv database.yml.mysql database.yml
- DB作成します。
mysql > create database fastladder_production;
Query OK, 1 row affected (0.00 sec)
- ユーザ作成
mysql > grant select,insert,delete,update,create,drop,file,alter,index on *.* to fastladder@localhost identified by '12345';
mysql > flush privileges;
- これだけ(FreeImage)をyumでインストールできないので以下のコマンドでインストール
$ wget http://downloads.sourceforge.net/freeimage/FreeImage3100.zip
$ unzip FreeImage3100.zip
$ cd FreeImage
$ make
$ make install
- gemで以下をインストール
$ gem install rfeedfinder
$ gem install feed-normalizer
$ gem install opml
$ gem install mongrel
- テーブル作成します。(fastladderディレクトリに移動して以下を実行)
rake db:migrate
- 実行(fastladderディレクトリに移動して以下を実行)
$ script/server -d -e production
$ RAILS_ENV=production script/crawler > /dev/null &
fastladder-read-onlyというディレクトリ内にINSTALL.txtがあり、かなり丁寧に記載してくれていますのでとても参考になりました。