Hyper-V 上の仮想マシン(Linux)の複製

Hyper-V @ 2012R2 上の Linux(CentOS) 仮想マシンを複製した際の作業記録です。

稼働中のものと同じ Linux仮想マシン(ただし、host名、IPアドレスは異なる)を作りたかったので、すでに稼働している仮想マシンを エクスポート > インポート(コピー) して作成しました。

コピー元の仮想マシンを ” devmiz01 ” 、複製後(コピー後)の仮想マシンを ” devmiz02 ” とします。
devmiz0* の OS は CentOS 6.8 です。

 

① コピー元となる仮想マシンをエクスポートします。

エクスポートが終わったら、エクスポートフォルダ内の 仮想HDD と構成ファイルを編集しておきます。(しなくても動作に問題はないですが、コピー元と名前が同じになるのでややこしい)

・  .vhdx ファイル名を新規仮想マシンの名称に変更。

 

・ Virtual Machines ディレクトリ下の仮想マシン構成ファイルを編集し、

” devmiz01 ” となっている箇所を ” devmiz02 ” に変更。 (以下の2箇所 ←環境によって下記以外にも旧マシン名が記載されている場合があるので、旧マシン名は一括して置換します)

・ vhdx ファイルパス  ( <controller0> <drive0> の <pathname> の箇所 )

・ 仮想マシン名 (<properties> の <name> の箇所)

 

② エクスポートした仮想マシンをインポートします。

 

「仮想マシンをコピーする(新しい一意なIDを作成する)」 を選択。

 

③ ” devmiz02 ” を起動する前に、仮想マシンからネットワークアダプターを外しておきます。 (「仮想スイッチ = 接続されていません」 にする)

 

静的MACアドレス(Linuxの場合、MACアドレスが変わると ethX の設定も変わってしまうので、静的MAC で運用しています) も、コピー元の値になっているので、新しいMACアドレスに変更しておきます。

 

 

④ ネットワークアダプターが外れた状態で仮想マシンを起動し、ホスト名、IPアドレスを変更します。

・ ホスト名は、/etc/sysconfig/network、 /etc/hosts を修正。

・ IP アドレスは、/etc/sysconfig/network-scripts/ifcfg-eth0 を修正。
 ※ IPもだけど、HWADDR  (or MACADDR) も新しい MAC アドレスに変更。

・ /etc/udev/rules.d/70-persistent-net.rules に古いMACアドレスと新しいMACアドレスの 2つのエントリーがある(はず)ので、どちらもコメントアウトしておく。

修正完了後、仮想マシンをシャットダウンする。

 

⑤ 仮想マシンにネットワークアダプターを接続し、起動する。

 

以上で、IP(とMACアドレス)とホスト名が異なる以外は、中身が “devmiz01 ” と同じの ” devmiz02 ” が完成です。

 

 

 

CentOS(Red Hat) on Hyper-V 2012R2

Hyper-V 2012 R2 上の仮想マシンに CentOS ( or RedHat) を入れた際の備忘録です。

