2016年 6月 の投稿一覧

Red Hat Satellite使いはじめガイド

Red Hat SatelliteはRed Hatの提供するRHEL運用管理ソフトウェアです。非常に多くの機能があり、ソフトウェアとしても規模が大きなものになっています。今回の記事ではRed Hat Satelliteをこれから利用しようと検討している方むけに Red Hat Satelliteを利用しはじめるにあたっての注意点や関連サービスをご紹介します。

レッドハットの森若です。今回はRed Hat Satelliteを利用しはじめるにあたっての注意点や関連サービスをご紹介します。

0. 各種サービスの確認

サブスクリプションには問い合わせ回数無制限のサポートサービスが含まれています。 基本的な利用方法、設定手順、製品障害対応などをおこないます。

電話: 0120 266 668

Web: https://access.redhat.com/support/cases/

製品をスムーズに利用できるよう、Red Hatトレーニングにて包括的なハンズオントレーニングを提供しております。Satelliteとその周辺について包括的な知識を得られるのでおすすめです。Satellite 6.x対応のコース RH403が2016年6月から提供開始しております。

Red Hat コンサルティングでは構築の支援やナレッジトランスファを中心とした有償コンサルティングサービスを提供しております。多くの実績があるコンサルタントが構築を支援します。

1. 利用するSatelliteのバージョンを決める

現在Red Hat Satelliteには、5.x系と6.x系の2系統の実装があります。主に管理対象とするRHELのバージョンとSatellite自身のライフサイクル、利用したい機能によりどちらを利用するかを選択します。 サブスクリプションはどちらのバージョンでも共通で、購入後に変更することも可能です。

Satellite 5.x

  • RHELの全バージョン(2.1から7.xまで)を管理可能

  • 通常サポートは2018年1月まで、延長サポートは2020年1月までで終了

Satellite 6.x

  • 管理対象はRHEL 5.7以降、RHEL 6.1以降、RHEL 7.0以降のみ

  • コマンドの実行はSatellite 6.2から搭載予定

2. Satelliteで利用したい機能を決める

Satelliteには非常に多くの機能があります。機能を全部使おうとすると評価や学習に時間を浪費することになってしまいます。利用する機能を、あらかじめ優先順位をつけて決めておくことが重要です。

現在の課題に対してSatelliteのどの機能が有効かを考えたい場合には営業窓口までご相談ください。

Red Hatトレーニングのハンズオントレーニングにて実際に機能を構築・試用しておくとスムーズに利用を開始できます。

(参考)よく利用される機能の例

  • 全てのRHELを登録してシステム台帳として利用する

  • Red HatのパッケージをSatelliteから取得することでアップデート作業時間を短縮する

  • Red Hatのパッケージとerrata情報から、脆弱性対応状況表として活用する

  • カスタムのチャネル/リポジトリを作成し、ISV製/内製ソフトウェアの配布に利用する

  • Satelliteから各ホストへのアップデート指示をおこなう

  • Satelliteから各ホストへコマンド実行の指示をおこなう (現在はSatellite 5.xのみ)

  • オフライン環境でのRHELアップデート実行を効率的に行う

3. Satelliteの構築をおこなう

ドキュメント Installation Guide を参照し、Satelliteのインストールをおこないます。

Red Hat コンサルティングによる有償での構築支援を提供しております。構築および導入を手早く行いたい場合におすすめです。Satellite 5.x, 6.xのいずれでも対応可能です。

事前に評価したい場合には評価用サブスクリプションをご用意しておりますので営業窓口までご相談ください。

4. 管理対象RHELをSatelliteへ登録

利用したい機能にあわせて、登録時にSatelliteからどの操作を許すか、エージェントなどの関連パッケージをインストールするか等を決定します。

管理対象RHELをSatelliteへ登録します。手順については関連するドキュメントをご確認ください。

  • 5.x系ではClient Configuration Guide

  • 6.x系ではProvisioning Guide

