変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

nucでCentOS7

【KVMゲスト】Android-x86でWifiしたい・・・ing

https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Virtualization_Host_Configuration_and_Guest_Installation_Guide/chap-Virtualization_Host_Configuration_and_Guest_Installation_Guide-PCI_Device_Config.html#sect-Virtualization_Host_Configuration_and_Guest_Installation_Guide-PCI_Assignment-AI_device_to_a_host
を見ると
 
# vi /var/log/dmesg
[    4.871293] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUG disabled
[    4.871299] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUGFS enabled
[    4.871304] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEVICE_TRACING disabled
[    4.871307] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEVICE_TESTMODE disabled
[    4.871311] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_P2P disabled
[    4.871315] iwlwifi 0000:02:00.0: Detected Intel(R) Centrino(R) Advanced-N 6235 AGN, REV=0xB0
[    4.871353] iwlwifi 0000:02:00.0: L1 Disabled; Enabling L0S
# lspci | grep Centrino
02:00.0 Network controller: Intel Corporation Centrino Advanced-N 6235 (rev 24)
# virsh nodedev-list –cap pci
pci_0000_00_00_0
pci_0000_00_02_0
pci_0000_00_16_0
pci_0000_00_19_0
pci_0000_00_1a_0
pci_0000_00_1b_0
pci_0000_00_1c_0
pci_0000_00_1c_2
pci_0000_00_1d_0
pci_0000_00_1f_0
pci_0000_00_1f_2
pci_0000_00_1f_3
pci_0000_02_00_0
# virsh nodedev-dumpxml pci_0000_02_00_0
<device>
<name>pci_0000_02_00_0</name>
<path>/sys/devices/pci0000:00/0000:00:1c.2/0000:02:00.0</path>
<parent>pci_0000_00_1c_2</parent>
<driver>
<name>iwlwifi</name>
</driver>
<capability type=’pci’>
<domain>0</domain>
<bus>2</bus>
<slot>0</slot>
<function>0</function>
<product id=’0x088e’>Centrino Advanced-N 6235</product>
<vendor id=’0x8086′>Intel Corporation</vendor>
</capability>
</device>
# virsh edit Android4.4
<controller type=’virtio-serial’ index=’0′>
<address type=’pci‘ domain=’0x0000‘ bus=’0x02 slot=’0x00‘ function=’0x0‘/>
</controller>
がダメ。

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
      </source>
    </hostdev>
が
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </hostdev>
に書き換わったけど変更はできた。

# virsh start Android すると
エラー: ドメイン Android4.4 の起動に失敗しました
エラー: サポートされない設定: host doesn’t support passthrough of host PCI devices
それどころかホストがらの切り離しにも失敗。
# virsh nodedev-dettach pci_0000_02_00_0
エラー: デバイス pci_0000_02_00_0 の切断に失敗しました
エラー: この操作はサポートされていません: neither VFIO nor KVM device assignment is currently supported on this system
 



KVMゲストがSPICEでつながらなくなった?

原因は不明。
yum update したら
いっぱいアップデートがあがったせい?
よく判らないから、/etc/libvirt/qemu.conf を一旦戻し、
spice_tls = 0 を付けてみた。
libvirt で qemuの disable-ticketing
の設定方法は不明のまま。
http://www.spice-space.org/page/SSLConnection の記事が更新されていたのも気になっている。
X-Windowを入れてデスクトップでも確認できるようにした方がよさそう。
参考1:http://manual.geeko.cpon.org/ja/cha.libvirt.connect.html#sec.libvirt.connect.auth.libvirt.sasl
参考2:http://www.atmarkit.co.jp/ait/articles/1006/29/news083.html
ブリッジ接続(br0)をDHCPからstaticにIPを割り振ったのも影響しているかもしれない。
 
