テスト設計コンテストの紹介

この記事は、SLP_KBIT Advent Calendar 2016の2日目の記事です。

qiita.com

はじめに

うちの研究室のボスから、今年は配属希望者が少なかったからもっと宣伝してと言われたので、宣伝の記事を書こうと思います。
とは言っても、研究については先生から聞けると思うのでそれ以外について書こうと思います。

ということで今回は、現在、研究室のメンバーで取り組んでいるテスト設計コンテストについて紹介します。

テスト設計コンテストとは

テスト設計コンテストとは、ソフトウェアテストの設計に関する技術を競うコンテストです。

aster.or.jp

そもそも、ソフトウェアテストとは

簡単に言うと、ソフトウェアの開発において、出来上がったソフトウェアにバグなどぬ不具合が無いか、意図したものが出来ているかを確認する工程です。

例えば、0から99までの値を2つ受け取って、それらを掛けた値を返すプログラムをテストするとします。
このとき、100×100の10000通りのテストをすれば十分といえるでしょうか。もし、数字以外が入力されたらどうなるのでしょう。
それら全てをテストしようとすると、英数字だけで62種類あり、これに漢字なども入れると数が多すぎてとても現実的ではありません。

したがって、テストを実施する対象を分析した上でテストを設計するなど、戦略的にテストを行うことが重要になります。

コンテストの概要

コンテストは今年からOPENクラスと30才以下に限定されるU-30クラスに別れています。今回はU-30クラスに参加しました。以下の内容は全てU-30クラスについてです。

コンテストは、8人以下のチーム対抗で行われます。
各チーム、与えられたテスト対象について話し合い、締切日までに所定の成果物を提出します。その上で後日プレゼンテーションを行います。審査は、この両方について総合的に行われます。

どんなことをするのか

どのように取り組んだかなどをくわしく書きたかったのですが、まだ成果物の提出が締め切られていないのでざっくりとした説明だけします。

まず、このようなテストの対象となるものの、仕様書などが与えられます。
http://www.sessame.jp/workinggroup/WorkingGroup2/POT_Specification.htmwww.sessame.jp http://aster.or.jp/business/contest/doc/ASTER_U30_tdc_supplement.pdfaster.or.jp

これをもとに、チームでテストの方針について話し合います。ここでは、テストの対象の背景などを踏まえ、どのようなことに重点を置くかなどを決めたりします。
そして、それに基づき、テスト対象を分析していきます。分析の方法はいろいろありますが、自分たちの方針にあったものを選びます。この分析で得られた結果は、最終的な成果物とともに提出するので、整理しながら進めていく必要があります。 次に、分析した結果をもとにテストケース(入力とそれに対応する期待結果)などを考えていきます。
最後に、これらを文書にまとめて最終的な成果物として提出し、会場でプレゼンテーションを行います。

おわりに

この記事を読んで、少しでもソフトウェアテストやうちの研究室、コンテストなどに興味をもっていただければ、嬉しいです。

阪急奴の3分クッキング (dnsmasqを使ったDNSサーバの構築)

この記事はSLP KBIT Advent Calendar 2015の6日目の記事です。

はじめに

ある日、家でサーバをたてて公開したのですが、家の外からはグローバルIPドメイン名で繋がるのに家の中からローカルIPはつながらないという現象が起きました。原因は、ルータのNAT機能にありました。一般的な家庭用のルータだと、外(WAN側)からのアクセスの場合はNAT機能が働くのですが、中(LAN側)からのアクセスの場合はNAT機能が働かないのです。

対処法としてはいくつかあります。

  • LAN内で利用する全ての端末のhostsファイルにIPアドレスとホスト名を記述する
    → サーバが増えるごとに全ての端末のhostsファイルを書き換えないといけない。 → ノートPCに設定してしまうと外から繋がらなくなる
  • プロキシサーバを使う
    → せっかく家にサーバがあるのにスピードが遅くなる
  • LAN内にDNSサーバをたてて、LAN内のサーバの名前解決を行う
    →これが現実的?

しかし、DNSサーバといえばBINDが有名ですが、BIND設定が非常に複雑で面倒臭いのです。家の中のたかだか数台のサーバの名前解決のためとなるとコストが大きすぎます。

ここで便利なのがdnsmasqと呼ばれるものです。このdnsmasqは/etc/hostsを見て名前解決を行ってくれるのです。なので、サーバが増えたりしても安心。

ってことで、dnsmasqを導入してDNSサーバを作っていきましょう。

材料

  • CentOS 7.1 (minimalでインストール) ・・・ 1

作り方

1. まず、yumでdnsmasqをインストールします。
# yum install dnsmasq
2. hostsファイルを編集します。
# vi /etc/hosts

名前解決をしたいサーバのIPアドレス、ホスト名、ホスト名の別名(あれば)の順にスペース区切りで入力していきます。

