BETA

動かして学ぶ脆弱性(Chapter0: 環境構築編2)

投稿日:2020-02-14
最終更新:2020-02-20

※ IPアドレスが間違っていたため、修正しました。

注意事項

  • ここで得た知見は、自分が管理しているネットワーク内もしくは明示的に許可を得たネットワーク内でのみで利用してください。
    • 許可されたネットワーク外で利用した場合、不正アクセスなどとして検挙される可能性があります。

  • ※ この物語はすべてフィクションです。実際の企業・団体などは一切関係ございません。

前回までのあらすじ

  • VirtualBoxを導入しました。

Chapter0-4 Ubuntu Server導入(VirtualBoxに仮想マシン作成)

瀬季南:やぁ、未来の診断員たち。前回の記事ぶりだね。
今回はハンズオン環境のうち、やられアプリを動かすUbuntu Serverを準備していくよ。

瀬季南:まずはこのサイトにアクセスしよう。

Download Ubuntu Server | Download | Ubuntu

瀬季南:「Download Ubuntu Server」のすぐ下にある「Ubuntu Server 18.04.3 LTS」の項目の右側にある、「Download Ubuntu Server」ボタンを押そう。

瀬季南:この画面が表示されて少し待つと、Ubuntu Serverのisoファイルのダウンロードが開始されるよ。
もししばらく待っても開始されなければ、「download now」をクリックして手動でダウンロードしよう。
ダウンロードしている間に、「verify your download」をクリックしよう。

瀬季南:この画面のように、SHA256のチェックサム(ハッシュ値)の比較用コマンド情報が表示されるよ。
SHA256のハッシュ値比較を忘れていた君は、前回の記事を復習しておくことだぞ。

瀬季南:ダウンロードが完了したら、先程のコマンドを使って、ファイルのチェックサムを確認するよ。

echo "b9beac143e36226aa8a0b03fc1cbb5921cff80123866e718aaeba4edb81cfa63 *ubuntu-18.04.3-live-server-amd64.iso" | shasum -a 256 --check  

瀬季南:このコマンドを実行する際は、ダウンロードしたUbuntu Serverのisoファイルがあるディレクトリに移動してから行うようにね。
ubuntu-18.04.3-live-server-amd64.iso: OK」と表示されれば完了だよ。

瀬季南:次に、前回インストールしたVitrualBoxを開くよ。

瀬季南:右側の「新規」ボタンをクリックして、「名前とオペレーティグシステム」画面を表示させるよ。
ここの「名前」欄は、作成する仮想マシンの名前が入るよ。
今回は例として「Ubuntu18Server」としておくよ。
「マシンフォルダー」欄は、特に編集せず、そのままにしておくよ。
「タイプ」と「バージョン」欄は、「名前」欄を例の名前で記入していれば、自動的に「Linux」と「Ubuntu (64-bit)」に設定されているはずだよ。
設定されていなければ、自分で選択しておこう。
4つの項目を記入し終えたら、「続き」ボタンをクリックするよ。

瀬季南:次の画面は、「メモリーサイズ」だよ。
ここでは、仮想マシンに割り当てるメモリの容量を設定するよ。
今回はサーバマシンなので、デフォルトの「1024MB」にしておくよ。
メモリーサイズの設定が完了したら、「続き」ボタンをクリックするよ。

瀬季南:次の画面は、「ハードディスク」だよ。
ここでは、仮想マシンに割り当てるハードディスク容量を設定するよ。
今回は事前に仮想ハードディスクなどを作成していないので、このタイミングで作成するよ。
「仮想ハードディスクを作成する」にラジオボタンが設定されているのを確認したら、「作成」ボタンをクリックするよ。

瀬季南:次の画面は、「ハードディスクのファイルタイプ」だよ。
ここでは、仮想マシンに割り当てるハードディスクのファイルタイプを設定するよ。
といっても、FAT32とかexFAT、NTFSなどのファイルシステムの話ではなく、仮想マシン用ハードディスクのファイルタイプの設定だよ。
ここもデフォルトのままで基本的に問題ないから、「VDI (VirtualBox Disk Image)」にラジオボタンが設定されているのを確認したら、「続き」ボタンをクリックするよ。

