検索
特集

ランサムウェア感染を機に「レスポンス」の強化に取り組むNTTデータは何を目指すのか苦い教訓をどう生かす?

2018年1月に、ランサムウェア「WannaCry」の亜種に感染したNTTデータ。同社はこの苦い経験を機に根本的な再発防止策に取り組んだ。ネットワークセグメントの再設計などと並ぶ主な施策の一つが、EDR製品の導入によるレスポンスの強化だ。

Share
Tweet
LINE
Hatena

 セキュリティは大切だ――100人に尋ねればほぼ全員がそう答えるだろう。だが、本当に「自分ごと」として捉え、取り組めているだろうか。

 実際には何らかの痛い目に遭って初めて、これまでのセキュリティ対策を振り返り、欠けていた部分を補う強いモチベーションが生まれるケースは少なくない。その一例が2017年5月に世界的に感染を広げ、国内でも多くの企業に影響を及ぼしたランサムウェア「WannaCry」だ。大事なファイルが暗号化され、業務に支障が生じる事態を目の当たりにして初めて、端末管理やパッチ管理といった基本的な対策の徹底と、迅速に実態をつかんで初期対応を行う対応体制整備の重要性が認識されるようになった。

 国内最大規模のシステムインテグレーターであるNTTデータも、苦い「教訓」を踏まえて対策を進めている企業の一つだ。顧客に対しセキュリティも含めたさまざまなソリューションを提供してきた立場として、以前からセキュリティ対策に力を入れていたが、その対策をすり抜けられてランサムウェア感染が発覚。撲滅までの対応に追われた経験を踏まえ、一段と対策を強化している。

 NTTデータ セキュリティ技術部で、NTTDATA-CERTも含めた形で社内情報システムのセキュリティ確保や対応に当たっている情報セキュリティ推進室 情報セキュリティ推進担当課長の加納寿浩氏と、顧客向けシステムのセキュリティ確保をさまざまなフェーズで支援する同社 セキュリティ技術部 ソリューション担当部長の武井洋介氏に、一連のいきさつを尋ねた。

「この感染端末、一体誰の?」の特定にひと苦労

 NTTデータでランサムウェア「WannaCry」の亜種感染が発覚したのは、2018年1月5日のこと(参考)。社内の複数のシンクライアント端末が感染し、ブルースクリーン状態に陥った。不幸中の幸いというべきか、ファイルが暗号化されることはなく、感染した端末も再起動で業務継続はできたものの、社内には驚きが走った。

 NTTデータでは、いわゆるファットクライアント端末(PC)だけではなく、シンクライアント端末も合わせて約7万台の端末が運用されていた。そして、端末セキュリティ状況の管理システムを活用し、「OSのパッチが当たっているか」「Adobe Acrobat Readerなどアプリケーションのパッチも適用されているか」「ウイルス対策ソフトが導入され、パターンファイルは更新されているか」といった構成管理を行っていたという。

 ただ、いわゆる資産管理システムとの連携ができておらず、「この端末は、どの部署の誰が使っているか」を速やかに突き止めることが難しい状態だった。

 「当時は強制切断するルールも手段もなく、対策指示を出して社員に手作業で1台ずつ対処してもらうしかなかった」(加納氏)

 休暇中の社員の端末の対処や、全端末を特定する作業が難航した部署もあり、最後の一台まで完全に撲滅し、対処を終わらせるにはかなりの労力を要したという。

 一般論として、どのIPアドレスにどの端末がひも付けられており、それをどの部署の誰が使っているかをすぐ確認できる手段を持つ企業は多くないだろう。表計算ソフトで台帳を作っていたとしても、運用していくうちに現実の環境とは乖離(かいり)が生じてしまう。結果として、せっかくアラートを受け取っても、その原因となった端末のユーザーを迅速に特定し、対処を依頼するプロセスに時間がかかり、レスポンスに要する時間を長引かせてしまうことが多い。

 NTTデータの場合は、この一件を機に、「自分たちも『防御だけで守るのは無理。侵入されることを前提に、いち早く検知、対応しなくてはならない』と口では言っていたが、あらためてその重要性を実感した」と武井氏は振り返った。

