忍者ブログ

スイーツ(笑)と呼ばないで!!

NEW ENTRY
10 2024/11 1 23 4 5 6 7 8 910 11 12 13 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29 30 12
<<< PREV     NEXT >>>

11/24/14:43  [PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

09/28/15:30  SSL/TLSの接続確認方法

さっきTLSのバージョンの違いで困っている部下がいて説明したので、簡単に情報共有。

SSL/TLS のバージョンとしてはSSLv2とかTLSv1.2とかいくつかあるわけですが、
最近のサーバーだと例えばTLSの1.2じゃないと受け付けないよ、とかってセキュリティの設定が高めになっているものがあったりします。

で、それを簡単に確認する方法。

例えば、TLSのバージョン1.0で接続して確認するには

 #openssl s_client -connect ドメイン名:443 -tls1

とかってやると接続できます。

バージョン1.1 なら -tls1_1
バージョン1.2 なら -tls1_2

とかオプションつければ大丈夫です。

気軽に確認するには便利ですね。

s_client

は他にもいろいろ使い道があるので知っていると便利かもしれません。

ちなみに、詳しく知りたいなら

https://www.ipa.go.jp/files/000045645.pdf

この辺を読むと良いと思います。

拍手[0回]

PR

08/31/16:29  ポートの変更とセキュリティ

最近、「SSHのポートを22から変えるべきか」という議論があることを知った。

puttyやsshコマンドなどでアクセスするときにポートを指定する方法を知らない人が9割、という組織でない限り(あるいは、そうであったとしても)、セキュリティ上は変えたほうが良いに決まっている。

どうやら変えなくて良いという人は根拠として「ポートスキャンしたらすぐわかるから無意味」というようなことをおっしゃっているらしい。

そんなことをおっしゃる方には

nmapを知ってはいるが日常的にnmapを使ってポートスキャンをしていないのではないですか?

とお聞きしたい。

(いや、だからネットで喧嘩売っちゃダメだって。。。)

例えば、あるサーバーにデフォルトのオプションで検索すると

Starting Nmap 6.40 ( http://nmap.org ) at 2015-08-31 15:55 JST

(中略)

Nmap done: 1 IP address (1 host up) scanned in 17.58 seconds

とかって感じで20秒程度で反応が返ってくる。ものによっては数秒ということもあるだろう。

次に、同じサーバーにポートをフル指定してスキャンを実行してみると

Starting Nmap 6.40 ( http://nmap.org ) at 2015-08-31 15:58 JST

(中略)

Nmap done: 1 IP address (1 host up) scanned in 117.80 seconds

という感じで約7倍の時間がかかるのだ。

世の中のクラッカーたちは、クラッキングツールをただ流してチャンスを待っている暇人ではある。

しかしながら、どのIPのサーバーに脆弱性が眠っているかもわからない状態で、日々無差別にポートスキャンを繰り返していることを想像すると・・

私がクラッカーなら、1台に7倍の時間をかけるなら、同じ時間でプラス6台のポートスキャンをかけることを選ぶ。

そして、それで発見されるサーバーは、デフォルトのポートを変えるというほんの簡単な一手間を惜しむサーバー管理者の運用するサーバーだというおまけ付きだ。ハッキングされた後の対応のがどれほど手間か想像するまでもない。


と、クラッカーの心理を分析してみたりもするのだが、彼らがそもそも別の人が立てたサーバーをクラッキングしたいという暇人であることを考えると、実際のところはわからない。

もしかすると、ちょっとだけ面倒くさいやつが運用しているサーバーだと知らしめる効果はあり、抑止力になるかもしれない、と期待するわけである。

「セキュリティ上は変えたほうが良いに決まっている」と書いたが、すごく効果があるかは不明だが、変えたほうが良いのは間違いない、という程度の意思表示だ。

セキュリティはその効果とかけるコストのバランスで、そのシチュエーションで最適な組み合わせを選んでいくしかない、と思う今日この頃でした。

今日は、こんなところで。


拍手[0回]

08/19/19:11  プログラミングの時間配分について

もし、

全く知らないフレームワークを使って、
100時間で、
粒度や難易度が同じレベルの独立した10個の機能を開発する、

というシチュエーションになったら、
あなたはどのように時間を配分しますか?

私だったら・・・

◎第1段階 5時間

 一番オーソドックスな1つの機能について、
 とりあえず動くものを作る。

◎第2段階 55時間

 第一段階で作ったソースをひたすらリファクタリングする。

◎第3段階 30時間

 第2段階で蓄積されたノウハウを使って、
 一気に残り9個の機能を開発する。

◎第4段階 10時間

 最初のリファクタリングで蓄積されず、
 残り9個の機能の開発で蓄積されたノウハウを生かして、
 全体をリファクタリングする。

と使う。

中には、100時間を10個の機能で均等割してスケジュールを立てる人もいるかもしれない。

でも、それは非効率だし、そもそもできあがったものの品質が一定ではない。
おそらく、最初の頃のものは品質がとてつもなく悪く、
最後の頃のものの品質もちょっと悪い。

でも、上に書いたやり方であれば、
少なくとも100時間を使って出せる最高の品質で、
全ての機能について実装ができる。


ただ、このやり方を実践するには、
最初の60時間で1つの機能しか出来上がらないことに対して、
理解がありその後の追い込みを信じてくれるプロジエクトマネージャーと顧客の存在が前提だ。

私がプロジェクトマネージャーとして案件を担当する時、
極力、毎週1回の定例の実装完了部分のデモ、という形式の約束をさけるのはこのためだ。

もちろん、リスクを前倒しで解決するために、
画面だけの紙芝居的なプロトタイプを使用してイメージの確認をしたり、ということは行う。

今回の話はあくまで実装デモの話。

できるだけ効率的な開発ができるよう不必要なチェックを排除することも大事なPMのお仕事だと思う。

拍手[0回]

08/18/15:28  ランダムパスワードの生成方法


何週間か前に複数人の部下から

「パスワード決める時に良い方法ありますか?」

と聞かれたので共有。

CentOSにはmkpasswdというのがあります。

expectというパッケージに含まれるコマンドなので、

 yum install expect

とかして必要なパッケージをインストールしてください。

使い方は簡単

例えば、16文字で、数字が最低4文字、英小文字が最低4文字、英大文字が最低4文字、特殊文字は含まない、とかなら

 mkpasswd -l 16 -d 4 -c 4 -C 4 -s 0

こんなコマンドを打ちます。そうすると

 uktPNXhnR7858ofk

こんな感じで出力されますね。

ちなみに、オプションの意味は

-l 全体の文字数
-d 最低何文字の数字を含むか
-c 最低何文字の英小文字を含むか
-C 最低何文字の英大文字を含むか
-s 最低何文字の特殊文字を含むか

です。

今回みたいに「特殊文字はいらない」という場合は、明示的に0を指定しましょう。

以上、知っていると便利なコマンドでしたー

拍手[0回]

08/11/15:13  リファクタリングは因数分解


世の中では学校の勉強なんて社会人になってなんの役にも立たない、
とおっしゃる方も多いです。

確かに、学校の勉強”だけ"では何の役にも立たないことも多いかもしれませんが、
それはイコール”学校の勉強が役に立たない"わけではありません。

学校の勉強を暗記だと思っている人もいるかもしれませんが、
学校の勉強は「考え方」を学びそれを応用するトレーニングをする場所です。

中学校に入ると、数学の授業で因数分解というのを習いますね。

初歩的なものでいうと、

ax+ay=a(x+y)

みたいなものも因数分解といえます。

シンプル過ぎますね。

プログラムで言えば、

if($face===’good'){
 $user=$this->getUser();
 $user->hello();
}else{
 $user=$this->getUser();
 $user->good_bye();
}

とあれば、

$user=$this->getUser();

if($face===’good'){
 $user->hello();
}else{
 $user->good_bye();
}

こうやって、共通する部分は外に出してあげましょう、ということになります。

(まぁ、実際には、こんなイケてないコードはありませんが、あくまでサンプルです)

で、これは単純なif文の話なわけですが、この思考方法は、関数化やクラス化でも同じですね。

21と56という数字は一見なんの関係もなさそうですが、
7*3と7*8であり、共通の因数である7を持ちます。

同様に、一見、全体的なまとまりとしては全く別物のコードも、よく見ると共通の考え方があったりします。

ここでポイントは「共通の処理」ではなく「共通の考え方」に着目することですね。

で、それらを一瞬で見抜くスキルは、きっと、
中学校の時の因数分解のトレーニングで身につくんじゃないか、と思うわけです。

コーディングだけでなく、DB設計の正規化なんかも同じような話ですね。


ということで、もし「勉強なんて、社会に出たら役に立たない」と言ってる学生に出会ったら、

「そんなことないよ。そこで学んだ考え方はいろんなところで役に立つ、一生の財産になるよ」

と言ってあげましょう!!

とか思う今日この頃です。

拍手[0回]

<<< PREV     NEXT >>>