瀬季南:次の画面は、「物理ハードディスクにあるストレージ」だよ。
ここでは、仮想マシンが使用するハードディスクの容量分を、物理ハードディスク上でどのように扱うかを設定するよ。
設定には2種類あって、「可変サイズ」と「固定サイズ」があるよ。
「可変サイズ」は、この後設定する最大容量を上限として、仮想マシンが使用した分だけ物理ハードディスクのストレージ容量を使用するようにするよ。
仮に最大サイズを32GBにしても、10GBしか使わなければ、物理ハードディスクのストレージ容量は10GBしか使用されないことになるね。
一方の「固定サイズ」は、この後設定する最大容量分だけ先に物理ハードディスクのストレージ容量を割り当てて設定するよ。
まるっと割り当てる分、「可変サイズ」と違って常に最大容量分が使用できるよ。
ここでは、そこまで大容量のファイルやり取りは発生しないので、「可変サイズ」で設定するよ。
「可変サイズ」にラジオボタンが設定されているのを確認したら、「続き」ボタンをクリックするよ。

瀬季南:次の画面は、「ファイルの場所とサイズ」だよ。
ここでは、仮想ハードディスクが物理ハードディスク上のどのディレクトリにあるのかを設定するよ。
それと同時に、仮想ハードディスクの最大容量も設定するよ。
ディレクトリに関しては、デフォルトのままで基本的に問題ないので、そのままにしておくよ。
仮想ハードディスクのサイズは、「32.00GB」に設定するよ。
設定が完了したら、「作成」ボタンをクリックするよ。

瀬季南:設定が正しく反映されれば、「名前とオペレーティグシステム」画面で設定した名前の仮想マシンが生成されるよ。

Chapter0-5 Ubuntu Server導入(Ubuntu Serverインストール)

瀬季南:先程作った仮想マシンを選択した状態で、右側の「設定」ボタンをクリックするよ。
設定画面が表示されたら、「ストレージ」タブをクリックするよ。

瀬季南:この画面では、仮想マシンのディスクや仮想ハードディスクの設定が行えるよ。
今回は、ここで先ほどダウンロードしたUbuntu Serverのisoファイルを、この仮想マシンに認識させるよ。
「コントローラー:IDE」項目のディスクのアイコンをクリックするよ。
すると、画面右側に「属性」と「情報」の項目が表示されるから、「属性」の「光学ドライブ」項目に注目するよ。
ここでまた、ディスクのアイコンをクリックして、「Choose a disk file...」をクリックするよ。
ファイルディレクトリが表示されるので、先ほどダウンロードしたUbuntu Serverのisoファイルを選択して、「開く」ボタンをクリックするよ。

瀬季南:上の画像のように、Ubuntu Serverのisoファイルが読み込まれていればオーケーだよ。

瀬季南:そうしたら、1度「一般」タブに移動して、「高度」タブをクリックするよ。
3つの設定項目のうち、真ん中の「クリップボードの共有」のセレクトボックスをクリックして、「双方向」を選択するよ。

瀬季南:更に「ネットワーク」タブに移動して、「アダプター2」タブをクリックするよ。
「ネットワークアダプターを有効化する」にチェックを入れて、「割り当て」のセレクトボックスをクリックして、「内部ネットワーク」に設定するよ。
「内部ネットワーク」は仮想マシン間で通信可能で、仮想マシンとホストマシン間の通信は不可能なネットワークになるよ。
「内部ネットワーク」を選択すると、「名前」欄に「intnet」が自動入力されるよ。
今回はこのデフォルトの名前をそのまま利用するので、ここは特に修正しないよ。
設定を確認したら、「OK」ボタンをクリックして、設定を終了するよ。

瀬季南:設定が完了したら、いよいよUbuntu Serverを動かしていくよ。
VirtualBoxの画面左側の仮想マシン名をダブルクリックして、Ubuntu Serverを起動するよ。
Ubuntu Serverが起動した際に画面が小さいと感じたら、「Command + C」を押して、Scaleモードに変更しておくよ。