一連の再発防止策の中で、弱かった「レスポンス」の部分も強化

 NTTデータではこの一件を踏まえ、再発防止に取り組んだ。NIST(米国標準技術研究所)のフレームワークに沿って、特定、防御、検知、対応、復旧という全プロセスにまたがってどこが弱かったかを振り返り、弱かった部分の強化策を検討していった。迅速に経営幹部と共に「再発防止策」を策定し、これに沿って手を打っていったという。


NTTデータグループの選択

 この防止策では、「複雑怪奇」と加納氏も表現するほどの、NTTデータ社内ネットワークのセグメント分けの見直しや、UEBA(User and Entity Behavior Analytics)導入による疑わしい動きの検知も進めているが、中でも重視したのがレスポンスの部分だ。

 「離席している/いないも含め、利用者のスキルセットに依存していると、どうしても対応が遅くなる。この対応、レスポンスのところを改善すべく、何らかの手を打たなければならないと考えた」(加納氏)

 人手で一つ一つ探し、確認し、対処するのではなく、ツールを活用して機械的に、自動的に対策することを検討して目を付けたのが、EDR(Endpoint Detection and Response)だった。


NTTデータ セキュリティ技術部 情報セキュリティ推進室 情報セキュリティ推進担当課長 加納寿浩氏

 「EDRという言葉にはバズワードっぽい雰囲気も感じていたし、事実、ベンダーによって定義に違いがある。われわれとしては、防御の部分は既存の対策でできているし、ネットワークのモニタリングもある程度できており、補うべきは『対応』『レスポンス』のところだ。そこに重きを置くべきだという判断でEDR製品を検討した」(加納氏)

 NTTグループ全体で分担してEDR製品を検証していた中、NTTデータでは自ら検証した「Tanium」を選定した。

 「5万台規模での運用を想定していたため、それだけの規模に対応できるかどうかをまず確認したが、分散アーキテクチャでカバーできることがポイントになった。また、今回のEDRの導入対象はファットクライアント端末だが、NTTデータの社内にはWindowsだけでなくLinuxやMacもそれなりの台数存在している。こうしたさまざまなプラットフォームに対応していることも必要だった」(加納氏)

 こうして同社は、2018年度いっぱいにかけてTaniumの導入を完了させた。

 「これは西海岸系の製品に共通する課題だと思うが、管理が一極集中型で、事業部や部署に応じた階層構造化ができない。1人の管理者が全社、全組織にパッチ適用の強権発動をするとなると重い判断になる」(加納氏)

 事業部単位で分散管理できれば責任もそこまで大きくなくなるし、事業部側担当者に管理インタフェースを公開し、自身で「今どうなっており、どんな対処が必要か」を把握することも可能になるという。

 こんなふうに幾つか課題はありつつも、「これまで運用でまかなっていた点検系の施策を製品に置き換えることで、現場の負荷軽減を図っていきたい。あれをしなさい、これを入れなさいという今までのセキュリティ運用は、いわば『上から目線』。かなり現場の運用負担を上げるものになっており、それが限界に来ていた。ツールをうまく使って、時には強制アップデートの機能も活用しながら、現場の負担を下げるために活用していきたい」と加納氏は述べている。

 並行して、既に準備した手順マニュアルだけではなく、「いざというとき、誰がどう判断するか」「どんな状況ならば他人のPCやサーバにパッチを当ててもいいのか」といったルール作りにも着手し、セキュリティと負荷、業務の落としどころを探っていくという。


