2013年1月31日

2013年1月31日のタスク

本日は、システム開発を行いました。
また、Windows8 pro のダウンロード版を 本日までのキャンペーン価格 3,300円で購入しました。

2013年1月30日

2013年1月30日のタスク

本日は、システム開発を行いました。

2013年1月29日

2013年1月29日のタスク

本日はアルバイトを行いました。

2013年1月28日

2013年1月28日のタスク

本日はアルバイトを行いました。

2013年1月26日

C#のDisposeメソッドの意義

はてブの整理を行っていた時に掘り起こしました。

@ITの掲示板で、以下の質問がありました。
Dispose の意味が未だわからないのですが
質問の概要は、なんで finally で Dispose の呼び出しを保証しないといけないのか?
という事なのですが、当時いろいろなC#の入門サイトを見ていた私も不思議でした。

今改めて考えてみると、

「Dispose の呼び出しを必ずしないといけない」と規則のように考えるから混乱するのであって、
Disposeメソッドがあるようなクラスは、ほぼ何かのリソースを確保していて、
それを開放しないと、リークしてしまいます。
try してリークしたくなかったら  finally にちゃんとDispose書いとかないと抜け道ができるよ。
リソース開放されないの気持ち悪いでしょ。何かのバグになるかもよ。
だからfinallyにつけとこうよ。

という事なんだと理解しています。
しかし、C#には usingステートメントという便利なものがあるのだから、そもそもこの議論は無意味なんですよね。

2013年1月25日

2013年1月25日のタスク

本日は、システムの設計を行いました。
また、子供を病院に連れていきました。

2013年1月24日

2013年1月24日のタスク

本日はアルバイトを行いました。
また、プログラムの仕様の検討を行いました。
さらに、送れていた1週間分のブログを更新しました。

2013年1月23日のタスク

本日は、プログラムの仕様の検討を行いました。

2013年1月21日

2013年1月21日のタスク

本日はアルバイトを行いました。

2013年1月19日

2013年1月19日のタスク

本日は、打ち合わせを行いました。
気合を入れます。

2013年1月18日

2013年1月18日のタスク

本日は、明日の会議の資料を作成と打ち合わせを行いました。

2013年1月17日

2013年1月17日のタスク

本日は、アルバイトを行いました。

2013年1月16日

2013年1月15日

2013年1月15日のタスク

本日は、
アルバイト
を行いました。

2013年1月13日

「秘密の質問」は要注意!


昨年の12月の話題ですが、中学生が「秘密の質問」を利用して、ソーシャルクラッキングしたという事件が起こりました。

「秘密の質問」解読! 女子中生のメールのぞく 同級生の中3男子書類送検 兵庫県警
秘密の質問経由で不正アクセスした中学生 3 人、書類送検される


「秘密の質問」の仕組みは、パスワード認証に穴を開けるという事

「秘密の質問」は、パスワードを忘れた時、「秘密の質問」に答えたら、指定されたメールアドレスにパスワードを送信するという仕組みです。
この仕組みはつまり、パスワード認証に穴を開けて、パスワードを忘れた時の対策を作っているのです。

そして、その穴を利用して今回の事件は起こりました。

誰にでも起こりえます

恐ろしい事に、今回の事件は誰の身にでも起こりえます。
今回は同級生が犯人だったとの事で、被害者の身近な情報を手に入れやすかった事もあるとおもいますが、まったく他人が「秘密の質問」をクラックできてしまいます。
そのポイントはソーシャルネットワークサービスです。

特にfacebookなどは、自分の居住地・性別・旧姓・年齢・誕生日など様々な情報を公開しています。
twitterでも自分の嗜好にあった発言などをしているでしょう。

そういった所から、「秘密の質問」によくある、「あなたの旧姓は?」「あなたの好きな映画は?」という情報などすぐに推測できてしまうのです。

どうすればいいのか

では、「秘密の質問」に対して私たちはどうすればいいのでしょうか?

それは、「秘密の質問」を無効にする事です。

具体的には、「秘密の質問」を設定しなくていい所ならば、「秘密の質問」を設定しない・解除する、という事を行います。

そして、サービスの仕組みとして絶対に登録を求められる所には、
「秘密の質問」の答えを、とても長いランダムな文字列にしましょう。
つまり「秘密の質問」をパスワード認証にしてしまうという事です。
正直に「母親の旧姓は?」に旧姓を入れる必要はありません。無意味な文字列をどんどん入れていきましょう。

