2011/04/29

Linuxサーバでは使用しない方が良いユーザアカウント

Linuxのコマンドに lastb というモノがあることを知った。
これはログイン時に失敗した記録を表示するコマンド。ちなみに last コマンドは成功したモノだけを表示するコマンド。

実体は /var/log/btmp というバイナリファイルで lastb コマンドからその中身を読み出している形です。ちなみにroot権限で作業してください。

で、そのコマンドを実行してみると…
公開なんてしていない適当に立てているサーバにもかかわらず1週間足らずで58000件もの不正アクセスをしようとした痕跡が…
これは気持ち悪い。

せっかくなので不正アクセスに用いられているアカウント名上位を公開。

# lastb | awk '{print $1}' | sort | uniq -c | sort -n -r | more
7940 root
1064 test
716 oracle
664 user
546 mysql
534 admin
524 michael
454 web
454 info
412 paul
390 sales
376 eric
364 adam
356 guest
354 alex
332 support
330 amanda
316 upload
296 server
294 backup
292 www
280 bill
274 linux
264 robert
264 patrick
258 webadmin
250 cyrus
246 sam
244 tomcat

Linuxだと確実に存在するrootが一番狙われるのが当然といえば当然で、上位にはuserなどありそうなアカウントが攻撃対象になっています。
それ以外にも面白いのがoraclemysqlなどのWebサーバを構成するアプリケーション名。データベースならそれを管理するアカウントがあっても不思議じゃないですしね…それにしてもoracleは狙われすぎ。

後は、michaelとかpaulとか人の名前にありそうなモノ。アメリカのサーバ管理者だとmichaelさんが多いのかな;-p

とにかく公開するサーバなどはこれまで以上にパスワード管理を厳重に。
コンピュータの性能が上がって便利になれば便利になるほど、不正アクセスなどの悪いことをしようとする人にとっても便利なっていくので難しいところですが…


2011/04/27

最近読んだ、伊坂幸太郎から村上春樹まで。

ゴールデンスランバーゴールデンスランバー
伊坂 幸太郎

新潮社
売り上げランキング : 9640

Amazonで詳しく見る

通勤のお供と言えばKindleです。
普段より一本早い電車に乗ってミスタードーナッツでモーニングセットをいただきながらKindleで小説を中心に読んでいます。
今思えば半ば衝動買いだったKindleですが、すごい活躍をして今では無い生活を…無い通勤生活を考えられません;p

もちろんこれらの本は自分でカッターで分割して、スキャンをかけて、もう一手間のPDF化したモノになります。Scansnap S1300で書籍の電子化をして思ったこと。
こういった手間をできるだけ省きたいならXMDFというフォーマットに対応したSony ReaderやシャープのGALAPAGOSを買った方がいいと思います。

最近読んだ本。

オーデュポンの祈り 伊坂幸太郎
未来予知できる案山子。正直この発想はおかしい。

重力ピエロ 伊坂幸太郎
全然ホッとしないけどどことなくホッとする感じ。

鴨川ホルモー 万城目学
ほるもぉぉぉぉぉぉぉぉ!!!!!
こういう形も「あり」かと思う青春小説

陽気なギャングは地球を回す 伊坂幸太郎
機構が出てくれば上遠野浩平。
出てこないので伊坂幸太郎。

ゴールデンスランバー 伊坂幸太郎
全部読み終わったとき泣いた。
ものすごいおもしろかった。まさに小説。

ラッシュライフ 伊坂幸太郎
大きく分けて4つのストーリーが展開され、そしてその全景が見えたとき…

ノルウェイの森 村上春樹
携帯電話やTwitterなんて誰の頭にも無い時代のお話。
そこにあるのは愛なのかなんなのかよく分からないけど、そして僕は射精した。

グラスホッパー 伊坂幸太郎
アンダーグラウンドの人ばかりが出てくる不健康。

海辺のカフカ 村上春樹
世界で一番タフな15歳の少年と猫と男と女と、そして僕は射精した。

ねじまき鳥クロニクル 村上春樹
僕がこの話を理解できないと呟いたら某氏に「まだ早すぎたんだ」と諭された。
このまま大人になっていけばきっと理解できるのだろうと思い、そして僕は夢精した。

改めて書き出してみると伊坂幸太郎と村上春樹ばかりを読んでいる。
偏っていると思いつつ、肌に合う作家の本は水のように体に浸透していくのでついつい読んでしまう。

この連休には古典的名作に手を出してみたいと思う。


2011/04/25

PythonからWindowsのコマンドを呼び出す方法

C:\>python

Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> import subprocess
>>> p= subprocess.Popen(['ver'],shell=True, stdin=subprocess.PIPE ,stdout=subprocess.PIPE)

>>> for i in p.stdout.read().split('\n'):
... print i
...
Microsoft Windows [Version 6.1.7601]

ね。簡単でしょ。
Pythonから別のプロセスを呼び出すのはSubProcessというモジュールを使ってやるのがスマートらしい。

Python2.5系では

subprocess.Popen(['ver'],shell=True, stdin=subprocess.PIPE ,stdout=subprocess.PIPE)

1つ目の引数が実行したいコマンド。今回はWindowsのビルドバージョンを表示するコマンド。
2つ目の引数はコマンドプロンプト上で実行されるコマンドの場合True。他のアプリを呼ぶ際などはいらないです。
3つ目、4つ目は入出力に関して。

実行結果が複数行にわたる場合でも p.stdout.read().split('\n') で改行ごとに区切ってあげれば1行ずつ取り出せます。
気を付ける点は 上のプログラムだとこの後にもう一回 p.stdout.read().split('\n') をやったとしてもその際には変数pの中は空っぽになっているという点。(エラーは出ません)
元々Pythonは代入ではなくて参照なので、1回出力されたモノは2回目も利用する場合は再度呼び出すか、さらに別の変数に格納してあげる必要があります。

これに気がつかないで結構苦労しました;p
さて、これでPython2.5系からWindowsのコマンドを呼び出して標準出力の結果を取り込むんでごにょごにょできます。
あえて2.5系でのやり方を調べたのは、Python2.7系からもっと簡単な方法が用意されているから。

Python2.7系では同じくSubProcessモジュールに check_output が用意されています。
もっと単純にコマンドを呼び出せてリターンも扱いやすいです。

もっとも、WindowsXPとかで動かすことがあるならPy2exeを使うならPython2.5系をお勧めする理由という事もあるかもしれないので、2.5系で書けることなら書いた方がいいかもね;p