瀬季南:起動してしばらくしたら、「Please choose your preferred language.」というメッセージが表示されるよ。
ここでは、使用する言語を設定するよ。
今回はサーバ環境で、基本的にCLI(Command Line Interface)で使用するので、「English」で進めていくよ。

瀬季南:次の画面は、「Keyboard configuration」だよ。
ここでは、Ubuntu Serverで使用するキーボード設定を行うよ。
前の画面で言語を「English」にしているため、デフォルトではUSキーボードのレイアウトが設定されているよ。
USキーボードを使用している人は、このままでオーケーだ。
USキーボード以外―例えばJISキーボードをしている人は、このまま設定してしまうと、キーレイアウトがUSキーボードになってしまうので、設定が必要になるよ。
カーソルキーを押して「Layout」を選択した状態で、「Enter」キーを押すと、選択可能な言語一覧が表示されるよ。
今回はJISキーボードを使用しているので、「Japanese」を選択して、「を押そう。
すると、下の「Variant」も「Japanese」に変更されるよ。
この2箇所が「Japanese」に設定されていることを確認したら、「Done」にカーソルを合わせて、「Enter」を押そう。

瀬季南:次の画面は、「Network connections」だよ。
ここでは、Ubuntu Serverのネットワーク設定を行うよ。
今回は、事前に「ネットワークアダプター」で2つアダプターを有効化しているので、2つアダプターが設定されているよ。
「enp0s3」はアダプター1、「enp0s8」はアダプター2が適用されているよ。
このままで設定上問題ないので、「Done」にカーソルを合わせて、「Enter」キーを押そう。

瀬季南:次の画面は、「Configure proxy」だよ。
ここでは、Ubuntu Server上で使用するProxy設定を行うよ。
今回はProxyを使用しないので、「Done」にカーソルを合わせて、「Enter」キーを押そう。

瀬季南:次の画面は、「Configure Ubuntu archive mirror」だよ。
ここでは、Ubuntu Serverのパッケージ管理(apt)が参照するリポジトリのアドレスを設定するよ。
このままで設定上問題ないので、「Done」にカーソルを合わせて、「Enter」キーを押そう。

瀬季南:次の画面は、「Filesystem setup」だよ。
ここでは、Ubuntu Serverで使用するファイルシステムの設定を行うよ。
今回は、VirtualBoxが作成した仮想ハードディスクを割り当てるために、「Use An Entire Disk」を選択して「Enter」キーを押すよ。

瀬季南:そうすると、インストール先のディスク選択画面に進むよ。
先程も述べたとおり、VirtualBoxが作成した仮想ハードディスクを使用するので、「VBOX_HARDDISK_<ID>」を選択するよ。
この際、先程割り当てた最大容量が記載されているものを選択しよう。

瀬季南:そうすると、割り当てるハードディスクでのパーティション設定が表示されるよ。
今回は、特段編集する必要はないので、そのまま「Done」を選択しよう。

瀬季南:するよ、上の画像のような英文が表示されるよ。
ざっくりいうと、「設定した内容でハードディスクをフォーマットしてパーティションを割り当てるけどいいか?」と聞かれているよ。
問題がなければ、「Continue」を選択して「Enter」キーを押そう。

瀬季南:次の画面は「Profile setup」だよ。
ここでは、Ubuntu Serverで使用するユーザ情報やサーバ情報を設定するよ。
今回は、次のように設定したよ。

  • Your name: sekina
  • Your Server's name: ubuntu18server
  • Pick a name: sekina

瀬季南:「Choose a password」は、各人自由にパスワードを設定しよう。
ここで設定したパスワードをもう1度、「Confirm your password」で記入するよ。
ちなみに上で言語を「English」にしていると、「Keyboard configuration」で「Japanese」を選択していてもUSキーボードレイアウトになっている場合があるよ。
念のため、「Your name」と「Your Server's name」で確認して、最初は英数字のパスワードを利用してもいいね。
設定完了後にパスワードを変えるのは、補講で記載しておくよ。
記入が完了したら、「Done」を選択して「Enter」キーを押そう。

