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 の監査だとか、いろいろやらなくちゃですが、そちらについてはまた別の機会に備忘録したいと思います。

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

 

 

 

Hyper-V Server 2012 R2 その①

 Microsoft の Hyper-V Server 2012 R2  上で 、ゲストのLinux ( CentOS ) のレプリケーションとフェールオーバーを試してみました。

 (今回の備忘録は、Hyper-V Server の構築までとなります。 ゲストOS の レプリケーションと フェイルオーバーについては、 記事 その②で別途書きたいと思います)

 Hyper-V Server 2012 R2 は、Windows Server 2012 R2 に実装されている Hyper-V が単体で利用できる、無償のソフトウェアです。
 Hyper-Vは、1台の物理コンピュータ上で複数のオペレーティングシステムを同時に実行できる環境を提供する、ハイパーバイザ型の仮想化ソフトで、 2012R2 では Linux のサポート強化や、 Hyper-V レプリカ を使用して 稼働中のゲストOS を複製したり(最短で 30秒間隔で差分レプリケーション)、第二世代の仮想マシン(PXEブートやUEFIファームウェアのサポートなどに対応)の提供 など、前世代より強化された機能が提供されています。   稼動させるのに必要なサーバ要件は こちら (英語ですけど。。。) 

 

 

  今回作った構成はこんなです。

 

 Hyper-V  Server x 2台を同じ IPセグメントに接続、ゲストの Linux (Cent OS 6) を レプリケーション させてみます。(フェールオーバーの確認も)

 また、Hyper-V Server の管理用に、別途 Hyper-V Manager (Windows Server 2012 R2) を用意しました。

 

【 Hyper-V Server にするデスクトップPCのスペック (2台とも) 】

  • 機種 : Lenovo / ThinkCentre A58 Small
  • CPU : Intel Core2 Duo E7500 @ 2.93GHz
  • Memory : 4GB
  • HDD : 300GB
  • NIC : 1ポート (Marvell Yukon 88E8057 PCI-E Gigabit Ethernet Controller )

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

 

 

§ 1. Hyper-V Server 2012 R2 のインストール

 まずは Hyper-V Server 2012 R2 を こちら からダウンロード(Microsoft アカウントでのサインインが必要です。  アカウントがない場合は、こちらから 作成 を)して、

 DVDに焼きます。(方法は割愛しますが、Microsoft が紹介している方法を こちらに

 (なお、今回ダウンロードしたファイルは 「9600.16384.WINBLUE_RTM.130821-1623_X64FRE_SERVERHYPERCORE_JA-JP-IRM_SHV_X64FRE_JA-JP_DV5.ISO」 になります)

 焼いたDVD から PC を起動して Hyper-V Server をインストールします。

 インストール DVD から起動。

 

 インストールする言語などを指定します。 お好みの言語やキーボードを指定して、「次へ」をクリック。 (今回は日本語インストーラー DVD をダウンロードしたので、デフォルトで日本語環境が選択されています)

 

 「今すぐインストール」 をクリック。

 

 ライセンス条項が表示されます。 「同意します」 にチェックを入れて、「次へ」 をクリック。

 

 インストールの種類を選択します。 今回は新規インストールになるので、「カスタム(新しいバージョンの・・・)」 をクリックします。

 

 インストール先のHDD を選択します。 今回は内蔵 HDD (300GByte) が 1本なので、「ドライブ0 – パーティション1」 を選択します。

 

 インストールが開始されます。 

 このあと、何回か再起動してインストールが完了、ログイン画面が表示されます。

 

 Ctrl + Alt + Del キーを押してログインします。 初回ログオンなので、デフォルトのAdministrator ユーザでのログインになります。 また、初回パスワード変更を求められますので、画面に従って変更します。

 

 

 パスワード変更が完了しログインに成功すると、CLI画面が2つ (「cmd.exe」 画面と、「sconfig.cmd」 画面) 表示されます。

 Hyper-V Server 単体では、上のように CLI のみの操作となります (※ 時刻設定などは一部の画面は GUI のもありますが、肝心なところは全部CLI)。  

 IPアドレスなどの基本的な設定については、sconfig.cmd 画面(青色の画面)からメニュー形式で設定できます。  (その他 詳細な設定についても 全て CLI からできるようですが、GUI のほうがいろいろと楽そうなので、後述のように Hyper-V Manager を利用します。)

 sconfig.cmd 画面でまずは一通り設定を行いましょう。 今回は、

  1)  Workgroup のまま

  2) コンピュータ名