192.168.0.10 hoge.example.com hoge  
192.168.0.11 piyo.example.com  
192.168.0.12 fuga.example.com fuga  
3. SELinuxとFirewalldを無効にします。

このDNSサーバ自体は外部に公開しないので、SELinuxとFirewalldを無効にしてしまいます。

# vi /etc/selinux/config
SELINUX=enforcing

SELINUX=disabled

に変更します。

  • Firewalldの無効化
# systemctl disable firewalld
4. dnsmasqが自動起動するようにします。
# systemctl enable dnsmasq
5. 設定を有効にするため、OSを再起動します
# reboot
6. ルータにDNSの例外設定をします。

上で登録したドメイン名の場合は、ローカルのDNSに聞くように設定します。

7. 完成

おまけ

すべての名前解決をローカルのDNSサーバにさせたい場合は、以下のようにします。

# vi /etc/resolv.conf

nameserverのあとにプロバイダのDNSなど、外のDNSIPアドレスを入力します。

nameserver 8.8.8.8

また、dnsmasqにはdhcp機能もあります。これを利用するとローカルネットワークに関する設定を一元化できるかもしれません。

まとめ

ね?簡単でしょ?

攻めと守り

この記事はSLP KBIT Advent Calendar 2015の4日目の記事です。

私が今年はじめて出場したセキュリティコンテストの形式について紹介しようと思います。

attack & defense (攻防戦)とは

attack&defenseはCTFの一種です。CTFと聞くと主催者から幾つかの問題が出されて、解答となるflagを見つけると難易度に応じたポイントが貰えるという形式を思い浮かべると思います。これは、CTFの中のjeopardy(クイズ)形式と呼ばれるものです。世界各地で数多く開催されており、また多くはオンラインで開催されるため、気軽に参加することが出来ます。2015/12/05(土)15:00~このjeopardy形式でSECCON CTFのオンライン予選が開催されます。

これに対し、attack&defense形式は、主催者から各チームに同じ脆弱性を含んだシステムが配られます。参加者は、自分のチームのシステムの脆弱性を修正するなどして守りつつ、その脆弱性を利用して他のチームのシステムを攻撃し、システムを停止させたりその中にある情報を抜き出したりする形式です。

他のチームのシステムを攻撃し内部の情報を抜き出すことで攻撃点が、主催者によって定期的に行われるシステムチェックにクリアすることによって防御点が得られます。逆に、他のチームから攻撃を受けると、減点されてしまいます。

システムの脆弱性を見つけた参加者は、他のチームに対して攻撃をするとともに自分のシステムを修正する必要があり、チームでいかに役割分担ができるかが問われます。

この形式は、実際に攻撃を行うので閉じたネットワークでしか開催できないため、これまでは大きなセキュリティコンテストの決勝大会などでしか開催されていませんでした。しかし、今年はSECCONforビギナーズ 2015 博多、奈良、そしてSECCON 2015 九州大会でattack&defense形式によるCTF大会が開催されました。私はこの内CTF for ビギナーズ 2015 奈良に参加してきました。

感想

この形式の最大の特徴は実際にシステムを攻撃して情報を抜き出したり、逆に攻撃を受けたりといった流れが体験できることです。実際にシステムから情報が抜けたときは達成感がありますし、逆に攻撃を受けて慌てるのもスリルがあり非常に楽しかったです。例えば、実際に企業のシステムが攻撃を受けると一定の損害を受けます。ここでは減点という形でスコアに現れます。 また、攻撃を受けた際、脆弱性のあるシステムを一旦停止させるという判断もありますが、実際の企業でそれをやるとその時間の長さに応じて損害が生じます。これもディフェンスポイントが入らなくなるという形で再現されています。これにより、企業で実際にシステムを運用している際に迫られる判断なども体験できました。

さいごに

このような貴重な経験をさせて頂いたSECCON実行委員会の皆様には感謝しております。

来年も開催されるかわかりませんが、開催された場合は皆さんもぜひ参加してみましょう。

KeePassについて

はじめに

この記事はSLP KBIT Advent Calendar 2014の22日目の記事になります。

 

せっかくなのでこれまでに誰かがにSLP KBIT Advent Calendar 2014で書いたことに絡めて書きたいと思います。 

SLP KBIT Advent Calendar 20145日目の記事にあったパスワード管理ツールの1つである、『KeePass』を紹介します。

 

KeePassとは

KeePassとはオープンソースのパスワード管理ソフトです。

パスワード管理ツールの中には有料のものが多いですが、これは無料で使うことが出来ます。また、他のパスワード管理ツールだと提供元のサーバに保存するものもありますが、KeePassは任意の場所に保存できるので、自分がいちばん信頼出来る場所に保存することが出来ます。Dropboxなどのクラウドストレージを用いることで、複数のデバイスで利用することも出来ます。