瀬季南:次の画面は、「SSH Setup」だよ。
ここでは、Ubuntu Serverで使用できるSSHをセットアップするかを設定するよ。
今回はネットワーク図でも記載したとおり、ホストマシンからSSH接続できる設定なので、ここで設定するよ。
まず、「Install OpenSSH server」を選択した状態で「Enter」キーを押し、チェックを入れるよ。
チェックが入ると、最初は選択できなかった「Import SSH identity」項目が選択できるようになるよ。
ただし今回は、まだSSH接続に使用する鍵を作成していないので、ここで鍵をインポートせずに後ほど行うよ。
「Import SSH identity」は「No」のままにして、「Done」を選択して「Enter」キーを押そう。

瀬季南:次の画面は、「Featured Server Snaps」だよ。
ここでは、Ubuntu Serverで使用するアプリケーションをインストール時に併せてインストールするかを設定するよ。
今回は、Ubuntu Server上でDockerを起動して、Docker上でやられアプリを動かす予定だよ。
ただしここでインストールはせず、後ほどインストールするので、ここでは無視して「Done」を選択して「Enter」キーを押そう。

瀬季南:しばらく待つと初期設定が終わって、この画面が表示されるよ。
そうしたら「Reboot」を選択して「Enter」キーを押そう。

瀬季南:再起動が始まる前に、「Please remove the installation medium, then press ENTER」という文が出てくるよ。
そうしたら、「Enter」キーを押そう。
インストールメディアが自動的に取り外されて、再起動が開始されるよ。

瀬季南:再起動後、鍵生成が始まり、「END SSH HOST KEY KEYS」が表示されたら「Enter」キーを押そう。
そうしたら、Ubuntu Serverへログインできるようになるよ。
先程設定したユーザネームとパスワードでログインしよう。

瀬季南:ログインできたら、上記の画像のようなメッセージが表示されるよ。
ここまでで、Ubuntu Serverのインストールは完了だよ。

Chapter0-6 Ubuntu Server設定(SSH接続・公開鍵認証設定)

瀬季南:まずはじめに次のコマンドを実行するよ。

sudo apt update  

瀬季南:このコマンドは、パッケージ管理のリポジトリに問い合わせて、最新の状態を取得してくるよ。
sudoは、このコマンドだけ、root権限で実行するよう指示するコマンドだよ。
sudoを利用する際は、使用するユーザのパスワードが必要になるよ。
sudo apt updateが完了したら、続けて次のコマンドを実行するよ。

sudo apt upgrade  

瀬季南:このコマンドは、パッケージ管理で管理しているインストール済みパッケージを最新の状態に更新するよ。
このコマンドみたいに、パッケージ内容が変更されるコマンドはオプションを指定しないと、変更前にユーザへ変更するかを聞いてくるよ。
聞かずにそのまま実行したい場合は、オプション-yupgradeの後ろにつけて実行してね。

瀬季南:apt upgradeが完了したら、まずはホストマシンから仮想マシンにSSH接続できるように設定を行うよ。
先にDockerをインストールしてもいいんだけど、かなりの量を入力することになるから、コピー&ペーストできたほうがいいからね。
インストール時にOpenSSHをインストールするように設定しているので、インストール作業は特にないよ。
念のため、このコマンドで現在実行されているかを確認しよう。

sysytemctl status sshd  

瀬季南:出力結果の「Active」項目が、「active (running)」となっていればオーケーだよ。

瀬季南:1度VirtualBoxのマネージャー画面に戻って、仮想マシンの設定画面を開くよ。
「ネットワーク」タブの「アダプター1」タブを選択して、「高度」をクリックして、隠れたメニューを表示させるよ。

瀬季南:「ポートフォワーディング」ボタンをクリックするよ。

瀬季南:ここでは、ホストマシンなどからこの仮想マシンに接続されたポートを別のポートで受け入れるための設定を行うよ。
VirtualBoxでは、ネットワークアダプターが「NAT」に設定されている場合、localhostでホストマシンから仮想マシンにアクセスできるよ。
ただし、素のままだよポートのあて先が指定されていないので、例えば仮想マシンでHTTP(ポート80)を待ち受けている状態でアクセスしてもサイトを表示できないよ。
ポートフォワーディングの設定はとても簡単で、右の「+」ボタンをクリックするよ。

