読者です 読者をやめる 読者になる 読者になる

生産性のない話

趣味の範囲でサイバーセキュリティの話

UEFI + GPT 環境でのデュアルブート(Windows 10 & Ubuntu16.04)

ここしばらく、Linuxをメインで使えるマシンがほしいなと思いながらいたのですが、ようやくデュアルブートに成功したので、その時のメモです。

 

ポイントとしては、

①インストールメディアをUEFIで起動する

ブートローダをインストールする位置

の2点です。

 

ここを参考にしました。↓

kowaimononantenai.blogspot.jp

 

・ 手順

  1. リカバリ
  2. パーティションの切り分け
  3. Windows 10 へアップグレード
  4. Ubuntu のインストールメディアの作成
  5. Ubuntu の起動
  6. Ubuntu のインストール

以上です。

 

かいつまんで、ポイントだけ。

1. 一度デュアルブートに失敗し、WindowsもUbunutu も起動しなくなったためにこれをする必要がありました。買ってすぐのPCでも、リカバリ用」のディスクなどはちゃんと用意しておきましょう。ちなみに私のPCは工場出荷状態ではWindows 7です。

 

2. パーティションは先にUbuntu をインストールする分を空けておく。Windowsでディスクの縮小をして、ハードディスクに空きの容量を確保しておきます。

 

3. 一度アップグレードしていたので、リカバリしても再度アップグレードができます。Windows 10のアップグレードですが、やるならUbuntu をインストールする前のほうが確実かと思います。Windows 10 はアップデートの際にリカバリ用のパーティションを作るそうで、それが原因でUbuntu が起動しなくなるというトラブルが起こり得るようです。回避方法や復旧方法もあるでしょうが、先にアップグレードはしておいたほうが無難かと思います。

 

4. ISOファイル( Ubuntuの入手 | Ubuntu Japanese Team )をダウンロードして、DVDなら適当なソフトで焼く。あるいはUSBにインストール。私は UNetbootin を使ってその辺に転がってた2GのUSBメモリにインストールしました。Ubuntuなら2Gでもぎりぎり入ります。

 

5. まず、Windows 10の「高速スタートアップ」を無効にしましょう。これをしないと、BIOSやブートデバイスの切り替えができません。

コントロールパネル

⇒ 電源オプション

⇒「電源ボタンの動作を選択する」

⇒「現在利用可能ではない設定を変更します」

⇒「高速スタートアップを有効にする」のチェックボックスを外す

⇒ 変更の保存

再起動して、ブート時に何かしらのキーを押してブートデバイスを選択します。

ここで、最初のポイントです。UEFI環境で外部デバイスからOSを起動しようとすると、起動するデバイスの選択肢が2つ現れます。

私の場合「UEFI : USB Reader」と「USB Reader」のような感じでした。ここでUEFIではないほうを選んでしまうと、場合によっては WindowsUbuntu も起動しなくなります。UEFIからメディアを起動すると、Ubunut の場合、黒いGRUBのブートメニューが表示されます。

UbuntuTips/Install/UEFI - Ubuntu Japanese Wiki

Liveイメージで起動時にCUI画面で白文字のgrubメニューが現れる。(UEFIモードで起動している)
Liveイメージで起動時に紫のスプラッシュ画面で起動し、GUIインストーラーが立ち上がる。(Legacyモードで起動している)

ちゃんとUEFIで起動していることを確認しましょう。

 

6. 最後にUbuntu のインストールです。普通にOSをインストールする手順通りです。「インストールの種類」で「それ以外」を選択し、パーティションをカスタマイズします。と言っても、2で開けておいたスペースにインストールするだけです。私は適宜「/」、「/boot」「/home」などにお好みで振り分けてください。

ここで重要なポイントはブートローダの位置です。デフォルトではディスクの先頭(「/dev/sda」など)が選択されていますが、これを、EFIタイプのパーティションの位置に変更します。(私の場合「/dev/sda1」。)

あらかじめ、GPartedでパーティションを確認すると「EFI System Partition」とラベルがついていました。あまり詳しくは知りません。