NTTデータ セキュリティ技術部 ソリューション担当部長 武井洋介氏

 「いざというときのオペレーションを自動的に行えるのもポイントだが、端末や機器が正常に動き、安全な状態になっているか、自社の健康状態をリアルタイムに把握できることがTaniumの一番の価値だと思っている」(武井氏)

 従来の端末セキュリティ管理システムでも端末の状態を管理できるが、Windows以外の端末や管理システムがインストールされていない端末の状況が分からず、全体の状況を確認できていたとは言い難い。

 「『今、この瞬間に、このパッチが当たっていない端末が何台あるか』を数分で把握するのは、人の手では無理。でも幹部は『うちはどうなっているか、3日以内に報告するように』と言ってくる。Taniumを使うと今の状態がすぐ把握でき、それがTaniumが提唱するサイバーハイジーン(サイバー衛生管理)の一番のメリットだと思う」(武井氏)

 こうしてTaniumを運用し始めたNTTデータだが、「われわれはさまざまなEDR製品を検証してこれを選んだが、全てのお客さまにとってそうとは限らない」と武井氏は述べる。Taniumは便利なツールだが、やりたいことを実現するにはある程度のスキルが必要になるのも事実。企業の体制や運用形態によっては、マネージドサービスを組み合わせ、より簡単に回せるツールの方が適していることもある。

 「そもそも自社が今どういう状態にあり、どういった対策が必要なのか、そしてどこまでならできるのか……そういった事柄を検討してベストなソリューションを選んでほしいし、提案の際にはそうしている」(武井氏)

新たなIT環境に適したセキュリティの在り方の模索も

 NTTデータでは、ネットワークセグメントの再設計やUEBA導入といった一連の施策を組み合わせ、海外の拠点も含め「統一的なやり方で運用し、重大なインシデントが起きたら24時間以内に本社に上がってくるようにすることを目標に立て、運用を始めている」と武井氏は述べた。

 運用に当たっては、NTTデータ先端技術のSOC(Security Operation Center)サービスを活用して一次切り分けを行い、重要なものがNTTDATA-CERTに上がってくる仕組みだ。今後について武井氏は、「上がってくるアラートは数多く、特にUEBAの振る舞い検知ではものすごい数になるため、こうした部分に機械学習などの技術をうまく活用できないか」と考えている。

 それでなくとも、クラウドやマイクロサービスといった技術が浸透し、IT環境自体が大きく変化しつつある。

 「今までの境界防御が利かなくなっているのも事実。自ずと守り方も変わるし、検知の仕方も変わる。今までのWeb防御だけではなく、APIやマイクロサービスを組み合わせて新しいものを作り出す中、開発スピードを保ちつつ、セキュリティを保たなければならない。そうした新しいIT環境を踏まえたセキュリティの在り方も追い掛けていく」(武井氏)

Copyright © ITmedia, Inc. All Rights Reserved.