また、銀行やクレジットカード等の詐欺に狙われやすいサービスで
もし「秘密の質問」 を設置している所があるのならば、別の会社の似たサービスに
変更する事をお薦めします。
詐欺に狙われやすいのにわざわざそのような「秘密の質問」を残しているような所は
セキュリティの認識が低いと言わざると得ないでしょう。
被害に合わないためにも、別の会社の同様のサービスに移りましょう。

まとめ

「秘密の質問」には
  • 「秘密の質問」を設定しない・解除する。
  • とても長いランダムな文字列を答えにする。
  • 被害にあいそうなサービスなら別のサービスに移る。
という対処をしましょう。

2013年1月11日

2013年1月11日のタスク

本日はアルバイトを行いました。
その後、アルバイトの定期面談を受けました。

Ubuntu Server 12.10 にサーバ監視ツール monit を導入する

前回まででサーバの作成が一通り完成しましたが、運用に向けてサーバ監視ツール monit を導入したいと思います。

monit のインストール

パッケージが存在するので導入は簡単です。以下のコマンドを入力します。
sudo aptitude install monit

monit の設定

まず全体的な設定を行います。
デフォルトの設定にアラートを通知するメールの設定を追加します。

sudo vi /etc/monit/monitrc
set mailserver smtp.gmail.com port 587
   username "メールユーザ名" password "メールパスワード"
   using tlsv1

set mail-format {
   from: メールアドレス
   subject: $SERVICE $EVENT at $DATE
   message:
Monit $ACTION $SERVICE
   at $DATE
   on $HOST: $DESCRIPTION.
Yours sincerely,
monit
}

set alert メールアドレス
ここでmonitのサービスを再起動すると、メールアドレスにmonitが再起動したメッセージが通知されます。
なお、メールのパスワードの文字列に「"」等が含まれる場合はエスケープする必要があります。monitはruby言語で作られているようで、rubyの文字列と認識されるように適宜エスケープをしてください。シングルクウォート文字でも大丈夫でした。

監視対象の追加

監視対象の設定の追加は、/etc/monit/monitrc.d/ にファイルとして追加し、/etc/monit/conf.d にリンクをはると、monit 起動時に反映されるという使い方のようです。

http://shanon-tech.blogspot.jp/2011/11/15monit.html
には設定項目の説明が掲載されていますので、参考にしましょう。

apache2 の設定

check process apache2 with pidfile /var/run/apache2.pid
    start program = "/usr/sbin/service apache2 start"
    stop  program = "/usr/sbin/service apache2 stop"
    if failed host 127.0.0.1 port 80 protocol http
      and request "/" then restart
    if 3 restarts within 3 cycles then timeout
    group www-data

MySQL の設定

check process mysql with pidfile /var/run/mysqld/mysqld.pid
    start program = "/usr/sbin/service mysql start"
    stop  program = "/usr/sbin/service mysql stop"
    if failed host 127.0.0.1 port 3306 then restart
    if 3 restarts within 3 cycles then timeout
    group www-data

sshd の設定

check process sshd with pidfile /var/run/sshd.pid
    start program = "/usr/sbin/service ssh start"
    stop  program = "/usr/sbin/service ssh stop"
    if failed port 22 protocol ssh then restart
    if 3 restarts within 3 cycles then timeout
    group connection

2013年1月10日

2013年1月10日のタスク

本日は、アルバイトを行いました。

eccube-2.12.2(on MySQL) のインストール

サーバのインストール・設定が完了したら、いよいよ ECCUBE-2.12.2 のインストールを行います。
今回もデータベースに MySQLを使用します。

eccube-2.12.2.tar.gz のダウンロード

どのような方法でも構いませんが、サーバに eccube-2.12.2.tar.gz をダウンロードします。
今回は、scpを使用しました。
scp eccube-2.12.2.tar.gz ユーザ名@サーバアドレス:.

apache2 の DocumentRoot の変更

cd /etc/apache2/sites-available/
sudo cp default eccube
sudo vi ./eccube

DocumentRoot を /var/www/eccube/html に変更する
ScriptAlias のセクションを無効化(コメントアウト)する