PCハードウェア強化ラボ:第4回 2Tbytes超ディスクをシステム用ディスクとして利用する (3/3) - @IT

先頭に「EFI システム パーティション」という100Mbytesのパーティションがあるが、これはGPT形式のディスクにおいて、ブート・コードを保存しておく場所である。

だ、そうです。

 

多くのデュアルブートの説明では「/boot」のパーティションに一緒にブートローダをインストールし、起動後MBRからそのパーティションを呼び出し、ブートメニューを開くような設定になっているようなのですが、GPTではそれができないため、今回の方法を取ることになりました。

 

私の環境では以上でデュアルブート環境が出来上がりました。

起動するとGRUBが立ち上がり、UbuntuWindows 10 が選択できるようになっています。(今のところ両OS問題なく動いています)

場合によっては参考に挙げたサイトで行っているような Boot Repair を使った修復作業などが必要になることもあるようです。

 

以上、個人的に一つ、悲願を達成できたので、メモとして残しました。デュアルブートは私のような「UEFI? GPT? 何それ、おいしいの?」というレベルの人は行わないほうがいいかと思います。

今は仮想化などの技術も進んでますし、「Windows Subsystem for Linux」なども出てきましたしね。まあ、一昔前の壊れてもいいやPCでハードディスク容量も余ってたので。

 

以上です。

「情報セキュリティスペシャリスト」受けてきました

情報セキュリティスペシャリストを受験してきました。

来年から情報処理安全確保支援士とかいう資格に置き換わるため、情報セキュリティスペシャリストは今年で最後です。

置き換わるので、同じ形の試験が設置されるかと思います。で、登録料を払うと支援士名簿とかいうのに名前を載せられる、と。よくわかってませんが。

ともあれ、私は会社の方針として資格受験をしてきました。

勉強はだいぶしてません。

春に応用情報を取得したので、午前Ⅰは免除、午前Ⅱは 情報セキュリティスペシャリストドットコム で過去問をある程度解いて、午後の問題は参考書を軽く読んだくらいです。

ちなみに参考書はこれです↓

 試験の際の実用的なスキルを書いていてくれるので、結構参考になるのではないかと思います。

私はこれの後半の午後問題を半分ほど読んだだけですが……。

この手の資格は範囲が広いので、全部網羅的にやるより、こういう小手先のテクニックを身に着けたほうが早いです。足りない知識は午前の過去問をひたすらやって、知らなかったところを知っとけば十分じゃないかと思います。

 

で、偉そうなこと言っといて、自分も受かっている保障はないですが。

まあ、セキュリティについては仕事でもある程度扱っているので、大丈夫じゃないでしょうか。

多分。おそらく。

 

 

以下、愚痴です。

 

情報処理技術者試験のタイムスケジュールってちょっと不親切だな、と。

なにかって、昼飯の時間が40分ほどしかないんです。

タイムスケジュール上は1時間なんですが、説明のために試験開始20分前に着席しろと言われる。

過去にIPAなどの試験を受けたときは、ちょっと周りにコンビニしかない大学だったので、昼はそこでパンを買って食べたのですが、今回の会場は池袋でした。周りに飯を食える店はたくさんあるので、選び放題です。

近くのモスバーガーに入りました。

ちょっと並んでました。

でも、モスバーガーならすぐだろうと思いました。

注文しました。

20分ほど待ちました。

店員に聞いたら、まだ時間がかかると。

もうすぐ時間が来るので、注文をキャンセルし、試験会場に戻りました。

昼飯抜きで午後の試験を受けました。

 

いや、出すのが遅いモスバーガーが悪いとか、並んでるのにその店を選んだ私が悪いとか、いろいろあるとは思います。

ただ、馬鹿正直に20分前に戻って来ると、試験監督が試験の説明をするわけですよ。

午前に聞いたのと同じ説明を。

 

これ意味あるのかな、と。

私は午前Ⅱ、午後Ⅰ、午後Ⅱの直前に、3度同じ説明を聞きました。午前Ⅰから受けている人は4回ですね。そのために、20分前に会場に着席しろって、なんなんだろうと。

