情報処理安全確保支援士試験を受けてきました

情報処理安全確保支援士試験とは?

さる10/20、情報処理安全確保支援士試験を受けてきました。

試験当日までに勉強してきて感じたこと、試験受けてて感じたことを忘れぬうちにレポートしておきます。

勉強して思ったこと

  • 基礎知識は大事(当然だけど)
  • マルウェア感染しまくり
  • C&Cサーバと通信するマルウェア出がち
  • XSSの話題は割と多い
  • FWの設定の話は必ず出てくる
  • DNSサーバ絡みも基本出てくる
  • 暗号化の話は控えめ

それぞれについて

基礎知識大事

まぁ、当たり前の話ですが、、、
さらっと出てくる攻撃手段であるとか、技術名前とか。
あとアルファベット3文字の略語がすごい多いイメージがあります。(WAP、RSA、CRLとかね)
知らない言葉でも文脈である程度、なんの話なのかは推測出来ますが、ソコを掘られてしまうと厳しいのでやはり基礎知識はあるに越したことはない。

マルウェア感染しまくり

午後試験に出てくる人たち(会社たち)は基本的にはマルウェアに感染します。
マルウェアのタイプもおさえておくと、原因やら対策やらがイメージしやすくなるでしょう。

C&Cサーバと通信するマルウェア出がち

特に午後の問題でマルウェアに感染した場合は、大抵C&Cサーバと通信します。
マルウェアの感染からネットワーク系(FWやらDNSやら)の話題までネタは豊富です。
この辺りのありがちなマルウェアの動きから対策をおさえておければかなりの強みとなります。

XSS(クロス・サイト・スクリプティング

インシデント化した場合、だいたい大問5つのうち1つはXSSが絡んでるイメージ

問いの直接の問題ではないこともあるけれど、単語として出てきがち

FW

フィルタリングのルールに関しては前提条件として出てきます。
よく見かけた問題としては、「こういうルールで、こういうインシデントが発生しました。P氏はフィルタリングルールを追加し対策とした。、、、」みたいな文脈で追加したルールを書きなさい。みたいな。

DNS

DNSに関連した問題も多いイメージがあります。
DNSに絡んだ攻撃手段も色々あり、一般的になされる対策はどのような脅威に対するものなのか?という点はおさえておくと多分幸せ。
人それぞれとは思いますが、なかなか普段の業務でDNSを意識することはないでしょう?
僕はありません。
コンテンツサーバ?権威サーバ?オープンリゾルバ?
その辺おさえておく必要があります。

メール

メール(SMTP)に関する問題もよくあります。
教科書を見るとかなり多くのページを割いて解説しています。
令和元年秋季の午後Ⅰの試験ではメールのセキュリティに関する題材が出題されてました。

暗号化の話は控えめ

アプリケーションのセキュリティとしては暗号化の話が出てきがちではあります。
ですが、暗号化の知識を問う問題はあまり多くない印象です。
午前の選択問題の試験では多少出てきますが、ガッツリではありません。
もちろん午後の記述試験では問題文中にさらっと出てきたりするため押さえておくべきではあります。

今回の試験で出たテーマ

午後Ⅰ(大問3問中2問選択)

電子メールのセキュリティ対策

(未選択) 電子メールのセキュリティは自信なかったので飛ばしました。
なので内容ちゃんと見てないです。

セキュリティインシデント対応におけるサイバーセキュリティ情報の活用

(選択) とある金融事業会(Z社)は、最近サイバーセキュリティ情報を共有しサイバー攻撃への防御力を高める目的で活動する組織(ISAC)に加盟した。
ある日、Z社はISACから情報提供を受ける。
その内容とは、金融事業会社(Q社)が攻撃を受けた。
また関連調査からZ社への攻撃が計画されていた。
というものだった。
攻撃対象とされていたことを重く見たZ社経営層は調査に乗り出した。
というストーリー。
計画されていた攻撃に対する予防策などを問われます。

標的型攻撃への対応

(選択) ビッグデータ解析を専門とする調査会社(J社)は情報セキュリティポリシを整備し運用している。
J社では20xx年3月に標的型攻撃を受け社内PCがマルウェアに感染、サーバ上の機密情報を外部に送信してしまった。
感染発覚から処置完了まで48時間を要し、その間業務を中断した。
J社ではセキュリティコンサルティング会社の支援を受け標的型攻撃対策を行った。
というストーリー。
標的型攻撃対策や、インシデント対応手順について問われます。

午後Ⅱ(大問2問中1問選択)

ソフトウェア開発におけるセキュリティ対策

(選択) インターネット広告事業者(S社)はインターネット広告の販売及び効果測定サービスの提供を行なっている。
効果測定サービスは同社WEBサイトのシステムで稼働するWEBアプリケーションソフトウェアによって提供されている。
S社のWEBアプリケーションはW社データセンタ内のサーバA上で稼働している。
S社は新たなサービスを新規WEBアプリケーションとして提供するべく開発を行っている。
そんな中S社はある日、サーバAがW社データセンタ内の他のサーバを探索するアクセスを繰り返しているという連絡を受ける。
というようなストーリーです。
マルウェアの感染を疑い調査を行う・調査内容の評価・対策などについて問われます。

工場のセキュリティ

(未選択) ソフトウェア開発に関する題材の方が答え易いかなーと思ったため、こちらの問題は選びませんでした。
後になって問題を見返して見ると、こっちでもある程度行けたかも、、、とは思いました。

最後に

合格できているかは分かりませんが、ダメでもまた来春受けようかと思ってます。
2回目は行けるかもと、勝手にポジティブに捉えています。

Ubuntu16.04でCapsLockとCtrlを入れ替える

自宅のPCをUbuntuにしたので環境整え

調べながらやったら結構面倒だったので備忘

参考 http://d.hatena.ne.jp/aaa555/touch/searchdiary?word=*%5BLinux%5D
http://blog.cnu.jp/blog/2014/05/12/use-xkb/

設定ファイルの雛形を準備

$ mkdir -p ~/.xkb/keymap ~/.xkb/symbols
$ setxkbmap -print > ~/.xkb/keymap/mykbd

.xkb/keymapディレクトリと.xkb/symbolsディレクトリを作成
現在システムに設定されているkeymap(?)をmykbdという名前で~/.xkb/keymapに配置する
setxkbmapコマンドにprintオプションをつけると現在値を標準出力してくれるらしい

変更するキーバインドの設定

$ vim ~/.xkb/symbols/myswap

やりたいことはCapsLockと左Ctrlの入れ替え
myswapに以下のように記述する

partial modifier_keys
xkb_symbols "swapkeys" {
    replace key <LCTL> { [ Caps_Lock ] };
    replace key <CAPS> { [ Control_L] };
};

上記設定をmykbdに反映する

$ vim ~/.xkb/keymap/mykbd

雛形は準備されているので+myswap(swapkeys)の部分を追加します

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+jp+us:2+inet(evdev)+myswap(swapkeys)"   };
    xkb_geometry  { include "pc(pc105)" };
};