defaultファイルを無効化しeccubeファイルを有効化し、DocumentRootを変更する
sudo a2dissite default
sudo a2ensite eccube

apache2 の再起動

sudo service apache2 restart

eccubeの展開

eccube を /var/www/eccube-2.12 へ展開します。
tar -xzvf eccube-2.12.2.tar.gz
sudo mv eccube-2.12.2 /var/www/eccube-2.12
sudo chown -R www-data:www-data /var/www/eccube-2.12/

MySQLの設定

MySQLの日本語の設定を/etc/mysql/conf.d/my_character_set.cnfに作成します。
sudo vi /etc/mysql/conf.d/my_character_set.cnf
[mysqld]
character_set_server = utf8
collation_server = utf8_general_ci

MySQLの再起動

sudo service mysql restart

PHPの設定

/etc/php5/apache2/php.ini の設定を変更します。以下のパラメータを追加・変更します。
sudo vi /etc/php5/apache2/php.ini
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8

eccubeのセットアップ

ブラウザで以下のURIにアクセスし、セットアップを開始します。アクセスすると、「EC-CUBEのインストールを開始します」と表示されます。
http://ホスト名/install/

「EC-CUBEのインストールを開始します」と表示されたら、「次へ進む」をクリックします。クリックすると「チェック結果」画面に移動します。

「チェック結果」画面に移動したら、画面に「>>○:アクセス権限は正常です」と表示されている事を確認し、「次へ進む」をクリックします。クリックすると、「必要なファイルのコピー」画面へ移動します。

「必要なファイルのコピー」画面へ移動したら、画面の内容が「コピー成功」に全てなっている事を確認します。確認ができたら、「次へ進む」をクリックします。クリックすると、「ECサイトの設定」画面に移動します。

「ECサイトの設定」画面に移動したら、必要な部分を入力し、「次へ進む」をクリックします。クリックすると、「データベースの設定」画面に移動します。

「データベースの設定」画面に移動したら、データベースのユーザ名・パスワード等の必要な情報を入力し、「次へ進む」をクリックします。クリックすると「データベースの初期化」画面へ移動します。

「データベースの初期化」画面へ移動したら、「次へ進む」をクリックします。クリックすると「データベースの初期化確認」画面へ移動します。

「データベースの初期化確認」画面へ移動したら、全ての処理が成功している事を確認し、「次へ進む」をクリックします。クリックすると、「サイト情報について」画面に移動します。

「サイト情報について」画面に移動したら、「いいえ」を選択し、「次へ進む」ボタンをクリックします。クリックすると「EC CUBE インストールが完了しました。」画面に移動します。

「EC CUBE インストールが完了しました。」画面に移動したら、「管理画面へログインする」をクリックします。クリックすると「管理画面」に移動します。

「管理画面」に移動したら、上部に「/install/index.php はインストール終了後にファイルを削除してください。」と表示されます。表示されたら、セットアップは完了です。

eccubeのインストーラーの削除

sudo rm -rf /var/www/eccube-2.12/html/install/

以上で完了です。


過去の同様の記事: eccube-2.11.4 のインストール(mysql編)

2013年1月9日

Ubuntu 12.10のセキュリティアップデートの方法

一年前に行った内容と同じですが、アップデートの方法をまとめます。

ソフトウェアのパッケージリストの更新

sudo aptitude update

システムの更新(どちらか)

sudo aptitude safe-upgrade
sudo aptitude full-upgrade

ダウンロードされたパッケージファイルのうち、古くなっているパッケージを削除

sudo aptitude autoclean

過去の同様の記事: Ubuntu 10.04のセキュリティアップデートの方法

2013年1月8日

Ubuntu Server 12.10 への OpenSSHの公開鍵認証の設定

先日のサーバのインストールで OpenSSHのインストールも行っていますので、今回はOpenSSHの設定を行います。
Ubuntu Server にインストールされるOpenSSHはデフォルトでパスワード接続となっていますので、公開鍵認証に変更します。

SSHの接続テスト

まずは、パスワード認証を使って sshでログインできるかテストします。
ssh ユーザ名@サーバアドレス

ログインできたら、公開鍵認証の設定を行うのでサーバから一旦ログアウトします。
exit

公開鍵認証の鍵の生成

続いて、ローカルのパソコンで認証に必要な鍵を接続元のパソコンで生成します。
ssh-keygen -t rsa -f ~/.ssh/id_rsa_eccube

