仮想環境を実現する代表的なソフトウェアの1つであるOracle VM VirtualBoxを用いて,サーバとして利用できる仮想コンピュータを構築する.
本実験では,Ubuntu Server 16.04 LTSをゲストOSとしてインストールし,Webサーバの機能を持つサーバを構築する.
実験は,自宅のPCで行う.(本ページは,ホストOSをWindowsと仮定して説明するが,Macintosh,Linux等でもかまわない.適宜,読み替えて実験を進めること.)
仮想化ソフトであるOracle VM VirtualBoxの操作やLinuxのコマンドなどでわからない事は,Oracle社のHPにあるマニュアルを探して調べたり,インターネットで検索しながら実験を進めること.
3GB以上の空き容量のあるUSBメモリ
(実験で作成した仮想環境のデータのバックアップを取りたい場合には準備すること)
| 1. 仮想コンピュータの作成 | 仮想マシンの格納場所の設定 |
| ゲストOSの設定 | |
| ディスク容量の指定と仮想ディスクのファイル設定 | |
| ハードウェア(CD)のカスタマイズ | |
| 2. Linuxのインストール | ネットワークの設定 |
| パーティションの設定 | |
| ユーザ設定 | |
| 3. ソフトウェアのインストール | aptを用いた開発環境等(gcc他)のインストール |
| apacheソースコードの取得 | |
| apacheのコンパイルおよび起動 | |
| nmapによるポートスキャン | |
| ufwによるファイアウォールの設定 |
[実験1] 仮想コンピュータを作成しなさい.
作成した仮想コンピュータをバックアップする場合には,C:\VMフォルダをUSB等に保存する. PCを再起動した後に再度作成した仮想コンピュータを起動する場合には,Cドライブにコピーした後,VirtualBoxマネージャの メニュー「仮想マシン」-「追加」でフォルダを指定する.
| 注意1: 「名前とオペレーティングシステム」 | |
| 「名前」に「UbuntuServer」と入力する. タイプは「Linux」,バージョンは「Ubuntu(64-bit)」が選択されていることを確認すること. その他の設定はデフォルトのままでかまわない. | |
| 注意2:「インストール用メディア」 | |
| 以下よりインストーラをダウンロードし,PC内に保存しておく. http://old-releases.ubuntu.com/releases/16.04.2/ubuntu-16.04.2-server-amd64.iso 「設定」アイコンをクリックする. 左側のメニューから「ストレージ」を選択する. ストレージツリーの中から空のCDアイコンをクリックする. 光学ドライブのCDアイコンをクリックして,「仮想光学ディスクファイルを選択」をクリックする. 「仮想光学ディスクファイル」として,保存したISOファイルを選択すること. | |
上記の注意事項を守らなかった場合,仮想コンピュータは作成されるものの, この後の実験を進めることができないため,やり直しとなる.
Oracle VM VirtualBoxのウィンドウの左上に"UbuntuServer"が表示されたら実験1は終了である.