1台目のHyper-V Server :  HV001

2台目のHyper-V Server : HV002 

  3) ローカル管理者 (今回は特に追加せず)

  4) リモート管理の構成

リモート管理 : 有効

Pingへの応答 : 許可

  5) Windows Update : 手動

  6) 更新プログラムのダウンロードとインストール : 適宜実行

  7) リモートデスクトップ : 有効(すべてのクライアント)

  8) ネットワーク設定 : 固定IPアドレスを設定

としています。(スクリーンショットは割愛します。 画面の指示に従っての設定で、特に難しくありません)

 

 

§ 2. Hyper-V の操作準備

 Hyper-V Sever 2012 R2 本体のユーザーインターフェースは CUI(コマンドライン)のみで、GUI は実装されていません。

 しかし、別途 Hyper-V Manager (Windows Server 2012 R2 に実装のものか、 Windows 8  (のPro/Enterprise のみ)に実装されているもの) があれば、リモートから GUI での操作が可能になります。

 Windows 7 / Windows Server 2008 以前にも Hyper-V Manager  はありますが、これらは同世代( Windows Server 2008 / 2008 R2 )の Hyper-V  までしか管理できない模様(Microsoft サイトでの出典は確認できなかったのですが。。。)なので、 2012 R2 を使用します。

 

 今回は Windows Servver 2012 R2(評価版)を準備し、こちらのHyper-V Manager を使用します。

 インストール直後の Windows Server 2012 R2 であれば、まずは リモートサーバー管理機能(RSAT / Remote Server Asministkation Tools)  機能を有効にします。 (Windows Server 2012 R2 上で 既に Hyper-V を使用している場合は Hyper-V Manager も動く状態になっているので、この手順は不要です)。

(Windows 8 でRSATを有効にする方法は こちら (英語の解説ですけど・・・))

 

 サーバーマネージャーから 「役割と機能の追加」 を起動します。

 

 インストールの種類で、「役割ベースまたは機能ベースのインストール」 を選択。

 

 役割をインストールする対象のサーバーを選択。

 

 役割の選択。 今回の場合、ここは何も選択せずに 「次へ」 。

 

 機能の追加。 ここで 「リモートサーバー管理ツール」 にチェックを入れます。

 

 リモート管理ツールには IIS が必要になります。 インストールされていない場合、下記のように追加するか尋ねられますので、「機能の追加」 をクリックして同時にインストールします。

 

 リモートサーバ管理ツールにチェックが入ったら、「次へ」 で進みます。

 

 追加で必要になる IIS の確認画面です。こちらも、「次へ」 で先に進みます。

 

 IIS の役割選択画面が表示されます。 ここはデフォルトのままで。

 

 「インストール(I)」 をクリックします。

 

 しばらくすると、インストールが終了。

 「閉じる」 をクリックして終了します。

 

 

§ 3. Hyper-V Server への接続

  Hyper-V マネージャを起動して、2台の Hyper-V Server に接続(管理)を行います。 

 Windows Server 2012 R2 で、 「スタート」 > 「管理ツール」 を開き、「Hyper-V マネージャ」 を選択、ダブルクリックして起動します。

 

 Hyper-V マネージャが起動します。

 

 管理対象となる Hyper-V Server を追加していきます。 (今回の場合は、HV001、HV002 の2台)

 右ペインの 「サーバーに接続」 をクリック(もしくは 左ペインの 「Hyper-V マネージャ」を右クリック > 「サーバーに接続」)します。

 「コンピューターの選択」 ウィンドウが出ますので、「別のコンピュータ」 を選択し IP アドレス(HV001のもの)を入力、「OK」 をクリックします。

 

 左ペインに Hyper-V Server が追加されました。(この例だと ホスト名「HV001」)