まあ、遅刻は30分まで許容されてますし、説明聞かずに直前に入室しても、さほど気にはされないとは思うんですが。

 

あ、あと、午前Ⅱから受ける人って、午前Ⅰが終わって答案を回収してから入室可能になるんです。

10:20に試験が終わって、答案回収して10:25くらいですかね。

で、10:50から次の試験が始まるので、10:30から試験の準備が始まるんです。

入室の隙が10:25~10:30の5分しかない。

 

まあ、何かっていうと、もうちょっと説明なんかもっと省いて、休憩時間に余裕を持たせてほしいってことです。

 

以上、昼飯を食えなかった愚痴でした。

cowrieでssh・telnetのハニーポット運用

ハニーポット

ハニーポッター 第一弾

とりあえずSSHハニーポットのcowrieを立ててみました。

↓こいつです。

github.com

cowrieはコヤスガイという意味だそうです。Google先生が言ってました。

 

環境としては、Windows10のノートPCにVirualboxでCentOS 7をインストールし、その上のDocker上のCentOS 6でcowrieを動かしています。

低対話型のハニーポットを動かすのに、わざわざそこまで多重化する意味ないのでは、と思われるかもしれませんが、全くその通りです。

まあ、Dockerの操作の練習も兼ねてます。

 

インストールはそれほど難しくはありません。ググれば割と情報はあります。

↓この辺とか。

ハニーポットCowrieをCentOS7に入れてみた。 - Shioshishio

cowrieのセットアップメモ - 雑記帳

とりあえず、requrimentsをすべてインストールして、実行するだけのお手軽設計です。

少し詰まったのは、Docker上で動かしたContOSのイメージに入っていたのが、Python2.6だったことで、cowrieはPython2.7じゃないと動かないようです。まあ、何かしらの方法でアップデートすればいいんです。

 

最近telnetもサポートしたそうなので、せっかくですので、動かしてみます。設定ファイルをいじります。

 

# ============================================================================
# Telnet Specific Options
# ============================================================================
[telnet] # Enable Telnet support, disabled by default
enabled = true # IP addresses to listen for incoming Telnet connections.
#
# (default: 0.0.0.0) = any IPv4 address
#listen_addr = 0.0.0.0
# (use :: for listen to all IPv6 and IPv4 addresses)
#listen_addr = ::
# Port to listen for incoming Telnet connections.
#
# (default: 2223)
listen_port = 2223 # Source Port to report in logs (useful if you use iptables to forward ports to Cowrie)
reported_port = 23

 

これで起動すればsshはポート2222番、telnetはポート2223番で動いてくれます。

これをDockerのポートフォワードでそれぞれ22番、23番につなぎなおしました。

 

以上で、cowrieの起動は完了です。

この後、外からsshはつながるがtelnetがつながらないという事象が発生。なんだかんだ設定をごちゃごちゃいじってたら今はうまく動いてくれています(多分)。

確認した点としては、

  • CentOS 7のfirewalld(デフォルトではsshは通すようになっている)
  • WindowsのFirewall
  • Windowsのほかプログラムが邪魔していないか

あたりですかね。結局何が問題だったかいまいちわかっていません。とりあえず、Windows 10はよくわからないものがいっぱい動いているので、サーバとか立てないほうがいいってことはよくわかりました。

 

とりあえずこれで動いてくれています。

2,3日動かしてみて、割と攻撃は来ています。ボット化するスクリプトを落として来たりとかですね。

ログがjsonで出てくるので、うまくパースして解析したいんですが、面倒くさい頑張ります。

 

面白い攻撃が来たら、(気が向いたら)ここにでも書きます。

 

追記・2016/0927

うまく動いてくれてると思っていたのですが、telnetの動作が怪しいです。ログを見ると、セッションを張ったログはあるのですが、その後の挙動がない……。

cowrieのtelnetはあまり情報がないので、どうすればいいか、ちょっとわからないです。

とりあえず試行錯誤してみます。sshは問題なさそうです。