こんにちは!インフラや開発の現場で日々奮闘している皆さん、セキュリティの世界へようこそ。
今回は、現代のシステム開発では避けて通れない「コンテナ」の世界と、そこで私たちを守ってくれる強力な見張り番「Falco(ファルコ)」について、一緒に楽しく学んでいきましょう。
「コンテナってなんだか難しそう…」
「セキュリティのルールって、小難しい用語ばかりで頭が痛くなる…」
そんなふうに思っていませんか?大丈夫です!身近な「お家の防犯」に例えながら、一歩ずつ優しく紐解いていきますので、安心してついてきてくださいね。
—
1. コンテナの世界は「オートロックマンション」?
皆さんは、オートロック付きのきれいなマンションに住んだことはありますか?
コンテナ(Dockerなど)という技術は、まさにこの「マンションの一室」のようなものです。
一つの大きな土地(サーバー)の上に、お隣さんとは壁できっちり区切られた独立した部屋(コンテナ)がたくさん並んでいます。それぞれの部屋には、必要な家具(アプリやプログラム)がきちんと収まっていて、お互いのプライバシーや安全が守られている…これがコンテナの便利なところですよね。
でも、もし「合鍵」を使われたら…?
お部屋のセキュリティがどれだけしっかりしていても、もし悪意を持った泥棒が何らかの隙をついて合鍵を手に入れ、あなたのお部屋にこっそり侵入してしまったらどうなるでしょうか?
さらに、その泥棒が部屋の中でこんな怪しい動きを始めたら大ピンチです。
- リビングで勝手に合板をバキバキ割り始めた(予期せぬファイル書き込み)
- 勝手に合鍵の複製マシンを回し始めた(シェルや不正なツールの起動)
コンテナの世界でもこれと全く同じことが起こります。アプリの脆弱性を突かれてコンテナの中に侵入され、そこからシステムを乗っ取られようとする攻撃は、現実のインシデントとして毎日どこかで起きているのです。
—
2. そこで登場するのが「マンションの防犯カメラ&警備員:Falco」
お部屋の中に侵入されたとき、ただ鍵をかけてじっと待っているだけでは不安ですよね。そこで必要になるのが、「お部屋の中で不審な動きがあったら、即座に見つけて警報を鳴らしてくれる仕組み」です。
これが、今回ご紹介するコンテナランタイムセキュリティツール 「Falco(ファルコ)」 です。
Falcoは、いわばコンテナ専用の「優秀な警備員兼防犯カメラ」です。
Linuxのカーネル(OSの心臓部)の動きを監視し、コンテナの中で「おや、このプログラムが動くのはおかしいぞ」「本来書いてはいけない場所にファイルを書き込んでいるぞ」という瞬間をまるでレントゲンのように見抜いて、Slackやメールにアラートを飛ばしてくれます。
—
3. 実践!Falcoで怪しい動きをキャッチしてみよう
それでは、実際にFalcoがどのように動くのか、設定の雰囲気を覗いてみましょう。
難しく考えず、「お巡りさんにこういうルールでパトロールをお願いするんだな」という感覚で見てくださいね。
Falcoは、監視のルールをYAMLという設定ファイルで記述します。例えば、「コンテナの中で、許可されていないシェル(bashやshなど)が起動したらアラートを鳴らす」というルールは、以下のように書きます。
- rule: コンテナ内でのシェル起動を検知
desc: セキュリティ上、コンテナ内で直接シェルが実行されるべきではありません。これを検知して警告します。
condition: >
evt.type = execve
and container.id != host
and (proc.name = "bash" or proc.name = "sh" or proc.name = "zsh")
output: 「大変です!」コンテナ内で不正なシェルが起動されました (user=%user.name command=%proc.cmdline container_id=%container.id container_name=%container.name)
priority: WARNING
tags: [container, shell, mitre_execution]
ちょこっとコードの解説
evt.type = execve: OS上で新しいプログラムが実行された瞬間をキャッチしています。container.id != host: ホストOS(大元のサーバー)ではなく、ちゃんと「コンテナの中」で起きたことだけに絞っています。proc.name = "bash" ...: 起動されたプログラムの名前が、いわゆる黒い画面のシェル(bashなど)かどうかをチェックしています。output: 見事検知したときに、どんなメッセージを通知するかを設定しています。
このように、あらかじめ「こういう動きは怪しい!」というルールをFalcoに教えておくことで、私たちはサイバー攻撃の芽を早期に摘み取ることができるのです。
—
4. 現場のエンジニアからのアドバイス:アラートが出たらどうする?
実際に実務でFalcoを導入すると、最初はたくさんのアラートが飛んできて驚くかもしれません。「えっ、これって本当に攻撃?」と焦ることもあるでしょう。
ここで、現場の泥臭い知見を一つシェアさせてください。
セキュリティの監視は、「最初は多めに網を張って、徐々にチューニングしていく」のが鉄則です。正当な理由があってコンテナ内でシェルを動かしている開発ツールなどが引っかかる場合は、ルールに「この例外の時はスルーしてね」という除外設定(例外条件)を少しずつ加えていきます。
「お家の防犯ブザー」と同じで、風が強くて窓が揺れただけで鳴るようでは困りますよね。ご自身のシステム環境に合わせて、警備員の感度を優しく調整してあげるのが、長く安全に運用するコツです。
—
まとめ
いかがでしたでしょうか?
- コンテナセキュリティ(Falco)とは、お部屋(コンテナ)の中に入り込まれたあとの怪しい動き(シェル起動やファイル書き込み)を監視する防犯カメラのようなもの。
- 難解なルールも、身近な防犯に置き換えれば「何を監視したいのか」がスッと見えてくる。
セキュリティは、一度学べば一生モノの心強いスキルになります。
「なんだか面白そうだな」と感じてもらえたら、ぜひご自身のローカル環境やテストサーバーでFalcoを動かしてみてくださいね。一歩ずつ、安全なシステム作りを楽しんでいきましょう!
コメント