CentOS 6.8 をゲストにしたのですが、minimal install したせいか、Hyper-V 関連のデーモンが入ってなかったので、yum で追加しました。
( https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/6.6_Technical_Notes/RHEA-2014-1439.html

(Hyper-V側の Windows Server バックアップでゲストの CentOS のOnlineバックアップが失敗したことで気付きました。。。)

 

# yum install hyperv-daemons

 

Baseリポジトリにあるので、yum.repos.d とかいじらなくて大丈夫です。
関連する ↓ 下記のデーモン達も一緒にインストールされます。

hyperv-daemons.x86_64 : HyperV daemons suite
hyperv-daemons-license.noarch : License of the HyperV daemons suite
hypervfcopyd.x86_64 : HyperV FCOPY daemon
hypervkvpd.x86_64 : HyperV key value pair (KVP) daemon
hypervvssd.x86_64 : HyperV VSS daemon

 

インストールが終わったら、OS 再起動です。

hyperv-daemons がない状態でも普通に動作しますが、これがあると、ライブマイグレーションが早くなったり、VSSバックアップ(オンラインバックアップ)ができたりと、なかなか便利になります。

 

また、hypervfcopyd (HyperV FCOPY daemon) のおかげで、PowerShell の 「Copy-VMFile」 コマンドを使用して、ホスト(Hyper-V側)に置いてあるファイルを Linux ゲストにコピーできるようになります。
(Hyper-V では USBメモリスティック をゲストに握らせられなかったりする場合があるので、これができるとちょー便利。)

 

「Copy-VMFile」 コマンドは MS の technet (https://technet.microsoft.com/ja-jp/library/dn464282.aspx) に詳しいですが、

 

例えば、ホスト側の「C:\hogehoge.txt」 を ゲストマシン(下記例では仮想マシン名「devmiz01」) の「/tmp」にコピーする場合は、

Copy-VMFile -Name devmiz01 -SourcePath 'C:\hogehoge.txt' -DestinationPath '/tmp' -FileSource Host

 

で、コピーできます。
※ 書き込み先のパーミッションは other の write を許可しておきます。

 

今回の備忘録は以上となります。

 

 

 

 

Cacti on CentOS6

Cacti (+ RRDTool)  を CentOS6 上で稼働させて、ネットワーク機器のトラフィック状況をグラフ化してみた際の作業記録です。

 


【Cacti について】

RRDTool (http://oss.oetiker.ch/rrdtool/) が作成したグラフをブラウザで表示できるようにしてくれるオープンソースなツールです。

SNMP で対象機器をポーリング、そのデータをRRDTool (がDBに格納して)グラフを作成、cacti 経由で ブラウザに表示してくれる、といった具合になります。

↓ こんな感じです。 (下記はローカルホストのロードアベレージを表示したところ)

 

Cacti のホームページ
http://www.cacti.net/

Cacti のマニュアル
http://www.cacti.net/documentation.php

 


【インストール】

CentOS 標準のリポジトリには含まれておらず、ソースからのインストールがメジャー(?)ですが、幸いにも EPEL (https://fedoraproject.org/wiki/EPEL/ja)リポジトリでパッケージが公開されているので、今回はEPEL から yum して利用することにします。

 


 

まずは EPEL リポジトリの追加から。
EPEL のトップページ(https://fedoraproject.org/wiki/EPEL/ja) にも記載あるように、CentOS では “yum install epel-release” の実行だけで、EPELを利用できるようになります。

# yum install epel-release

 

EPEL は現在 CentOS Extras repository に含まれているため、標準リポジトリとの競合はまずなさそう  (FAQより :  https://fedoraproject.org/wiki/EPEL/FAQ/ja) ですが、念のため、yum priorities (https://wiki.centos.org/PackageManagement/Yum/Priorities) プラグインを追加して、リポジトリの優先順位を設定しておきます。

# yum install yum-plugin-priorities

 

/etc/yum.repos.d/CentOS-Base.repo の [Base], [updates], [extras], [centosplus] を priority=1 に、[contrib] を priority=2 に指定します。
(priority は 1 – 99 までの指定、デフォルトは 99、数字が低いほど優先)

# vi /etc/yum.repos.d/CentOS-Base.repo

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=2

 

EPEL は priority=10 を指定しておきます。

# vi /etc/yum.repos.d/epel.repo

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
priority=10

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
priority=10

[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
priority=10

 


 

Cacti を yum でインストールします。

# yum install cacti

稼働要件(http://www.cacti.net/downloads/docs/html/requirements.html) のツール(RRDTool や PHP、MySQL, Apache など)も併せてインストールされます。

読み込んだプラグイン:fastestmirror, priorities
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.jaist.ac.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.jaist.ac.jp
 * updates: ftp.jaist.ac.jp
117 packages excluded due to repository priority protections
依存性の解決をしています

 <中略>

依存性を解決しました

============================================================================================================================
 パッケージ                              アーキテクチャ      バージョン                          リポジトリー          容量
============================================================================================================================
インストールしています:
 cacti                                   noarch              0.8.8b-7.el6                        epel                 2.2 M
依存性関連でのインストールをします。:
 apr                                     x86_64              1.3.9-5.el6_2                       base                 123 k
 apr-util                                x86_64              1.3.9-3.el6_0.1                     base                  87 k
 apr-util-ldap                           x86_64              1.3.9-3.el6_0.1                     base                  15 k
 cairo                                   x86_64              1.8.8-6.el6_6                       base                 309 k
 dejavu-fonts-common                     noarch              2.33-1.el6                          base                  63 k
 dejavu-lgc-sans-mono-fonts              noarch              2.33-1.el6                          base                 397 k
 dejavu-sans-mono-fonts                  noarch              2.33-1.el6                          base                 474 k
 fontconfig                              x86_64              2.8.0-5.el6                         base                 186 k
 fontpackages-filesystem                 noarch              1.41-1.1.el6                        base                 8.8 k
 freetype                                x86_64              2.3.11-15.el6_6.1                   base                 361 k
 httpd                                   x86_64              2.2.15-47.el6.centos.4              updates              831 k
 httpd-tools                             x86_64              2.2.15-47.el6.centos.4              updates               77 k
 libX11                                  x86_64              1.6.0-6.el6                         base                 586 k
 libX11-common                           noarch              1.6.0-6.el6                         base                 192 k
 libXau                                  x86_64              1.0.6-4.el6                         base                  24 k
 libXft                                  x86_64              2.3.1-2.el6                         base                  55 k
 libXrender                              x86_64              0.9.8-2.1.el6                       base                  24 k
 libpng                                  x86_64              2:1.2.49-2.el6_7                    updates              182 k
 libthai                                 x86_64              0.1.12-3.el6                        base                 183 k
 libxcb                                  x86_64              1.9.1-3.el6                         base                 110 k
 lm_sensors-libs                         x86_64              3.1.1-17.el6                        base                  38 k
 mailcap                                 noarch              2.1.31-2.el6                        base                  27 k
 mysql                                   x86_64              5.1.73-5.el6_7.1                    updates              894 k
 net-snmp                                x86_64              1:5.5-54.el6_7.1                    updates              308 k
 net-snmp-libs                           x86_64              1:5.5-54.el6_7.1                    updates              1.5 M
 net-snmp-utils                          x86_64              1:5.5-54.el6_7.1                    updates              176 k
 pango                                   x86_64              1.28.1-10.el6                       base                 351 k
 php                                     x86_64              5.3.3-46.el6_7.1                    updates              1.1 M
 php-cli                                 x86_64              5.3.3-46.el6_7.1                    updates              2.2 M
 php-common                              x86_64              5.3.3-46.el6_7.1                    updates              529 k
 php-mysql                               x86_64              5.3.3-46.el6_7.1                    updates               86 k
 php-pdo                                 x86_64              5.3.3-46.el6_7.1                    updates               80 k
 php-snmp                                x86_64              5.3.3-46.el6_7.1                    updates               35 k
 pixman                                  x86_64              0.32.4-4.el6                        base                 243 k
 rrdtool                                 x86_64              1.3.8-7.el6                         base                 293 k

トランザクションの要約
============================================================================================================================
インストール        36 パッケージ

総ダウンロード容量: 14 M
インストール済み容量: 43 M
これでいいですか? [y/N]y

 <中略>

インストール:
  cacti.noarch 0:0.8.8b-7.el6

依存性関連をインストールしました:
  apr.x86_64 0:1.3.9-5.el6_2                                   apr-util.x86_64 0:1.3.9-3.el6_0.1
  apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1                       cairo.x86_64 0:1.8.8-6.el6_6
  dejavu-fonts-common.noarch 0:2.33-1.el6                      dejavu-lgc-sans-mono-fonts.noarch 0:2.33-1.el6
  dejavu-sans-mono-fonts.noarch 0:2.33-1.el6                   fontconfig.x86_64 0:2.8.0-5.el6
  fontpackages-filesystem.noarch 0:1.41-1.1.el6                freetype.x86_64 0:2.3.11-15.el6_6.1
  httpd.x86_64 0:2.2.15-47.el6.centos.4                        httpd-tools.x86_64 0:2.2.15-47.el6.centos.4
  libX11.x86_64 0:1.6.0-6.el6                                  libX11-common.noarch 0:1.6.0-6.el6
  libXau.x86_64 0:1.0.6-4.el6                                  libXft.x86_64 0:2.3.1-2.el6
  libXrender.x86_64 0:0.9.8-2.1.el6                            libpng.x86_64 2:1.2.49-2.el6_7
  libthai.x86_64 0:0.1.12-3.el6                                libxcb.x86_64 0:1.9.1-3.el6
  lm_sensors-libs.x86_64 0:3.1.1-17.el6                        mailcap.noarch 0:2.1.31-2.el6
  mysql.x86_64 0:5.1.73-5.el6_7.1                              net-snmp.x86_64 1:5.5-54.el6_7.1
  net-snmp-libs.x86_64 1:5.5-54.el6_7.1                        net-snmp-utils.x86_64 1:5.5-54.el6_7.1
  pango.x86_64 0:1.28.1-10.el6                                 php.x86_64 0:5.3.3-46.el6_7.1
  php-cli.x86_64 0:5.3.3-46.el6_7.1                            php-common.x86_64 0:5.3.3-46.el6_7.1
  php-mysql.x86_64 0:5.3.3-46.el6_7.1                          php-pdo.x86_64 0:5.3.3-46.el6_7.1
  php-snmp.x86_64 0:5.3.3-46.el6_7.1                           pixman.x86_64 0:0.32.4-4.el6
  rrdtool.x86_64 0:1.3.8-7.el6

完了しました!

 

必要なパッケージ (http://docs.cacti.net/manual:088:1_installation.1_install_unix#installing_under_unix) が全て yum 経由で入ったかどうか、確認しましょう。
今回は、 php-xml と mysql-server  が不足していたので、別途インストールしました。

# yum install php-xml
# yum install mysql-server

 


 

これで cacti (とRRDTool や関連パッケージ)の導入が完了しましたので、次は、

Cacti のインストールガイド (http://docs.cacti.net/manual:088:1_installation.1_install_unix#configuration_of_software_packages) を参考に、各ソフトウェアの設定を行っていきます。

 


 

PHP の設定 (http://docs.cacti.net/manual:088:1_installation.1_install_unix.1_configure_php

確認対象は /etc/php.ini です。
上記マニュアルを参考に、必要に応じて修正します。
今回は、date.timezone = “Asia/Tokyo” に修正。 (http://php.net/manual/en/timezones.asia.php

# vi /etc/php.ini

[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = "Asia/Tokyo

 


 

httpd (Apache) の設定 (http://docs.cacti.net/manual:088:1_installation.1_install_unix.2_configure_apache

上記のマニュアルを参考に、

/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/php.conf

↑ この2つの設定を確認。 私の環境では、特に変更しなくてもよさそうだったです。

なお、Cacti (のWebサイト)へのアクセスが デフォルトでは local host (127.0.0.1) からのみ可となっているため、接続できるIPを追加しておきます。

# vi /etc/httpd/conf.d/cacti.conf
#
# Cacti: An rrd based graphing tool
#

# For security reasons, the Cacti web interface is accessible only to
# localhost in the default configuration. If you want to allow other clients
# to access your Cacti installation, change the httpd ACLs below.
# For example:
# On httpd 2.4, change "Require host localhost" to "Require all granted".
# On httpd 2.2, change "Allow from localhost" to "Allow from all".

Alias /cacti    /usr/share/cacti

<Directory /usr/share/cacti/>
        <IfModule mod_authz_core.c>
                # httpd 2.4
                #Require host localhost
                Require all granted
        </IfModule>
        <IfModule !mod_authz_core.c>
                # httpd 2.2
                Order deny,allow
                Deny from all
                Allow from localhost
                Allow from 172.31.1.0/24
                Allow from 172.31.10.0/24
        </IfModule>
</Directory>

<Directory /usr/share/cacti/install>
        # mod_security overrides.
        # Uncomment these if you use mod_security.
        # allow POST of application/x-www-form-urlencoded during install
        #SecRuleRemoveById 960010
        # permit the specification of the rrdtool paths during install
        #SecRuleRemoveById 900011
</Directory>


# These sections marked "Require all denied" (or "Deny from all")
# should not be modified.
# These are in place in order to harden Cacti.
<Directory /usr/share/cacti/log>
        <IfModule mod_authz_core.c>
                Require all denied
        </IfModule>
        <IfModule !mod_authz_core.c>
                Order deny,allow
                Deny from all
        </IfModule>
</Directory>
<Directory /usr/share/cacti/rra>
        <IfModule mod_authz_core.c>
                Require all denied
        </IfModule>
        <IfModule !mod_authz_core.c>
                Order deny,allow
                Deny from all
        </IfModule>
</Directory>

17 行目をコメントアウト、
18, 25, 26 行目を追加してます。

 

httpd を起動します。
(OS起動時に自動起動するようにもしておきます)

# service httpd start
# chkconfig httpd on

 


 

Cacti 用の MySQL DB を作成します。 (http://docs.cacti.net/manual:088:1_installation.1_install_unix.5_install_and_configure_cacti

今回は、データベース名 「cacti」、DBのユーザー「cactiuser」 、パスワード「cacticacti」とします。

 

このへんの設定あたりから、↑ のマニュアルに書いてない事も多かったので、ネットでいろいろと検索した結果を織り交ぜて書いてます。

 

mysqld が起動していない場合は、まず起動を。

# service mysqld start
# chkconfig mysqld o

 

cacti 用のDB 「cacti」 を作成して、テーブルをインポートします。

# mysqladmin --user=root create cacti
# mysql cacti < /usr/share/doc/cacti-0.8.8b/cacti.sql

 

cacti DB に ユーザとパスワードを設定

# mysql --user=root
Server version: 5.1.73 Source distribution

mysql> grant all on cacti.* to cactiuser@localhost identified by 'cacticacti';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> exit;
Bye

 


 

残りの設定。

DBのユーザ名/パスワードを cacti の設定ファイルに反映。

# vi /usr/share/cacti/include/config.php

 <中略>

$database_username = "cactiuser";
$database_password = "cacticacti";

 <中略>

 

cron を有効化。
yum した際に cacti の cron ファイル(/etc/cron.d/cacti)が作成さますが、中身がコメントアウトされてるので、外して有効化します。

# vi /etc/cron.d/cacti

*/5 * * * *     cacti   /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1

↑ コメントアウトされてるので、外します。

 

cron の再起動

# service crond restart

 


 

これで準備が整いました。
cacti にアクセスして初期設定を開始します。

ブラウザから、

http://cactiをインストールしたサーバー/cacti

にアクセスすると、下記のように Installation Guide で出てきます。「Next」で次に進みます。

 

「New Install 」 を選んで 「Next」

 

各パラメータのチェックがOK(緑色文字)な事を確認して、「Finish」

 

ログイン画面が出てきます。

User Name :  admin
Password: admin

でログイン。

 

初回の強制パスワードの設定画面が出てきますので、新しいパスワードを設定します。

 

cacti の利用準備が整いました!

 

 


 

次は、トラッフィクグラフを取得したい機器を登録していきます。

基本的な設定の流れは、cacti にログイン後のトップページにも記載があるように、

  1.  「create device」 (ネットワーク機器を登録)
  2.  「create grafh」  (グラフ作成)

の流れです。

では、早速登録してみます。

 

画面左上の赤いタブ 「console」を選択(デフォルトではこの画面になってます)、 画面左側のメニュー一覧から 「Devices」 をクリック。

 

↑ この画面右上の「Add」 をクリックすると、デバイス登録画面が出てきます。

 

Hostname、SNMP Community など、必要な情報をタイプして、画面右下の 「create」 をクリックします。

 

対象とSNMPでコミュニケーションできなかった場合、下記のように赤文字で 「SNMP error」 となります。

対象の機器でSNMPが有効になっているか、コミュニティ名などに間違いはないか、通信経路上のFirewallがある場合はSNMP 通信(UDP/161) が許可されているか、など確認します。

 

うまくいった場合は下記のように SNMP Information が取得できます。

 

次はグラフの作成です。 
↑ この画面の右上の 「Create Graphs for this Host」 をクリックします。

すると、↑ このように作成できるグラフリストの一覧が表示されます。

(デバイス作成時に SNMP error が表示された -> でもなんとか修正して SNMP Information は取れるようになった -> でもこのリストが出てこない、な場合はデバイスの削除 -> 再登録 でうまくいくかもしれません)

右端のチェックボックスにチェックを入れて、画面右下の 「Create」 をクリックすると、グラフが作成されます。
ポート数の多い機器とかは、Next ページにも一覧があるので忘れずにチェックを。

↓ Create が終わったところ。

 


グラフを見てみます。
GUI画面左上、赤色の 「graphs」 をクリックします。

初期状態では、↓ こんなふうに Tree View 画面が表示されます。
左ペインの Default Tree を展開すると、localhost の各グラフを表示することができます。

 

さきほど登録した機器は、デフォルトではこの Tree View には表示されません。
画面右上、「setting」 ボタンの右側に、3つほどボタン(左から、Tree View、List View、Preview view)があって、List View か Preview view を選択すると、追加した機器のグラフを見ることができます。

List View をクリックしたところ。
↓ こんなふうに、グラフの一覧が出てきます。

↑ この中から、見たいグラフをクリックすると、
↓ こんなかんじで閲覧することができます。

 


 

よく見るグラフは、Tree View に登録すると良いです。

Console > Graph Trees をクリックします。

↑ 初期状態では、「Default Tree」(localhost の各グラフが表示) のみ登録されています。

ここに新しいツリーを作成して、閲覧したいグラフを追加していきます。

↑ この画面右上の 「Add」 をクリック。
↓ 新規ツリーの作成画面が出ますので、適当な名前を入力して 「Create」 をクリック。

 

↓ Tree Items の 「Add」 をクリックして、見たいアイテムを追加します。

 

↓ Add を押したところ。
Tree Item Type には、「header」、「grapsh」、「host 」 が選択できます。
Header はTree の 上位階層(Parent) になるので、アイテムを階層化したい場合に使います。
graph は 各グラフ単位、host はその対象で取得しているグラフ全てが表示されます。

Tree Item Type「Header」 で作るとこんな感じです。

 

SW01 の配下に、Gi 1/0/1 のグラフを追加してみます。

 

すると、Tree View ではこんな風に表示されます。

 

こんな感じで、お好みのグラフ表示を作成することができます。

 

今回の備忘録は以上です。

 

 

 

Kali Linux, Rolling Edition – 2016.1

 Kali Linux は ディストリビューションのリリース形態を ローリング・リリース モデル に変更するとのことで、2016年1月21日、Kali Linux Rolling Edition 2016.1 をリリースしました。

https://www.kali.org/news/kali-linux-rolling-edition-2016-1/

 従来の最新バージョンであった Kali Linux 2.0 については、リポジトリの EOL が 2016年4月15日 とのこと。
 もうそろそろ期限を迎えるので、手持ちの Kali 2.0 を ローリング・エディションに変更してみました。

 

 アップグレードの手順は kali のサイト に記載があるとおり、

# cat << EOF > /etc/apt/sources.list
> deb http://http.kali.org/kali kali-rolling main non-free contrib
> EOF

# apt-get update
# apt-get dist-upgrade
# reboot

 /etc/apt/sources.list の内容を書き換えて、apt-get すると ローリングエディション版に更新されます。

 

 私の環境だと、

アップグレード: 1944個、新規インストール: 525個、削除: 93個、保留: 0個。
2,626 MB 中 1,690 MB のアーカイブを取得する必要があります。
この操作後に追加で 2,444 MB のディスク容量が消費されます

でした。 

 ・・・アップグレード 1944個、新規インストール 525個、けっこう変更されますね。。。 
 今回は、Kali 2.0 マシンが LTE 経由でネットにアップリンクしてたのと、低スペックな仮想マシン上で実行したことも相まって、終わるまで9時間くらいかかりました。。。

 .iso ( kali 2016.1 のダウンロードはこちら https://www.kali.org/downloads/ ) からクリーンインストールしたほうが早かった。。。かも。

 

 アップデート完了後のカーネルとバージョン情報はこんなでした。

 

 

 

Linux サーバー初期設定

 Linux 構築時の初期設定をまとめました。 自分流ですが、だいたいいつもこんな設定をしてから使い始めてます。 (以下、コマンドやパラメータは CentOS 6 (64bit) でのものです。)

 

【おおまかな初期設定の流れ】

  1. ユーザの追加。
  2. root ユーザ での ssh ログインを禁止。 (必ず一般ユーザでログインしてから su か sudo する)
  3. su / sudo できるユーザを登録。
  4.  ネットワーク(IP アドレスなど)の設定。
  5.  セキュリティ関連の設定。
  6. 必要なアプリケーションのインストール

 

§ 1. ユーザの追加。

 一般ユーザーを追加します。 (セキュリティ上の観点から、必ず一般ユーザでログインし、 root 権限が必要な場合はその都度 sudo か su しましょう)。

 ユーザー名「user001」さんを登録。

# useradd user001

 

 ユーザ「user001」さんにパスワードを設定。

# passwd user001
Changing password for user user001.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

 

 

§2. root ユーザでの ssh 接続を禁止

 root ユーザで直接 ssh 接続できてしまうのはセキュリティ上の観点から好ましくないので、禁止します。

 /etc/ssh/sshd_config の中の PermitRootLogin を no に指定します。

# vim /etc/ssh/sshd_config
#PermitRootLogin yes
PermitRootLogin no

 

 変更後、sshd を再起動します。

# service sshd restart
sshd を停止中:                            [  OK  ]
sshd を起動中:                            [  OK  ]

 

 

§3. su、sudo できるユーザを制限

# vim /etc/pam.d/su
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth            required        pam_wheel.so use_uid
auth            substack        system-auth
auth            include         postlogin
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         include         postlogin
session         optional        pam_xauth.so

 6行目の 「auth            required        pam_wheel.so use_uid」 のコメントを外して有効にします。

 

# visudo
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

「%wheel>-ALL=(ALL)>——ALL」  のコメントを外して有効にします。(CentOS 6.7 minimal インストールでは 105行目に上記記述あり)

 

 

§ 4. 管理者ユーザに wheel (root への昇格権限) を付与

# usermod -G wheel user001

 

 確認してみます。

# cat /etc/group | grep wheel
wheel:x:10:user001

 wheel に user001 が追加されました。

 

 

§ 5. ネットワークの設定

 ネットワークまわりについては、Red Hat の ドキュメント がわかりやすいです。 

 主要な設定ファイルは以下になります。

  1. /etc/hosts
  2. /etc/resolv.conf
  3. /etc/sysconfig/network
  4. /etc/sysconfig/network-scripts/ifcfg-ethx

 

 1. の /etc/hosts 、今回は特に記述しないので、飛ばします。(自前の名前解決はせずに DNS を利用)

 2. の /etc/resolv.conf は 4. (ifcfg-ethx) での設定が反映されるようにしているので、割愛します。

 

# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=nekokoneko.miz.blue
#GATEWAY=10.0.255.254
  • 1行目: yes にします。 no はネットワーク使わない。
  • 2行目: IPv6 を使うかどうか。 yes  or no を指定。
  • 3行目: host 名です。 FQDN で指定。(設定しなくても IP通信は可能です)
  • 4行目: デフォルトゲートウェイを指定します。 後述の ifcfg-ethx ファイル内で指定する事もできます。( ifcfg-ethx に記述がない場合は、こちらの値が使用される)

 

 

 ifcfg-ethx ファイルを編集します。 サーバーの環境によって x  の部分が変わります(NIC の数によります。 x は通常 0 から開始されます)。  「#show ip addr 」 か 「# ifconfig -a 」 すると x の部分がわかります。  (今回は 仮想マシンで NIC 1枚 なので eth0 )

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

 

DEVICE=eth0
#DEVICE=eth0:2    ### 複数のIPアドレスをNICに割り当てる場合。 eth0 <-- 1個め、 eth0:0 <-- 2個め、 eth0:1 <-- 3個め・・・
#DEVICE=eth0.100    ### 802.1q  vlan ID = 100の場合。 「lsmod | grep 8021q」してモジュールがロードされていなかったら、「modprobe 8021q」でロードが必要。
#VLAN=yes    ### 802.1q 使う場合。
#DEVICE=bond0    ### bondigインターフェースの場合
HWADDR=90:FB:A6:0A:F7:AE
TYPE=Ethernet
UUID=77c9fc8b-b113-4151-ae82-51606cf23a42
ONBOOT=yes
#NM_CONTROLLED=yes
NM_CONTROLLED=no
#BOOTPROTO=dhcp
BOOTPROTO=none

IPADDR=10.1.10.201
NETMASK=255.255.255.0
#PREFIX=24

GATEWAY=10.1.10.150

PEERDNS=yes
DNS1=10.1.10.254
DNS2=8.8.8.8

#ETHTOOL_OPTS="autoneg off speed 100 duplex full"
#BONDING_OPTS="mode=1 primary=eth0 miimon=1000 updelay=5000"
#BONDING_OPTS="mode=1 primary=eth0 arp_interval=1000 arp_ip_target=+10.0.1.1 arp_ip_target=+10.0.1.2 arp_ip_target=+10.0.1.254"
  • 1 ~ 3 、5行目: 物理デバイス名です。 通常はこの設定ファイル名(ifcfg-xxx) の xxx 部分と同一です。 (備忘録のために複数のインターフェース名を書いてます)
  • 4行目: このインターフェースで 802.1q 使う場合は yes
  • 6行目: MACアドレスになります(物理 NICの MAC を上書きします)。 書かなくてもよいです。 ( NIC と MAC アドレスの紐づけは udev で。  障害などで NIC交換 -> MAC アドレスが変わった -> eth1(とか)になっちゃった場合は 「 /etc/udev/rules.d/70-persistent-net.rules 」 の記述をコメントアウトして再起動すると eth0 に戻る)  同様のパラメータとして、MACADDR がありますが、混在させないこと(どちらか一方のみを記述)。
  • 7行目、8行目: TYPE、UUID。 書かないでよいです。 ifcfg-ethx ファイルがシステム(Network Manager だ!)によって自動的に作成された場合に、記述されます。
  • 9行目: ONBOOT。 yes or no。 OS起動時にこのNICをアクティブにするか、しないか。
  • 10、11行目: yes = Network Manager (GUIの操作ツール) による設定が許可される。 no = 許可しない。 ラップトップPCなどで LAN や Bluetooth や WIFI を頻繁に切り替えて使用する場合は yes が便利ですが、サーバー用途では no にしたほうが無難です。
  • 12、13行目: BOOTPROTO。 このNIC が IP アドレスを取得する方法です。 none、bootp、dhcp の何れかを指定。 固定IPの場合は none を。
  • 15行目: IPアドレスを指定します。
  • 16、17行目: ネットマスクを指定します。 (NETMASK の代わりに PREFIX でも指定できます)
  • 19行目: デフォルトゲートウェイを指定します。 NIC が複数枚あって、どのNIC にデフォルトゲートウェイを設定するか、指定したい場合に有用です。 (たとえば、同じサブネットにNIC 2枚つなぐとか) ※ 複数の ifcfg-ethx でこのパラメータを設定した場合、最後に読み込まれた値が有効になります。    複数 NIC でルーターにするとか IP パケットの取り扱いを詳細に設定したい場合は、iproute2 で。
  • 21行目: PEERDNS=yse の場合、DNS{1,2} = の値を /etc/resolv.conf に書き込みます。 PEERDNS=no の場合、DNS{1,2} = を記述しても何もおきません (/etc/resolv.conf に記述しましょう)。
  • 22、23行目: DNS サーバーを指定します。 (PEERDNS=no にして  /etc/resolv.conf に直接書いてもよいです)
  • 25行目: Ethtool のオプションを指定できます。 この例だと(コメントアウトしてるので反映されませんが)  auto negotiation を OFF にして 100Mbps/Full Duplex 固定にする設定です。
  • 26、27行目: ボンディング インターフェース(にした場合)のパラメータです。 (備忘録でのっけてます)

 

 設定が一通り終わったら、ネットワークインターフェースを再起動して反映させます。

# service network restart
インターフェース bond0 を終了中:                           [  OK  ]

ループバックインターフェースを終了中                       [  OK  ]

ループバックインターフェイスを呼び込み中                   [  OK  ]

インターフェース bond0 を活性化中:                         [  OK  ]

 

 ネットワークの設定が完了して無事にインターネットと疎通できるようになったら、一旦 yum update してパッケージを最新にしておきましょう。

 

§ 6. root 宛のメールを管理者ユーザに転送する。

 /etc/aliases を編集して root 宛のメールを(管理者にでも)転送します。

# vi /etc/aliases
# Person who should get root's mail
#root           mark
root:           user001@xxxxxx.com

 root のエントリーは設定ファイルの最下段にあると思います。 初期状態では このエントリーがコメントアウトされている(ユーザ 「mark」 に転送するそうだ)ので、適宜変更します。

 

 変更を反映します。

# newaliases

 

 

§ 7. SELinux

 SELinux を停止します。  ※ サーバー要件によって、個別に判断が必要です。

 SELinux が有効/無効かの確認方法。

# getenforce
Enforcing
  • Enforcing : SELinux が有効 (ポリシー違反のアクセスは、ログに書き出して拒否する)
  • Permissive : SELinux が有効 (ポリシー違反のアクセスは、ログに書きだすが、許可する)
  • Disabled : SELinux は完全に無効

 

 SELinux の状態確認コマンド。

# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

 

 SELinux の 無効化 / 有効化方法。

 一時的な設定変更の場合、setenforce コマンドで Enforcing / Permissive の切り替えが可能。

# setenforce
usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]

 

 恒久的な変更は、下記のようにファイルを修正後、OS再起動。

# vi /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

 6行目の SELINUX = ******** に適用したい設定を記述します。 指定できる文字列は 3~5 行目に記載があります。

 OS を再起動すると変更が反映されます。

 

 

§ 8. NTP

 時刻同期の設定をします。

 NTP が入っていない場合、yum で追加します。

# yum install ntp

 

 参照する NTP サーバーを追加します。

# vi /etc/ntp.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
server 10.1.10.254 iburst
server ntp.jst.mfeed.ad.jp iburst
server ntp.nict.jp iburst

 7行目から9行目を追加してます。

 

 ntpd を再起動します。

# service ntpd restart

 

 OS 起動時に NTPd も起動するようにします。

# chkconfig ntpd on
# chkconfig --list ntpd

 

 時刻同期状態を確認。

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
-59.124.29.241   133.243.238.244  2 u   20   64   77   71.951   -0.036   0.229
+59.106.180.168  131.112.181.48   2 u  104   64   76   37.789   -0.758   1.208
-66.228.42.59    108.31.199.162   3 u   42   64   77  214.141    2.760   4.602
+129.250.35.250  103.1.106.69     2 u   48   64   77   30.978   -0.625   0.244
x10.1.10.254     .LOCL.           1 u   61   64   77   43.447  -229.57   8.811
+210.173.160.87  133.243.236.17   2 u    7   64  177   38.486   -1.431   2.434
*133.243.238.164 .NICT.           1 u   15   64  177   43.077   -3.176   1.810

 先頭に 「*」 マークが付いているサーバーがあれば、時刻同期は上手く行っています。(上例だと 10行目)

 

 

§ 9.  iptables

 iptables で パケットフィルタリング(= Firewall)を行います。

 サーバーの通信要件によりますが、だいたいこんなエントリーを登録してます。 (設定ファイルの直接編集は非推奨ですが、いつもファイル編集 > service iptables restart しちゃってます)

cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Fri Sep 19 10:51:23 2014
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [3:177]
:OUTPUT ACCEPT [3:177]
COMMIT
# Completed on Fri Sep 19 10:51:23 2014
# Generated by iptables-save v1.4.21 on Fri Sep 19 10:51:23 2014
*mangle
:PREROUTING ACCEPT [2:268]
:INPUT ACCEPT [2:268]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3:177]
:POSTROUTING ACCEPT [3:177]
COMMIT

##
## followings were added by user001.
##
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]


#
## This custom chain logs, then DROPs packets.
##
-N LnD

-A LnD -p tcp -m limit --limit 1/s -j LOG --log-prefix "[TCP drop] " --log-level=info
-A LnD -p udp -m limit --limit 1/s -j LOG --log-prefix "[UDP drop] " --log-level=info
-A LnD -p icmp -m limit --limit 1/s -j LOG --log-prefix "[ICMP drop] " --log-level=info
-A LnD -f -m limit --limit 1/s -j LOG --log-prefix "[FRAG drop] " --log-level=info
-A LnD -j DROP

#
# This custom chain logs, then REJECTs packets.
#
-N LnR

-A LnR -p tcp -m limit --limit 1/s -j LOG --log-prefix "[TCP reject] " --log-level=info
-A LnR -p udp -m limit --limit 1/s -j LOG --log-prefix "[UDP reject] " --log-level=info
-A LnR -p icmp -m limit --limit 1/s -j LOG --log-prefix "[ICMP reject] " --log-level=info
-A LnR -f -m limit --limit 1/s -j LOG --log-prefix "[FRAG reject] " --log-level=info
-A LnR -j REJECT

#
# This chain logs, then DROPs "Xmas" and Null packets which might
# indicate a port-scan attempt
#
-N ScanD

-A ScanD -p tcp -m limit --limit 1/s -j LOG --log-prefix "[TCP Scan?] "
-A ScanD -p udp -m limit --limit 1/s -j LOG --log-prefix "[UDP Scan?] "
-A ScanD -p icmp -m limit --limit 1/s -j LOG --log-prefix "[ICMP Scan?] "
-A ScanD -f -m limit --limit 1/s -j LOG --log-prefix "[FRAG Scan?] "
-A ScanD -j DROP

#
# This chain limits the number of new incoming connections to
#  prevent DDoS attacks
#
-N DDoS

-A DDoS -m limit --limit 100/s --limit-burst 500 -j RETURN
-A DDoS -j LOG --log-prefix "[DOS Attack/SYN Scan?] "
-A DDoS -j DROP

#
# Block IRC ports
#
-A OUTPUT -p tcp --dport 6660:6669 -j DROP

#
# Allow unlimited traffic on the loopback interface
#
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

#
# allow all outgoing
#
-A OUTPUT -m state --state NEW,ESTABLISHED -j ACCEPT

#
# Disallow packets frequently used by port-scanners
#

# All of the bits are cleared
-A INPUT -p tcp --tcp-flags ALL NONE -j ScanD

# SYN and FIN are both set
-A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j ScanD

# SYN and RST are both set
-A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j ScanD

# FIN and RST are both set
-A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j ScanD

# FIN is the only bit set, without the expected accompanying ACK
-A INPUT -p tcp --tcp-flags ACK,FIN FIN -j ScanD

# PSH is the only bit set, without the expected accompanying ACK
-A INPUT -p tcp --tcp-flags ACK,PSH PSH -j ScanD

# URG is the only bit set, without the expected accompanying ACK
-A INPUT -p tcp --tcp-flags ACK,URG URG -j ScanD

# SYN-Flood
# (Request for new connection; large number indicate possible DDoS-type attack;
# same as --syn)
-A INPUT -p tcp --tcp-flags SYN,RST,ACK SYN -j DDoS

#
# ICMP
#

# (4) Source Quench.
# Incoming & outgoing requests to slow down (flow control)

-A INPUT -p ICMP --icmp-type 4 -s 0.0.0.0/0 -j ACCEPT

# (12) Parameter Problem.
# Incoming & outgoing error messages

-A INPUT -p ICMP --icmp-type 12 -s 0.0.0.0/0 -j ACCEPT

# (3) Destination Unreachable, Service Unavailable.
# Incoming & outgoing size negotiation, service or
# destination unavailability, final traceroute response

-A INPUT -p ICMP --icmp-type 3 -s 0.0.0.0/0 -j ACCEPT

# (11) Time Exceeded.
# Incoming & outgoing timeout conditions,
# also intermediate TTL response to traceroutes

-A INPUT -p ICMP --icmp-type 11 -s 0.0.0.0/0 -j ACCEPT

#
# (0 | 8) Allow pings to anywhere.
#

-A INPUT -p ICMP --icmp-type 0 -s 0.0.0.0/0 -j ACCEPT
-A INPUT -p ICMP --icmp-type 8 -s 0.0.0.0/0 -j ACCEPT

#
# AUTH (113) - Allowing your outgoing AUTH requests as a client
#

-A OUTPUT -p tcp --sport 1024: --dport 113 -d 0.0.0.0/0 -j ACCEPT

-A INPUT -p tcp -m state --state ESTABLISHED,RELATED --sport 113 --dport 1024: -s 0.0.0.0/0 -j ACCEPT

#
# smtp server
#
-A INPUT -p tcp -m tcp --dport smtp -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport auth -m state --state ESTABLISHED -j ACCEPT

#
# POP3 (110) - Retrieving Mail as a POP3 client
# POP3S (995) - Retrieving Mail as a POP3S client
# IMAP (143) - Retrieving Mail as an IMAP client
# IMAPS (993) - Retrieving Mail as an Secure IMAP client
#
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -m multiport --sports 110,995,143,993 -m tcp --dport 1024: -j ACCEPT

#
# POP3 (110) - Hosting a POP3 server for remote clients
# POP3S (995) - Hosting a secure POP3 server for remote clients
# IMAP (143) - Hosting an IMAP server for remote clients
# IMAPS (993) - Hosting a Secure IMAP server for remote clients
#
-A INPUT -p tcp --sport 1024: -m multiport --dports 110,995,143,993 -j ACCEPT

#
# http client
#
-A INPUT -p tcp -m multiport --sports http,https,webcache -m tcp --dport 1024: -m state --state ESTABLISHED -j ACCEPT

#
# http server
#
-A INPUT -p tcp -m tcp --sport 1024: -m multiport --dports http,https,webcache -m state --state NEW,ESTABLISHED -j ACCEPT

#
# DNS client (53)
#
-A INPUT -p udp --sport 53 --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT

# TCP client-to-server requests are allowed by the protocol
# if UDP requests fail. This is rarely seen. Usually, clients
# use TCP as a secondary name server for zone transfers from
# their primary name servers, and as hackers.
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED --sport 53 --dport 1024: -j ACCEPT

#
# ntp client
#
-A INPUT -s 0.0.0.0/0 -p udp -m udp --sport 123 -j ACCEPT

#
# Outbound SMTP / e-mail
#
-A INPUT -p tcp -m tcp --sport smtp -m state --state ESTABLISHED -j ACCEPT

#
# FTP (20, 21) - Allowing outgoing client access to remote FTP servers
#                               Active & Passive
#
-A INPUT -p tcp -m tcp --sport ftp -m state --state ESTABLISHED -j ACCEPT

-A INPUT -p tcp -m tcp --sport ftp-data -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p tcp -m tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT

#
# FTPS (989, 990) - Allowing incoming access to your local FTP+SSL server
#
# Incoming request
#
-A INPUT -p tcp -m tcp --sport 1024: --dport 990 -m state --state NEW,ESTABLISHED -j ACCEPT

#
# Normal Port mode FTP+SSL data channel responses
#
-A INPUT -p tcp -m tcp --sport 1024: --dport 989 -m state --state ESTABLISHED,RELATED -j ACCEPT

#
# Passive mode FTP data channel responses
#
-A INPUT -p tcp -m tcp --sport 1024: --dport 1024: -m state --state NEW,ESTABLISHED -j ACCEPT

#
# ssh client
#
-A INPUT -p tcp -m tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

#
# ssh server
#
-A INPUT -p tcp -m tcp --dport 22 -m state --state INVALID,NEW -j LOG --log-prefix "iptables(ssh/22 connection): " --log-level=info
-A INPUT -s 0.0.0.0/0 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

COMMIT

 

 

§ 10. ランレベルの確認

 好み(というか用途)次第ですが、ランレベルは 3 のほうがよりセキュア(なはず)です。

  • ランレベルの確認
# runlevel
N 3

 

  • ランレベル変更

 一時的な変更は telinit コマンドで 。

# telinit 3

 

 永続的な設定は /etc/inittab に記述します。

# vi /etc/inittab
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

 最下行の 数字 の部分を変更します。

 

 

§ 11.  便利そうなパッケージの追加

 これも要件次第ですが、入っていると便利そうなパッケージを追加しておきます。 (インストール時のパッケージ選択によっては、すでに入っているかもしれません)

 ※ 3rd パーティレポジトリ(EPEL とか)からのパッケージ取得は、今回は割愛します。 また別途別の備忘録にする予定です。

  • man ページ関連
# yum install man.x86_64 man-pages.noarch man-pages-ja.noarch

 ※ 依存関係にある XZ Util (xz-4) も併せて導入されます。

 

  • vim enhanced
# yum install vim-enhanced.x86_64

 ※ 依存関係にある perl なども併せて導入されます。

 

  • mail コマンド
# yum install mailx

 

  • bind ユーティリティ (dig とか nslookup とか)
# yum install bind-utils

 

  • sysstat
# yum install sysstat

 

  • wget
# yum install wget

 

  • tcpdump
# yum install tcpdump

 ※ 依存関係にある libcap も併せて導入されます。

 

  • nkf
# yum install nkf

 

  • telnet
# yum install telnet

 

  • Base システムをまるっと入れてしまったりとか、
# yum groupinstall base

 

  • セキュリティ関連のツール  をまるっとインストールしたり、
# yum groupinstall security-tools

 

  • ネットワーク関連のツール をまるっとインストールしてしまうのもいいかも。
# yum groupinstall network-tools

 

 このあと、例えばサーバ用途であれば、監視 とか ログローテーション(保存期間) とか syslog の監査だとか、いろいろやらなくちゃですが、そちらについてはまた別の機会に備忘録したいと思います。

 今回の備忘録は以上となります。

 

 

 

OpenVAS-8

 OpenVAS-8  (http://www.openvas.org) を使用して、手持ちのサーバーの脆弱性検査を実施してみます。

 

§ 1. OpenVAS について

 OpenVAS (Open Vulnerability Assessment System )はオープンソースの脆弱性評価システムです。

 無償で(GNU GPL)で利用でき、 44,000 を超えるNVTs ( Network Vulnerability Tests = 脆弱性のテスト) で 観測対象に既知の脆弱性があるか、検査が行えます

 OpenVAS は 脆弱性スキャナとして著名だった Nessu から派生しました。 2005年に Nessus が tenable社 の商用製品(オープンソースからプロプライエタリ・ソフトウェア(クローズドソース))になった事をきっかけに、有志により Nessus としてフォークされ、現在(2015.11 時点)も活発に開発が続いています。

 

【OpenVAS-8 の構成要素】

 ユーザーに操作環境を提供するクライアント、スキャンやマネージメントを担当するサービス、検査結果やNVTsなどを格納するデータ、 などの複数のコンポーネントから構成されます。

 

 OpenVAS の操作はブラウザから行います。 GUI で直感的な操作が可能です。 (CLI での操作も可能。)  

 主要なコンポーネントは Linux 上で稼動します。(クライアントは Windows 上でも。)  各コンポーネントは 1台のマシン上で稼動させてもよいし、複数のマシンに分散することもできます。

 

 OpenVAS のインストール方法は主に 2つあり、

  • Source からインストール
  • Binaly Package (3rd Party による提供) をインストール

 

 今回は手軽に導入したかったので、Binaly Package  ~ OpenVAS-8 がプレインストールされた Kali Linux 2.0 ( on VMware Player ) ~ を使います。

 

§ 2. Kali Linux on VMware の導入

 VMWare 用の Kali Linux イメージを 入手 します。 (今回は Kali-Linux-2.0.0-vm-amd64.7z をダウンロード)

 

 7-Zip で圧縮されているので、対応したアーカイバが必要です。 展開が終わったら、仮想マシン構成ファイル( .vmx )を VMware Player にインポートします。 (VMware Player のインストールと 仮想マシンのインポートは割愛します。 Kali Linux に IPアドレスを設定するなどの初期設定は、以前の備忘録 を)。

 仮想マシンが起動しインターネットと疎通できる状態になったら、OSやアプリケーションの更新を実施しておきます。

kali:~# apt-get update
kali:~# apt-get upgrade
kali:~# apt-get dist-upgrade

 

§ 3. OpenVAS-8 のセットアップ

  Kali Linux の OpenVAS 設定方法ページ を参考に、セットアップを行っていきます。(コマンド 1つだけなので、特にむずかしくはありません)

 Kali には openvas がプレインストールされているはずですが、( 下記のように apt-chace で確認できます。 インストールされていない場合は、「 パッケージが見つかりません 」  とったメッセージが表示されます)

root@kali:~# apt-cache show openvas
Package: openvas
Version: 8.0+kali2
Architecture: all
Maintainer: Mati Aharoni <muts@kali.org>
Installed-Size: 52
Depends: greenbone-security-assistant (>= 6.0.1), openvas-cli (>= 1.4.0), openvas-manager (>= 6.0.1), openvas-scanner (>= 5.0.1), sqlite3, xsltproc, rsync
Conflicts: gsd
Homepage: http://www.kali.org
Priority: extra
Section: net
Filename: pool/main/o/openvas/openvas_8.0+kali2_all.deb
Size: 10722
SHA256: 7baa0b34769f0c6e6be6c54b44457f7da75f5cf260b4918627e552ed793ff5bc
SHA1: 04abe85edac2f18de7dd33b9854da0032d96c172
MD5sum: c2868397c273979a4489f672dcebede4
Description: dummy package for openvas
 Dummy package for the opvas vulnerability scanner.
Description-md5: 119ac92ce77042f9a2c3cd2868354d17

root@kali:~#

 

 入っていなかった場合は、下記コマンドでインストールします。

root@kali:~# apt-get install openvas

 

 セットアップです。 

 「 openvas-setup 」 コマンドを実行すると、初期設定と最新のルールセットなどのダウンロードが始まります。 完了まで時間がかかりますので、気長に待ちましょう。 (環境にもよりますが、終了するまで数十分程度。) 

 なお、rsync を使ってリモートサーバーからファイルを取得していますので、FIreWall などが通信系路上にいる場合は、tcp/873 を許可してあげてください。

root@kali:~# openvas-setup
/var/lib/openvas/private/CA created
/var/lib/openvas/CA created

[i] This script synchronizes an NVT collection with the 'OpenVAS NVT Feed'.
[i] The 'OpenVAS NVT Feed' is provided by 'The OpenVAS Project'.
[i] Online information about this feed: 'http://www.openvas.org/openvas-nvt-feed.html'.
[i] NVT dir: /var/lib/openvas/plugins
[w] Could not determine feed version.
[i] rsync is not recommended for the initial sync. Falling back on http.
[i] Will use wget

<・・・中略(かなり省いてます)・・・>

Certificate is to be certified until Nov  4 03:36:48 2016 GMT (365 days)

Write out database with 1 new entries
Data Base Updated
Rebuilding NVT cache... done.
User created with password '5cd4661c-e4fd-4531-845c-57cafb0bffc4'.
root@kali:~#

 ここで、コマンド実行ログの最後の行 「 User created with password 」( 上記例だと20 行目)に注目してください。

 シングルクォーテーション  ‘ ‘ で囲まれた部分にデフォルトユーザ の 初期パスワードが表示されます。 この後必要になりますので、忘れずに控えます。

 

 セットアップが完了すると、openvas のプロセスが 3つ起動し listen 状態になります。

  • OpenVAS Manager (openvasmd)      tcp/9390
  • OpenVAS Scanner (openvassd)          tcp/9391
  • GSAD (gsad)                                                   tcp/9392
root@kali:~# netstat -atnp
稼働中のインターネット接続 (サーバと確立)
Proto 受信-Q 送信-Q 内部アドレス            外部アドレス            状態        PID/Program name
tcp        0      0 127.0.0.1:9390          0.0.0.0:*               LISTEN      3042/openvasmd  
tcp        0      0 127.0.0.1:9391          0.0.0.0:*               LISTEN      3016/openvassd: Wai
tcp        0      0 127.0.0.1:9392          0.0.0.0:*               LISTEN      3047/gsad 

 

§ 4. OpenVAS にアクセス

 Web ブラウザから OpenVAS にアクセスします。

 Kali 2.0 上の OpenVAS-8 では、初期設定ではローカル( 127.0.0.1 )のブラウザからのみアクセスを許可しているため、外部のブラウザから接続する場合は、設定変更(許可)が必要です。

root@kali:~# vim /etc/default/greenbone-security-assistant
# The address the Greenbone Security Assistant will listen on.
#GSA_ADDRESS=127.0.0.1      ## この行をコメントアウト
GSA_ADDRESS=0.0.0.0         ## この行を追加

 GSA_ADDRESS= x.x.x.x が接続を許可する IPアドレスの指定になります。 初期設定では 127.0.0.1 が記載されていますので、コメントアウトするか削除します。 0.0.0.0 を指定すると、全ての IP からの接続が可能となります。 

 変更後、サービスを再起動します。

root@kali:~# systemctl restart greenbone-security-assistant
  これまではこの手順(gsad の再起動)で変更が反映されていたのですが、今回は何度やっても反映されず。。。

 

root@kali:~# systemctl status greenbone-security-assistant
 ↑ で確認すると、 /usr/sbin/gsad は –listen=127.0.0.1 のまま。。。
 しかたないので、gsad プロセスを kill -9 で一旦終了させて、下記のように手動で起動。。。

 

root@kali:~# /usr/sbin/gsad --foreground --listen=0.0.0.0 --port=9392 --mlisten=127.0.0.1 --mport=9390 &
  して、外部のブラウザから接続できるようにしてみました。。。 原因がよく分からないですが、とりいそぎ これで続けます。 理由がわかったらこの記事を更新しておきます。

 

 https で 9392 ポートにアクセスします。 

  • ローカルのブラウザから https://127.0.0.1:9392
  • 外部のブラウザから: https://OpenVASのアドレス(IP or 名前):9392

 

 アクセスするとログインページが表示されます。

  • Username : admin
  • Password : openvas-setup コマンド実行時に提示された文字列
 デフォルトのパスワードは長くて覚え切れないと思うので、パスワードを変更するか、admin ロールのユーザを追加してしまうのがいいかもしれません。(方法は割愛しますが、 Administration > Users 画面から追加可能です)

 

 ログインに成功すると、Task Wizard 画面が表示されます。 ( 検査対象が 3 台を超えた段階で この Wizard 画面は初期表示されなくなりますが、task 画面にある 紫色のアイコン(魔法の杖みたいな)をクリックすることで、このWizard がいつでも表示できます。)

 

 

§ 5. 脆弱性の検査

 Wizard 画面の Quick Start ボックスに 測定対象の IP アドレス or ホスト名を入力して、「Start Scan」 ボタンをクリックすると、スキャンが開始されます。

 脆弱性診断は 擬似攻撃 でもあります。 無断で第三者の管理する機器やサイトに診断を行った場合、不正アクセス禁止法に触れる場合もあります。 自分の所有物に対してのみ実施するよう、ご注意を。

 

 診断が終了すると、下記のように結果サマリが表示されます。 (診断が終了した対象は、Status が Done になります)

 

  ↑ 上記画面内の Status 「Done」  をクリックすると、その対象で検知された脆弱性の一覧ページが表示されます。

 このシステムの場合、58 件の脆弱性( 重大度:高 2件、中 4件、低 1件、 情報レベル 51件 )が検出されました。

 ↑ 上記画面内の 脆弱性 (Vlunerability)の名称をクリックすると、その脆弱性に関する詳細情報(概要、影響度/範囲、解決策、など)が表示されます。 (下記は、「Cacti Multiple Vulnerabilities-June15 (80/tcp) 」 をクリックしたところ)

 ↑ Cacti (様々なデータをグラフ化できる超便利ソフトです)のバージョンが 0.8.8a で SQL インジェクションの脆弱性があるため、0.8.8d 以上のバージョンにアップグレードしなさい、といった情報が記載されています。

 

【脆弱性の深刻度(Severity)について】
  検査結果に表示される「Severity(脆弱性の深刻度)」 は、CVSS (Common Vulnerability Scoring System / 共通脆弱性評価システム)のスコアリングです。
 0.0 ~ 10.0 の範囲で、値が高いほど深刻度が高い事を表します。
 CVSSは NIAC ( National Infrastracture Advisory Council / 米国家インフラストラクチャ諮問委員会)で2004年10月に原案が作成され、現在は FIRST (Forum of Incident Response and Security Teams)が 管理しています。

 

 

§ 6. よく使用する画面の解説

Scan Management > Task

 タスク(検査)の新規作成(星印の青アイコン)/ タスクウィザードの起動(杖印の紫アイコン)や、実施したタスクの結果サマリーが表示されます。

  • Name : タスク(検査)の名称一覧。
  • Status : タスクの状況です。 検査が進行中(緑のプログレスバー)、検査完了(Done)、などが表示されます。 Done のアイコンをクリックすると、診断結果の詳細(結果一覧)が表示されます。
  • Reports : 検査回数、最終検査日が表示されます。
  • Severity : 脅威度。 対象に内在している脅威の度合いが、赤(重大)、黄(中程度)、青(軽微)で表示されます。
  • Trend : 前回の検査から、脅威度が増えたか(上向き矢印)、減ったか(下向き矢印)、変化なし(右矢印)が表示されます。
  • Action : タスクの再開/停止、削除などが行えます。(アイコンにマウスオーバーすると説明が表示されます)

 

Scan Management > Reports

 診断結果の一覧(サマリ)が表示されます。

  • Date : 診断日時が表示されます。 クリックすると、診断結果の詳細(結果一覧)が表示されます。
  • Status : 診断の状況です。 検査が進行中(緑のプログレスバー)、検査完了(Done)、などが表示されます。
  • Task : タスクの名称。
  • Severity : 脅威度。 対象に内在している脅威の度合いが、赤(重大)、黄色(中程度)、青(軽微)で表示されます。
  • Scan Results : 脅威度(大)(中)(軽微)(情報)の数が表示されます。 (False Positive は、「完全には判断しきれないが、脆弱性の可能性があるもの」 といった意味になります。)

 

§ 7.OpenVAS の起動コマンド、アップデートなど

 1) アップデート

 NVTs などの各種データをアップデートするには、下記コマンドを実行します。

root@kali:~# openvas-nvt-sync
root@kali:~# openvas-scapdata-sync
root@kali:~# openvas-certdata-sync
  • NVT = Network Vulnerability Tests
  • SCAP = Security Content Automation Protocol
  • CERT = Computer Emergency Respone Team

 

 2) OpenVAS の起動

 OpenVAS が起動していない場合は、下記コマンドで起動します。

root@kali:~# openvas-start

 もしくは、

root@kali:~# service openvas-scanner start
root@kali:~# service openvas-manager start
root@kali:~# service greenbone-security-assistant start

 

 openvas-start 実行時にエラーなどが出る場合は、openvas-chechk-setup コマンドで問題を確認、FIXします。

root@kali:~# openvas-check-setup
 <ここに長々と診断結果が出力されるので、
error になっている箇所を探し、
提示されている FIX 案を試してみます。>

 うまく行かない場合は 「openvas-setup 」コマンドの再実行で回復する場合があります。

 

 3) OpenVAS の停止

 OpenVAS を停止する場合は、下記コマンドを実行します。

root@kali:~# openvas-stop

 もしくは

root@kali:~# service openvas-scanner stop
root@kali:~# service openvas-manager stop
root@kali:~# service greenbone-security-assistant stop

 

 今回の備忘録は以上となります。

 ユーザーインターフェースがすべて英語なのでとっつきにくいかもしれませんが、サーバー公開前の最終チェックや、日々の運用のお供にと、なにかと役に立つツールですので、是非お試しください。

 

 

XenServer 6.5 を使ってみました

 XenServer は オープンソースの仮想化プラットフォーム (1 つのハードウェア上で複数のオペレーティング・システムを並列稼働できるシステム) です。

 Xen Project  で開発されている ハイパーバイザー と XAPI toolstack をベースに構成されており、もともとは Ctrix で開発・販売されていましたが 、2013年にオープンソースプロジェクト化 (xenserver.org) され、現在はだれでも無償で利用できるようになりました。(Ctrix から商用サポート(有償)も提供されています。)

 XenServer を使用するには、物理コンピュータが少なくとも2台必要になります。 ( 1台は XenServer = ハイパーバイザが稼動、 1台は XenCenter = XenSerer の設定・管理用)

 XenServer 6.5  の稼働要件は こちら 。 (日本語インストールガイド にも同様の記載があります)

 最低稼動要件は、64bit 対応の x86 CPU(1.5GHz 以上)、RAM 2GB 以上、ローカル接続のストレージ(16GB 以上)、NIC(100Mbit/s 以上)とそれほど高くないので、最近の PC であれば問題なく稼動させる事ができると思います。 (最低要件だと仮想マシンが 1 , 2 台程度しか動かせないですが)

 

【 稼動イメージ 】

image1

 上図は XenServer 本体の稼働イメージ(アーキテクチャ)です。 (Citrix の技術情報より引用)。  

 ハードウェア上で Xenハイパーバイザ が稼動し、ハイパーバイザ上で 複数のゲストOS を稼動させることができます。(稼動できる上限はこちら)  

 また、XenServer 本体とは別に、XenCenter (XenServer を操作・管理する GUI ツール) 用の Windows マシンが必要になります。

 

 

 今回は、手元にあまっていた WIn XP 時代に使っていたデスクトップPC x 1台に XenServer をインストールして使ってみました。

 

【 XenServer にするデスクトップPCのスペック 】

  • 機種 : Lenovo / ThinkCentre A58 Small
  • CPU : Intel Core2 Duo E7500 @ 2.93GHz
  • Memory : 4GB
  • HDD : 300GB
  • NIC : 1枚

 ※ インストール中にHDD はフォーマットされるので、大事なデータが入っている場合は バックアップを。

 XenCenter には、 Windows 7 のラップトップマシンを使用。

 

 

【 XenServer のインストール 】

§1. XenServer / XenCenter のダウンロード

 xenserver.org の ダウンロード ページから XenServer 6.5 の iso イメージ と XenCenter のインストーラー をダウンロードします。  (Citrix の ダウンロードサイト も利用できます。 こちらはユーザ登録(ログイン)が必要)

  今回は、「XenServer-6.5.0-xenserver.org-install-cd.iso」 と 「XenServer-6.5.0-SP1-XenCenterSetup.l10n.exe」 をダウンロード。

 .iso のほうは別途 CD (か DVD)に焼いておきます。 (方法は割愛しますが、Microsoft が紹介している方法を こちらに

 

§2.  XenServer インストール

 作成した インストール CD/DVD から PC(今回の場合は Lenovo A58) を起動 します。

 起動画面です。 (Welcome メッセージの後に 「ENTER キーを押しなさい」 と出ますが、押さなくてもしばらくすると自動で先に進みました)

 

 キーマップの選択画面が出ます。 日本語キーボードを使用するので、 「jp106」 を選択 (青色ハイライト)して先に進みます。 (カーソルキー  で項目選択、 Tab キー  で キーマップ選択ページと 「Ok」ボタン間を ジャンプできます)

 

 ライセンス契約書 (EULA : End User License Agreement) が表示されます。 続行するには 「Accept EULA」 を選択します。

 

 仮想マシン用のストレージを選択します。 今回は XenServer に使用する PC (Lenovo) の ローカル HDD x 1 台(sda)のみになるので、sda を選択 (デフォルトでこれにチェックが入っています)、  Ok を押して次に進みます。 (F5 キーで対象ディスクの詳細情報が表示されます)

 「Enable thin provisioning」 は未チェックのままで。 (この機能は  XenDesktop (Citrix が提供する VDI(デスクトップ仮想化)のアプリケーション) と XenServer を併用する場合のみ使用可能で、有効にすると IntelliCache が機能し VDIのパフォーマンスがアップするそうです)

 

 インストールソースを指定します。 今回はローカルの CD/DVD ドライブを使用するので、「Local Media」 を選択(青ハイライト)し、 Enter キーを押して次に進みます。

 

 Local Media を選択すると、他の CD からサプリメンタルパック (OEM パートナーなどから提供される機能追加やドライバ追加などが入った拡張ディスク) をインストールするか聞いてきます。

 今回は 「No」 で。

 

 インストールに使う CD の整合性を検証(MD5 チェックサムの検算)するかを訪ねられます。 今回はスキップ。

 

 root ユーザのパスワードを設定します (確認のため、同じフレーズを 2回入力します)。 

 このパスワードは、XenCenter から XenServer に接続するとき、または xsconsole (CLIでの操作) にログインする際に必要になります。 (XenServer は Linux  kernel で稼動していますので、いわゆる Linux の root ユーザのパスワード設定になります。)

 

 XenServer の IP アドレス(管理インターフェース用)を設定します。 DHCP or  固定(Static) IP が選択できます。 今回は固定 IP を指定します。

 

 Hostname の設定と DNS サーバーの指定を行います。

 

 タイムゾーンを選択します。 今回は Asia を選択。

 

 続いて都市を選択。 今回は Tokyo。

 

 NTP を使用するか、尋ねられます。 今回は使用 (Using NTP) します。

 

 続いて NTP サーバーを指定します。

 

 最後に、「Install XenServer」  を選択し、インストールを実行します。

 

 しばらくすると、インストールが完了 (「Installation Complete」 画面が表示) します。 CD を取り出して、「Ok」 を押して再起動します。

 

 再起動が完了すると、管理画面が表示されます。 IP アドレスの再設定や、Comannd Shell への切替などがここから行えます。

 ここで、Keyboard の設定を 「Japanese 」に変更しておきます。

 

 なお、初期状態では、XenServer への root ユーザーでの ssh 接続 が許可されています。

 運用上これが好ましくない場合は、この管理画面の 「Remote Service Configuration」 から ssh 接続を無効にしたり、

 /etc/ssh/sshd_config で下記のような制限を追記したり、

PermitRootLogin no     #root ユーザでのログインを禁止
PermitRootLogin without-password     #root ユーザでログインするには sshキーが必要

 

 iptables で接続元のIP制限をかけるなど、運用に応じた対応が必要です。

 

 

【 XenCenter の導入 】

 次は XenCenter を導入します。 

 XenCenter は XenServer をリモートから操作・管理するアプリケーションで、Windows 上で実行されます。 今回は Windows 7 にこれをインストールします。

 

§1. XenCenter のインストール

 ダウンロードしたインストーラー (今回は 「XenServer-6.5.0-SP1-XenCenterSetup.l10n.exe」 ) を実行します。

 

 「次へ」をクリックして続行。

 

  運用方法次第ですが、今回は 「すべてのユーザ」 を選択。 (画像は現在のユーザになってますが) 「次へ」をクリックして続行。

 

 「インストール」 をクリックして続行。

 

 「完了」 をクリックして終了です。

 

 

§2.  XenCenter から XenServer に接続

 XenCenter を起動します。 ( スタート > すべてのプログラム > Citrix > Citrix XenCenter )

 

 ここに、さきほど作成した XenServer を追加します。 

 ホームタブにある 「サーバーの追加」 アイコンをクリックし、対象となる XenServer の情報を入力し、「追加」 をクリックます。 ( もしくは、メニューバーの 「サーバー」 > 「追加」、か、ツールバーの 「新規サーバーの追加」アイコン )

 

 XenCenter の左側 管理ペインに XenServer が追加されました。

 

 

§3. Hotfix 6.5 SP1 の適用

 最後に、これまでにリリースされている Hotfix を適用します。

 現時点で(2015年10月) 6.5 SP1  と Hotfix が 3本リリースされていますので、適用を行います。  (なお、6.5 になってから、無償版でも XenCenter からパッチ適用が出来るようになったようです。 6.2 以前は、CLI から xe コマンドでパッチ適用をしておりました。)

 xenserver.org の 6.5 SP1 ダウンロードページ から 6.5 SP1 を取得します。 (6.5 SP1 の リリースノートは こちら

 ダウンロードした .zip ファイル (今回の場合は XS65ESP1.zip) を XenCenter を起動している PC の適当な場所に解凍します。

 

 XenCenter から、ツール > アップデートのインストール を選択。 アップデートのインストール ウィザードが起動するので、「次へ」 をクリック。

 

 アップデートの選択 画面 中央やや左下の 「追加」 をクリック。

 

 さきほど解凍したアップデートファイル(拡張子が .update のもの)を選択 (今回の場合は、 XS65ESP1.xsupdate) し、「開く」 をクリック。

 

 「次へ」 をクリックして続行。

 

 サーバーの選択 画面で、SP1 を適用するサーバーにチェックを入れ (今回の場合は、XenServer001) 、「次へ」 をクリック。

 

 アップロードが完了したら、「次へ」 をクリックして続行。

 

 事前チェックの結果を見守ります。 パスしたら、「次へ」 をクリック。

 

 アップデートモードの選択。 今回はパッチ 1本なので、「アップデート後タスクを自動実行」 を選択し、「アップデートのインストール」 をクリック。

 

 進捗が画面に表示されますので、しばらく見守ります。 無事に終了(XenServer の再起動を伴います)すると、画面下部の 「完了」 ボタンのグレーアウトが解除されますので、「完了」 をクリックして終了です。

 

 適用されたアップデート一覧は、サーバーの 「全般」 タブ(最下段にあります)から確認できます。

 

 6.5 SP1 以降にリリースされたパッチ(2015.10月時点で、3つほど)についても、同様に適用しておきます。

 

 上記 3ファイルをダウンロード、解凍したところ

 

 SP1 と同様の手順で適用していきます。

 

 さきほどの 3つを追加。( この後わかったのですが、3つを一度に適用できないようで、最上段のもの(この例では 1004)のみ適用されました。 残りの2つを適用するために、同じ作業を 2回繰り返し)

 

 適用するサーバーを選択。

 

 合計 3パッチ適用ですので、今回は 「アップデート後のタスクを自動で行う」 を選択します。

 (先に記したように、この作業をあと 2回、ES1002 と ES1003 をそれぞれ適用し、3つ目のパッチに適用時に、「アップデートタスクを自動的に実行」 を選択して、XenServer を再起動。)

 

 (update あてる毎に再起動しなかったせいか) アップデート一覧を確認したところ、まだ再起動しないといけないようなので、

 

 再度、再起動をしたところ、全ての適用が完了しました。

 

 

§3. 仮想マシンを作成

 これで、XenSerber、XenCenter ともに準備が整いましたので、早速 仮想マシンを作成してみます。 今回は、CentOS 7 を入れてみます。

 ツールバーから、VM > 新規VM を選択。 VMテンプレートは  CentOS 7 を選択。

 

 仮想マシンの名前を入力します。 

 

 インストールメディアを選択します。  今回 CentOS 7 の インストールファイル(.iso)は 共有サーバー上(Windows / CIFS)に置いたので、画面 中央 右側の 「新規 ISO ライブラリ」 をクリックして、 新規にインストール用ライブラリを作成します。

 

 ISO ライブラリ の 「Windows ファイル共有(CIFS)」 を選択して、「次へ」。

 

 ストレージリポジトリの名称を入力。 今回はデフォルトの名前を使用。

 

 共有フォルダ(CIFS)のパスや、 ID/パスワードを入力し、「完了」 をクリック。 (下図では空欄ですが)

 

 共有フォルダへのアクセスに成功すると、インストールメディアの選択欄(プルダウンメニュー)に、先ほど作成した CentOS 7 の .iso が出てきますので、これを選択して 「次へ」。

 

 続いてホームサーバー(仮想マシンが実行される場所)の設定です。今回は、XenServer が 1台(共有ストレージもないし)なので、デフォルトのまま(ホームサーバーを指定するにチェック)で、「次へ」を押して進みます。

 この作業中、 Lenovo マシンが不調(※1)に陥ってしまい、急遽 別の PC (メモリを1GBしか積んでない。。。) に XenServer をインストールして続行しております。  ・・・空きメモリがほぼないので、仮想マシンの起動ができないですが。。。
※1 : XenServer 6.2 では問題なく動いていたのですが、6.5 だとなぜかフリーズが頻繁。。。 デバイスドライバあたりの相性でしょうか。。。><

 

 次に、仮想マシンに割り当てる CPU と メモリの設定を行います。 ここもデフォルト値のままで。 (・・・起動できないと警告されてますが、はい、続けます。。。)

 

 GPU の設定です。 こちらもデフォルト(なし)で。 (6.5 から 仮想 GPU が使えるようになりました)

 

 仮想マシンのストレージの保管場所を指定します。 今回は XenServer 1台だけで共有 DISK とかも使用していないので、デフォルト(XenServer のローカルストレージ)のままで。

 

 ネットワークの設定です。 こちらも今回はデフォルト値で。

 

 「作成」 をクリックします。

 

 作成中に下図のように怒られましたが、リソースが十分にあれば、問題なく仮想サーバーが作成できます。

 

 XenCenter の左側 管理ペインに作成した仮想マシンが表示されます (・・・メモリ不足なため、起動できませんが。。。) 

 

 今回は 仮想マシンに Linux を入れましたが、 Windows も普通に仮想マシンとして実行できます。 (ただし、Windows 仮想マシンを実行するには、Intel VT または AMD-V をサポートする CPU が必要です)

 

 XenServer では、複数の XenServer を組み合わせることで高可用性を狙った運用なども可能です。( XenMotion を使ってシステムを稼動状態のまま他のXenServer に移動したりなど)

 今後取り扱う機会があれば、また備忘録として記録したいと思います。

 

 

 

Kali Linux 2.0

 VMware 用の Kali Linux 2.0 がリリースされていたので、ちょっとさわってみました。

 Kali Linux はペネトレーションテスト(脆弱性診断)に重点を置いて作成されたLinux ディストリビューションです。 Kali 2.0 からは Debian jessie (= Debian 8.*) がベースになり、 Kernel が 4.0 、 対応するハードウェア/Wireless ドライバも増え、様々なデスクトップ環境( gnome、kde、xfce、mate、e17、lxde、i3wm )をサポートするとのこと。  (Kali 2.0 の リリース情報はこちら

 

 今回は 64bit 版の Kali 2.0  VMware イメージをダウンロード。 ( *.7z で配布されてますので、7-Zip に対応した 解凍ソフトが必要です。)

 

 ダウンロードしたイメージを VMware Player 上で起動。 (画像はないのですが、解凍したファイルを Player の 「仮想マシンを開く」  で読み込めばすぐに使えます。)

 

§ 1. ログイン

 初期登録されているユーザは 「root」、パスワードは「toor」です。 ( Kali 1.* 時代と同じ)

 

 ・・・ Kali 1.* とはガラッと変わりましたね、デスクトップ。

 

 uname -a してみました。 kernel 4.0 になってますね。

 

§ 2. キーボードと言語の変更

 初期状態では、キーボードが英語配列(101)になっているので、日本語配列(106)に変更します。

 デスクトップ左側、最下段のアイコン 「Show Applications」(□ が9つあるやつ)をクリック。

 

  アプリケーションの一覧が表示されるので、その中の 「Setting」 パネル(一覧のかなり下段にあると思います) をクリック。

 

 All Settings ページが表示されます。 中段 Hardware 項目の中に 「Keyboard」 がありますので、これをクリックします。

 

 最下段の 「Input Sources」をクリックして、

 

 Language をクリックします。

 

  表示できる言語の一覧が出てきますので、「日本語」を選択して、Done (右上)ボタンをクリック。

 

 Language を変更すると、Formats も自動で「日本」に変更されます。

 

 続いて、「Input Sources」 にある 「+」 ボタンをクリックします。 Input Source 一覧が出てきますので、選択肢の中から 「Japanese」 をクリックします。

 

 さらにキーボードレイアウトの選択肢で出てくるので、利用環境に合ったものを選択(今回は 「Japanese」を選択) して、右上にある 「Add」 ボタンをクリック。

 

 一旦ログアウトします。(Language 設定画面内に うっすらと 「ログアウト」 のボタンが表示されますので、クリックするとログアウトできます)

 

 再度ログインします。

 デスクトップ右上に、キーボードレイアウト選択スイッチがあるので、 クリックして、Japanese を選択。

 

 これで、デスクトップが日本語に、入力も日本語キーボード(106)になりました。

 

§ 3. ネットワーク設定

 次に、固定 IP アドレスを設定します。(今回、VMware Player のネットワークアダプタ設定は ブリッジにしてあるので、ゲストOS – Kali linux – にはホスト – Windows 7 – 側とは異なる IP アドレスを定義します)

 初期状態だと、loopback インターフェースしか定義されてないです。

root@kali:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
root@kali:~#
root@kali:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:dd:76:0b brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:29ff:fedd:760b/64 scope link 
       valid_lft forever preferred_lft forever
root@kali:~# 

 show ip addr すると、 NIC は eth0 として認識されていますので、

 /etc/network/interfaces を編集して、eth0 に 固定IPを割り当てます。

root@kali:~# vim /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet static
 address 10.1.10.193
 netmask 255.255.255.0
 gateway 10.1.10.254
 dns-nameservers 8.8.8.8

 10行目から15行目までを追記。 IPアドレスはご利用の環境に合うように。

 

 /etc/resolv.conf も編集しておきます。

(/etc/network/interfaces に dns-nameserver を書いたですが、ifup/ifdown、systemctl restart networking しても resolve.conf の内容が変わってくれなかったので。。。 変わらないのは、Network Manager が動いてるせいかな。。。)

root@kali:~# vim /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
#nameserver 192.168.224.2
nameserver 8.8.8.8

 3行目がデフォルト設定なのでコメントアウト(削除でも)、4行目を追記。

 

 インターフェースを起動します。

root@kali:~# /sbin/ifup eth0

 IP アドレスを確認。

root@kali:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:dd:76:0b brd ff:ff:ff:ff:ff:ff
    inet 10.1.10.193/24 brd 10.1.10.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fedd:760b/64 scope link 
       valid_lft forever preferred_lft forever
root@kali:~# 

 

 名前解決できるか、確認してみます

root@kali:~# dig yahoo.co.jp ANY
; <<>> DiG 9.9.5-9+deb8u3-Debian <<>> yahoo.com ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<

 無事に名前解決もでき、Internet に接続できました。^^)

 

 apt-get してシステムを最新の状態にしておきます。

root@kali:~# apt-get update          # パッケージリストの更新
root@kali:~# apt-get upgrade         # インストールされているパッケージの更新
root@kali:~# apt-get dist-upgrade    # インストールされているパッケージの更新 & ディストリビューションの更新

 

§ 4. 時刻設定

 時刻表示が EST になっているので、JST に変更します。 ntp の設定も修正します。

 まずは JST への変更。  tzdata を再設定します。

# dpkg-reconfigure tzdata

 設定ツールがポップアップするので、 Asia > Tokyo と選択します。

Current default time zone: ‘Asia/Tokyo’
Local time is now:      Thu Nov  5 10:34:39 JST 2015.
Universal Time is now:  Thu Nov  5 01:34:39 UTC 2015.

 設定が終了すると、↑ このようにメッセージが表示され、JST に変わります。

 

 続いて、ntp の設定を修正します。 今回は、NICT と インターネットマルチフィード から提供されている NTPサーバーを追加します。

root@kali:~# vim /etc/ntp.conf

 

 NTP Server を追加します。  4行目(インターネットマルチフィード:ntp.jst.mfeed.ad.jp)、5行目(NICT:ntp.nict.jp) を追記してます。

# pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
# pick a different set every time it starts up.  Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>
server ntp.jst.mfeed.ad.jp
server ntp.nict.jp
server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst

 

 NTP を再起動し、

root@kali:~# systemctl restart ntp

 

 同期状態を確認します。

root@kali:~# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp3.jst.mfeed. 133.243.236.17   2 u    6   64    3   35.187  7799.49 7445.62
 ntp-b3.nict.go. .NICT.           1 u   10   64    3   34.939  7355.40 7310.12
 ec2-52-69-228-2 133.243.238.243  2 u   35   64    1   33.654  4576.13 4008.34
 sv1.localdomain 133.243.238.164  2 u   35   64    1   34.453  4687.98 4123.96
*chobi.paina.jp  131.112.181.48   2 u    -   64    1   35.237  8577.00 736.794
 y.ns.gin.ntt.ne 103.1.106.69     2 u    9   64    3   28.752  7576.79 7006.22
root@kali:~#

 

 初期設定はこんなところでしょうか。  

 

 Kali Linux に載ってる各種ツールはまだほとんど触っていないので、機会があればまたここに備忘録します。

 

 

Kali Linux 2.0 のLive USB

Kali Linux を Live USB にしてみたので、その作業記録です。

 Kali の公式ページに作成方法 (Live USBにしてPersistence化) が載ってますが、今回は  Live USB を作成するのに LinuxLive USB Creator を使用しました。 

Kali Linux ってナニ? な方は

 https://www.kali.org/  ← 本家のページはこちらから

 ペネトレーションテスト(脆弱性診断)に重点を置いて作成されたLinux ディストリビューションです。 検査ツールが最初からたくさん入っているので、いろいろ重宝してます。

 ! 脆弱性診断は 擬似攻撃 と同義になる事があります。 第三者の所有物に対して実行すると、不正アクセス禁止法に抵触する事もありますので、ご注意を。

 Live USB ってナニ? な方は

  Wikipedia (https://ja.wikipedia.org/wiki/Live_USB)が解りやすく書いてくれてると思います。

 外付けのUSBメモリからOSを読み込んでPCを起動できるようにしてくれる、スグレものです(PC が USB ブートに対応している必要がありますが)。 ^^)

 Live USB から起動して、PCの内蔵HDDをマウントしてフォーマットしたりパーティション切り直したり、データを抜いたり(!?)するのに重宝します。

 

使用したものは、

  • USBメモリ(32GByte / Green House製 PicoDrive F3)

 Kali Linux をこれにインストール。

 これを使用して Kali Linux を USBメモリにインストール。 Windows 上で稼働するフリーでオープンソースなソフトウェアです。

  • gparted (パーティション操作ツール)が使える Linux マシン

 USB メモリ上に Persistance(※1) 領域を作成・拡張するのに使用します。  ※ gparted でなくとも、パーティション操作できるツールであればなんでも良いです。

 Linux Live USB Creator では、4GByte を超える persistence 領域が作成できません(FAT32 のみサポートのため)ので、4GByte を超えるファイル(persistecen 領域)をこの gparted を使用して作成します。

※ 1  Persistence : 通常、Live USB では OS 上のファイルを修正・変更しても、OS を再起動すると元に戻ってしまいます。 Persistence という変更を保存しておく特別なファイル(casper-rw や overlay-USBLABEL-UUID などとも呼ばれます)を作成することで、変更が保存できるようになります。

 

§1 Kali Linux と Linux Live USB Creator をダウンロード

 Kali Linux は こちら からダウンロード。 今回は 64bit 版の ISO ファイルを選択しました。

 

 Linux Live USB Creator は こちら からダウンロード。 Version 2.9.4 (2015.10時点)を持ってきてインストール(.exe を実行)しました。 

 

 §2 Linux Live USB Creator で Kali Linux を USBメモリにインストール

 まずはUSBメモリをフォーマットしておきます。(Linux Live USB Creator からでもフォーマットできますが、ボリュームラベルを付けておきたいので)

 

 Linux Live USB Creator を起動します。

 

STEP1 : USBメモリの選択

 先ほどフォーマットしたUSBメモリを選択。

 

STEP2 : ソースの選択

 ダウンロードした Kali Linux の ISO ファイルを選択します。

対応リストに無いと怒られますが(Ver 2.9.4 では 32bit 版の Kali のみ 対応 )、気にせずに進みます。 ^^;

 

 

STEP3 : 保存領域の設定

 ここで Persistence の設定をするのですが、対応リストに入っていないLinux ディストリビューションについては、作成できないようになっています(STEP3 でなにも選択できない)。

 対応リストにあれば Persistence の作成(とサイズの指定)ができるのですが、作成できたとしても 4GByte までなので、 ここで作成した場合でも、しなかった場合でも、後述する gparted を使用します。

 

STEP4 : オプション

 今回はどれも未チェックで。(お好みで)

 

STEP5 : 作成開始

 雷 マークのアイコンをクリックして、インストールを開始します。 環境依存ですが、今回は 10分程で完了。

 

§3 Persistence 領域の作成

 続いて、作成した Live USB に Persistence 領域を作成します。

 まず、gparted が使用できる Linux を用意します。(今回は手元に VMware  Player + Kali Linux があったので、そちらを使用)

 ちなみに、作成したLive USB は下記のような使用状況でした。

 USBメモリ上は 1パーティションで、3Gbyteちょっとを使用しているようです。 

 これを 2 パーティションに分割し、一方を OS起動用の領域に、もう一方を 変更箇所保存領域(persistence) にします。

 (OS本体が入っている既存パーティションを 4GByte ほどに縮小(念のため、ちょっと余裕を持たせます)し、空いた残りの 約 27GByte に新規パーティションを追加 (Persistence に割り当て)します。)

 

 VMware(上のkali Linux)を起動し、PCに USB メモリを挿入、VMware 側にマウントしたあと、gparted を起動します。

 gparted 起動直後は、起動 DISK の HDD (/dev/sda) – VMware 上の 仮想マシン(Kali)の仮想HDD – が見えてます。 右上のプルダウンをクリックして、USBメモリ(/dev/sdb)に切り替えます。

 

 上図で緑枠に囲まれた領域、/dev/sdb1 を 4GByte にリサイズし、あまった領域を persistecen ( ext3 ファイルシステム、ボリュームラベルを 「 persistence 」) にしていきます。

 /dev/sdb1 (緑色の枠内)を 右クリック>Unmount を選択してアンマウントします。

 

 アンマウントが終了したら、続いて  右クリック > Resize/Move を選択。

 

 リサイズウィンドウが出ます。 今回は 4GByte に縮めたいので、New Size のボックスに 4096 を入力。(緑枠を摘んで左右に動かしても、サイズ変更できます。 うすく茶色になっている部分がデータの入っている領域、白い部分がデータ無しの部分なので、薄茶を削らないように、縮めます)

 調整が終わったら、画面右下の Reseize/Move ボタンをクリックします。

 ↓ こんな具合に、未使用領域 (unallocated)ができます。

 

 続いて、unallocated (灰色の部分)を右クリック > New を選択して、新しいパーティションを作成します。

 

 File System は 「ext3」 を選択、Label に 「persistence」 と入力し、Add をクリック。

 /dev/sdb2 ができます。

 これで、USBメモリ(/dev/sdb)が 2パーティション(/dev/sdb1、/dev/sdb2)になる準備が整いました。

 

 変更を確定します。 画面上部 緑色のチェックマーク (「レ」みたいなアイコン) があるので、クリックします。

 本当に変更してよいかを尋ねるポップアップが出ますので、 Apply をクリックして変更を確定します。

 

・・・変更反映中・・・

 

 

 変更が完了しました。

 クローズをクリックして終了です。

 

 

§4 Live USB から起動してみる

 作成した Live USB を PC に挿して、USB からブートさせます。 (USB からの起動方法については割愛します。 環境依存ですが、BIOS から起動順番を変更したり、テンポラリでブートデバイスを USB にしたりとか)

 Boot menu が出てきたら、Live USB Persistence を選択して起動します。

 

 起動が完了したら、Persistence の設定を行います。 ( /dev/sdb2 を persistence として使用するための設定が必要 )

 下記のように、 /dev/sdb2 をマウントして、persistence.conf を作成します。 (初期状態では、起動DISK である /dev/sdb1 しかマウントされていないです)

mount /dev/sdb2 /mnt
echo "/ union" > /mnt/persistence.conf
umount /dev/sdb2

 これで準備が整いました。

 OS を再起動して、再度 Boot menu で persistence を選択して起動すれば、完成です。