とすると、
~/.ssh/id_rsa_eccube (秘密鍵)
~/.ssh/id_rsa_eccube.pub (公開鍵)
の二つが生成されます。ここでは、「id_rsa_eccube」というファイル名にしていますが、生成のファイル名は何でもいいでしょう。

公開鍵をサーバにアップロード

次に scp を使用して、公開鍵 id_rsa_eccube.pub をサーバに転送します。
scp .ssh/id_rsa_eccube.pub ユーザ名@サーバアドレス:.

これでサーバ側のユーザのホームディレクトリに id_rsa_eccube.pub がコピーされます。

SSHの公開鍵認証の設定

再度、sshでログインしリモートサーバの設定を行います。

ssh ユーザ名@サーバアドレス
~/.ssh/authorized_keys にさきほど scp でコピーしたファイルをリネームします。

さらに、公開鍵は自分しか読めないようにファイル権限を設定します。
mkdir ~/.ssh
chmod 700 .ssh/
mv id_rsa_eccube.pub ~/.ssh/authorized_keys
chmod 400 ~/.ssh/authorized_keys

そして、sshdの設定を公開鍵認証だけにします。/etc/ssh/sshd_configを以下のように編集します。
sudo vi /etc/ssh/sshd_config

# パスワード認証を切る
PasswordAuthentication no # ssh1、ssh2両方に共通

# 公開鍵認証を有効にする
PubkeyAuthentication yes # ssh2の場合
RSAAuthentication yes # ssh1の場合
AuthorizedKeysFile    %h/.ssh/authorized_keys    # 公開鍵の保存場所とファイル名

最後に、sshdを再起動します。
sudo service ssh restart

SSHの接続テスト

うまく設定が出来ているかを確認のため、まずは、さきほどできたパスワード認証ができなくなっている事を確認します。
-o PubkeyAuthentication=no オプションは、ssh2の公開鍵認証を強制的に無効化するオプションです。
ssh -o PubkeyAuthentication=no ユーザ名@サーバアドレス

上記のコマンドでログインできないことを確認します。

最後に公開鍵認証でログインできるかを確認します。
ssh -i ~/.ssh/id_rsa_eccube ユーザ名@サーバアドレス

ログインできたら完了です。

2013年1月7日

Ubuntu Server 12.10 インストールログ

Ubuntu Server 12.10 をインストールした際の備忘録です。
インストーラーの指示に従えば、難しい事はありませんでした。

