本日は、システム開発を行いました。
また、Windows8 pro のダウンロード版を 本日までのキャンペーン価格 3,300円で購入しました。
2013年1月31日
2013年1月30日
2013年1月29日
2013年1月28日
2013年1月26日
C#のDisposeメソッドの意義
はてブの整理を行っていた時に掘り起こしました。
@ITの掲示板で、以下の質問がありました。
「Dispose の意味が未だわからないのですが」
質問の概要は、なんで finally で Dispose の呼び出しを保証しないといけないのか?
という事なのですが、当時いろいろなC#の入門サイトを見ていた私も不思議でした。
今改めて考えてみると、
「Dispose の呼び出しを必ずしないといけない」と規則のように考えるから混乱するのであって、
Disposeメソッドがあるようなクラスは、ほぼ何かのリソースを確保していて、
それを開放しないと、リークしてしまいます。
try してリークしたくなかったら finally にちゃんとDispose書いとかないと抜け道ができるよ。
リソース開放されないの気持ち悪いでしょ。何かのバグになるかもよ。
だからfinallyにつけとこうよ。
という事なんだと理解しています。
しかし、C#には usingステートメントという便利なものがあるのだから、そもそもこの議論は無意味なんですよね。
@ITの掲示板で、以下の質問がありました。
「Dispose の意味が未だわからないのですが」
質問の概要は、なんで finally で Dispose の呼び出しを保証しないといけないのか?
という事なのですが、当時いろいろなC#の入門サイトを見ていた私も不思議でした。
今改めて考えてみると、
「Dispose の呼び出しを必ずしないといけない」と規則のように考えるから混乱するのであって、
Disposeメソッドがあるようなクラスは、ほぼ何かのリソースを確保していて、
それを開放しないと、リークしてしまいます。
try してリークしたくなかったら finally にちゃんとDispose書いとかないと抜け道ができるよ。
リソース開放されないの気持ち悪いでしょ。何かのバグになるかもよ。
だからfinallyにつけとこうよ。
という事なんだと理解しています。
しかし、C#には usingステートメントという便利なものがあるのだから、そもそもこの議論は無意味なんですよね。
2013年1月25日
2013年1月24日
2013年1月21日
2013年1月19日
2013年1月18日
2013年1月17日
2013年1月16日
2013年1月15日
2013年1月13日
「秘密の質問」は要注意!
昨年の12月の話題ですが、中学生が「秘密の質問」を利用して、ソーシャルクラッキングしたという事件が起こりました。
「秘密の質問」解読! 女子中生のメールのぞく 同級生の中3男子書類送検 兵庫県警
秘密の質問経由で不正アクセスした中学生 3 人、書類送検される
「秘密の質問」の仕組みは、パスワード認証に穴を開けるという事
「秘密の質問」は、パスワードを忘れた時、「秘密の質問」に答えたら、指定されたメールアドレスにパスワードを送信するという仕組みです。この仕組みはつまり、パスワード認証に穴を開けて、パスワードを忘れた時の対策を作っているのです。
そして、その穴を利用して今回の事件は起こりました。
誰にでも起こりえます
恐ろしい事に、今回の事件は誰の身にでも起こりえます。今回は同級生が犯人だったとの事で、被害者の身近な情報を手に入れやすかった事もあるとおもいますが、まったく他人が「秘密の質問」をクラックできてしまいます。
そのポイントはソーシャルネットワークサービスです。
特にfacebookなどは、自分の居住地・性別・旧姓・年齢・誕生日など様々な情報を公開しています。
twitterでも自分の嗜好にあった発言などをしているでしょう。
そういった所から、「秘密の質問」によくある、「あなたの旧姓は?」「あなたの好きな映画は?」という情報などすぐに推測できてしまうのです。
どうすればいいのか
では、「秘密の質問」に対して私たちはどうすればいいのでしょうか?それは、「秘密の質問」を無効にする事です。
具体的には、「秘密の質問」を設定しなくていい所ならば、「秘密の質問」を設定しない・解除する、という事を行います。
そして、サービスの仕組みとして絶対に登録を求められる所には、
「秘密の質問」の答えを、とても長いランダムな文字列にしましょう。
つまり「秘密の質問」をパスワード認証にしてしまうという事です。
正直に「母親の旧姓は?」に旧姓を入れる必要はありません。無意味な文字列をどんどん入れていきましょう。
また、銀行やクレジットカード等の詐欺に狙われやすいサービスで
もし「秘密の質問」 を設置している所があるのならば、別の会社の似たサービスに
変更する事をお薦めします。
詐欺に狙われやすいのにわざわざそのような「秘密の質問」を残しているような所は
セキュリティの認識が低いと言わざると得ないでしょう。
被害に合わないためにも、別の会社の同様のサービスに移りましょう。
まとめ
「秘密の質問」には- 「秘密の質問」を設定しない・解除する。
- とても長いランダムな文字列を答えにする。
- 被害にあいそうなサービスなら別のサービスに移る。
2013年1月11日
Ubuntu Server 12.10 にサーバ監視ツール monit を導入する
前回まででサーバの作成が一通り完成しましたが、運用に向けてサーバ監視ツール monit を導入したいと思います。
デフォルトの設定にアラートを通知するメールの設定を追加します。
なお、メールのパスワードの文字列に「"」等が含まれる場合はエスケープする必要があります。monitはruby言語で作られているようで、rubyの文字列と認識されるように適宜エスケープをしてください。シングルクウォート文字でも大丈夫でした。
http://shanon-tech.blogspot.jp/2011/11/15monit.html
には設定項目の説明が掲載されていますので、参考にしましょう。
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日
eccube-2.12.2(on MySQL) のインストール
サーバのインストール・設定が完了したら、いよいよ ECCUBE-2.12.2 のインストールを行います。
今回もデータベースに MySQLを使用します。
今回は、scpを使用しました。
DocumentRoot を /var/www/eccube/html に変更する
ScriptAlias のセクションを無効化(コメントアウト)する
defaultファイルを無効化しeccubeファイルを有効化し、DocumentRootを変更する
「EC-CUBEのインストールを開始します」と表示されたら、「次へ進む」をクリックします。クリックすると「チェック結果」画面に移動します。
「チェック結果」画面に移動したら、画面に「>>○:アクセス権限は正常です」と表示されている事を確認し、「次へ進む」をクリックします。クリックすると、「必要なファイルのコピー」画面へ移動します。
「必要なファイルのコピー」画面へ移動したら、画面の内容が「コピー成功」に全てなっている事を確認します。確認ができたら、「次へ進む」をクリックします。クリックすると、「ECサイトの設定」画面に移動します。
「ECサイトの設定」画面に移動したら、必要な部分を入力し、「次へ進む」をクリックします。クリックすると、「データベースの設定」画面に移動します。
「データベースの設定」画面に移動したら、データベースのユーザ名・パスワード等の必要な情報を入力し、「次へ進む」をクリックします。クリックすると「データベースの初期化」画面へ移動します。
「データベースの初期化」画面へ移動したら、「次へ進む」をクリックします。クリックすると「データベースの初期化確認」画面へ移動します。
「データベースの初期化確認」画面へ移動したら、全ての処理が成功している事を確認し、「次へ進む」をクリックします。クリックすると、「サイト情報について」画面に移動します。
「サイト情報について」画面に移動したら、「いいえ」を選択し、「次へ進む」ボタンをクリックします。クリックすると「EC CUBE インストールが完了しました。」画面に移動します。
「EC CUBE インストールが完了しました。」画面に移動したら、「管理画面へログインする」をクリックします。クリックすると「管理画面」に移動します。
「管理画面」に移動したら、上部に「/install/index.php はインストール終了後にファイルを削除してください。」と表示されます。表示されたら、セットアップは完了です。
以上で完了です。
過去の同様の記事: eccube-2.11.4 のインストール(mysql編)
今回もデータベースに 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のセキュリティアップデートの方法
一年前に行った内容と同じですが、アップデートの方法をまとめます。
過去の同様の記事: Ubuntu 10.04のセキュリティアップデートの方法
ソフトウェアのパッケージリストの更新
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/id_rsa_eccube (秘密鍵)
~/.ssh/id_rsa_eccube.pub (公開鍵)
の二つが生成されます。ここでは、「id_rsa_eccube」というファイル名にしていますが、生成のファイル名は何でもいいでしょう。
これでサーバ側のユーザのホームディレクトリに id_rsa_eccube.pub がコピーされます。
さらに、公開鍵は自分しか読めないようにファイル権限を設定します。
そして、sshdの設定を公開鍵認証だけにします。/etc/ssh/sshd_configを以下のように編集します。
最後に、sshdを再起動します。
-o PubkeyAuthentication=no オプションは、ssh2の公開鍵認証を強制的に無効化するオプションです。
上記のコマンドでログインできないことを確認します。
最後に公開鍵認証でログインできるかを確認します。
ログインできたら完了です。
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 のインストール手順 を公開しました。)
過去の同様の記事: Ubuntu Server 10.04インストール
インストーラーの指示に従えば、難しい事はありませんでした。
(追記:Ubuntu Server 13.04 のインストール手順 を公開しました。)
-
ディスクを入れて起動します。インストーラーの表示言語選択画面になるので、「日本語」を選択し、Enterキーを押下します。押下するとインストールの選択画面に移動します。
-
インストールの選択画面に移動したら、「Ubuntu Serverをインストール」を選択し、Enterキーを押下します。押下すると、「Select a language」の画面に移動します。
-
「Select a language」の画面に移動したら、「はい」を選択しEnterキーを押下します。押下すると「ユーザーとパスワードのセットアップ」の画面に移動します。
-
「場所の選択」画面に移動したら、「日本」を選択しEnterキーを押下します。押下すると「キーボードの選択」画面に移動します。
-
「キーボードの選択」画面に移動したら、「日本語」を選択しEnterキーを押下します。押下すると「キーボードの選択 レイアウト」画面に移動します。
-
「キーボードの選択 レイアウト」画面に移動したら、「日本語-日本語(OADG 109A)」を選択しEnterキーを押下します。押下すると「ネットワークの設定」画面に移動します。
-
「ネットワークの設定」画面に移動したら、ホスト名を入力してから(ここでは、ホスト名を「eccube」としています。)「続ける」を選択し、Enterキーを押下します。押下すると「ユーザとパスワードのセットアップ」画面に移動します。
-
「ユーザーとパスワードのセットアップ」の画面に移動したら、自分の名前を入力してから(ここでは、自分の名前を「eccube」としています。)「続ける」を選択し、Enterキーを押下します。押下すると「場所の選択」画面に移動します。
-
「ユーザとパスワードのセットアップ」画面に移動したら、アカウントユーザ名を入力してから(ここでは、アカウントユーザ名を「eccube」としています。)「続ける」を選択し、Enterキーを押下します。押下すると「パスワード設定」画面に移動します。
-
「パスワード設定」画面に移動したら、パスワードを入力してから、「続ける」を選択し、Enterキーを押下します。押下すると「パスワード確認」画面に移動します。
-
「パスワード確認」画面に移動したら、再度パスワードを入力してから、「続ける」を選択し、Enterキーを押下します。押下すると「ホームディレクトリ暗号化」画面に移動します。
-
「ホームディレクトリ暗号化」画面に移動したら、「いいえ」を選択し、Enterキーを押下します。押下すると、「時間の設定」画面に移動します。
-
「時間の設定」画面に移動したら、「your time zone is Asia/Tokyo」と表示されているのを確認し、「はい」を選択し、Enterキーを押下します。押下すると、「ディスクのパーティショニング」画面に移動します。
-
「ディスクのパーティショニング」画面に移動したら、「ガイド-ディスク全体を使い、暗号化LVMをセットアップする」を選択し、Enterキーを押下します。押下すると「ディスクの選択」画面に移動します。
-
「ディスクの選択」画面に移動したら、表示されているディスクを選択し、Enterキーを押下します。(環境によってここは異なってくるはずです。)押下すると、「ディスクへの書き込み確認」画面に移動します。
-
「ディスクへの書き込み確認」画面に移動したら、「はい」を選択し、Enterキーを押下します。押下すると「暗号化パスフレーズ」画面へ移動します。
-
「暗号化パスフレーズ」画面へ移動したら、パスフレーズを入力し、「続ける」を選択し、Enterキーを押下します。押下すると「パスフレーズ確認」画面へ移動します。なお、ここで入力したパスフレーズは、起動時にパーティションの暗号化を解除するためにシステム起動前にパスフレーズの入力を求められるものです。
-
「パスフレーズ確認」画面へ移動したら、パスフレーズを再度入力し、「続ける」を選択し、Enterキーを押下します。押下すると「ガイドによるパーティショニング」画面へ移動します。
-
「ガイドによるパーティショニング」画面へ移動したら、デフォルトの最大サイズのまま、「続ける」を選択し、Enterキーを押下します。押下すると、「ディスクの書き込み確認」画面へ移動します。
-
「ディスクの書き込み確認」画面へ移動したら、「はい」を選択し、Enterキーを押下します。押下すると、「HTTPプロキシの情報」画面に移動します。
-
「HTTPプロキシの情報」画面に移動したら、何も入力せずに「続ける」を選択し、Enterキーを押下します。押下すると「システムのアップグレード管理」画面へ移動します。インターネット接続にプロキシを経由している環境では、ここに情報を入力しましょう。
-
「システムのアップグレード管理」画面へ移動したら、「セキュリティアップデートを自動的にインストールする」を選択し、Enterキーを押下します。押下すると「定義済みソフトウェアコレクションの選択」画面へ移動します。
-
「定義済みソフトウェアコレクションの選択」画面へ移動したら、インストールするソフトウェアを選択します。EC-CUBEをインストールする予定なので、「OpenSSH server」と「LAMP server」を選択し、「続ける」へ移動してEnterキーを押下します。押下すると、「MySQLのrootパスワード」画面へ移動します。
-
「MySQLのrootパスワード」画面へ移動したら、パスワードを入力し「続ける」を選択し、Enterキーを押下します。押下すると「MySQLのrootパスワード確認」画面へ移動します。
-
「MySQLのrootパスワード確認」画面へ移動したら、再度パスワードを入力し、「続ける」を選択しEnterキーを押下します。押下すると「ハードディスクへのGRUBブードローダのインストール」画面へ移動します。
-
「ハードディスクへのGRUBブードローダのインストール」画面へ移動したら、「はい」を選択し、Enterキーを押下します。押下すると「PAMの設定」画面に移動します。
-
押下すると「PAMの設定」画面に移動したら、「続ける」を選択しEnterキーを押下します。押下すると再起動され、インストールが完了します。
過去の同様の記事: Ubuntu Server 10.04インストール
2013年1月4日
2013年1月3日
登録:
投稿 (Atom)