[課題1] 仮想コンピュータを作成する際に,ウィザードに指示を求められる.その際,
- 指示を求められた内容とどのように項目を設定したか - 画面のキャプチャ([Alt]キーを押しながら[Print Screen]キー)または,撮影した映像
をレポートに記せ.
[実験2] 実験1で作成した仮想コンピュータに,ゲストOSとしてLinux(Ubuntu)をインストールしなさい.
「起動」をクリックするとインストーラが起動する.
ただし,必ず,以下の8点の注意に従うこと.
また,下記の[課題2]に目を通し,適宜記録を行いながら実験を進めること.
| 注意1: 「ネットワークの設定」 | |
| ホスト名は,「expIII-A4」と設定する. | |
| 注意2: 「ユーザとパスワードのセットアップ」 | |
| 新しいユーザの本名として,「exp3」を入力すること. ユーザ名は「exp3」,パスワード(8文字以上推奨)は,自由に設定してよい.(ログインに使用するので覚えておくこと.) ホームディレクトリの暗号化については,「いいえ」であることを確認すること. | |
| 注意3: 「時間の設定」 | |
| Time zoneは,「Asia/Tokyo」であることを確認すること. | |
| 注意4: 「ディスクのパーティショニング」 | |
| パーティショニングの方法は,上から2番目の「ガイド - ディスク全体を使いLVMをセットアップする」が選択されていることを確認すること. 「ガイドによるパーティショニングを利用するボリューム」は変更する必要はない. | |
| 注意5: 「パッケージマネージャの設定」 | |
| 「HTTPプロキシ」は使用しない. | |
| 注意6: 「taskselを設定しています」 | |
| システムのアップグレードは「自動的にアップデートしない」を選択する. | |
| 注意7: 「ソフトウェアの選択」 | |
| インストールするソフトウェアの選択では「standard system utilities」を選択する. | |
| 注意8: 「ハードディスクへのGRUBブートローダのインストール」 | |
| マスターブートレコードにGRUBブートローダをインストールすること. | |
上記の注意事項を守らなかった場合,Linuxは正常にインストールされるものの, この後の実験を進めることができなくなるためやり直しとなる.
再起動を行うよう指示を受けた時点で,実験2は終了である.
[課題2] インストールを行う間,何度かインストーラに指示を求められる.その際,
- 指示を求められた内容とどのように項目を設定したか - 画面のキャプチャ([Alt]キーを押しながら[Print Screen]キーを押す)または,撮影した映像
をレポートに記せ.
ログイン画面が表示されたら,login: プロンプトの後ろにユーザ名「exp3」を入力し,先ほど設定したパスワードを入力する.
コンソールが日本語フォントを表示できず文字化けするため,以下のコマンドを入力し,日本語表示をデフォルトの英語で表示させる.
$ LANG=C bash
[実験3.1] 管理者としてコマンドを実行するsudoコマンドを使用して,8つのパッケージ(build-essential, make, wget, libpcre3, libpcre3-dev libexpat1-dev nmap w3m)をaptコマンドでインストールしなさい.
$ sudo apt install build-essential make wget libpcre3 libpcre3-dev libexpat1-dev nmap w3m
[課題3.1] ホストOSであるWindowsのIPアドレスを調べ,仮想コンピュータにインストールしたゲストOSであるLinuxが,ホストOSとネットワーク接続できるかをpingを使用して確認しなさい.
また,テキストベースのWebブラウザである w3m を使用して,http://www.eng.kagoshima-u.ac.jp/english/ にアクセスできることを確認しなさい.
$ w3m http://www.eng.kagoshima-u.ac.jp/english/ 「q」または「Q」でw3mを終了する.
最後に,「nmap localhost」でゲストOSのポートをスキャンし,その状態を確認しなさい.
[課題3.2] /tmpディレクトリに移動し,Webサーバソフトapacheを,ソースコードからインストールしなさい.
1. apache2.4ではAPR(Apache Portable Runtime)のインストールが必要である.wgetコマンドで,apr, apr-util のソースコードをミラーサイトからダウンロードする.
$ wget http://ftp.jaist.ac.jp/pub/apache/apr/apr-1.6.5.tar.bz2 $ wget http://ftp.jaist.ac.jp/pub/apache/apr/apr-util-1.6.1.tar.bz2
2. 同様に,apache のソースコードもダウンロードする.
$ wget http://ftp.jaist.ac.jp/pub/apache/httpd/httpd-2.4.43.tar.bz2
3. ls コマンドで,3つのファイルがダウンロードされていることを確認する.
4. 取得したファイルが正規のものであることを確認する.
ダウンロードファイルの配布元 http://www.apache.org/ から, sha256ファイルをダウンロードし,ファイルが改竄されていないかをコマンド ”cat 検査対象ファイル名 | openssl sha256” で表示されるものと,ダウンロードした”検査対象ファイル名.sha256” のファイル内の文字列が一致するかで確認する.
$ wget http://www.apache.org/dist/httpd/httpd-2.4.43.tar.bz2.sha256 $ cat httpd-2.4.43.tar.bz2 | openssl sha256 $ cat httpd-2.4.43.tar.bz2.sha256
5. 同様に,apr と apr-util についても改竄されていないかを確認する.
URL: http://www.apache.org/dist/apr/apr-1.6.5.tar.bz2.sha256 URL: http://www.apache.org/dist/apr/apr-util-1.6.1.tar.bz2.sha256
6. tarコマンドで,圧縮されたファイルhttpd-2.4.43.tar.bz2を展開する.
$ tar jxvf httpd-2.4.43.tar.bz2
7. 同様に,apr-1.6.5.tar.bz2, apr-util-1.6.1.tar.bz2も展開する.
8. lsコマンドで,apr-1.6.5 と apr-util-1.6.1の2つのフォルダが存在することを確認した後,フォルダ名をそれぞれ apr と apr-util に変更して httpd-2.4.43/srclib/に保存する.
$ mv apr-1.6.5 httpd-2.4.43/srclib/apr $ mv apr-util-1.6.1 httpd-2.4.43/srclib/apr-util
9. cdコマンドで,httpd-2.4.43 へ移動する.
10. configureコマンドを実行し,Makefileの作成を行う.
configureコマンドは,APRを有効にするため --with-included-apr オプションを付与する.
11. makeコマンドを実行し,apache(httpd)のコンパイルを行う.
12. sudoコマンドを使用し管理者権限で make installコマンドを実行し,apacheをインストールする.
13. エディタ(vi)を用いて,設定ファイル(/usr/local/apache2/conf/httpd.conf)を管理者権限で編集する.設定すべき箇所は下記の通り.
[httpd.confの設定変更箇所の例]
LoadModule userdir_module modules/mod_userdir.so の先頭の#を削除 ServerAdmin sc******@ibe.kagoshima-u.ac.jp(実験者のメールアドレス) ServerName sv-**.ibe.kagoshima-u.ac.jp Include conf/extra/httpd-userdir.conf の先頭の#を削除
14. apacheをサービスとして起動する.一般的にはserviceコマンドを用いるが,本実験ではソースコードからインストールを行ったため,apachectlコマンドを用いる.
$ sudo /usr/local/apache2/bin/apachectl start
15. w3m で localhost にアクセスして, apacheが起動していることを確認する.
[実験3.2] ポートフォワーディングの設定して,ホストOSからゲストOS上で稼働するWebサーバにアクセスできるように設定する.
1. 仮想コンピュータのネットワーク設定にあるポートフォワーディングを設定する.
[実験3.3] ファイアウォール(ufw)を有効にして,外部からのすべてのネットワーク接続を遮断する.
1. /etc/default/ufw で,IPV6によるすべての通信を遮断する設定を行う.
$ sudo vi /etc/default/ufw IPV6=yes を IPV6=no に修正する.
2. ファイアウォールの状態を確認する.
$ sudo ufw status
3. ファイアウォールのサービスを開始する.
$ sudo ufw enable
4. すべての通信を遮断する設定を行う.
$ sudo ufw default DENY
5. ホストOSであるWindowsから,課題3.2で設定したWebサーバにアクセスできるかどうかを確認する.(アクセスできないことを確認する.)
[課題3.3] ファイアウォール(ufw)の設定を行い,サーバへのhttp通信を許可しなさい.アクセスの許可は,「allow」コマンドを使用する.http通信はTCP 80番ポートが使われるため,外部からサーバのTCP 80番への通信を許可すればよい.
上記の設定は,コマンド「sudo ufw reload」を打つことで,設定内容を反映できる.
[課題3.4] 仮想コンピュータのネットワーク接続形態にはどのようなものがあるか,また,それぞれの接続形態の特長を調べてレポートに書きなさい.