システムに設定を追加する

このままだと日本語入力に切り替えたタイミングで設定が戻ったりしてしまうので、システムに反映します

$ vim ~/.bashrc

以下を末尾に追加する

xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 2> /dev/null

作成したmyswapファイルをシステムのほうにコピーする

sudo cp -i ~/.xkb/symbols/myswap /usr/share/X11/xkb/symbols/

/usr/share/X11/xkb/rules/evdev の末尾に次の1行を追加

$ vim /usr/share/X11/xkb/rules/evdev

以下を末尾に追加する

mysetting:swapkeys = +myswap(swapkeys)

gnomeのシステム設定に反映させる

$ gsettings set org.gnome.desktop.input-sources xkb-options "['mysetting:swapkeys']"

再起動すればちゃんと設定が保持されます

GITサーバを新たにたちあげたので、既存のリポジトリを移動

「新しいGITサーバ作ったからこっちを使ってねー」と連絡を受けたので、 今までのリポジトリを移行しました。

SourceTreeを使用していたので、SourceTreeの「ターミナル」をつかって以下の操作をしました。

移行前リポジトリhttp://oldgitserver/git/repo
移行後リポジトリhttp://newgitserver/root/repo

$ mkdir workDir
$ cd workDir
$ git clone --mirror http://oldgitserver/git/repo
$ cd repo.git
$ git push --mirror http://newgitserver/root/repo.git

タグやらブランチやらも含めて移行できました。

最初から

$ git clone --mirror http://oldgitserver/git/repo.git

とすればよかったのかも。

ORACLE デフォルト表領域を変更する

やったこと

  • 表領域を作成
  • ユーザのデフォルト表領域を変更

開発環境を調査していたところ SYSTEM表領域にテーブルが作成されているのを発見。

SYSTEM表領域で性能テストとかヤバイので、新たな表領域を作成しました。

表領域の作成

  • NEWTABLESPACEという名前
  • 100Mのデータファイル
  • 自動拡張500K
  • 最大サイズ1G

で表領域を作成

SQL> CREATE TABLESPACE NEWTABLESPACE
SQL>  DATAFILE 'newtablespace01.dbf' SIZE 100M AUTOEXTEND ON NEXT 500K MAXSIZE 1024M;

Tablespace created.

NEWTABLESPACEという名前の表領域が作成されました。

確認してみます。

SQL> select TABLESPACE_NAME,BYTES,MAXBYTES from dba_data_files where tablespace_name = 'NEWTABLESPACE';

TABLESPACE_NAME                     BYTES   MAXBYTES
------------------------------ ---------- ----------
NEWTABLESPACE                   104857600 1073741824

104857600 Byte = 100MByte
1073741824 Byte = 1GByte

です。

できた。

ユーザのデフォルト表領域の変更

ユーザのデフォルト表領域を変更します。