(上記画面では、RPCサーバと通信できないエラーが出てますが、一時的なもので、最終的には接続できてます。 経緯は本文最下段に。。。)

 

 同様に、もう 1台の Hyper-V Server (HV002) も追加します。

 

 以上で、Hyper-V Server の構築は完了です。 次回 はゲストOS(Linux)をインストールして、レプリケーションやフェールオーバーを行ってみたいと思います。

 

 

==== ==== ==== ==== ==== ==== ==== ==== ==== ==== ==== 

以下は、Manager に Server を登録した際、RPC のエラーが出て接続できなかった際の備忘録です。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

原因は、Hyper-V Manager を 仮想マシン(VMware Player)で実行しており、NIC の設定が ホストと共用( NAT )していたからでした。 NAT やめて Bridge で 固定 IP にしたらすんなり繋がった。。。 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 調査の過程で、便利そうなツール(hvremote.wsf)を見つけたので、その備忘録として調査過程を残しておくことにします。

 

 Serverを追加したところ、 「RPCサーバーを使用できません。 (Hyper-V Server) と (Hyper-V Manager) との間の通信を確立できません。」 との表示。。。

 どうやら、Workgroup に所属する Hyper-V Server をリモート管理するには、いろいろ追加設定が必要( technet の 情報 より)なようです。。。

 Hyper-V Server が Active Directory に参加していればすんなり行くようですが、今回は workgroup のまま、 technet の方法を踏襲します

 ↑  WinSvr2012R2 だと不発でしたので、同ページからリンクを張られている HVREMOTE スクリプト のサイトに記載の 「10-second guide」 -> 「Client and Server both workgroup」 の内容を参考に設定します。

 

 ① まずは、Hyper-V Server 側の設定から。  2台のサーバー(HV001 と HV002) にそれぞれ ローカル管理者を追加します。 (スクリーンショットはありませんが、sconfig.cmd 画面から「 3) ローカル管理者の追加」 を選択し、画面の指示に従いユーザを追加。  今回は、「 admin002 」 というユーザを作成)

 

 ② 次に、Microsoft の John さんが作成したという 便利スクリプト HVREMOTE (hvremote.wsf)を ダウンロード 。  このスクリプトは、Server側(Hyper-V Server) / クライアント側(Hyper-V Manager) の双方で使用しますので、適宜配置(今回は、c:\99.Work フォルダに配置して作業)します。  

 (サーバー側(Hyper-V Server) にはブラウザがないので直接上記サイトからダウンロードできませんので、USBメモリ経由でコピーしました。 ※ サーバー側では FTP コマンドも利用できますが、 WIndows Firewall に遮断されてしまう  ← CLI で設定変更するのが面倒なので)

 このスクリプトですが、引数(リモートサーバーの指定)に IP アドレスが使えない(ホスト名のみ)なので、 hosts ファイルに書いて名前解決しないとです。

c:\99.Work>notepad C:\Windows\System32\drivers\etc\hosts
10.10.10.10    HSV001
10.10.10.11    HSV002

 

 ちなみにこのツール、サーバ <-> マネージャ間の接続状況などのレポートをしてくれる機能もあります。

c:\99.Work>cscript hvremote.wsf /show /targer:HV001
<ここにずらずらとレポートが出てくるので、エラーになっている箇所を探して、対応してみる。 今回の NIC/NAT 問題も、これで気づきました。>

 

 ③ サーバー側(Hyper-V Server)でユーザのアクセスを許可。

c:\99.Work>cscript hvremote.wsf /add:admin002

 サーバー側での設定は以上です。

 

 ④ クライアント側(Hyper-V Manager)の設定に移ります。  リモートDCOM からの 匿名ログオンを許可します。

c:\99.Work>cscript hvremote.wsf /add:admin002
PS C:\99.work> cscript .\hvremote.wsf /anondcom:grant
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.


Hyper-V Remote Management Configuration & Checkup Utility
John Howard, Hyper-V Team, Microsoft Corporation.

Version 1.08 9th Sept 2013

