■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