”Docker” を使ってみよう〜コンテナ稼働編〜

2016.10.27

セキュリティ対策


技術部開発課にてインフラ周りを担当している飯田です。

前回に引き続き「社内の誰もがPC内で完結する攻撃遮断くんの管理画面」を目指して、ローカル開発環境にDockerを適用していこうと思います。今回からはDockerのコンテナを実際に稼動させていきます。

コンテナ

現時点では、Dockerでのコンテナ化対象は下記にすることにします。

1. MySQL
2. Elasticsearch
3. Ruby on Rails
4. 監視センター(攻撃遮断くん/攻撃見えるくん)

前回の記事では「WAFセンター」と記載していましたが、「監視センター」という表現の方が正しいようなので今後は「監視センター」と記載します。

これらをDockerのコンテナで稼働させ、遮断くん/見えるくんの管理画面を表示させるまでを順次行っていきます。

MySQLコンテナ

言わずと知れたRDBですね。攻撃遮断くんのシステムにおいても、お客様情報等を保存しています。Dockerに公式のコンテナが存在しているので利用します。

$ docker pull mysql

タグを指定せずに”latest”のコンテナイメージを取得しました。MySQLサーバのコンテナを起動してみます。

$ docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=csc  mysql

“root”ユーザのパスワードだけを指定しています。ではMySQLクライアントから接続を行ってみましょう。ローカル環境にMySQLクライアントをインストールしていれば直接接続することも可能ですが、今回はMySQLクライアント用にもコンテナを起動してコンテナ間でのアクセスをしてみます。ちなみにローカルのMySQLクライアントからアクセスするには、MySQLサーバのコンテナ起動時にポートのオプション(-p)を指定するのが必要です。

$ docker run -it --rm --link mysql:mysql mysql mysql -hmysql -uroot -p
Enter password: csc
Your MySQL connection id is 4
Server version: 5.7.16 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql>

接続ができました。現時点での”latest”におけるMySQLのVersionが”5.7.16″であることがわかります。コマンドの実行に”mysql”という文字列が少々多すぎて混乱しそうなので、変更して下記のように実行することもできます。

$ docker run -it --rm --link mysql:server mysql mysql -hserver -uroot -p

実際にローカル環境での運用を考えるとすると、MySQLのデータディレクトリをコンテナの外に出しておいた方が良いといった事など考えるべき点は多々ありますが、今回はお試しという事で考慮していません。また、以前は”–link”オプションを使用しなくても同じネットワーク上に存在するコンテナ間では名前解決できていた気がするのですが、今回試していたVersionでは名前解決ができていなかったので指定しています。

Elasticsearchコンテナ

こちらも言わずと知れた全文検索エンジンですね。攻撃遮断くんのシステムにおいては、管理画面に表示する攻撃状況や検知履歴といったものを保存しています。こちらも公式のコンテナが存在しているので利用します。

$ docker pull elasticsearch

タグを指定せずに”latest”のコンテナイメージを取得しました。実際に稼動しているVersionと合わせた方が良さそうですが、Versionに依存する機能は使われていないはずなので今は気にしません。問題があった時にはVersionを合わせるようにしようと思いますが、こういったお手軽さもDockerの良い点ではないでしょうか。では実際にElasticsearchのコンテナを起動します。

$ docker run -d --name elasticsearch -p 9200:9200 elasticsearch

MySQLの時はクライアントもコンテナで起動して確認しましたが、Elasticsearchは`curl`コマンドで確認を行いたいのでローカル環境からアクセス可能となるように9200番ポートをオプションで指定しています。`curl`コマンドで確認してみます。

$ curl http://localhost:9200/
{
  "name" : "Rock",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "GG8IbiwXTvKe0cK8PqFpXg",
  "version" : {
    "number" : "2.4.1",
    "build_hash" : "c67dc32e24162035d18d6fe1e952c4cbcbe79d16",
    "build_timestamp" : "2016-09-27T18:57:55Z",
    "build_snapshot" : false,
    "lucene_version" : "5.5.2"
  },
  "tagline" : "You Know, for Search"
}
$

Elasticsearchが稼動していることが確認できると思います。
ここまででDockerのコンテナは下記のように稼動しています。

$ docker ps -a
CONTAINER ID     IMAGE           COMMAND               CREATED             STATUS              PORTS             NAMES
9583660553bf    elasticsearch "/docker-entrypoint.s" 2 minutes ago      Up 2 minutes     0.0.0.0:9200->9200/tcp, 9300/tcp   elasticsearch
9e253345da08    mysql           "docker-entrypoint.sh" 2 hours ago         Up 2 hours         3306/tcp             mysql
$

続いてRuby on Railsを、と進めようと思いますが少々長くなってしまったのでまた次回にしたいと思います。

 

CyberSecurityTIMESを運営している弊社サイバーセキュリティクラウドでは、Webセキュリティ対策のソフトウェア「攻撃遮断くん」を提供しております。専門家によるサポートも充実しております。お気軽にお問合せください。

「攻撃遮断くん」の詳細資料は、こちらからダウンロード頂けます。

サイバーセキュリティ クラウド型WAF 攻撃遮断くん Web Application Firewall
https://www.shadan-kun.com/

 


テック


  • 国内商用Webサイトが受けやすいサイバー攻撃とは?|サイバー攻撃の統計データから傾向を読み解く|今すぐ無料で資料をダウンロード
  • 御社のセキュリティ対策は本当に大丈夫ですか?約80%の企業が対策不足と言われています。Webセキュリティをいますぐ確認!3つのチェックポイント。今すぐ無料で資料ダウンロード

この記事と一緒に読まれています