5. 機能をテストする

あらかじめ決めた利用したい機能をテスト的に実行し、思ったように利用できているか確認します。場合によっては3や4に戻って必要な機能のための設定の追加などをおこないます。

6. 手順書を作成し、運用に組込む

Satelliteの機能を含んだ運用手順を作成し、通常の運用に組込みます。

コンサルティングサービスにてお客様作成の手順書のレビューなども承っております。

7. Satellite運用を評価し、改善していく

ある程度運用が安定したら、Satelliteの機能を利用してどの程度管理工数や各種の待ち時間などが改善されたか評価します。徐々にSatelliteの機能を活用していく範囲をひろげていきましょう。

RHELセキュリティ情報の入手と対応

レッドハットではソフトウェアの修正をerrataというデータベースで公開しています。errataで公開されている修正を適用して既知の問題を避けることはRHELを利用したシステム管理の基本です。この記事ではRHELのセキュリティ情報の入手と対応方法についてご紹介します。

レッドハットの森若です。今回はRHELのセキュリティ情報を入手し、対応をおこなうまでの手順を見てみましょう。

修正が作成されるまで

一般にプログラムに問題があるときは、プログラムのソースコードを修正して対応します。RHELのほどんとのパッケージではアップストリームのソースコードを直接変更せずそのままにしておき、修正は複数の「パッチ(修正用の差分情報)」を追加することでおこなっています。

RHELで利用されているrpm(RPM Package Manager)では、元のソースコードとパッチ、さらにそれらを処理して実際に実行されるプログラムに変換するための情報を「ソースrpm」とよばれるパッケージにまとめます。

ソースrpmから「バイナリrpm」を作成します。これは実際に実行できるプログラムなどが入ったパッケージで、通常「rpmパッケージ」という場合にはこのバイナリrpmのことをさしています。

通常1つのソースrpmから、複数のバイナリrpmが作成されます。動作するCPUアーキテクチャや利用するライブラリ、オプションなどによって、同じソースrpmから異なるバイナリrpmが作成されます。

errataとアドバイザリ

このように作成されたソースrpmおよびバイナリrpmを公開するデータベースがerrataです。

errataに含まれている、修正を公開する単位が「アドバイザリ」です。アドバイザリは、1つまたは複数のソースrpmの修正に対応したアナウンスで、以下のような情報を含みます。

  • アドバイザリのID (RH?A-XXXX:YYYY というフォーマットです。 ?はS,B,Eのいずれか、XXXX,YYYYは数字です)

  • 修正された問題の要約

  • 発行日、最終更新日

  • (セキュリティ修正のみ)重要度

  • (セキュリティ修正のみ)関連する脆弱性情報

  • 影響をうける製品

  • 更新されたパッケージとそのバージョン

  • 関連するbugzillaエントリ(通常は複数の修正が含まれています)

errataはそれぞれのアドバイザリがレコードとしてならんだデータベースになっています。

重要な特徴として、errataではそれぞれのアドバイザリに順序関係があり、同じ製品であれば新しいアドバイザリには、それ以前のアドバイザリで提供された修正が全て反映されています。

たとえばfirefoxがアドバイザリ A, B, Cの順に3回修正されたとすると、Aに含まれている修正は全てB,C にも含まれ、Bに含まれている修正はCにも含まれています。

つまり、常に最新のパッケージを適用することで、全ての既知の問題に対応できます。「Bで修正された部分は利用するがAとCの問題はそのまま放置する」というような選択肢をなくすことで、管理がシンプルになっています。

アドバイザリの種類は?

アドバイザリには3種類の分類があり、それぞれIDが以下の4文字ではじまります。

  • RHSA セキュリティ上の脆弱性を修正したアドバイザリ

  • RHBA バグを修正したアドバイザリ

  • RHEA 機能拡張したアドバイザリ

RHEAはマイナーリリース(7.1から7.2など)のタイミングで行われます。機能拡張と同時にバグやセキュリティ上の問題の修正が含まれる場合があるため、RHBA, RHSAも機能拡張を含んでいることがあります。

errata情報の入手

errataの情報は公開されており、以下のwebページから参照することができます。

https://access.redhat.com/security/updates/active/

また、通知を受ける方法としてRHELでは3通りの方法を提供しています。

1. yum-updatesd によるメール送信、log出力

RHELに同梱されている yum-updatesd は定期的にカスタマーポータルに接続して更新情報を取得し、更新パッケージがあれば通知します。

通知方法にはe-mail, log出力, dbusが選択でき、デフォルト設定ではdbusによる通知を利用して、GUI環境でアップデートの通知を画面表示させます。この設定を変更することでメールやログの形でアップデートの通知を受けとることができます。

詳しくは、「man yum-updatesd.conf」としてマニュアルを参照してください。

2. Red Hat カスタマーポータルからのメールによる通知

カスタマーポータルのErrata notifications設定により、errata出荷時にメールで通知を受けとることができます。

https://www.redhat.com/wapps/ugc/protected/notif.html

3. メーリングリスト、RSSフィードによる通知

errataの更新についての通知を、RSSフィードおよびメーリングリストでおこなっています。

 

脆弱性のCVE numberから対応するerrataアドバイザリを確認

RHSAには、Common Vulnerabilities and Exposures (CVE)の関連する脆弱性情報へのリンクが含まれています。以下のサイトで、CVE numberからerrataのアドバイザリを逆引きすることができます。ニュースサイト等で見た脆弱性が製品への影響しているかの確認や、既に出荷されていればerrataのIDを確認することができます。

https://access.redhat.com/security/cve/

yumコマンドによるセキュリティ修正の確認・対応

インターネット接続が可能であるか、Red Hat Satelliteが利用可能な環境では、yumコマンドによりセキュリティ対応をおこなうことが可能です。

サマリの表示

# yum updateinfo
Loaded plugins: langpacks, product-id, subscription-manager
Updates Information Summary: available
    3 Security notice(s)
        2 Critical Security notice(s)
        1 Important Security notice(s)
    2 Bugfix notice(s)
    2 Enhancement notice(s)
updateinfo summary done

適用可能なerrataの一覧

# yum updateinfo list available
Loaded plugins: langpacks, product-id, subscription-manager
RHSA-2015:1443 Important/Sec. bind-32:9.9.4-18.el7_1.2.x86_64
RHSA-2015:1443 Important/Sec. bind-libs-32:9.9.4-18.el7_1.2.x86_64
RHSA-2015:1443 Important/Sec. bind-libs-lite-32:9.9.4-18.el7_1.2.x86_64
RHSA-2015:1443 Important/Sec. bind-license-32:9.9.4-18.el7_1.2.noarch
RHSA-2015:1443 Important/Sec. bind-utils-32:9.9.4-18.el7_1.2.x86_64
RHSA-2015:1207 Critical/Sec.  firefox-38.1.0-1.el7_1.x86_64
RHSA-2015:1229 Critical/Sec.  java-1.7.0-openjdk-1:1.7.0.85-2.6.1.2.el7_1.x86_64
RHSA-2015:1229 Critical/Sec.  java-1.7.0-openjdk-devel-1:1.7.0.85-2.6.1.2.el7_1.x86_64
RHSA-2015:1229 Critical/Sec.  java-1.7.0-openjdk-headless-1:1.7.0.85-2.6.1.2.el7_1.x86_64
RHBA-2015:1192 bugfix         openssl-1:1.0.1e-42.el7_1.9.x86_64
RHBA-2015:1192 bugfix         openssl-libs-1:1.0.1e-42.el7_1.9.x86_64
RHBA-2015:1474 bugfix         python-chardet-2.2.1-1.el7_1.noarch
RHEA-2015:1473 enhancement    python-urllib3-1.10.2-1.el7_1.noarch
RHEA-2015:1476 enhancement    redhat-access-insights-1.0.4-0.el7_1.noarch
updateinfo list done

アドバイザリ詳細の確認

# yum info-sec --advisory RHSA-2015:1443
Loaded plugins: langpacks, product-id, subscription-manager

===============================================================================
  Important: bind security update
===============================================================================
  Update ID : RHSA-2015:1443
    Release :
       Type : security
     Status : final
     Issued : 2015-07-20 00:00:00
       Bugs : 1237258 - CVE-2015-4620 bind: abort DoS caused by uninitialized value use in isselfsigned()
       CVEs : CVE-2015-4620
Description : The Berkeley Internet Name Domain (BIND) is an implementation of
            : the Domain Name System (DNS) protocols. BIND
            : includes a DNS server (named); a resolver library
            : (routines for applications to use when interfacing
            : with DNS); and tools for verifying that the DNS
            : server is operating correctly.
            :
            : A flaw was found in the way BIND performed DNSSEC
            : validation. An attacker able to make BIND
            : (functioning as a DNS resolver with DNSSEC
            : validation enabled) resolve a name in an
            : attacker-controlled domain could cause named to
            : exit unexpectedly with an assertion failure.
            : (CVE-2015-4620)
            :
            : Red Hat would like to thank ISC for reporting this
            : issue.
            :
            : All bind users are advised to upgrade to these
            : updated packages, which contain a backported patch
            : to correct this issue. After installing the
            : update, the BIND daemon (named) will be restarted
            : automatically.
   Severity : Important
updateinfo info done

CVE IDを指定してのアップデート

# yum update --cve CVE-2015-4620

アドバイザリIDを指定してのアップデート

# yum update --advisory RHSA-2015:1443

RHELのバージョンによりyumコマンドで利用するオプションが変わります。以下のナレッジベースでRHELの5,6,7それぞれでの操作をご案内しています。

https://access.redhat.com/solutions/10021

参考情報

セキュリティガイド 第3章 システムを最新の状態に保つ

ABRTで障害時の情報収集とレポートを自動化しよう

Red Hat Enteprise Linux 6から、ABRT(Automatic Bug Reporting Tool)が同梱されています。RHELを運用していて、ABRTからのレポートメール「[abrt] full crash report」を受信したことがある方もいるかと思います。今回はRHEL7でのABRTについて見てみましょう。

レッドハットの森若です。Red Hat Enteprise Linux 6から、ABRT(Automatic Bug Reporting Tool)が同梱されています。RHELを運用していて、ABRTからのレポートメール「[abrt] full crash report」を受信したことがある方もいるかと思います。今回はRHEL7でのABRTについて見てみましょう。

ABRTとは何か?

RHELに含まれるソフトウェアに何かしらの問題があり、クラッシュしたとしましょう。
レッドハットのサポートへ相談をするときに何をするでしょうか? 問題の再現と情報収集ですね。

問題の解析をする際には、問題発生時にそのソフトウェアが何をしようとしていたか、どのような環境で動作していたか、前後のログはどうであったか、コマンドラインはどうなっていたか、ファイルやメモリをどう使用していたかなどの多数の情報が必要になります。再現して収集するのではなく、これらの情報を最初から収集することができれば、問題解析の初動が非常に早くできます。

ABRTは、ユーザがアプリケーションのクラッシュを発見し、報告する時に必要になる作業を自動化するための仕組みです。ABRTは各種の問題を検出するabrtdと、検出した問題に関連した情報を収集し報告するためのプログラム群でできています。

ABRTのおおまかな動作は以下のようになっています。

  1. 起動時にabrtdを起動。ログの監視や、各種クラッシュの検出設定を仕込む
  2. 問題が発生。abrtが問題を検出
  3. 検出した問題の関連情報をできるだけ収集してファイルに保存
  4. 管理者へのメール送信などで問題があったことを通知
  5. レポート送信