PREVIEW
'; }else{ mask.innerHTML = '
画像をご覧いただくには会員登録が必要です
' + btn_txt + '
'; } if((_preview && location.hash.indexOf('maskoff') !== -1) || (typeof itmIdLogin !== 'undefined' && itmIdLogin == 1)){ img.style.visibility = 'visible'; }else{ nxt.parentNode.insertBefore(mask,nxt); } } } }; /** * mask_leadin : subscription マスクの実行 * @param {Object} マスク用パラメータ(sc,lc,ac,bc)と記事の状態(subscription_exist,subscription_objects,preview)を持った Object */ function mask_leadin(_p){ if(!_p.subscription_exist) return false; addCSS('/css/spv/cmsInput.niche.css?date=202407081140'); let d = document; let description = createElementWithAttribute('div',{"class":"colBoxDescription"},function(div){ div.appendChild(createElementWithAttribute('p','',function(p){ p.innerText = '続きを読むには、[続きを読む] ボタンを押して会員登録あるいはログインしてください。'; })); }); let button = {}; if(_p.preview){ button.link = 'javascript:void(0)'; button.text = '続きを読む(TestMode)'; button.func = 'if(window.confirm(¥'マスクを解除しますか?¥')){location.href = ¥'#maskoff¥';location.reload();}else{return false;}'; } else { button.link = 'https://id.itmedia.co.jp/isentry/contents?sc=' + _p.sc + '&lc=' + _p.lc + '&ac=' + _p.ac + '&cr=' + _p.cr + '&bc=' + _p.bc + '&return_url=' + encodeURIComponent(d.URL) + '&pnp=1&encoding=shiftjis'; button.text = '続きを読む'; button.func = 'cx_itm_mask_button();'; } button.elem = createElementWithAttribute('div',{"class":"colBoxButton"},function(div){ div.appendChild(createElementWithAttribute('a',{"href":button.link,"onclick":button.func},function(a){ a.innerText = button.text; })); }); let mask = createElementWithAttribute('div',{"class":"mask_leadin"},function(div){ div.innerHTML = '
'; }); mask.querySelector('.colBoxIndex').appendChild(description); mask.querySelector('.colBoxIndex').appendChild(button.elem); let subscription = _p.subscription_objects[0]; subscription.classList.add( 'is-' + _p.subscription_type ); if((_p.preview && location.hash.indexOf('maskoff') !== -1) || (typeof itmIdLogin !== 'undefined' && itmIdLogin == 1)){ subscription.style.display = 'block'; }else{ subscription.parentNode.insertBefore(mask,subscription); } }; /*IMAGE MASK & Lead-in*/ (function(d){ let membersControl = searchMembersControl(); // %メンバー用マスクの存在チェックと対象要素取得 let imageMask = searchImageMask(); // 画像マスクの存在チェックと対象要素取得 let subscription = searchSubscription(); // subscription マスクの存在チェックと対象要素取得 let isPreview = d.domain.match(/(preview|broom|localhost)/); let param ={ isLoginURL:'//status.itmedia.co.jp/isLoginAIT.cgi', sc:'0c1c43111448b131d65b3b380041de26f2edd6264ee1c371184f54d26ab53365', lc:'7d7179c146d0d6af4ebd304ab799a718fe949a8dcd660cd6d12fb97915f9ab0a', ac:'1a599d548ac1cb9a50f16ce3ba121520c8ab7e05d54e097bfa5b82cb5a328a0f', bc:1, members_control_exist:membersControl.exist, image_mask_exist:imageMask.exist, image_mask_objects:imageMask.Objects, subscription_exist:subscription.exist, subscription_objects:subscription.Objects, subscription_type:subscription.type, preview:isPreview }; let setExtraMask = function(){ if (d.getElementById('isLogin') || isPreview) { // isLogin 呼び出し済みであれば各マスク処理を実行 if (imageMask.exist) { param.cr = '2c93f81754142e105c8bca17824745d14c8c4d69e9d7ede513e5530546e97641'; mask_images(param); } if (subscription.exist) { param.cr = '90cfa6d666682f8b5dc3c798020e432fc294ef430deb069008d4f8bceeb02418'; mask_leadin(param); } } else { // isLogin がなければ、呼び出した後で再実行 let js = mask_images.setISLOGIN(param.isLoginURL,param.sc); js.addEventListener('load',function(){ setExtraMask(); }); } }; if( subscription.type != 'force' ) { //強制 subscription ではない場合のみ実行 if (imageMask.exist || subscription.exist) { setExtraMask(); } } })(document);
LOADING
'; w.removeEventListener('scroll',arguments.callee,false); htmlRequest(_xhrfile,_idname); elem.setAttribute('data-status','true'); console.log('finished : ' + _idname); }else{ // console.log('retry : ' + _idname); } }else{ e_loader.innerHTML = '
LOADING
'; w.removeEventListener('scroll',arguments.callee,false); htmlRequest(_xhrfile,_idname); elem.setAttribute('data-status','true'); console.log('finished : ' + _idname); } } }; w.addEventListener('scroll',scrolling,false); // スクロールイベント scrolling(); // スクロールイベント(閲覧位置が半端な場合のために 1 回実行させる) }; w.addEventListener('load',loading,false); // LOAD 後に実装 };