瀬季南:画像のように新しいルールが自動的に追加されるよ。
見切れているけど、左から「名前」、「プロトコル」、「ホストIP」、「ホストポート」、「ゲストIP」、「ゲストポート」だよ。
今回は、次のように設定しているよ。

  • 名前:SSH
  • ホストIP:記入なし
  • ホストポート:22
  • ゲストIP:記入なし
  • ゲストポート:22

瀬季南:記入が完了したら、「OK」ボタンをクリックして、ポートフォワーディングルール画面を閉じよう。
もう1度「OK」ボタンをクリックして、設定を反映させるよ。

瀬季南:ホストマシン側でターミナルを開こう。
そうしたら、次のコマンドを実行するよ。

ssh <username>@localhost  

瀬季南:<username>には、Ubuntu Serverで設定したユーザ名を入れてね。
コマンドを実行すると、次の画像のようなメッセージが表示されるよ。

瀬季南:このメッセージは、「接続しようとしているホストとは1度も接続したことないけど、接続を続けてもいいか?」と聞いているよ。
問題がなければ、「yes」を入力しよう。
そうしたら、パスワードを聞かれるので、Ubuntu Serverで設定したパスワードを入力しよう。
パスワード認証が完了したら、仮想マシンで初めてログインしたときと同じようなメッセージが表示されるよ。
これで、VirtualBoxのコンソールではなく、ターミナルから仮想マシンにログインが完了したよ。

瀬季南:今の接続はパスワード認証でのログインで、今回の目的の公開鍵認証ではないので、公開鍵認証できるように鍵を作成するよ。
ターミナルの別タブ(あるいは別ウィンドウ)を開いて、次のコマンドを実行するよ。

ssh-keygen -b 4096  

瀬季南:ssh-keygenは2048bitのRSA鍵を生成してくれるコマンドだよ。
今回はデフォルトの2048ではなく4096bitのRSA鍵を作成するために、-b 4096オプションを追加しているよ。
bオプションで、指定したbitの鍵を作成するように指定しているよ。

瀬季南:はじめにRSA鍵の生成場所を尋ねられるよ。

Generating public/private rsa key pair.  
Enter file in which to save the key (ディレクトリ)  

瀬季南:デフォルトでは、ユーザのホームディレクトリの.ssh/id_rsaファイルで作成されるよ。
今回は初めての作成なので、このまま「Enter」キーを押そう。
そうすると、「Enter passphrase」と聞かれるよ。
今回はパスフレーズを設定しないで進めるので、そのまま「Enter」キーを押そう。
その後、もう1度同じパスフレーズを聞かれるので、もう1度「Enter」キーを押そう。
そうしたら、指定したディレクトリにRSA鍵が作成されるよ。

瀬季南:作成したRSA鍵は2つ存在するよ。
1つは秘密鍵のid_rsaで、もう1つは公開鍵のid_rsa.pubだよ。
この2つの鍵の組み合わせで認証を行うけど、この内秘密鍵は文字通り他人に知られてはいけないものだよ。
仮に知られた場合は、秘密鍵と公開鍵のペアを作り直す必要があるよ。
公開鍵認証やRSAの詳細については、長くなるので割愛するよ。

瀬季南:公開鍵id_rsa.pubをUbuntu Serverに登録して、公開鍵認証ができるようにするよ。
次のコマンドを実行するよ。

ssh-copy-id -i <keyfile> <username>@<hostname>  

瀬季南:<username>はUbuntu Serverでのユーザ名、<hostname>はVirtualBoxならlocalhostになるよ。
このssh-copy-idコマンドは、SSH公開鍵を登録するコマンドで、登録に必要な各種設定を自動で行ってくれるよ。

瀬季南:公開鍵を登録したことで、公開鍵認証でもSSH接続できるようになったよ。
ただし、今のままだと先程のパスワード認証でもSSH接続できる状態なので、少しSSH設定を編集するよ。
再びUbuntu Server側での作業になるよ。
まず、このコマンドを実行しよう。

sudo vi /etc/ssh/sshd_config  

