labunix's blog

labunixのラボUnix

CentOS6にHinemos4.0を導入する

■CentOS6にHinemosを導入する

 CentOS6.2とHinemos3.2.2 
 http://d.hatena.ne.jp/labunix/20120119

■CentOS6.2を最小構成でインストール
 ※これは「プロキシ経由でのネットワークインストールは出来ません」以外に特に注意点は無い。

■英語配列なので最小限の設定、ssh経由でコントロール。

# useradd labunix
# passwd labunix
# exit
$ ssh-keygen -t rsa

$ ssh vmcentsv6
$ su
# vi /etc/yum.conf
# grep proxy /etc/yum.conf
proxy=http://xxx.xxx.xxx:3128/

# pstree
init─┬─auditd───{auditd}
     ├─console-kit-dae───63*[{console-kit-da}]
     ├─crond
     ├─dbus-daemon───{dbus-daemon}
     ├─login───bash
     ├─master─┬─pickup
     │        └─qmgr
     ├─5*[mingetty]
     ├─qpidd───2*[{qpidd}]
     ├─rsyslogd───2*[{rsyslogd}]
     ├─sshd───sshd───bash───su───bash───pstree
     ├─sshd
     └─udevd

# yum install -y vim
# sudoedit /etc/sudoers
# runlevel
N 3
# chkconfig --list | grep 3:on | awk '{print $1}' | column
auditd          iptables        network         rsyslog
crond           messagebus      postfix         sshd
ip6tables       netfs           qpidd           udev-post

■ftpサーバを導入しておく
 ※homeディレクトリに移動できないというエラー。
  特にftpdに設定は無いので、SELINUXを無効にして回避。

# yum search ftpd | grep ^[a-z]
vsftpd.i686 : Very Secure Ftp Daemon
# yum install -y vsftpd
# yum search ftp | grep ^[a-z] | grep client
ftp.i686 : The standard UNIX FTP (File Transfer Protocol) client
# yum install -y ftp.i686
# /etc/init.d/vsftpd start
vsftpd 用の vsftpd を起動中:                               [  OK  ]

$ ftp localhost
Trying ::1...
ftp: connect to address ::1接続を拒否されました
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:labunix): labunix
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/labunix
Login failed.
ftp> quit

■SELINUXの無効
 Permissiveでは無くdisabled。要再起動。

# getenforce
Enforcing
# setenforce Permissive
# getenforce
Permissive

# ftp localhost
Trying ::1...
ftp: connect to address ::1接続を拒否されました
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:labunix): labunix
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bye
221 Goodbye.

# grep ^SELINUX= /etc/sysconfig/selinux
SELINUX=disabled

■vsftpdの制限
 localhost以外繋がらない

# grep tcp_wrapper /etc/vsftpd/vsftpd.conf
tcp_wrappers=YES

# grep -v "^\#\|^\$" /etc/hosts.allow
vsftpd : 127.0.0.1
# grep -v "^\#\|^\$" /etc/hosts.deny
vsftpd : ALL

# ftp 192.168.164.101
Connected to 192.168.164.101 (192.168.164.101).
421 Service not available.
ftp> bye

■ローカルネットを許可。
 ※HinemosAgentを導入するマシンがNAT越えの場合はその設定も。

# grep ^vsftpd /etc/hosts.allow
vsftpd : 192.168.164. 127.0.0.1

# ftp 192.168.164.101
Connected to 192.168.164.101 (192.168.164.101).
220 (vsFTPd 2.2.2)
# chkconfig --list vsftpd
vsftpd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
# chkconfig vsftpd on
# chkconfig --list vsftpd
vsftpd          0:off   1:off   2:on    3:on    4:on    5:on    6:off


■他のパッケージもチェック
 導入チェック

# echo "expect coreutils shadow-utils gawk grep sed krb5-workstation passwd openssh openssh-clients expect" | \
  for list in `xargs`;do \
     rpm -q $list > /dev/null && echo "$list"; \
  done
coreutils
shadow-utils
gawk
grep
sed
passwd
openssh

■入ってないのは入れる。

# echo "expect coreutils shadow-utils gawk grep sed krb5-workstation passwd openssh openssh-clients expect" | \
  for list in `xargs`;do \
     rpm -q $list > /dev/null || yum install -y "$list"; \
  done

