■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