瀬季南:viというエディタで/etc/ssh/sshd_configファイルを編集するよ。
まず「/」キーを押して検索モードにして、Passwordを入力しよう。
PasswordAuthenticationが表示されたら、「Enter」キーを押して検索を終了し、「i」キーを押して編集モードに入ろう。
PasswordAuthenticationは、パスワード認証を許可するかを設定する項目で、デフォルトでyesに設定されているよ。
今回は、パスワード認証によるSSH接続を無効化するので、これをnoに変更するよ。

PasswordAuthentication no  

瀬季南:入力が完了したら、一度「esc」キーを押して、コマンドモードに戻るよ。
そして「/」キーを押して、今度はPermitRootと入力しよう。
PermitRootLoginが表示されたら、「Enter」キーを押して検索を終了し、「i」キーを押して編集モードに入ろう。
PermitRootLoginrootアカウントでのSSH接続を許可するかを設定する項目で、デフォルトではパスワードを必要とするprohibit-passwordが設定されているよ。
セキュリティ上基本的に、rootアカウントのログインは不要なので、noに変更しておくよ。

PermitLootLogin no  

瀬季南:これまでSSH認証に使用していたポート22は、ウェルノウンポートと呼ばれる事前に割り当てられているポートになるよ。
この他にはポート80(HTTP)やポート443(HTTPS)、ポート25(SMTP)などがあるよ。
今回の環境では、完全に閉じたネットワーク空間で作業するので、必ずしもポートを変更する必要はないよ。
ただ、変更方法を覚えていても損はないので、説明しておくよ。
ちなみにこの講義では変更せずに進めるので注意してね。

Port xxxx  

瀬季南:xxxxには、1024から65535の任意のポート番号を入力してね。
ただし、そのポートと他のサービスの使用するポートが競合しないよう、注意する必要があるよ。

瀬季南:すべての変更が終了したら、viのコマンドモードに戻って、:wqを入力して「Enter」キーを押すよ。
これで、変更が保存されてviも終了するよ。
そうしたら、このコマンドで変更を反映させるよ。

sudo systemctl restart sshd  

瀬季南:このコマンドは、SSH接続を含めたsshサービスを提供するsshdを再起動させるコマンドだよ。
これで先程編集した設定が有効になるよ。
そうしたら、ホストマシンに戻って、ターミナルの別タブから公開鍵を用いてUbuntu Serverに接続テストをするよ。
この接続テストが完了するまで、今つないでる接続は切断してはいけないよ。
仮に設定が間違っている状態で接続を切断してしまうと、直接接続しないと設定を修正できなくなるからね。

ssh -i <keyfile> <username>@<hostname>  

瀬季南:無事ログインできたら完了だよ。

Chapter0-7 Ubuntu Server設定(Dockerインストール)

瀬季南:いよいよDockerのインストールに入るよ。
まずはじめに、DockerのGPG鍵を入手するために必要なパッケージをインストールするよ。

sudo apt install \  
    apt-transport-https \  
    ca-certificates \  
    curl \  
    gnupg-agent \  
    software-properties-common  

瀬季南:パッケージのインストールが完了したら、DockerのGPG鍵をインストールするよ。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -  

瀬季南:次に、今インストールしたDockerのGPG鍵が正しいものか、フィンガープリントを調べるよ。
今回は末尾8文字をチェックするよ。
次のとおりに出力されていればオーケーだよ。

sudo apt-key fingerprint 0EBFCD88  
pub   rsa4096 2017-02-22 [SCEA]  
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88  
uid           [ unknown] Docker Release (CE deb) <[email protected]>  
sub   rsa4096 2017-02-22 [S]  

瀬季南:次は、使用しているマシンのCPUにあったリポジトリを設定するよ。
まずは、このコマンドでマシンのCPUを確認するよ。

uname -p  

瀬季南:ここで出力された値に応じて、リポジトリを設定するよ。
今回はx86-64の例で進めていくよ。

sudo add-apt-repository \  
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \  
   $(lsb_release -cs) \  
   stable"  

瀬季南:リポジトリの設定が完了したら、このリポジトリから最新の情報を取得するよ。
sudo apt updateを実行しよう。
そうしたら、次のコマンドでDockerをインストールするよ。