■確認

# echo "expect coreutils shadow-utils gawk grep sed krb5-workstation passwd openssh openssh-clients expect" | \
  for list in `xargs`;do \
     rpm -q $list > /dev/null || echo "ERROR: $list"; \
  done

■snmpd、snmptrapdの導入

# yum install -y net-snmp net-snmp-libs
# ls /etc/init.d/snmp*
/etc/init.d/snmpd  /etc/init.d/snmptrapd
# grep Usage /etc/init.d/snmp*
/etc/init.d/snmpd:      echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}"
/etc/init.d/snmptrapd:  echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}"

# /etc/init.d/snmpd start
snmpd を起動中:                                            [  OK  ]
# /etc/init.d/snmptrapd start
snmptrapd を起動中:                                        [  OK  ]
# chkconfig snmpd on
# chkconfig snmptrapd on
# chkconfig --list snmpd
snmpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
# chkconfig --list snmptrapd
snmptrapd       0:off   1:off   2:on    3:on    4:on    5:on    6:off
# netstat -an --program | grep "\:16[12] "
udp        0      0 0.0.0.0:161                 0.0.0.0:*                               9085/snmpd
udp        0      0 0.0.0.0:162                 0.0.0.0:*                               9092/snmptrapd

■rsyslogdのチェック
 ※これはhinemosのインストーラがやってくれる。

# /etc/init.d/rsyslog status
rsyslogd (pid  997) を実行中...
$ grep 514 /etc/rsyslog.conf
#$UDPServerRun 514
#$InputTCPServerRun 514

■Javaの導入
 このJavaが取得できなくなったらどうするのだろうw。。。
 ここはi686だけでよいはずだが、面倒なので全部入れた。

# yum search java-1.6.0-openjdk | grep ^java
java-1.6.0-openjdk.i686 : OpenJDK Runtime Environment
java-1.6.0-openjdk-demo.i686 : OpenJDK Demos
java-1.6.0-openjdk-devel.i686 : OpenJDK Development Environment
java-1.6.0-openjdk-javadoc.i686 : OpenJDK API Documentation
java-1.6.0-openjdk-src.i686 : OpenJDK Source Bundle

# yum search java-1.6.0-openjdk | grep ^java | awk '{print $1}' | xargs echo -n | yum install -y `xargs`
# ls /usr/bin/java
/usr/bin/java

■この場合、何もしなくてよい。
 気になるようなら、「/etc/profile」に設定。

export JAVA_HOME=/usr
export PATH=${PATH}:$JAVA_HOME/bin
export http_proxy=http://xxx.xxx.xxx.xxx:3128/
export ftp_proxy=http://xxx.xxx.xxx.xxx:3128/
export HTTP_PROXY=http://xxx.xxx.xxx.xxx:3128/
export FTP_PROXY=http://xxx.xxx.xxx.xxx:3128/

■他にマニュアルにないもの

# yum install -y zip unzip

■Hinemosマネージャの導入

$ tar zxvf hinemos_manager-4.0.0_rhel6_32.tar.gz
$ cd Hinemos_Manager-4.0.0_rhel6_32
$ su
# ./manager_installer_JP.sh
# netstat -an --program| grep 514
tcp        0      0 0.0.0.0:514                 0.0.0.0:*                   LIST           EN      2694/rsyslogd
tcp        0      0 :::514                      :::*                        LIST           EN      2694/rsyslogd
udp        0      0 0.0.0.0:514                 0.0.0.0:*                                          2694/rsyslogd
udp        0      0 :::514                      :::*                                               2694/rsyslogd

# cd /opt/hinemos/bin/
# ./hinemos_start.sh
net.core.rmem_max = 8388608
net.core.rmem_default = 8388608
waiting for Hinemos Manager to start...

waiting for PostgreSQL to start...
PostgreSQL started
WARN : PID file(/var/run/snmptrapd.pid) is found. stop snmptrapd service.

JBoss configuration assigned : hinemos

removing temporally data (Export) before JBoss start

waiting for JBoss to start...
........................done
JBoss started

Hinemos Manager started