(追記:Ubuntu Server 13.04 のインストール手順 を公開しました。)

  1. ディスクを入れて起動します。インストーラーの表示言語選択画面になるので、「日本語」を選択し、Enterキーを押下します。押下するとインストールの選択画面に移動します。

  2. インストールの選択画面に移動したら、「Ubuntu Serverをインストール」を選択し、Enterキーを押下します。押下すると、「Select a language」の画面に移動します。


  3. 「Select a language」の画面に移動したら、「はい」を選択しEnterキーを押下します。押下すると「ユーザーとパスワードのセットアップ」の画面に移動します。

  4. 「場所の選択」画面に移動したら、「日本」を選択しEnterキーを押下します。押下すると「キーボードの選択」画面に移動します。

  5. 「キーボードの選択」画面に移動したら、「日本語」を選択しEnterキーを押下します。押下すると「キーボードの選択 レイアウト」画面に移動します。

  6. 「キーボードの選択 レイアウト」画面に移動したら、「日本語-日本語(OADG 109A)」を選択しEnterキーを押下します。押下すると「ネットワークの設定」画面に移動します。

  7. 「ネットワークの設定」画面に移動したら、ホスト名を入力してから(ここでは、ホスト名を「eccube」としています。)「続ける」を選択し、Enterキーを押下します。押下すると「ユーザとパスワードのセットアップ」画面に移動します。

  8. 「ユーザーとパスワードのセットアップ」の画面に移動したら、自分の名前を入力してから(ここでは、自分の名前を「eccube」としています。)「続ける」を選択し、Enterキーを押下します。押下すると「場所の選択」画面に移動します。

  9. 「ユーザとパスワードのセットアップ」画面に移動したら、アカウントユーザ名を入力してから(ここでは、アカウントユーザ名を「eccube」としています。)「続ける」を選択し、Enterキーを押下します。押下すると「パスワード設定」画面に移動します。

  10. 「パスワード設定」画面に移動したら、パスワードを入力してから、「続ける」を選択し、Enterキーを押下します。押下すると「パスワード確認」画面に移動します。

  11. 「パスワード確認」画面に移動したら、再度パスワードを入力してから、「続ける」を選択し、Enterキーを押下します。押下すると「ホームディレクトリ暗号化」画面に移動します。

  12. 「ホームディレクトリ暗号化」画面に移動したら、「いいえ」を選択し、Enterキーを押下します。押下すると、「時間の設定」画面に移動します。

  13. 「時間の設定」画面に移動したら、「your time zone is Asia/Tokyo」と表示されているのを確認し、「はい」を選択し、Enterキーを押下します。押下すると、「ディスクのパーティショニング」画面に移動します。

  14. 「ディスクのパーティショニング」画面に移動したら、「ガイド-ディスク全体を使い、暗号化LVMをセットアップする」を選択し、Enterキーを押下します。押下すると「ディスクの選択」画面に移動します。

  15. 「ディスクの選択」画面に移動したら、表示されているディスクを選択し、Enterキーを押下します。(環境によってここは異なってくるはずです。)押下すると、「ディスクへの書き込み確認」画面に移動します。

  16. 「ディスクへの書き込み確認」画面に移動したら、「はい」を選択し、Enterキーを押下します。押下すると「暗号化パスフレーズ」画面へ移動します。

  17. 「暗号化パスフレーズ」画面へ移動したら、パスフレーズを入力し、「続ける」を選択し、Enterキーを押下します。押下すると「パスフレーズ確認」画面へ移動します。なお、ここで入力したパスフレーズは、起動時にパーティションの暗号化を解除するためにシステム起動前にパスフレーズの入力を求められるものです。

  18. 「パスフレーズ確認」画面へ移動したら、パスフレーズを再度入力し、「続ける」を選択し、Enterキーを押下します。押下すると「ガイドによるパーティショニング」画面へ移動します。

  19. 「ガイドによるパーティショニング」画面へ移動したら、デフォルトの最大サイズのまま、「続ける」を選択し、Enterキーを押下します。押下すると、「ディスクの書き込み確認」画面へ移動します。

  20. 「ディスクの書き込み確認」画面へ移動したら、「はい」を選択し、Enterキーを押下します。押下すると、「HTTPプロキシの情報」画面に移動します。

  21. 「HTTPプロキシの情報」画面に移動したら、何も入力せずに「続ける」を選択し、Enterキーを押下します。押下すると「システムのアップグレード管理」画面へ移動します。インターネット接続にプロキシを経由している環境では、ここに情報を入力しましょう。

  22. 「システムのアップグレード管理」画面へ移動したら、「セキュリティアップデートを自動的にインストールする」を選択し、Enterキーを押下します。押下すると「定義済みソフトウェアコレクションの選択」画面へ移動します。

  23. 「定義済みソフトウェアコレクションの選択」画面へ移動したら、インストールするソフトウェアを選択します。EC-CUBEをインストールする予定なので、「OpenSSH server」と「LAMP server」を選択し、「続ける」へ移動してEnterキーを押下します。押下すると、「MySQLのrootパスワード」画面へ移動します。

  24. 「MySQLのrootパスワード」画面へ移動したら、パスワードを入力し「続ける」を選択し、Enterキーを押下します。押下すると「MySQLのrootパスワード確認」画面へ移動します。

  25. 「MySQLのrootパスワード確認」画面へ移動したら、再度パスワードを入力し、「続ける」を選択しEnterキーを押下します。押下すると「ハードディスクへのGRUBブードローダのインストール」画面へ移動します。

  26. 「ハードディスクへのGRUBブードローダのインストール」画面へ移動したら、「はい」を選択し、Enterキーを押下します。押下すると「PAMの設定」画面に移動します。

  27. 押下すると「PAMの設定」画面に移動したら、「続ける」を選択しEnterキーを押下します。押下すると再起動され、インストールが完了します。

以上です。


過去の同様の記事: Ubuntu Server 10.04インストール

2013年1月4日

2013年1月4日のタスク

本日は、EC-CUBEでの開発を行いました。

2013年1月3日

2013年1月3日のタスク

本日は、EC-CUBEの開発を行いました。