sudo apt install docker-ce  

瀬季南:docker-ce-ceまで指定することで、community版をインストールするよ。
インストールが完了したら、次のコマンドでバージョンを確認しよう。
2020/02/03現在なら、次のようになるよ。

docker --version  
Docker version 19.03.5, build 633a0ea838  

瀬季南:ちなみにこのままだと、dockerコマンドをフルに使うためにはsudoをつける必要があるよ。
sudoなしで実行するためには、ユーザをDockerグループに追加する必要があるよ。
ただし公式のドキュメントには「Warning」と書かれているので、する場合は自己責任で実行してね。

Warning:

Adding a user to the “docker” group grants them the ability to run containers which can be used to obtain root privileges on the Docker host. Refer to Docker Daemon Attack Surface for more information.

(Get Docker Engine - Community for Ubuntu | Docker Documentationより)

sudo usermod -aG docker $USER  

瀬季南:このコマンドを実行後、1度ログアウトして再ログインすると、sudoなしでdockerコマンドをフルに使えるようになるよ。

Chapter0-8 内部ネットワーク用IPアドレス設定

瀬季南:内部ネットワークにネットワークアダプターを割り当てているけど、デフォルトではIPアドレスが割り当てられていないよ。
このままでは内部ネットワークを使用できないので、手動でIPアドレスを割り当てるよ。
まずはじめに、次のコマンドを実行して、内部ネットワークのアダプターがUbuntu Server上でどのように割り当てられているかを確認するよ。

ip a  

瀬季南:ここで表示される結果を覚えておこう。
ちなみに私の環境では、enp0s8が内部ネットワーク用のネットワークアダプタになっていたよ。
次のコマンドを実行して、ネットワークの設定ファイルを開こう。

sudo vi /etc/netplan/50-cloud-init.yaml  

瀬季南:デフォルトでは次のように記載されているのが確認できるよ。

network:  
    ethernets:  
        enp0s3:  
            dhcp4: true  
    version: 2  

瀬季南:enp0s3と同じインデントに、先程ip aで調べたネットワークアダプタの設定を追記していくよ。
今回は、このように追記するよ。

enp0s8:  
    dhcp4: no  
    addresses: [172.16.100.100/24]  
    gateway4: 172.16.100.1  
    nameservers:  
      addresses: [172.16.100.1, 8.8.8.8, 8.8.4.4]  

瀬季南:設定を反映させるために、このコマンドを実行しよう。

sudo netplan apply  

瀬季南:もう1度ip aコマンドを実行して、先程設定した通りにIPが割り当てられていればオーケーだよ。

Chapter0-9 DVWA起動

瀬季南:Docker上でDVWAを動かすために、次のコマンドを実行するよ。

sudo docker run -it -d -p 80:80 --name dvwa vulnerables/web-dvwa  

瀬季南:dockerコマンドの詳細は割愛するけど、次のことが起こるよ。

  1. ローカルDockerイメージ上に、vulnerables/web-dvwaというイメージがあるかを確認。
  2. なければ、Docker Hubからイメージをプルしてくる。
  3. コンテナ名をdvwa、ポート80に来たものをポート80にポートフォワーディングするように指定する。
  4. バックグラウンドで起動する。

瀬季南:もし、docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).というエラーが出たら、内部ネットワークアダプタが悪さをしているので、このコマンドで一時的に無効化してから実行しよう。

sudo ip link set enp0s8 down  

瀬季南:再有効化するには、downupに変更しよう。

瀬季南:バックグラウンドで起動が完了したら、このコマンドで確認しよう。

sudo docker ps  

瀬季南:dvwaという名前のコンテナが表示されれば、オーケーだよ。
忘れずに、内部ネットワークアダプタを再有効化しておこうね。

次回

瀬季南:次回は、残り1つのKali Linuxのインストールを行うよ。
あと一息なので、頑張っていこう。

参考

補足:ネットワーク画像について

瀬季南:ネットワーク画像は次からお借りしているよ。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

みんな卵から始まった (Qrunchのアクセス機能停止に伴い、Google Analyticsを使用しています)

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう