SSL Server Test

日経NETWORK 2018年9月号より

米クリオスのSSLラボが提供するSSLチェックツール
https://www.ssllabs.com/

財テク.jpというサイトをチェックしたところレーティングはBでKey Exchangeに問題があるとの判定だった。

B判定の主な原因として、下記3点があった。
This server uses SSL 3, which is obsolete and insecure. Grade capped to B.
SSL3に対応している。

This server accepts RC4 cipher, but only with older protocols. Grade capped to B.
ChiperにRC4が利用できる。

This server does not support Forward Secrecy with the reference browsers. Grade capped to B.
Foward Securityに対応していない。。。。

一方で、HSTSに対応している点は評価された。
HTTP Strict Transport Security (HSTS) with long duration deployed on this server.

Hinemos認定アソシエイト

8/22~24のHinemosトレーニングコースを受講し、受講後等に受験できる認定試験
Hinemos認定アソシエイト (監視)
Hinemos認定アソシエイト (ジョブ)
の2つを受験し、無事認定を受けました。

HinemosはNTTデータが開発している統合運用管理ソフト。
日立でいうところのJP1、富士通でいうところのSystemwalker、NECでいうところのWebSAM、NRIでいうところのSenjuにあたる。

統合運用管理ソフトは一般的に、
運用管理機能・・・ジョブ等と定義される機能を決められた契機に自動実行する機能
運用監視機能・・・ジョブが正常に運用できていない場合には通知をしたり、ジョブを運用するシステム自体の障害が発生(もしくは発生の予測を検知)した場合に通知する機能
の2つに分けられる。

Hinemosは、独立行政法人情報処理推進機構(IPA)の2004年度下期オープンソースソフトウェア活用基盤整備事業の委託を受けて開発されたアプリケーションで、オープンソースになっている点が特徴。

ただ、国産なのにローカライズされていない箇所があったり、かゆい機能を使おうとするとサブスクリプションを購入しなければならないなど注意が必要。サブスクリプションは年額でかなりの金額になるので、Hinemosで運用するという場合には、サブスクリプションを購入しないでも使える範囲で運用を回せるかどうかがポイントになると思う。
承認ジョブを含むRBA機能や複数行のログ監視(Javaのスタックトレースをチェックできる)機能などHinemosを採用すべき機能がいくつかあるが、サブスクリプションを購入するようであれば、個人的にはSystemwalker Operation Manager+Zabbixの組み合わせが良いように思える。

IMAPサーバに接続できない

dovecotを2.2.10にバージョンアップしたところ、下記エラーメッセージが /var/log/dovecot.log に記録されてログインできなくなった。

May 16 22:40:29 imap(usename): Error: user username: Initialization failed: namespace configuration error: inbox=yes namespace missing

centos 7 の dovecot 2.2.10 でログイン出来なくなった場合の対策

に記載があったが、/etc/dovecot/conf.d/15-mailboxes.conf をバックアップ取得したうえで、削除するとログインできるようになった。

バージョンアップ時に /etc/dovecot/conf.d/15-mailboxes.conf.original が作られており、15-mailboxes.conf と同じ状態になっていたので、15-mailboxes.conf だけ削除すればよい状態だった。

15-mailboxes.conf が何をしているのかは調べておくこととする。

 

クライアント証明書

クライアント証明書は、ID+パスワードによる認証などと並んだ認証方法の一つで、SSL通信が必須である認証方式。(Basic認証はSSL通信は必須ではないが、パスフレーズが暗号化されない点では、盗聴リスクがあることに留意しなければならない。)
クライアント証明書を使用した認証の流れについては、Apacheでのクライアント認証の仕組みに記載されているが、通信相手を信頼する方法は、公開鍵暗号方式を利用する点では、サーバ証明書と同一だが、下記の点で異なる。

  1. 公開鍵暗号方式で共有した共通鍵によって通信の暗号化を保証する方法がクライアント証明書には含まれていない点
  2. と秘密鍵を保持している端末が異なる。(サーバ(サーバ証明書の場合)とクライアント(クライアント証明書の場合))が

クライアント証明書は、秘密鍵を保持しているだけに、サーバ証明書と同様に正しく管理さえされていればなりすましによる認証の可能性が限りなく減らせる。ID+パスワードによる認証とあわせて、多要素認証とすることが出来れば、さらになりすましの可能性を減らせる一方で、証明書の配布と管理が煩雑である面を持つ。

気軽にクライアント証明書を試すには、下記2ステップとなる。
1.自己証明局を作成する。
オレオレ認証局の作り方~SSL証明書を無料で作る方法 on CentOS 5
2.認証方法の変更とクライアント証明書の作成方法
オレオレ認証局でクライアント認証 ~ ウェブの Basic 認証をリプレース
なお、上記では、Webサーバの設定にSSLVerifyClientオプションが登場してくるが、この意味合いについては、ApacheでIP制限とクライアント認証をor条件で運用するに記載されている。

メールサーバのSPF(Sender Policy Framework)対応化

送信元アドレスを偽称した迷惑メール、フィッシングサイトへの誘導メールなどの被害を軽減できる仕組み。

【送信側の設定】
送信側がSPFに対応するメリットは、自分の管理ドメインになりすまされたメールの送信をSPFチェックによって判定できるようになる。(受信側が対応されていれば、自分の管理ドメインによるなりすましメール被害を軽減できる)

DNSサーバにSPFレコード(TXTレコード)を登録しておく
IN TXT v=spf1 +ip4:(送信元IPv4アドレス) -all”

MyDNSの場合には自動的にSPFレコードが追加される。
SPFレコードの詳細は送信ドメインを認証するためのSPFレコードに詳しくなろうが詳しい。

併せて、DMARCレコードにも対応しておくことが望ましい
_dmarc IN TXT v=DMARC1; p=none; rua=mailto:(集計レポートの送付先)
DMARCレコードは、MyDNSを使っている場合には、個別にレコード定義する必要がある。

【受信側】
受信側がSPFに対応するメリットは、SPFレコードが登録されたドメインにてなりすましされたメールを受信しないようにできることで、なりすましメールの被害を軽減できる。

Postfixの場合には、「備忘録」 Postfix(CentOS)でSPF対応しちゃう。に従って実装するとSPF対応できるようになる。

SPF対応するとメールヘッダに
Received-SPF: Pass (sender SPF authorized) …
のようなヘッダが付加されるようになる。

また、
$sudo grep ‘policyd-spf’ /var/log/maillog
とすることで正常に動作していることを確認することが出来る。

また、SPFチェックに引っかかる場合には、
Received-SPF: Permerror (SPF Permanent Error: Void lookup limit of 2 exceeded)
Received-SPF: Softfail (domain owner discourages use of this host)
Received-SPF: Neutral (access neither permitted nor denied)
Received-SPF: Fail (SPF fail – not authorized)
のようなヘッダが記録される。

SPFレコードが登録されていないドメインからのメールを受信した場合には、
Received-SPF: None (no SPF record)
のようなヘッダが記録される。

Received-SPF の内容については、postfix で postfix-policyd-spf-python ( or postfix-policyd-spf-perl ) を使ってSPF認証する(CentOS/ScientificLinux編)に詳しく記載されているので、参考になる。

Zabbixで拡張MIB情報を取得する

Zabbixを使ってSNMP情報を取得するとき、OIDを指定することになる。

標準MIBを例にすれば、

インタフェースで受信したパケットの総バイト数

を取得しようとする場合、OIDは、.1.3.6.1.2.1.2.2.1.10 となるが、代わりに IF-MIB::ifInOctets と指定することが出来る。

なぜこんなことが出来るかというと、

/usr/share/snmp/mibs/IF-MIB.txt

の中に

IF-MIB DEFINITIONS ::= BEGIN

(省略)

ifInOctets OBJECT-TYPE
 SYNTAX Counter32
 MAX-ACCESS read-only
 STATUS current
 DESCRIPTION
 "The total number of octets received on the interface,
 including framing characters.

Discontinuities in the value of this counter can occur at
 re-initialization of the management system, and at other
 times as indicated by the value of
 ifCounterDiscontinuityTime."
 ::= { ifEntry 10 }

の記述があるからである。下記コマンドにて検証することが出来る。

$ snmptranslate -On IF-MIB::ifInOctets
.1.3.6.1.2.1.2.2.1.1

監視対象とするネットワーク機器の拡張MIB情報を監視対象とする場合、MIBファイルを入手し、Zabbixサーバ上の /usr/share/snmp/mibs/ にMIBファイルをコピーしておけば、OIDを調べなくても上記のように設定することが出来る。

下記にYAMAHA RTX1210の例を示す。

RTXシリーズのMIBは、http://www.rtpro.yamaha.co.jp/RT/docs/mib/ よりダウンロードできる。yamaha-private-mib.tar.gz 等を入手し、解凍の上、

/usr/share/snmp/mibs/ へコピーする。

$ snmptranslate -On YAMAHA-RT-HARDWARE::yrhInboxTemperature
.1.3.6.1.4.1.1182.2.1.15

と変換されるようであれば、Zabbix上でSNMP OID指定する際には、

.1.3.6.1.4.1.1182.2.1.15 の代わりに YAMAHA-RT-HARDWARE::yrhInboxTemperature が利用できるということになる。

参考サイト)
追加Mibを読み取らせる方法(Ver3.0)
第5回 図解で知るSNMP――MIB情報のすべて
【NET-SNMP】ベンダーMIBファイル追加設定
ネットワーク機器のSNMP MIB/OIDまとめ

FortigateVM

FortigateVMは、Fortigate製品の仮想アプライアンスになっているのだが、ちょっと構成が分かりにくい。

技術仕様によれば、モデルによって性能差異が記述されており、製品機能一覧の4ページ目によれば、ハイパバイザーによって利用できる機能は制限されるが、原則的には、FortiOSの機能をすべて利用でき、期待しているスループットが出るかどうかは別として、割と何でもできる万能型のUTMとして使えるように見える。

ところが、下記のようにライセンス形態が構成されており、オプションになっているものがあり、本体(ベース)ライセンスでは、利用できる機能が制限されている。

  • 本体
  • アンチウィルス(オプション)
  • UTMバンドル(オプション)
  • Enterpriseバンドル(オプション)
  • NGFW(オプション)
  • Webフィルタリング(オプション)

本体ライセンスで使用できる範囲がよくわからないので、FortiVMを採用する場合には、よく気をつけた方がよさそうだ。Amazon EC2でも15日間お試しできる(ただし、仮想マシン費用は掛かり、無料枠の対象にはならない)ので、ちょっと調査をしてみようと思う。

参考)株式会社データコントロール社での販売価格表

SOAPとRESTの違いについて

PI のプロトコルの選択

SOAPは最近はやってないね。でも個人的に分かっていない。おそらく実装もした経験もないし、メリットが見出しづらいから?SOAPといえば、発想がCORBAに近いのかな?

かといって、CORBAをちゃんとわかっているのか!と先輩方からお小言を頂けそうで。。。。

こんなのが最近の記事ですかね?3年前の記事からすれば、API連携においては、もはやSOAPは重たすぎるプロトコルなのかもしれないですね。

今さら聞けないWebAPIの実装方式RESTとSOAPの違い

ZabbixでHDDのS.M.A.R.T.を監視

ZabbixでHDDのS.M.A.R.T.を監視してみるを参考に設定してみた。
ハードウエアRAIDでミラーリングされているディスクは監視できなかったが、SATAで接続しているディスクは監視できた。
4.Zabbixエージェントにユーザパラメータを設定する の箇所は、
UserParameter=hdd.smart[*],smartctl -A /dev/$1 | grep $2 | awk ‘{print $$10}’
ではなく
UserParameter=hdd.smart[*],sudo smartctl -A /dev/$1 | grep $2 | awk ‘{print $$10}’
とすることで値を取得できるようになる。
ただ、1点気になる点がある。zabbix_agentd.confには、

### Option: UnsafeUserParameters
# Allow all characters to be passed in arguments to user-defined parameters.
# The following characters are not allowed:
# \ ‘ ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
# Additionally, newline characters are not allowed.
# 0 – do not allow
# 1 – allow
#
# Mandatory: no
# Range: 0-1
# Default:
# UnsafeUserParameters=0

があり、*を使うなら、UnsafeUserParameters=1にしないといけない記述があるが、0でも動作している。
バグなのか、英語の語学力が足りないかのどちらかかなぁ?

ZabbixでIPMIを使用したハードウエア監視について

DELLのサーバと言えば、iDRAC (デルリモートアクセスコントローラ)というもので昔はload averageが高くなりすぎてサーバが制御できなくなったの再起動に使用したり、ハードウエア情報を監視したりしていたが、今ではIntelligent Platform Management Interface (IPMI) という、標準化されたメッセージ・ベースのハードウェア管理インターフェースがあることを最近知った。
BMCという方式で実現されており、サーバ本体のIPアドレスとは別のアドレスを設定することで、iDRACがなくても、ipmitoolを使うことでサーバの再起動やハードウエアリソースを取得することが出来る。
「標準化された」というところがポイントで、サーバのメーカーが違っていても対応できるところが最大のメリットで、昔の記事ではYahoo JapanでもIPMIでの大規模サーバー管理をしていることが掲載されている。
ZabbixでIPMIアイテムを取得する方法は、Zabbix2.0.4でIPMIアイテムを収集する。 #Zabbix #自宅ラック勉強会が大変参考になる。
SoftLayer上でZabbixを動かしエージェントの自動登録やAuto Scaleとの連携を行うもハードコピーが多く非常に分かりやすい。
単位がdiscrete のセンサーの値はZabbixで非対応 という点がポイントで、ほとんどの値が取れないのはZabbixのバージョンアップを期待するしかない。
Zabbixを使ってIPMI監視(HP iLO編)で紹介されているように、ipmitoolを駆使して外部チェックすればほかの値も監視できるのかとは思うが、やっていない。。。。
ところで、ipmitoolでZabbixからハードウエア監視をしようと試してみたところハマったポイントがあったので紹介しておく。
ハマったこと1)Destination Host Unreachableで切り分けに手こずる
ローカル(-I lan -U -H オプションを指定しない)からは取得できるのに、BMCに設定しているIPアドレス宛では
No response from remote controller
Get Auth Capabilities command failed
Error: Unable to establish LAN session
と表示されてしまうという事象だ。
結論としては、Zabbix監視サーバ(ipmitoolで監視対象となっているサーバとは別)からは通信ができるので問題なく、
切り分けしようとしてハマったというオチなのだが、ipmitoolを実行しているサーバと同一サーバで設定しているIPアドレスは同一セグメントなのに
Destination Host Unreachable
となる。。。
これは仕様なのかもしれない。
ハマったこと2)IPフィルタリングで手こずる
623/udpなのだが、UDPパケットだけに戻りパケットをちゃんと通してあげる必要がある。
戻りパケットはdestination portが631ではなくsource portが631なので注意!
destination portが631だと勘違いしてこれまた手こずりました。。。。
参考)
BMC: 業界標準のシステム管理コントローラ
ipmitool のリモート操作に必要な設定
ホストOSのLinux側で、筐体のBMC(IPMI)に設定されているIPアドレスを調べる
ZABBIX Forums IPMI監視のセンサーについて
ZABBIX Forums IPMI Discrete Sensors