ABRTはどのような問題を検出するか?

問題にはいろいろな種類がありますが、現在ABRTが対応する問題は以下のものです。クラッシュなどが発生せず意図しない動作をするような場合には対応できません。

  • C/C++, Python, Ruby, Java で作成されたプログラムのクラッシュ
  • linux kernel が”OOPS”メッセージを出力した場合
  • linux kernel がクラッシュしkdumpを出力した場合
  • Xサーバがクラッシュした場合

問題時の情報収集

ABRTが具体的にどのような情報を収集するかは、対応する問題によっても変わりますが、典型的には問題が発見されたプロセスがどのような状態であったかが収集されます。

収集した情報は/var/spool/abrt以下に保存されます。abrt-cliコマンドでその一覧を見ることができます。

# abrt-cli list
id cb36e53c4f8d61a7b93520735df0448349ee8936
reason:         systemd-logind killed by SIGABRT
time:           Tue 24 May 2016 10:43:23 AM JST
cmdline:        /usr/lib/systemd/systemd-logind
package:        systemd-219-19.el7_2.9
uid:            0 (root)
count:          2
Directory:      /var/spool/abrt/ccpp-2016-05-24-10:43:23-679
Run 'abrt-cli report /var/spool/abrt/ccpp-2016-05-24-10:43:23-679' for creating a case in Red Hat Customer Portal

この中のDirectoryが対応するディレクトリで、この中に問題に関連する情報が含まれています。

# ls /var/spool/abrt/ccpp-2016-05-24-10 
abrt_version    dso_list     machineid   pkg_name           type
analyzer    environ         maps         pkg_release       uid
architecture    event_log     open_fds    pkg_version       ureports_counter
cgroup        executable     os_info     proc_pid_status   username
cmdline        global_pid     os_release  pwd           uuid
component    hostname     package     reason           var_log_messages
core_backtrace    kernel         pid         runlevel
coredump    last_occurrence  pkg_arch    sosreport.tar.xz
count        limits         pkg_epoch   time

これらの定義については以下のナレッジベースに記載があります。
https://access.redhat.com/articles/2134281

収集した情報をレポート送信

ABRTではレポート送信がlibreportとしてモジュール化されており、レッドハットのカスタマーサポートに送信する他にもメールでの送信やbugzillaへ送信するなどいくつかの処理ができるようになっています。冒頭の「[abrt] full crash report」というメールはABRTがrootユーザ宛にこのレポートを送信したメールです。

RHELのデフォルトでは以下のコマンドにより、レッドハットのカスタマーサポートへレポートを送信できます。このふるまいは /etc/libreport/report_event.conf の設定により変更できます。

# abrt-cli report /var/spool/abrt/ccpp-2016-05-24-10:43:23-679

上記のようにコマンド入力すると、カスタマーポータルヘ接続可能であればアカウント情報を求められたのち、viでレポート入力をおこなってその場でレポートを送信できます。

ABRTの注意点

以上のようにABRTは問題解析を手助けしてくれる強力なツールなのですが、自分でプログラムを開発している場合はABRTの仕組みが邪魔になってしまうことがあります。たとえば同じ問題が繰り返し発生することを想定して、ABRTでは同じプログラムの同じような問題が繰り返されていれば一旦保存したダンプを削除しますが、開発中はこのような動作は望ましくありません。

このような場合には  /etc/abrt/abrt-action-save-package-data.conf でABRTの対象外となるパッケージや、ディレクトリ名を指定することで通常のパッケージについてはABRTを利用しつつ自分の作業についてはABRTを使わないような工夫ができるようになっています。

関連ドキュメント

Red Hat Enterprise Linux 7 システム管理者のガイド 「第20章 自動バグ報告ツール (ABRT)」 https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-abrt.html