PythonのVersionをpyenvで切り替える (Mac)
# python --version
Python 2.7.10
Pythonでは、バージョン2.x系と3.x系に互換性がないので、切り替えて使いたい。
・Homebrew(パッケージマネージャー)
・pyenv(python管理ツール) をインストール
・virtualenv(python環境管理ツール) をインストール
・pyenvでPython3 をインストール
・pip(pythonパッケージ管理システム)をインストール
■Homebrewのインストール
# /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
■pyenvをインストール
pyenvは、複数バージョンのPython環境を管理したり切り替えるためのツール
pyenvインストール
# brew install pyenv
■virtualenvをインストール
virtualenvは、独立したPython環境を指定した時のみ使えるようにする
# brew install pyenv-virtualenv
pyenvのバージョン確認
# pyenv -v
pyenbにパスを通す
zshを使用しているので、~/.zshrcに追記
pyenv_ROOT=~/.pyenv
export p¥PATH=$PATH:PYENV_ROOT/bin
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
# source ~/.zshe *設定ファイルを再読込
pyenvでインストールできるPythonの確認
# pyenv install -l
pyenvでPython3をインストール
# pyenv install バージョン (2.7.12 or 3.6.1)
# pyenv rehash
pyenvでインストールされているバージョンを確認
# pyenv versions
デフォルトで使用するバージョンを指定
# pyenv global 3.6.1
**pyenvは、ディレクトリによりバージョンを変更できる**
カレントディレクトリでバージョンを設定する時はlocalコマンド
loaclコマンドでバージョンを設定すると、python-versionでバージョンが指定される
■ローカルのバージョンを指定
# pyenv local 2.7.12
■ローカルのバージョン設定を削除
pyenv local --unset
■pipをインストール
# easy_install pip
CentOS7 初期設定
■一般ユーザの作成
# useradd USERNAME ##ユーザの作成
# passwd USERNAME ##パスワードの設定
*ユーザの削除
# userdel -r USERNAME ##ユーザの削除
■rootになれるユーザを管理者のみにする
# usermod -G wheel USERNAME
# vi /etc/pam.d/su
auth required pam_wheel.xo.user_uid ##コメント解除
■ネットワークを有効にする
# nmcli device ##Deviceの一覧表示
# nmcli device show DEVICENAME ##Deviceの状態を確認
# nmcli connection ##Ethernetの接続一覧
# nmcli connection up DEVICENAME ##インターフェイスを有効
# nmcli connection down DEVICENAME ##インターフェイスを無効
# vi /etc/sysconfig/network-scripts/ifcfg-enp3s0
ONBOOT = yes ##'yes'へ変更
■yumの初期設定
# yum -y update ##インストール済みのパッケージを一括でupdate
#yum -y install yum-cron ##yum-cronインストール
#vi /etc/yum/yum-cron.conf ##yum-cronの設定
# Whether updates should be applied when they are available. Note
# that download_dpdates must also be yes for the uodate to be applied
applu_updates = yes ##'yes'でdownload&updateを自動で行う
# systemctl start yum-cron ##パッケージ自動更新起動
# systemctl enable yum-cron ##パッケージ自動更新自動起動設定
# yum -y groupinstall base "Development tools" #Base、開発ツールパッケージ群インストール
■SELinuxの無効化
# getenforce ##SELinuxの状態確認
Enforcing ##SELinux有効
# Setenforce 0 ##SELinux無効化
#getenforce ##SELinuxの状態確認
Permissive ##SELinux無効
# vi /etc/sysconfig/selinux
SELINUX=enforcing
↓
SELINUX=disabled ##システム起動時にSELinuxを無効化
■ファイアウォール停止
# systemctl stop firewalld ##ファイアウォール停止
#systemctl disable firewalld ##ファイアウォール自動起動解除
■nkfコマンドインストール *日本語処理に必要なnkfコマンドをインストール
# wget "http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fnkf%2F59912%2Fnkf-***.tar.gz" -0 nkf-***.tar.gz
https://ja.osdn.net/projects/nkf/releases/ から最新のパッケージをインストール
# tar zxvf nkf-***.tar.gz ##nkf展開
# cd nkf-***/ ##展開先ディレクトリへ移動
# make && make install ##nkfインストール
# cd
# rm -rf nkf-*** ##展開先ディレクトリを削除
# rm -f nkf-*** ##ダウンロードしたnkfを削除
# ln -s /usr/local/bin/nkf /usr/bin/nkf ##/usr/local/bin/nkfから/usr/bin/nkfへリンクをはる
■システムの停止/再起動
# halt ##システムを停止
# reboot #システムを再起動
CentOS6 初期設定
【CentOS6 初期設定】
■一般ユーザの作成
# useradd userx ##一般ユーザUSERNAMEの作成
# passwd USERNAME ##USERNAMEのパスワードを設定
PASSWORD入力 ##passwd
■rootになれるユーザを管理者のみにする
# usermod -G wheel USERNAME ##管理者ユーザをwheelグループに追加
■sudoの許可
# visudo
Allows people in group wheel to run all command
%wheel ALL=(ALL) ALL ##ここのコメントを外す
# vi /etc/pam.d/su
auth required pam_wheel.so use_uid ##コメント解除
■OS起動時IPアドレスを取得する
# vi /etc/sysconig/network-screpts/ifcfg-eth0
ONBOOT=no
↓
ONBOOT=yes
■SELinuxの無効化
# getenforce Enforcing ##SELinuc有効
# setenforce 0 ##SELinux無効化
# getenforce ##SELinux状態確認
Permissive ##SELinux無効
# vi /etc/sysconfig/selinux ##SELinux設定ファイル編集
SELINUX=enforcing
↓
SELINUX=disabled ##システム起動時にSELinuxを無効化
■ファイアウォール停止
*ルータでブロックするためファイアウォールが不要な場合は停止する
# /etc/rc.d/init.d/iptables stop ##ファイアウォール停止
# chkconfig iptables off ##ファイアウォール自動起動解除
CentOS6にWordPressをインストール
■必要なパッケージをインストール(Apache/MySQL/PHP/wget)
■Apacheの起動と動作確認
■PHPの設定
■PHPの動作確認
■MySQLの起動と動作確認
■WordPress用のデータベースとユーザ作成
■必要なパッケージをインストール(Apache/MySQL/PHP/wget)
# yum install httpd mysql-server php php-mysql wget
---------------------------------------------------------------
Apache初期設定では外部からサーバのHTTPポート(80番)にアクセスできない。 /etc/sysconfig/iptablesを編集し、HTTPポートを開放
**今回は、ファイアウォール自動起動解除しているので不要**
# cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.org ##BackUp
# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT ##80番ポートを追加
ファイアウォールの設定を反映
# /etc/nit.d/iptables restart
# /etc/rc.d/init.d/iptables stop ##ファイアウォール停止
# chkconfig iptables off ##ファイアウォール自動起動解除
----------------------------------------------------------------
# /etc/init.d/httpd start ##Apacheの起動
# chkconfig httpd on ##Apache自動起動設定
■PHPの設定 *タイムゾーンの設定/DocumentRootの設定
#cp -p /etc/php.init /etc/php.init.org ##BackUp
# vi /etc/php.init
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configration.php#ini.date.timezone
date.timezone = "Asia/Tokyo" ##"Asia/Tokyo"追加
Apacheをrestartして、php.iniの設定を反映
# /etc/init.d/httpd restart
■PHPの動作確認 phpinfo.phpファイルを作成、編集
# touch /var/www/html/phpinfo.php
# vi /var/www/html/phpinfo.php
# cat /var/www/html/phpinf.php
<?php
phpinfo();
?>
ブラウザでアクセスし、PHPの情報が確認出来ればOK
■MySQLの起動と動作確認
MySQLを起動
# /etc/init.d/mysqld start ##MySQLの起動
# chkconfig mysqld on ##MySQL自動起動設定
[MySQLが起動しているか確認する方法]
1.psコマンドでMySQLのプロセスが動いているかを確認
# ps axf | grep [m]ysqld
*grepコマンドのパターンで利用している[m]ysqldの[]角括弧は、grep自信を除外するために利用
2.mysqladminコマンドでMySQLにpingで生存確認
# mysqladmin -u root ping mysqld is alive ##aliveになればOK
[MySQLのパスワードを設定]
1.MySQLにログインしてパスワードを設定
# mysql -u root
mysql> update mysql.user set password=password('root用のパスワード') where user = 'root';
mysql> flush privileges; ##設定を反映
mysql> exit;
2.mysqladminコマンドを使ってパスワードを設定
~/.bash_historyに平文でパスワードが記載されてしまうので推奨されない
# mysqladmn -u root password 'root用のパスワード'
設定したパスワードでログインできるか確認
# mysql -u root -p
Enter PAssword:
■WordPress用のデータベースとユーザ作成
MySQLにWordPress用のデータベース(WP_DB)とユーザ(wp:passwd)を作成
# mysql -u root -p
Enter password:
mysql> create database WP_DB;
mysql> grant all privileges on wp.* to wp@localhost identified by 'wp用のパスワード';
■Apacheの設定
#cp -p /etc/httpd/conf /httpd.conf.org
DocumntRoot "/var/www/wordpress" ##DocumentRootをWordPressのディレクトリに変更
<Directory "/var/www/wordpress"> ##Documentrootと同じディレクトリに変更
AllowOverride All ##.htaccessによるディレクティブの上書きを許可
Apacheの設定を反映
# /etc/init.d/httpd restart
■WordPressのインストール WordPressのダウンロードと解凍
wgetでダウンロード JA.WordPress URL: https://ja.wordpress.org/releases/
# wget http://ja.wordpress.org/wordpress-***-ja.tar.gz
ファイルを解凍
# tar zxvf wordpress-***-ja.tar.gz # cp -r wordpress /var/www/ # chown -R apache.apache /var/www/wordpress
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~
Downloads – Oracle VM VirtualBox
■主な設定
-メモリーサイズ:2048
-仮想ハードドライブを作成する
-ハードドライブのタイプ:VDI
-物理ハードドライブにあるストレージ:可変
-ファイルの場所とサイズ:32GB