# netstat -an --program | grep "109[89]"
tcp        0      0 ::ffff:127.0.0.1:1098       :::*                        LISTEN      3349/java
tcp        0      0 ::ffff:127.0.0.1:1099       :::*                        LISTEN      3349/java
# netstat -an --program| grep "444[45]"
tcp        0      0 ::ffff:127.0.0.1:4444       :::*                        LISTEN      3349/java
tcp        0      0 ::ffff:127.0.0.1:4445       :::*                        LISTEN      3349/java

■Hinemosマネージャの起動、ステータス確認、停止

# ./hinemos_status.sh
Hinemos Manager is running...
  - JBoss Process ID      : 4060 (running)
  - PostgreSQL Process ID : 3990 (running)

# ./hinemos_stop.sh
waiting for Hinemos Manager to stop...
waiting for JBoss to stop...
Thread Dump 1
Thread Dump 2
Thread Dump 3
Shutdown message has been posted to the server.
Server shutdown may take a while - check logfiles for completion
....done
JBoss stopped
waiting for PostgreSQL to stop...
PostgreSQL stopped

Hinemos Manager stopped

■Hinemosマネージャのサービス化
 「/etc/init.d/hinemos_manager」として使用出来るようにする

# cd /opt/hinemos/sbin/service/
# cp -p hinemos_manager /etc/init.d/
# service hinemos_manager start
# chkconfig --add hinemos_manager
# chkconfig --list hinemos_manager
hinemos_manager 0:off   1:off   2:on    3:on    4:on    5:on    6:off
# /etc/init.d/hinemos_manager status
Hinemos Manager is running...
  - JBoss Process ID      : 4793 (running)
  - PostgreSQL Process ID : 4720 (running)

■Hinemosエージェントの導入

$ tar zxvf hinemos_agent-4.0.0_rhel6_32.tar.gz
$ cd Hinemos_Agent-4.0.0_rhel6_32/
# ./agent_installer_JP.sh

# chkconfig --list hinemos_agent
hinemos_agent   0:off   1:off   2:on    3:on    4:on    5:on    6:off

■ポート確認
 内部で使うハイポートは沢山あるので一旦除外し、マニュアルにあるリストだけをピックアップ。

# netstat -an --program| grep "java" | grep -v 127.0.0.1 | awk '{print $1 " "$4}' | sort | column
tcp :::8080     udp :::24005    udp :::24514    udp :::38877    unix ]

# netstat -an --program| grep "postgres" | grep -v 127.0.0.1 | awk '{print $1 " "$4}' | sort | column
tcp 0.0.0.0:24001       udp ::1:48513
tcp :::24001            unix ACC

# netstat -an --program| grep "444[456]" | \
  sed s/"        0      0"//g | sed s/"      \:\:\:\*                "//g
tcp ::ffff:127.0.0.1:4444         LISTEN      4793/java
tcp ::ffff:127.0.0.1:4445         LISTEN      4793/java
tcp ::ffff:127.0.0.1:4446         LISTEN      4793/java
unix  2      [ ]         STREAM     CONNECTED     44458  4793/java
# netstat -an --program| grep "471[23]" | \
  sed s/"        0      0"//g | sed s/"      \:\:\:\*                "//g
tcp ::ffff:127.0.0.1:4712         LISTEN      4793/java
tcp ::ffff:127.0.0.1:4713         LISTEN      4793/java
# netstat -an --program| grep "\:4457" | \
  sed s/"        0      0"//g | sed s/"      \:\:\:\*                "//g
tcp ::ffff:127.0.0.1:4457         LISTEN      4793/java

# netstat -an --program| grep "\:8083" | \
  sed s/"        0      0"//g | sed s/"      \:\:\:\*                "//g
tcp ::ffff:127.0.0.1:8083         LISTEN      4793/java
# netstat -an --program| grep "\:24457" | \
  sed s/"        0      0"//g | sed s/"      \:\:\:\*                "//g
tcp ::ffff:127.0.0.1:24457        LISTEN      4793/java


■Hinemosクライアントを導入。

今回はWin2008R2(64bit)を選択したので、AgentとClientの両方を導入。

> powershell
PS > import-module servermanager
PS > Get-WindowsFeature SNMP*

Display Name                                            Name
------------                                            ----
[ ] SNMP サービス                                       SNMP-Services
    [ ] SNMP サービス                                   SNMP-Service
    [ ] WMI SNMP プロバイダー                           SNMP-WMI-Provider