しばらくして、SPICEの繋ぐIPアドレスはKVMのゲストではなく、KVMのホストの方だったと思い出した。(大笑
アップデートのおかげなのか?qemu.confを元に戻してもつながるようになった。(感謝感謝
これで電子証明書は無駄になったけどいいや(笑
 
前に買った中華タブレットが不調なのでまた大きな画面でAndroid4.4で遊べるようになるのは助かる。
 



Android X86 4.4 RC2 を入れてみた

# wget http://sourceforge.net/projects/android-x86/files/Release%204.4/android-x86-4.4-RC2.iso/download
100%[======================================>] 348,127,232 3.49MB/s 時間 2m 31s
2014-11-18 18:21:18 (2.20 MB/s) – `download’ へ保存完了 [348127232/348127232]
# mv download android-x86-4.4-RC2.iso
# mv android-x86-4.4-RC2.iso /tmp
パーテーション設定でディスクが認識せず失敗。
リセットすると
Booting from Hard Disk
Boot failed: not a bootable disk
No bootable device.
何が悪いんだろう・・・
1.CentOS7は64ビット(x86_64)。これでデバイスをうまくいかないのは、AndroidX86が32ビット版だからだろう。

※x86 だけど _64が付くとは書かれてない。

2.だからrhel7もダメ。でもrhel6でもダメで、rhel5で落ち付いた。
【動いたスクリプト】

#ネットワークインストールするリポジトリURL指定
IMAGE=/tmp/android-x86-4.4-RC2.iso

#KVM上での名前を指定
IMAGE_NAME=Android4.4
IMG_PATH=/var/lib/libvirt/images

#virt-installでインストールする
  virt-install \
  --name ${IMAGE_NAME} \
  --ram 1024 \
  --disk path=${IMG_PATH}/${IMAGE_NAME}.qcow2,size=16,format=qcow2 \
  --vcpus=1 \
  --os-type linux \
  --os-variant=rhel5 \
  --arch=i686 \
  --accelerate \
  --graphics spice,listen=0.0.0.0 --channel spicevmc \
  --cdrom=${IMAGE}

 ※修正個所 

CFDISKコマンドがfdiskとちょっと違うので、このページの通りにやった方がよさそう。
ネットワークはWifiがうまくいっていないが youtobeも観れるし、中で端末ターミナルを実行すると ip addr で IPアドレスが取れてたからキニシナイ方針。
Googleアカウントを登録しておけばPlayStoreも使えるみたいだ。
他のAndroidエミュレータなどよりは速く動いている感じがする。
spiceでマウスを画面の外に出すにはShift+F12
AndroidX86を正しくシャットダウンするには、Spiceの画面上部分の時刻表示のある黒いバーをマウスでダラダラとドラッグすると、POWER OFFってボタンが出てくるので、それを押す。
デバッグするアプリを放り込む方法が思いつかない。 ←重要!
 



update phpmyadmin

いつまでもアップデートしないと思ったらリポジトリィがepelだった。

yum --enablerepo=epel update phpMyAdmin
================================================================================
  Package            アーキテクチャー
                                    バージョン                リポジトリー  容量
 ================================================================================
 更新します:
  phpMyAdmin         noarch         4.2.10.1-1.el7            epel         4.0 M
トランザクションの要約
 ================================================================================
 更新  1 パッケージ

完了。
ps. 2014/12/23

yum --enablerepo=epel update phpMyAdmin

================================================================================
Package             アーキテクチャー
バージョン             リポジトリー   容量
================================================================================
更新します:
phpMyAdmin          noarch          4.3.2-1.el7            epel          4.2 M
トランザクションの要約
================================================================================
更新  1 パッケージ
ps. 2014/12/24
しかし、phpmyadminのページにはこう書かれていた。
phpMyAdmin の新しいバージョンが提供されています。アップグレードの検討をお奨めします。最新バージョンは 4.3.3 で、2014-12-21 にリリースされています。

# yum --enablerepo=epel info phpMyAdmin
インストール済みパッケージ
名前                : phpMyAdmin
アーキテクチャー    : noarch
バージョン          : 4.3.2
リリース            : 1.el7
容量                : 20 M
リポジトリー        : installed
提供元リポジトリー  : epel
要約                : Handle the administration of MySQL over the World Wide Web
URL                 : http://www.phpmyadmin.net/

さて、yumのepelリポジトリィにアップされるのはいつ頃かな?



【失敗】 CentOS7でKVM(仮想化)Windoesのゲストを作る

※成功例のページはココ
# vi create_kvm_windows_guest.sh

# 元ネタ http://www.server-world.info/query?os=CentOS_6&p=kvm&f=8
#ISOイメージのパス指定
ISOIMG=/tmp/9841.0.140912-1613.FBL_RELEASE_CLIENTENTERPRISE_VOL_X64FRE_EN-US.ISO
#KVM上での名前を指定
  # KVM DOMAIN NAME
  IMAGE_NAME=Win10
  # VIRTUAL DISK FILEPATH
  IMG_PATH=/var/lib/libvirt/images
  # SPICE CLIENT PASSWORD
  PASSWORD=password
  # USE MEMORY SIZE (MB)
  RAM=3096
  # VIRTUAL DISK SIZE (GB)
  DISK=15
virt-install \
  --name ${IMAGE_NAME} \
  --ram ${RAM} \
  --disk path=${IMG_PATH}/${IMAGE_NAME}.qcow2,size=${DISK},format=qcow2 \
  --vcpus=1 \
  --os-type windows \
  --os-variant=win2k8 \
  --network bridge=br0 \
  --graphics spice,port=5900,listen=0.0.0.0,password=${PASSWORD} \
  --video qxl \
  --cdrom ${ISOIMG}
※nucの容量上の問題からメモリやボリュームの量はかなり少な目にしています。
port=5900を指定するとTLS指定になってしまうらしいので ハズした。

portを指定する場合は /etc/libvirt/qemu.conf の
  • spice_listen = “0.0.0.0”
  • spice_tls = 1
  • spice_tls_x509_cert_dir = “/etc/pki/libvirt-spice”

のコメントを解除し、かつ電子署名を作成しないといけないだろう。

# ./create_kvm_windows_guest.sh
ISOイメージファイルはkvmからのアクセス制限のため /tmpに配置。
SPICEにポート:5900  パスワードはpasswordで接続でき、インストまでは進んだけど・・・
ディスクの空き容量が15GBしかなかったので頓挫しそうになった。
インスト終わった時点で8GBにまで増えた。
と云う訳で古いSSDを用意。
・・・
[ 3083.007029] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[ 3083.022819]  sdb: sdb1 sdb2 sdb3 sdb4
[ 3083.027416] sd 6:0:0:0: [sdb] No Caching mode page found
[ 3083.027478] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[ 3083.027536] sd 6:0:0:0: [sdb] Attached SCSI disk
しかしexFATもNTFSでもroot権限になってしまうので、ext3にフォーマットしなおさないとダメだった。
ps.
書かなかったので自分で引っかかってしまった。
firewall-cmdが有効なら、

firewall-cmd –zone=public –add-port=5900/tcp
※ Windowsが安定したら --permanent を付けた方がいい。再起動したら設定が消えるから・・・

iptablesが有効なら、EJECTの前に
-A INPUT -p tcp -m tcp –dport 5900-j ACCEPT
を事前に登録すること。 orz
そして、操作が遅くリブートしてしまったらCD-ROMが認識できないしBIOS画面も開かず
NO BOOTABLE DEVICE
と表示されるだけなので、
以下の方法で残骸を消す。
virsh destroy Win10
virsh undefine Win10
rm /var/lib/libvirt/images/Win10.qcow2
そして、ゲストを作り直す。
やっと間に合ったと思ったら、ブルースクリーン【終了】。
今回のプレビューはJ1900だとダメなのかな?割り当てたDISK:13GBとRAM:2GBでは足りなかったかな?


CentOS7のKVM(仮想化)のCentOS7ゲストの雛型からブログ・サーバを作る

  1. ひな形からブログ鯖のゲストOSを作成
  2. ゲストを複製
    1. # virt-clone -o CentOS7.0 -n *ブログ鯖* -f /var/lib/libvirt/images/*ブログ鯖*.qcow2
      • 割り当て中 *ブログ鯖*.qcow2′ | 20 GB 00:31
      • *ブログ鯖*‘のクローニングに成功しました。
  3. クローン(複製)なのでユニークなハズのUUID、MACアドレス、マシン名までひな形と同じでは都合が悪すぎるのでオフライン(virt-edit)で書き換える
    1. 作成したゲストのMACアドレス確認
      1. # virsh domiflist *ブログ鯖*
        • インターフェース 種類 ソース モデル MAC
        • ——————————————————-
        • – bridge br0 virtio *MACアドレス*
  4. UUID生成
    1. # uuidgen
      • *****-**-*UUID*-**-******
  5. 作成したゲストのネットワークを設定
    1. # virt-edit -d *ブログ鯖* /etc/sysconfig/network-scripts/ifcfg-eth0
      • UUID=*****-**-*UUID*-**-******
      • HWADDR=”*MACアドレス*
  6. 作成したゲストのUDEV設定(MACアドレス変更)
    1. ※無かったけど環境次第かもしれない
      • # virt-edit -d *ブログ鯖* /etc/udev/rules.d/70-persistent-net.rules
        • SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”*MACアドレス*“, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″
  7. ホスト名変更
    1. 作成したゲストのホスト名設定
    2. # virt-edit -d *ブログ鯖* /etc/hostname
      • *ホスト名*
    3. 作成したゲストを起動
      1. # virsh start *ブログ鯖*
      2. ドメイン *ブログ鯖* が起動されました
    4. ルータで*MACアドレス*192.168.*.*が割り当てられていた。
  8. ひな形のMACアドレスが残っていないか確認。
    1. grep *MACアドレス* -r
    2. /etc /lib にはなかった
  9. スナップショット作成
    1. # virsh snapshot-create-as *ブログ鯖* *スナップショット名* ”*コメント*
      • ドメインのスナップショット LAMP が作成されました
  10. LAMP(Apache+MariaDB(MySQL)+PHP)をインストールする
  11. phpをインストールする。 ※元ネタ http://server-setting.info/blog/lamp-wordpress-centos7.html
    1. # yum -y install php-mysql php php-gd php-mbstring
    2. # php –version
      • PHP 5.4.16 (cli) (built: Oct 31 2014 12:59:36)
      • Copyright (c) 1997-2013 The PHP Group
      • Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
  12. mariadb(mysql)をインストールする。
    1. # yum -y install mariadb mariadb-server
    2. # mysql –version
      • mysql Ver 15.1 Distrib 5.5.37-MariaDB, for Linux (x86_64) using readline 5.1
  13. DB起動
  14. # systemctl list-units |grep mariadb
  15. # systemctl list-unit-files |grep mariadb
    • mariadb.service disabled
  16. # systemctl start mariadb.service
  17. # systemctl list-units |grep mariadb
    • mariadb.service
    • loaded active running MariaDB database server
  18. # systemctl list-unit-files |grep mariadb
    • mariadb.service disabled
  19. # systemctl enable mariadb.service
    • ln -s ‘/usr/lib/systemd/system/mariadb.service’ ‘/etc/systemd/system/multi-user.target.wants/mariadb.service’
  20. # systemctl list-unit-files |grep mariadb
    • mariadb.service enabled
  21. データベースのrootのパスワードを設定
    • # mysql_secure_installation
  22. ブログのDBとアカウントを作成 ※なぜかこの方法で作成したアカウントは不調なのでphpMyAdminから作り直し
    1. # mysql -u*管理ユーザー* -p*管理ユーザーのパスワード* -Dmysql < ブログ1用DB作成シェル.sql
    2. # mysql -u*管理ユーザー* -p*管理ユーザーのパスワード* -Dmysql < ブログ2用DB作成シェル.sql
      • DB作成シェル参考
        /* ユーザを新規に作成します。パスワードも設定します。 */
        insert into user set user=”*ブログのDBユーザ*“, password=password(“*ブログのDBユーザのパスワード*“), host=”localhost”;
        /* wordpress用にデータベースを作成します。 */
        create database *ブログのデータベース*;
        /* データベースにユーザが常にアクセスできるようにします。 */
        grant all on *ブログのDBユーザのパスワード*.* to *ブログのDBユーザ*;
        /* 最新に更新 */
        FLUSH PRIVILEGES;
  23. ブログのDBとアカウントを確認
    1. # mysql -uroot -p*rootのパスワード*
    2. # mysql -u*ブログ1用ユーザ* -p*ブログ1用ユーザのパスワード* -D*ブログ1用データベース*
    3. # mysql -u*ブログ2用ユーザ* -p*ブログ2用ユーザのパスワード* -D*ブログ2用データベース*
  24. Apacheをインストールする。
    1. # yum -y install httpd 済みだった
  25. Apacheの設定を変更
    1. # vi /etc/httpd/conf/httpd.conf
      • ServerName *実際のマシン名*
  26. Apacheの起動
    1. # systemctl start httpd.service
    2. # systemctl list-units |grep httpd
      • httpd.service
      • loaded active running The Apache HTTP Server
    3. # systemctl list-unit-files |grep httpd
      • httpd.service disabled
    4. # systemctl enable httpd.service
      • ln -s ‘/usr/lib/systemd/system/httpd.service’ ‘/etc/systemd/system/multi-user.target.wants/httpd.service’
    5. # systemctl list-unit-files |grep httpd
      • httpd.service enabled
  27. iptablesは使わずfirewallをそのまま使うのでファイアーウォール設定
    1. # firewall-cmd –state
      • running
    2. # firewall-cmd –list-services
      • dhcpv6-client ssh
    3. # firewall-cmd –add-service=http –permanent
      • success
    4. # firewall-cmd –list-services
      1. dhcpv6-client http ssh
  28. /var/wwwにブログのバックアップを展開
    1. /etc/httpd/conf.dにブログ1用マルチドメイン設定.confをコピー
    2. /etc/httpd/conf.dにブログ2用マルチドメイン設定.confをコピー
      • マルチドメイン設定参考
        • #NameVirtualHost *:80 ←1つめのマルチドメインのみ#を取る
          <VirtualHost *:80>
              ServerName        *ブログのURL*
              DocumentRoot    “ブログのWordPressの展開先フォルダのフルパス名
              <Directory “ブログのWordPressの展開先フォルダのフルパス名“>
                  Options Includes ExecCGI FollowSymLinks
                  AllowOverride All
                  Order allow,deny
                  Allow from all
              </Directory>
              ErrorLog logs/ブログのエラ-ログ*
              CustomLog logs/*ブログのアクセスログ* combined env=!no_log
          </VirtualHost>
  29. 再起動
    1. # systemctl restart httpd
  30. とりあえずwordpressの設定画面 適当にインストしてテーブルを作る。
  31. phpmyadminをインスト
    1. # yum –enablerepo=epel install -y phpMyAdmin php-mysql php-mcrypt
    2. PC(Windows)からphpMyAdminを使える様に変更
    3. # vi /etc/httpd/conf.d/phpMyAdmin.conf
      • Require ip 127.0.0.1 *PCのIPアドレス*
      • Require ip ::1
  32.  PHPのアップデートサイズを拡張
    1. # vi php.ini
      • post_max_size = 8M ⇒ 16M
      • upload_max_filesize = 2M ⇒ 16M
    2. # systemctl restart httpd
  33. phpmyadminからDBのバックアップをリストアする。
    1. ブラウザ(http://192.168.*.*/phpmyadmin/index.php)からDBバックアップファイルをアップロードしリストア
  34. バックアップ中に白画面になったら・・・処理時間を大幅に拡張
    1. # vi /usr/share/phpMyAdmin/libraries/config.default.php
      • $cfg[‘ExecTimeLimit’] = 300; ⇒ 3600;
  35. WordPressからバックアップファイル付きのメールがうまく送信できない場合は、ブログのURLに対応するように内部?IPアドレスをhostsに追記
    1. # vi /etc/hosts
      • *.*.*.* ブログ1URL
      • *.*.*.* ブログ2URL
  36. クライアント側をシャットダウンし、ゲスト側からブログのスナップショットを作成 ※動作中でも可能だけど、非常に重い。
    1. # virsh snapshot-create-as *ブログ鯖* *スナップ名* “**コメント**”
  37. KVMホスト起動時に一緒に起動させる場合
    1. virsh autostart *ブログ鯖*


CentOS7でKVM(仮想化)のCentOS7ゲストのひな形を作る

  1. CentOS7ネットワークインストールする方法でクライアントを作成する
  2. qcow2形式のイメージファイルを使いファイルサイズを使った分だけにする
  3. ゲストOS作成シェルファイルを作る
    1. # vi create_kvm_centos7_guest.sh
      • # CentOS7のネットワークインストールのURL
      • REPOS=http://ftp.riken.jp/Linux/centos/7/os/x86_64/
      • # KVM上での名前
      • IMAGE_NAME=CentOS7.0
      • #virt-installでインストールする
      • virt-install \
          --name ${IMAGE_NAME} \
          --ram 1024 \
          --disk path=/var/lib/libvirt/images/${IMAGE_NAME}.qcow2,size=20,format=qcow2 \
          --vcpus=1 \
          --os-type linux \
          --os-variant=rhel7 \
          --nographics \
          --location="$REPOS" \
          --bridge=br0 \ ※追記 virbr0を削除しbr0で接続している場合
          --extra-args='console=tty0 console=ttyS0,115200n8 serial'
      • ※ディスク容量を20GBに指定するオプション(size=20, )が抜けていた。
  4. ゲストOS作成
    1. # sh ./create_kvm_centos7_guest.sh
    2. — nographicsでは都合が悪いらしく、
      途中で1:vncか2:テキスモードとか聞いてくるので1:vncを選択。
      パスワードは空。
    3. vncクライアントを起動し、
    4. VNC Server:に
      画面に表示されていたIP:画面番号(192.168.*.*:*)を入力して【Connect】ボタンを押す。
      普通にインストール再起動。ここでvnc終わり
    5. 再びコンソールモード
    6. ホストrootでログイン
      # ip addr

      • 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

        2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether *:*:*:*:*:* brd ff:ff:ff:ff:ff:ff
        inet 192.168.*.*/24 brd 192.168.*.255 scope global dynamic eth0
    7. クライアント側をシャットダウン
      # shutdown -h now
    8. ホスト側からゲストを起動
      # virsh start CentOS7.0
  5. クライアント側に変わり
  6. 全般的な更新+α
    # yum -y update
    # yum -y install yum-cron
    # systemctl start yum-cron
    # systemctl enable yum-cron
  7. selinuxをオフ
    # setenforce 0
    # getenforce

    • Permitive
  8. # cd /etc/selinux
    # mv config config.org : cp config.org config
    # sudo sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
    # reboot
    # getenforce

    • Disabled ※うまくいかない場合はココ参照
  9. とりあえずツールの類一式
    • # yum -y groupinstall base “開発ツール”
  10. nkfをインスト
    • # wget “http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fnkf%2F59912%2Fnkf-2.1.3.tar.gz” -O nkf-2.1.3.tar.gz
    • # tar zxvf nkf-2.1.3.tar.gz
    • # cd nkf-2.1.3
    • # make && make install
    • # cd
    • # rm -rf nkf-2.1.3*
    • # ln -s /usr/local/bin/nkf /usr/bin/nkf
  11. chkrootkitインストール
    1. ※元ネタ: http://centossrv.com/chkrootkit.shtml
    2. #chkrootkitダウンロード
      1. # wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
      2. # tar zxvf chkrootkit.tar.gz
    3. chkrootkitを移動
      1. # mkdir -p ~/bin && mv chkrootkit-0.50/chkrootkit ~/bin
      2. # rm -rf chkrootkit*
      3. # chkrootkit | grep INFECTED
        • Searching for Suckit rootkit… Warning: /sbin/init INFECTED
    4. chkrootkit実行スクリプトを毎日自動実行されるディレクトリへ作成
    5. # vi /etc/cron.daily/chkrootkit
      • #!/bin/bash
      • PATH=/usr/bin:/bin:/root/bin
      • TMPLOG=`mktemp`
      • # chkrootkit実行
      • chkrootkit > $TMPLOG
      • # ログ出力
      • cat $TMPLOG | logger -t chkrootkit
      • # SMTPSのbindshell誤検知対応
      • if [ ! -z “$(grep 465 $TMPLOG)” ] && \
        • [ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
      • sed -i ‘/465/d’ $TMPLOG
      • fi
      • # upstartパッケージ更新時のSuckit誤検知対応
      • if [ ! -z “$(grep Suckit $TMPLOG)” ] && \
        • [ -z $(rpm -V `rpm -qf /sbin/init`) ]; then
      • sed -i ‘/Suckit/d’ $TMPLOG
      • fi
      • # rootkit検知時のみroot宛メール送信
      • [ ! -z “$(grep INFECTED $TMPLOG)” ] && \
        • grep INFECTED $TMPLOG | mail -s “chkrootkit report in `hostname`” root
      • rm -f $TMPLOG
    6. # chmod 700 /etc/cron.daily/chkrootkit
  12. chkrootkitで使用する安全なコマンドの確保
    1. chkrootkit使用コマンド退避先ディレクトリ作成
      • # mkdir chkrootkitcmd
    2. chkrootkit使用コマンドを退避先ディレクトリへコピー
      • # cp `which –skip-alias awk cut echo egrep find head id ls netstat ps strings sed ssh uname` chkrootkitcmd/
    3. 試してみる
      1. # chkrootkit -p /root/chkrootkitcmd|grep INFECTED
        • Searching for Suckit rootkit… Warning: /sbin/init INFECTED
    4. 使ったコマンド圧縮して保存
      1. # zip -r chkrootkitcmd.zip chkrootkitcmd/
      2. # rm -rf chkrootkitcmd
    5. FTPでchkrootkitcmd.zipをバックアップし消す
      1. # rm -f chkrootkitcmd.zip
  13. yum-prioritiesプラグイン導入
    1. # yum -y install yum-plugin-priorities
    2. # vi /etc/yum.repos.d/CentOS-Base.repo
      • enabled=1
      • を追記
  14. RPMforgeリポジトリ導入 ← 2016年7月20日頃から使用不可
    1. # wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
    2. # rpm -ivh rpmforge-release-*.rpm
    3. # rm -f rpmforge-release-*.rpm
    4. # yum -y update rpmforge-release
  15. EPELリポジトリ導入
    1. # yum install epel-release
    2. # cd /etc/yum.repos.d
    3. # ls
    4. # vi epel.repo
      • enabled=1 -> enabled=0
    5. # yum –enablerepo=epel list
  16. Clam AntiVirusインストール
    1. # yum -y install clamd
    2. # chkconfig clamd on
    3. # sed -i ‘s/^Example/#Example/g’ /etc/freshclam.conf
    4. # freshclam
    5. # clamscan –infected –remove –recursive
  17. NTPサーバーインストール
    1. # yum -y install chrony ※不要
    2. # vi /etc/chrony.conf
      • server 0.centos.pool.ntp.org iburst
      • ・・・
      • server 3.centos.pool.ntp.org iburst
    3. ↓ 時刻同期先NTPサーバーを変更
      • # 日本標準時を提供しているNTPサーバー
      • server ntp.nict.jp iburst
      • # 上記サーバーと直接同期しているNTPサーバー
      • server ntp.jst.mfeed.ad.jp iburst
      • # プロバイダのNTPサーバー※無ければ設定不要
      • server プロバイダのNTPサーバー名 iburst
    4. 手動で時刻を補正(2回)
      1. # ntpdate ntp.nict.jp
      2. # ntpdate ntp.nict.jp
    5. サービスを登録
      1. # systemctl start chronyd
      2. # systemctl enable chronyd


CentOS7でKVM(仮想化)ホストを作る

※現在は微熱nucから平熱mini-ITx へ移行。ネット系の設定を大幅に簡素化。

  1. CentOS7( CentOS-7-x86_64-DVD-1503-01.iso )をダウンロード。
  2. Win32DiskImagerでUSBメモリに書き込む。
  3. nucにUSBメモリを挿し電源ON、【F2】でUEFIを呼び出しUSBメモリから起動。
  4. ブート画面でInstall CentOS 7を選択。
  5. インストーラー画面での設定
    1. WELCOM TO CENTOS7 画面
      1. 左のリストから【日本語】を選択。 ※スライダーが中央にくるあたり。
      2. 【続行】ボタンを押す。
    2. ネットワークとホスト名を選択。
      1. 画面右上のオフ⇒オン
      2. ハードウェアアドレスをメモる。
      3. eno1 ※nucの有線LANのインタフェース名、CentOS6までのeth0だった
        1. 表示されたIP(192.168.*.*)をメモる。
        2. 全般:この接続が利用可能になった時に自動的に接続するにチェック。
        3. IPv6のセッティング:方式 無視を選択
      4. wlp2s0 ※無線LANのインタフェース名、CentOS6までのwlan0だった
        1. ネットワーク名は未入力。
        2. ▼を押し無線ルータSSIDを選択しパス入力、接続できればIPアドレスが表示される
        3. 表示されたIP(192.168.*.*)をメモる。
        4. IPv6のセッティング:方式 無視を選択
      5. 【保存】ボタンを押す。
      6. 画面左下:local.host.local になっているホスト名を正しい名前に変える。
      7. 【完了】を押す。
    3. ソフトウェア の インストールソース に【!】が付いていたら、選択。
      1. http://の後に ftp.riken.jp/Linux/centos/7/os/x86_64/ と入力し【完了】
      2. 入力が正しければ先の【!】にURLが表記。
    4.  システム の インストール先に【!】が付いていたら、選択。
      1. HDDの絵に【!】を付け、空容量が十分なら、画面左上の【完了】を押す。
      2. 空容量は足りないが、HDDを全部書き換えていいのなら
        1. 【領域を確保する(R)】ボタンを押す。
        2. 【すべて削除】ボタンを押し、アクションの列が保存から削除に変わったのを確認。
        3. 【領域を確保する(R)】ボタンを押す。
        4. ●パーテーション構成を行いたい を選択し、【完了】を押す。
        5. 既存LMの名前を選択し「-」を押し、一旦パーテーションを全消。
        6. 自動のリンクを押し、パーテーションを作り直し。
    5. ソフトウェアの選択が 未選択なら、選択。
      1. 最小構成にチェックが入っていることを確認し、【完了】を押す。
    6. KDUMPが 無効 になっていたら、選択。
      1. 手動を選択し、【完了】を押す。
    7. 【インストールを開始】を押す。
    8. インスト中に
      1. rootのパスワードを設定  安易なパスワードの場合は【完了】ボタンを2度押して抜ける。
      2. ユーザを作成        システムのメールを受け取るユーザを作っておく。
    9. ・・・インスト・・・
    10. 【再起動】ボタンを押し、その前にUSBメモリは外す。
  6. yumリポジトリィを更新
    1. # yum -y update
  7. yum-cronをインスト
    1. # yum -y install yum-cron
    2. # systemctl start yum-cron
    3. # systemctl enable yum-cron
  8. SeLinuxを外す
    1. # setenforce 0
    2. # getenforce
      • Permissive
    3. # sudo sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
      • /etc/sysconfig/selinuxのリンク先/etc/selinux/configを修正する。
    4. # reboot
    5. # getenforce
      • Disabled になっていないなら上の3.のコマンドを見直すこと。
  9. 開発ツールなどをまとめてインスト
    1. # yum -y groupinstall base “開発ツール”
      • パッケージ:222個
  10. nkfをインスト
    1. # cd
    2. # wget “http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fnkf%2F59912%2Fnkf-2.1.3.tar.gz” -O nkf-2.1.3.tar.gz
      • # wget “https://ja.osdn.net/projects/nkf/downloads/64158/nkf-2.1.4.tar.gz” -O nkf-2.1.4.tar.gz
    3. # tar zxvf nkf-2.1.3.tar.gz
      • # tar zxvf nkf-2.1.4.tar.gz
    4. # cd nkf-2.1.3
      1. # cd nkf-2.1.4
    5. # make && make install
      • mkdir: ディレクトリ `/usr/local/bin’ を作成できません: ファイルが存在します は見なかったことにする
    6. # cd
    7. # rm -rf nkf*
    8. # ln -s /usr/local/bin/nkf /usr/bin/nkf
  11. rootのメールを転送
    1. # echo “root: ******” >> /etc/aliases
    2. # newaliases
    3. # echo “aliases test” | mail root
  12. ブリッジ接続用のファイルを作成 ※参考程度環境依存高め(起動時にFAIL発生)
    • # vi /etc/sysconfig/network-scripts/ifcfg-br0 ※新規に作成する
    • 当初の設定(DHCPでやってみた)
      • DEVICE=br0
        TYPE=Bridge
        BOOTPROTO=dhcp
        DEFROUTE=yes
        IPV4_FAILURE_FATAL=no
        IPV6INIT=no
        ONBOOT=yes
        PEERDNS=yes
        PEERROUTES=yes
    • 現在の設定(DHCPを諦めた)
      • DEVICE=br0
        TYPE=Bridge
        DEFROUTE=yes
        IPV4_FAILURE_FATAL=no
        IPV6INIT=no
        ONBOOT=yes
        PEERDNS=yes
        PEERROUTES=yes
        NM_CONTROLLED=no
        DELAY=0
        BOOTPROTO=static
        IPADDR=*.*.*.* *1
        NETMASK=255.255.255.0
        GATEWAY=*.*.*.* *2
        DNS1=*.*.*.* *2
      • *1 *2 大抵はルータのIPアドレス。192.168.1.1であることが多い。
      • *2   *1    ルータがDHCPで割り当てたものをそのまま流用。
  13. eno1をブリッジ接続に変える ※参考程度環境依存高め
    • vi /etc/sysconfig/network-scripts/ifcfg-eno1 *3 既存のものを修正
    • 当初の設定(DHCPでやってみた)
      • DEVICE=eno1 *3
        TYPE=Ethernet
        ONBOOT=yes
        BRIDGE=br0
    • 現在の設定(DHCPを諦めた)
      • DEVICE=eno1 *3
        TYPE=Ethernet
        ONBOOT=yes
        BRIDGE=br0
        HWADDR=*:*:*:*:*:* *4
        BOOTPROTO=none
        NM_CONTROLLED=no
      • *3 ip a で表示されたネットデバイス名を設定する。2番目の eno1 や enp3s0。
      • *4 ip aコマンドで、br0のlink/etherに表示されたものを設定。
  14. NetworkManagerは ブリッジ接続に対応していないようなので外す
    1. # systemctl stop NetworkManager
    2. # systemctl disable NetworkManager
    3. # systemctl restart network
      • Job for network.service failed. See ‘systemctl status network.service’ and ‘journalctl -xn’ for details.
      • ここでハングアップ※何か変!(未解決)
    4. # reboot
    5. 電源ボタンでリブート。
    6. とりあえず、/etc/sysconfig/network-scriptsで、おまじない。 ifup br0  とか ifup   *3のデバイス名
  15. なかなかつながらないのでコンソールからログインするとTeraTermからログインできた ※何か変!(未解決)
    1. # systemctl -l status network で確認するとまだ問題が残っているかもしれない。
      • [root@slanirish ~]# systemctl -l status network
        ● network.service – LSB: Bring up/down networking
        Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
        Active: active (running) since 水 2018-08-01 00:52:18 JST; 4min 21s ago
        Docs: man:systemd-sysv-generator(8)
        Process: 757 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS)
        CGroup: /system.slice/network.service
        mq1089 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient-acfc891e-d71c-4bb6-a394-b9ea39267c87-enp3s0.lease -pf /var/run/dhclient-enp3s0.pid -H slanirish enp3s08月 01 00:52:08 slanirish.warlander.local network[757]: ループバックインターフェイスを呼び込み中 [ OK ]
        8月 01 00:52:08 slanirish.warlander.local network[757]: インターフェース enp3s0 を活性化中: [ OK ]
        8月 01 00:52:08 slanirish.warlander.local network[757]: インターフェース enp3s0.org を活性化中:
        8月 01 00:52:11 slanirish.warlander.local dhclient[1036]: DHCPREQUEST on enp3s0 to 255.255.255.255 port 67 (xid=0x374e4cd8)
        8月 01 00:52:11 slanirish.warlander.local dhclient[1036]: DHCPACK from 192.168.1.1 (xid=0x374e4cd8)
        8月 01 00:52:13 slanirish.warlander.local dhclient[1036]: bound to 192.168.1.11 — renewal in 6231 seconds.
        8月 01 00:52:13 slanirish.warlander.local network[757]: enp3s0 のIP情報を検出中… 完了。
        8月 01 00:52:14 slanirish.warlander.local network[757]: [ OK ]
        8月 01 00:52:18 slanirish.warlander.local network[757]: インターフェース br0 を活性化中: [ OK ]
        8月 01 00:52:18 slanirish.warlander.local systemd[1]: Started LSB: Bring up/down networking.
    2. IPアドレスを確認
      1. # ip addr
        • 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
        • 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: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
        • link/ether *:*:*:*:*:* brd ff:ff:ff:ff:ff:ff
        • 3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
        • link/ether *:*:*:*:*:* brd ff:ff:ff:ff:ff:ff
        • inet6 fe80::**:**:**:**/64 scope link
        • valid_lft forever preferred_lft forever
        • 4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
        • link/ether *:*:*:*:*:* brd ff:ff:ff:ff:ff:ff
        • inet 192.168.*.*/24 brd 192.168.*.255 scope global dynamic br0
        • valid_lft 14317sec preferred_lft 14317sec
        • inet6 **:**:**:**:**:**:**:**/64 scope global dynamic
        • valid_lft 14318sec preferred_lft 12518sec
        • inet6 **:**:**:**:**/64 scope link
        • valid_lft forever preferred_lft forever
  16. 仮想化パッケージ一式 インスト
    • # yum -y groupinstall “Virtualization” “Virtualization Client” “Virtualization Platform” “Virtualization Tools”
      • パッケージ:221個
    • # yum -y install ‘*guestf*’
      • パッケージ:54個
  17. 仮想化ゲスト用に設定
    1. # cd /etc/sysconfig
    2. # vi libvirt-guests
      • ON_SHUTDOWN=shutdown
        • #ON_SHUTDOWN=suspend を有効化すると、DBなどファイルが壊れやすいみたいだ。
      • SHUTDOWN_TIMEOUT=300
      • を設定し、サービスを再起動
    3. # systemctl start libvirtd
    4. # systemctl enable libvirtd
  18. 仮想化ゲストのインスト時にQEMUからSPICEがTLSが未設定とか言い出す場合は、専用に電子証明書を作成(現在は動作不安定というか繋がらない)
    1. # cd
    2. 手打ちミス不可なのでスクリプトを作成
    3. # vi create_for_qemu_cr.sh
      • # 元ネタ http://www.spice-space.org/page/SSLConnection
      • #!/bin/bash
      • PASS_PHRASE=**電子署名のパスフレーズ**
      • echo “Enter pass phrase for ca-key.pem=> ${PASS_PHRASE}”
      • SERVER_KEY=server-key.pem
      • COUNTRY=**国(JP etc.)**
      • LOCALITY_NAME=**市町村名**
      • ORGANIZATION_NAME=**ドメイン名**
      • COMMON_NAME=**マシン名**
      • # creating a key for our ca
      • if [ ! -e ca-key.pem ]; then
        • openssl genrsa -des3 -out ca-key.pem 1024
      • fi
      • # creating a ca
      • if [ ! -e ca-cert.pem ]; then
        • openssl req -new -x509 -days 1095 -key ca-key.pem -out ca-cert.pem -utf8 -subj “/C=${COUNTRY}/L=${LOCALITY_NAME}/O=${ORGANIZATION_NAME}/CN=${COMMON_NAME}”
      • fi
      • # create server key
      • if [ ! -e $SERVER_KEY ]; then
        • openssl genrsa -out ${SERVER_KEY} 1024
      • fi
      • # create a certificate signing request (csr)
      • if [ ! -e server-key.csr ]; then
        • openssl req -new -key ${SERVER_KEY} -out server-key.csr -utf8 -subj “/C=${COUNTRY}/L=${LOCALITY_NAME}/O=${ORGANIZATION_NAME}/CN=${COMMON_NAME}”
      • fi
      • # signing our server certificate with this ca
      • if [ ! -e server-cert.pem ]; then
        • openssl x509 -req -days 1095 -in server-key.csr -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
      • fi
    4. # sh ./create_for_qemu_cr.sh
      • ※パスフレーズを3回入力した後にもう1回入力するので注意!
    5. # mkdir /etc/pki/libvirt-spice
  19. 出来上がった電子証明書(*.pemのみ)を/etc/pki/libvirt-spiceへコピー
  20. qemuの設定(現在は動作不安定というか繋がらない)
    1. # vi /etc/libvirt/qemu.conf で以下をコメントを解除
      • spice_listen = “0.0.0.0”
      • spice_tls = 1
      • spice_tls_x509_cert_dir = “/etc/pki/libvirt-spice”
  21. KVMを再起動
    1. # systemctl restart libvirtd
  22. 仮想化ゲストを作成
  23. yum-prioritiesプラグイン導入
    1. # yum -y install yum-plugin-priorities
    2. # vi /etc/yum.repos.d/CentOS-Base.repo
      • enabled=1
      • を追記
  24. RPMforgeリポジトリ導入 ← 2016年7月20日頃から使用不可
    1. # wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
    2. # rpm -ivh rpmforge-release-*.rpm
    3. # rm -f rpmforge-release-*.rpm
    4. # yum -y update rpmforge-release
  25. EPELリポジトリ導入
    1. # yum install epel-release
    2. # cd /etc/yum.repos.d
    3. # ls
    4. # vi epel.repo
      • enabled=1 -> enabled=0
    5. # yum –enablerepo=epel list

SSLの設定はやりなおすとうまく動作しなくなる傾向にある。
※現在はSPICEで接続に失敗中。
下記をじっくり読んでやる気が起きたら、やり直す予定。
参考 http://www.asahi-net.or.jp/~aa4t-nngk/kvm4.html




top