まず現状を確認

SQL> SELECT USERNAME, DEFAULT_TABLESPACE FROM dba_users where username = 'HOGE';


USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
HOGE                           SYSTEM

変更

SQL> ALTER USER HOGE DEFAULT TABLESPACE NEWTABLESPACE;

User altered.

そして確認

SQL> SELECT USERNAME, DEFAULT_TABLESPACE FROM dba_users where username = 'HOGE';


USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
HOGE                           NEWTABLESPACE

変更されました。

めでたし、めでたし。

HHKでWindowsをロックする

HHKだとWindowsの画面ロックができぬ

HHK

Windowsのロックとは「Windowsキー」+「L」のショートカットでやるあれです。

離席するときにはやりなさいよっていうあれです。

困ったことにHHKでは上記ショートカットが使えません。

Windowsキー」はFunctionキーとの組み合わせで実現します。

そしてFunctionを押すと「L」のキーは「Page Up」になります。

その結果キーボードショートカットでロックが出来なくなります。

メインメニューからもできるが、面倒。

標準ショートカットの変更はレジストリを書き換える必要があるそうです。

それはしたくない。

解決策 バッチを作ればいいの

HHKでキーボードショートカットを実現するためには、新たなショートカットを作ればいいという結論に達しました。

  1. ロックをかけるバッチを作る
  2. バッチへのショートカットを作る
  3. ショートカットにショートカットキーを割り当てる

バッチの中身

rundll32.exe user32.dll,LockWorkStation

割り当てたショートカットキー

Ctrl+Alt+Page Up

これで「Fn」+「Alt」+「Ctrl」+「Page Up(L)」でロックができるようになりました。

もっと楽なやり方はありますか?

mysql2インストール時に怒られちゃうので回避する方法

  • mysql2インストールしようとして怒られる

railsの環境構築をしていました。 OSのインストールからしていまして、Ubuntu14.04です。 適当に用意した後、rbenv・bundlerごしにgemのインストールをしていたとき、 mysql2のインストール中に以下のとおり怒られました

Installing mysql2 0.3.18 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /home/unkoyaro/.rbenv/versions/2.2.2/bin/ruby -r ./siteconf20150720-20331-1mx9hf3.rb extconf.rb
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/home/unkoyaro/.rbenv/versions/2.2.2/bin/$(RUBY_BASE_NAME)
    --with-mysql-dir
    --without-mysql-dir
    --with-mysql-include
    --without-mysql-include=${mysql-dir}/include
    --with-mysql-lib
    --without-mysql-lib=${mysql-dir}/lib
    --with-mysql-config
    --without-mysql-config
    --with-mysql-dir
    --without-mysql-dir
    --with-mysql-include
    --without-mysql-include=${mysql-dir}/include
    --with-mysql-lib
    --without-mysql-lib=${mysql-dir}/lib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mlib
    --without-mlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-zlib
    --without-zlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-socketlib
    --without-socketlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-nsllib
    --without-nsllib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mygcclib
    --without-mygcclib
    --with-mysqlclientlib
    --without-mysqlclientlib

extconf failed, exit code 1

Gem files will remain installed in /home/unkoyaro/work/test/testapp/vendor/bundle/ruby/2.2.0/gems/mysql2-0.3.18 for inspection.
Results logged to /home/unkoyaro/work/test/testapp/vendor/bundle/ruby/2.2.0/extensions/x86-linux/2.2.0-static/mysql2-0.3.18/gem_make.out
An error occurred while installing mysql2 (0.3.18), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.18'` succeeds before bundling.
  • 回避法

参考サイト

$ sudo apt-get install libmysqld-dev

で「libmysqld-dev」をインストールすれば大丈夫です。

要はライブラリが足りてなかったわけです。

しらんがな・・・

そんなこんなで回避できます。

以上

SVNリポジトリのサーバが変更になった際のEclipse 側の設定変更

SVNリポジトリサーバの引越し

リポジトリサーバが変更になった時のEclipse の設定変更に関してです。
サーバの変更とはサーバのIPアドレスが変更された場合を想定しています。

設定変更

  1. SVNリポジトリエクスプローラを開きます。
  2. 対象のリポジトリを右クリック
  3. コンテキストメニューからプロパティダイヤログを開きます。
  4. サーバURLを変更します。
以上

切り替えとは

ちなみに
プロジェクトエクスプローラ(だったかな?)で右クリック→「チーム」→「切り替え」もそれっぽいものに見えます。
が、これはブランチを変えたりするときに使うものだそうです。
「開発用のブランチ切ったからこっち使ってねー」とか言われた時はこの「切り替え」を使用します。
つまりサーバが変わってない(IPアドレスが変わってない)時ということです。

たぶん。

てことはサーバ側でリポジトリにしてるディレクトリのパスが変わった時とかも最初のリポジトリエクスプローラからの方でやらないといけないんでしょうね。
ミドルウェアでの変更か否かってことが判断基準って言い方でいいんですかね。