Note to Self

公開する緊張感で、読み返した時に??にならない自分用メモです

CentOS7にDockerをインストール

【インストール時及び、最低限のコマンドと動作確認】

 

■Dockerのインストールと起動
Dockerのインストール
$ yum install -y docker

Dockerサービスの起動
$ systemctl start docker

Dockerサービスの有効化
$ systemctl enable docker

■Dockerイメージのインストール
DockerレジストリからDockerイメージをダウンロード
$ Docker pull [イメージ名]:[タグ名]

*Docker Hub Registory  https://hub.docker.com/
pullコマンドではデフォルトで↑を見にいく。
タグ名は通常 latest が設定されている。
最新版を使用したい場合は、latestを使用

CentOS 7 のイメージをインストール
$ sudo docker pull centos:latest

ダウンロードしたDockerイメージの一覧を確認
$ docker images

■Dockerコンテナを作成・実行
[コマンド]   docker run
[オプション] -d バックグラウンドで実行する。
        デフォルトではフォアグランドで実行するため、
        Webサーバやアプリケーションサーバなど常時実行するコンテナーで指定
             -i コンテナーの標準入力を開く /bin/bashなどでコンテナーを操作する際に指定
             -t tty(端末デバイス)を確保  /bin/bashなどでコンテナーを操作する際に指定
             -p <ホストのポート番号>:<コンテナーのポート番号> Dockerサーバのホストとポートマッピングを構成

□sudo docker run -it --name centos7_doc centos /bin/bash
Apacheをインストール $ yum install httpd

■[Ctrl+d]でシェルを抜けると、dockerコンテナも終了
 [Ctrl+p]+[Ctrl+q]でコンテナを終了することなくログアウト

Dockerコンテナの一覧を取得
$ docker ps [-a] *-a停止中のコンテナも表示される

Dockerコンテナの起動
$ docker start [コンテナ名]

Dockerコンテナへの接続
$ docker attach [コンテナ名]

Dockerコンテナを削除
$ docker rm [コンテナ名]|[コンテナID]

Dockerコンテナの履歴を削除
*定期的にクリーンアップしなければ、履歴が残り続けディスクを圧迫する
$ sudo docker rm $(sudo docker ps -a -q)

■Dockerイメージを作成
Dockerイメージを確認
$ docker images

Dockerイメージを作成
$ docker commit [コンテナ名]|[コンテナID][ユーザ名/][イメージ名]

Dockerイメージを削除
$ docker rmi [イメージ名]|[イメージID]

<Dockerfileを使ってイメージを作る> *推奨
Dockerfile の書き方は公式サイトのリファレンスを参照
https://docs.docker.com/reference/builder/

 

□まとめ

仮想化とコンテナの違いが、なんとなくイメージ出来た。

最低限のコマンドは理解さえしておけば、GUI管理のツールがたくさん有るらしい。

まずは、Dockerfileを作れるようになるのが次の目標。

Volatility概要

メモリフォレンジックによるマルウェア感染痕跡の調査
https://sect.iij.ad.jp/d/2011/12/194028.html

メモリフォレンジック
揮発性のデータを解析する技術
対象のシステムのメモリ領域を全て一度ダンプし、それに対して独自の実装で解析を行う。
汚染されている可能性のある対象システムのAPIに頼らず、また、解放された領域もチェックするので、
改ざんなどにより、意図的に隠蔽されている情報、終了したプロセスなど、既に解放された
メモリ領域に存在する情報を含めて取得できる。

インシデントレスポンスにおいて重要な情報
 ・どこと通信していたか
 ・どんなプログラムやスレッドが動いていたか
 ・どのようなデータがメモリ上にマッピングされていたか

昨今のマルウェアはタイムスタンプの改ざんを行う機能を持っているものが多いため、
ファイルシステム以外からの抽出できる時間情報の活用が重要。
例)メモリフォレンジックを活用して作成できる揮発性情報のタイムライン
  timeliner(Volatility Frameworkのプラグイン)は、プロセスやスレッド、
  ソケット通信やイベントログの生成情報を時系列でチェックできる
例)特定のプロセスにおいてインジェクトされたコード領域を検出
  mailfindプラグイン(Bolatility Framework)、VadDumpモジュール(EnCase EnScript)
  特定のプロセスアドレス空間のみをダンプ氏、ファイルをスキャンすることで、
  クイックにコードインジェクションの有無や、マルウェアの種類まで判定することもできる場合がある。