INFO: Computername is win2012r2-001
INFO: Computer is in workgroup WORKGROUP
INFO: Current user is WIN2012R2-001\Administrator
INFO: OS is 6.3.9600 64 ビット Microsoft Windows Server 2012 R2 Datacenter 評価版
INFO: Assuming /mode:client as the Hyper-V role is not installed
INFO: This appears to be a server SKU

INFO: Obtaining current Machine Access Restriction...
INFO: Examining security descriptor
INFO: Nothing to do - ANONYMOUS LOGON already has remote access
INFO: Are running the latest version
INFO: HVRemote complete
PS C:\99.work>

 

 ↑ このあと、「cscript hvremote.wsf /show /targer:HV001」 したらどうやら NAT のせいで RPC が途絶しているようだったので、 VMware Player の NIC 設定を Bridge にして固定IPに変更したら、すんなり繋がりました。 (ですので、上記 ① ~ ④ はやらなくても接続に影響なしです)。

==== ==== ==== ==== ==== ==== ==== ==== ==== ==== ==== 

 

 

 

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 を選択して起動すれば、完成です。

 

 

Windows IPアドレス変更 バッチファイル

 Windows 7 のラップトップPCを使っているのですが、 IP アドレスを変更する機会が頻繁にあるため、バッチファイルに netsh コマンドを記述して手早く切り替えられるようにしています。

  • DHCP で IPアドレスを取得する場合
@echo off
setlocal

rem インターフェイス名称を変数(IFNAME)として定義。名称に空白(スペース)を含むため、""で囲みます。
set IFNAME="ローカル エリア接続"

rem IPアドレスを DHCP で取得。
netsh interface ipv4 set address name=%IFNAME% source=dhcp

rem DNSサーバーのアドレスをDHCPで取得。
netsh interface ipv4 set dns name=%IFNAME% source=dhcp

 インターフェイスの部分は、インターフェース名称 もしくは インデックス で指定します。 (名称は コマンドラインから ipconfig コマンド で確認するか、コントロールパネル のネットワークと共有センター > 「アダプターの設定の変更」 からも確認できます。  一つのLANポートしか持っていない日本語Windows 7 であれば上記の文字列のはず。 また、ちゃんと確認してないのですが、WIndows 10 からは別の文字列になったようです。)

 

 インデックスは、下記のコマンドで確認できます。

netsh interface ipv4 show interface

 下記の場合、「ローカルエリア接続」 の インデックス(Idx)は 「11」 になります。

 

 

  • 固定IP アドレスを設定するバッチファイル
@echo off
setlocal

rem インターフェース名称を変数(IFNAME)として定義。名称に空白(スペース)を含むため、""で囲みます。
set IFNAME="ローカル エリア接続"

rem IPアドレスを変数(IPADDR)として登録
set IPADDR=10.10.10.1

rem サブネットマスクを変数(MASK)として登録
set MASK=255.255.255.0

rem デフォルトゲートウェイを変数(GW)として登録
set GW=10.10.10.254

rem DNSサーバーを変数(DNS1,DNS2)として登録
set DNS1=10.10.10.10
set DNS2=10.10.10.11

rem IPアドレス、マスク、デフォルトGW を設定。
netsh interface ipv4 set address name=%IFNAME% source=static address=%IPADDR% mask=%MASK% gateway=%GW% gwmetric=1


rem DNSサーバーを設定(優先順位 1 に 変数 DNS1 を)(validate=no ; DNSサーバーの検証なし)
netsh interface ipv4 add dnsservers name=%IFNAME% address=%DNS1% index=1 validate=no


rem DNSサーバーを設定(優先順位 2 に 変数 DNS2 を)( validate=no ; DNSサーバーの検証なし)
netsh interface ipv4 add dnsservers name=%IFNAME% address=%DNS2% index=2 validate=no


 

 こんな具合で DHCP用や 各環境用のIP設定バッチファイルを作成し、一箇所のフォルダーに纏めてます。

 各ファイルを右クリックして、「管理者として実行」 すると反映されます。

 

 ちなみに、hosts ファイルへのショートカット

 C:\Windows\System32\drivers\etc\hosts

 もこのフォルダに作成してます。すぐ編集できるので、重宝です。 ^^)

 

 netsh コマンドについては Microsoft の MSDN netsh に詳しく解説があります。