使ってみよう

やり方はおそらくググったほうがわかりやすいと思うので、ここでは簡単に書きます。

特に環境がWindowsじゃない人は読むだけ無駄だと思うのでググってください。

ダウンロード

公式サイトからソフトをダウンロードします。

1.xxと2.xxがありますが、並行して開発が行われているようです。

保存されるファイルの形式などの違いがありますが、よくわからなければ2.xxでいいと思います。

インストール

 最初に言語を聞かれますが、残念ながらその選択肢に日本語はありません。選択肢の中から読めそうな言語を選んで頑張ってください。

日本語化

インストールで発狂した人、あるいは発狂しそうになった人は日本語パッチを入れましょう。

ここからインストールしたバージョンに合うものを落としてきて展開します。

KeePassをインストールしたフォルダ(2.xxを落とした人はデフォルトだとC:\Program Files (x86)\KeePass Password Safe 2)に展開した中身を置きます。

KeePassを起動し、View→Chenge Language(インストール時に英語を選択した場合)を選び、日本語を選択してください。

 

ここから先は日本語環境を前提に書きます。

データベースの作成

パスワードを記憶するデータベースを作成します。

ファイル→新規をクリックします。

任意の場所に任意の名前でデータベースファイルを保存します。ここで、Dropboxなどのクラウドストレージに保存すると、複数のデバイスで利用することが出来ます。

スターパスワードの設定

上で保存したデータベースを開くためのパスワードを設定します。

このパスワードがバレると中に登録しているパスワードを見ることが出来てしまい、意味がないので出来る限り強固なパスワードを付けてください。

しかし、このマスターパスワードを忘れると2度とデータベースにアクセスできなくなるので注意してください。(秘密の質問のような救済処置は一切ありません)

パスワードの保存

記憶させたいパスワードを登録します。

編集→エントリーの追加 をクリックします。

登録したいタイトルやユーザー名、パスワードを入れます。

ここで、パスワードを生成することも出来ます。また、生成するパスワードの条件を変えることが出来ます。

登録したパスワードを用いてログイン

ログインしたいアカウントを、一覧の中から選択し、右クリック→パスワードをコピー でパスワードをクリップボードにコピーすることが出来ます。あとは、そのパスワードを貼り付けてログインするだけです。

 

 

導入と使い方は以上です。ね?簡単でしょ?

 

 

ブラウザとの連携

上で書いたようにいちいちコピペしてログインしてもいいですが、少し面倒です。

ブラウザの拡張をいれて連携させることでさせることで、ユーザ名とパスワードを自動的に入力することが出来ます。GoogleChromeだと”ChromeIPass”、FireFoxだと”KeeFox”があります。やり方は各自ググってください。

携帯端末での利用

KeePassは”KeePassDroid”というアプリでAndroidでも利用することが出来ます。

ただし、データベースの読み書きがローカルストレージからしか出来ないので、Dropboxで連携する場合は”DropSync”というアプリでクラウドとローカルの同期をする必要があります。

参考文献

多数のパスワードを安全に管理できるツール「KeePass Password Safe」 | SourceForge.JP Magazine

KeePassの便利な使い方 | Synclogue Blog

【特集まとめ】各種サイト等のパスワードを母艦/Androidで共通管理するKeePass徹底活用テク | あんどろいどスマート

 

仮想マシンとネットワーク

 ※この記事はSLP Advent Calendar 2013(http://www.adventar.org/calendars/215)の24日目の記事です。

 

仮想化のススメ

とりあえず、SLPの忘年会でLTやるかもって聞いて作ってみたスライドを、未完成ですが貼っておきます。

 

 

 12枚目のスライドで出てくる、仮想化ソフトというのは、有名なもので言えばVirtualBoxとか、VMwarePlayerとかです。ちなみにこの2つは無料です。また、一般にハードウェアの上に直接のっているOSを”ホストOS”、仮想化ソフトの上にのっているOSを”ゲストOS”と呼びます。

 

 

 

 

 

 

 

 

前置きが長くなってしまいましたが、今回は仮想化ソフトのネットワークの設定で出てくるNATとブリッジについて簡単に書きます。

 NAT

 これは、ホストOSとIPアドレスを共有するやり方です。ゲストOSはネットワークに接続できますが、外部からは仮想マシンは基本的に見えません。VMwarePlayerやVirtualBoxなどの初期設定ではこのNATになっています。

ブリッジ

これはホストOSとゲストOSで別々のIPアドレスが割り当てられます。外部から仮想マシンが見えるので、仮想マシンでサーバーをたてることができます。

 

 

 

 

なんか短い上にまとまりのない雑な記事になってしまいましたが、これで終わりにします。