例)SpyEyeの設定情報、搾取した情報の抽出
  VadSearchモジュール(EnCase EnScript)
  SpyEyeの実行パスやインストールパス、config.biのファイル名など重要な情報を
  メモリから確認できる
  C1データを参照する際、その先頭にあるシグネチャ「!EYE」を検索
  VadSearchモジュールを使ってこのシグネチャをキーワードとして検索すると、下の図のように
  特定のプロセスアドレス空間においてマッチしたキーワードの周辺を参照できる。

仮想環境にKali Linuxをインストール 〜2017.04.20追記〜

■OSⅩで仮想環境構築する

メジャーな有料アプリ(VMware Fusion, Parallels Desktop, VirtualBox etc.)を入れる前に、無料で仮想環境を体験できるVeertuをインストールしてみた。

このアプリは、すんなり入るので詳細割愛...

■Kali Linuxについて補足

-Debianの派生のLinuxディストリビューション
-セキュリティ診断用ツール(デジタルフォレンジックペネトレーションテスト(侵入テスト)用など)が標準で用意されている
-利用の仕方により不正アクセス行為と判断される可能性ががある

-基本的に、root権限で作業を行う。
-サービス停止やデータの破損が起こる場合もあるので事前にバックアップを行う

Veertuが持つコンソールで日本語キーボードを使うと|が入力できないので、sshでローカルサーバにアクセス。

■インストール
$sudo apt-get install openssh-server
■起動
$update-rc.d ssh enable
■IP確認
$ ifconfig
ssh接続
$ ssh -p 22 xxxxxx@192.168.xx.xx

ディレクトリ名を英語に変更

$LANG=C xdg-user-dirs-update --force

 

〜2017.04.20追記〜

■OSⅩで仮想環境構築する~2~

Oracle VM VirtualBoxインストール

Downloads – Oracle VM VirtualBox

 

■主な設定

-メモリーサイズ:2048

-仮想ハードドライブを作成する

-ハードドライブのタイプ:VDI

-物理ハードドライブにあるストレージ:可変

-ファイルの場所とサイズ:32GB

 

 

 

 

 

 

Arduino No.03 LED点滅プログラム

1個のLED(発光ダイオード)を点滅させてみる。

http://www.ez0.net/wp-content/uploads/2010/11/blink_led.png

単純に、13番とGNDに赤色LEDを接続

接続する時は、極性を注意すること!!

  13:LEDの長い方(+)

 GND:LEDの短い方(−)

 

【Program】

void setup() {
//initialize the digital pin as an output
//Pin 13 has on LED connected on most Arduino boords:
pinMode(13, OUTPUT);
}

void loop(){
digitalWrite(13, HIGH); // Set the LED on
delay(1000); // wait for a second
digitalWrite(13, LOW); // Set the LED off
delay(1000); // wait for a second
}

 

最初に呼ばれる setup() で13番ピンを出力ピンとして設定。

loop() は毎フレーム呼ばれる関数です。

digitalWrite(13, HIGH); で13番ピンをHIGH状態にして、LEDを点灯。

delay(1000); で 1000ms の間スリープ。

digitalWrite(13, LOW); で13番ポートをLOWにしてLEDを消灯。

delay(1000); で1000msスリープ。 

 

【補足】ずっとloopするの、なんか嫌なので...

     While関数で回数制限してみた。

 

【Program】

int i=0;

void setup() {

 //initialize the digital pin as an output

 //Pin 13 has on LED connected on most Arduino boords:
 pinMode(

}

 

void loop(){

 while (i < 5){
  digitalWrite(13, HIGH); // Set the LED on
  delay(1000); // wait for a second
  digitalWrite(13, LOW); // Set the LED off
  delay(1000); // wait for a second
  i++;
 }
}

Arduino No.02 プログラミングの第一歩“Hello World”

「Lチカ」の前に...

プログラミングの第一歩“Hello World” という記事を見て参考にしてみた。

【Program】 

01 void setup()
02 {
03      Serial.begin(9800);
04 }
05
06 void loop()
07 {
08      Serial.println("Hello, World");
09      delay(1000);
10 }

 

無事成功!!

しかし... loop 止まらん

で、ちょっと調べて 09    delay(1000); ⇒ while(1);

で止めてみた

 

次こそ Lチカ