オープンセミナー岡山2014に行ってきた #OSO2014
オープンセミナー岡山という勉強会へ行ってきました。
よくオープンセミナー(OS*)とオープンソースカンファレンス(OSC)の違いが分かりづらいという話を聞きますがオープンセミナーは民営でオープンソースカンファレンスは株式会社びぎねっとという企業が主催しているIT勉強会だそうです。
というわけで大都会岡山へ行ってきました。
オープンセミナー2014@岡山 まとめ #oso2014 - Togetterまとめ
テーマは「フロントエンドとサーバーサイド」でした。
IT系の発表の他にデザイナー視点でのソフトウェア開発についての発表もあり、今まで意識することの無かった考え方を取り入れる良い機会になりました。
懇親会での感想は広島と比べて岡山ではLTのネタ枠に力を入れている印象でした。(ネタ枠は大事)
岡山は広島とはまた違った雰囲気があり、新しい人たちとも知り合うことも出来た為、良い刺激になりました。
ドメインが凍結されたお話 [すごい広島51]
カーネルモジュールでキーロガー [LT駆動開発 03]
「LT駆動開発 03 - ひとりでもライトニングトークができるか」に参加してきました。
LT駆動開発というのは参加者がお互いにLT(ライトニングトーク)をしてまさかりを投げたり投げられたりする事で発表者も含む参加者全員で学ぼうという勉強会です。
LTの内容はAWS-S3をHaskellで叩いてみた話やサーバのアクセスログ解析ツールを開発した話やFireChatというP2Pチャットアプリなど様々なジャンルの発表がありました。
今回僕が発表したLTの内容は「カーネルモジュールでキーロガー」です。
尚、サンプルプログラムはGitHubにてダウンロードが可能です。
内容はスライドの通りですが、今回は時間が限られていたため一部説明できなかった内容も含めて少し補足説明を加えておきます。
ライセンス汚染
Linuxのカーネル自体がGPLライセンスで作成されているため、それを用いたカーネルモジュールもGPLライセンスとなります。ライセンスをBSDにしたり、ライセンスを指定しないとコンパイルエラーになります。
カーネルモジュールの導入
insmodでカーネルモジュールの挿入・rmmodで除去が可能です。また、lsmodで現在挿入されているカーネルモジュールの列挙ができます。
今回提示したプログラムだとinsmod logger.koなどで挿入できます。
導入されているカーネルのソースコードを使う理由
カーネルモジュールにカーネル自体の一部機能を組み込む形となるため、カーネルのソースコードが必要となります。
また、カーネルモジュール内部にターゲットカーネルのバージョンが格納されていて、異なるバージョンのカーネルには挿入できないようになっています。
(arm-linux-gnueabiなどのクロスコンパイラを使えば他環境へ移動しても稼働するという噂を聞いたことがありますが未検証です)
Ubuntuではapt-get install kernel-sourcecode?
などで取得できます。
サンプルプログラムではMakefileでカーネルソースのディレクトリを指定します。
セキュリティ対策
カーネルモジュールはカーネルランドで稼働するため、システムの乗っ取りなどが行われると恐ろしい事になります。実運用ではセキュリティ対策・例外処理が非常に重要です。
LT駆動開発はほぼ毎月開催予定ですが、ネタ系から技術系まで幅広いジャンルを和やかに受け入れてくれる雰囲気なので興味があれば参加してみてください。