PS > Add-WindowsFeature SNMP-Services
PS > Get-WindowsFeature SNMP*

Display Name                                            Name
------------                                            ----
[X] SNMP サービス                                       SNMP-Services
    [X] SNMP サービス                                   SNMP-Service
    [X] WMI SNMP プロバイダー                           SNMP-WMI-Provider

■publicコミュニティをトラップタブ、セキュリティタブの設定箇所に追加

> services.msc

■Hinemosエージェントのサービス化

> "C:\Program Files (x86)\Hinemos\Agent4.0.0\bin\RegistAgentService.bat"
> sc getKeyName "HinemosAgent"
[SC] GetServiceKeyName SUCCESS
名前 = HinemosAgent
> sc query HinemosAgent

SERVICE_NAME: HinemosAgent
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 1077  (0x435)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

> net start HinemosAgent
> net start | find "HinemosAgent"
   HinemosAgent
> tasklist | find "Hinemos"
HinemosAgentService.exe       3876 Services                   0     39,924 K

■NTSyslogの起動
 専用のツールで起動する。「自動」なのでOSの再起動時は気にしなくて良い。

> sc query | find /i "ntsyslog"
SERVICE_NAME: NTSYSLOG
DISPLAY_NAME: NTSyslog (3rd edition based, Hinemos Customized)

> C:\Windows\SysWOW64\NTSyslogCtrl.exe

> sc query "NTSyslog"

SERVICE_NAME: NTSyslog
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

■CentOS6のiptablesをオフにしてクライアントから接続テスト

# /etc/init.d/iptables stop
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中nat filter     [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]


■最終チェック

CentOS6とWindows2008R2を再起動して確認。

$ pstree
init─┬─auditd───{auditd}
     ├─crond
     ├─dbus-daemon
     ├─java───12*[{java}]
     ├─java───127*[{java}]
     ├─master─┬─pickup
     │        └─qmgr
     ├─6*[mingetty]
     ├─postgres───81*[postgres]
     ├─qpidd───2*[{qpidd}]
     ├─rsyslogd───6*[{rsyslogd}]
     ├─snmpd
     ├─snmptrapd
     ├─sshd───sshd───sshd───bash───pstree
     ├─udevd───udevd
     └─vsftpd

$ sudo /etc/init.d/hinemos_manager status
Hinemos Manager is running...
  - JBoss Process ID      : 1244 (running)
  - PostgreSQL Process ID : 1135 (running)

$ sudo /etc/init.d/hinemos_agent status
Hinemos Agent (PID 1209) is running...

> net start | find "SNMP"
   SNMP Service
> net start | find "NTSyslog"
   NTSyslog (3rd edition based, Hinemos Customized)
> net start | find "HinemosAgent"
   HinemosAgent

■上位にFWがあるので、WindowsFirewall、CentOS6のiptablesはオフにした。

> netsh advfirewall show allprofile state

ドメイン プロファイル 設定:
----------------------------------------------------------------------
State                                 オフ

プライベート プロファイル 設定:
----------------------------------------------------------------------
State                                 オフ

パブリック プロファイル 設定:
----------------------------------------------------------------------
State                                 オフ
OK

# chkconfig iptables off
# chkconfig --list iptables
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off

■debianからのチェック(NATの外、FW)

 CentOS6
$ snmpwalk -v 1 192.168.164.101 -c public | wc -l
4504

 Windows2008R2
$ snmpwalk -v 1 192.168.164.128 -c public | wc -l
2523


■snmpの情報取得チェック
 ※debianの上位ネットワークには、このパケットは流れない。

 debian(localhost)
 
$ snmpwalk -c public -v 1 localhost "iso.3.6.1.2.1.25.2.3.1.5.1"
iso.3.6.1.2.1.25.2.3.1.5.1 = INTEGER: 4025956

 CentOS6
$ snmpwalk -c public -v 1 192.168.164.101 "iso.3.6.1.2.1.25.2.3.1.5.1"
iso.3.6.1.2.1.25.2.3.1.5.1 = INTEGER: 1030876

 Windows2008R2
$ snmpwalk -c public -v 1 192.168.164.128 "iso.3.6.1.2.1.25.2.3.1.5.2"
iso.3.6.1.2.1.25.2.3.1.5.2 = INTEGER: 10485247