セキュリティ運用に必須のパッチ管理とログ監視(前編)
はじめに
今回から、実際のセキュリティ運用に必須な「パッチ」の管理と「ログ」の監視について解説します。昨今、特にセキュリティに関してはパッチ適用の必要性が再認識されてきています。また、ログはインシデント対応やインシデント予兆の確認のために活用されています。
これらのパッチが適用できているか、ログから何か予兆は出ていないかなどを集中して管理・監視するためのツールについて、それぞれ触れていきます。
- パッチの集中管理を行うツール
- ログの集中監視を行うツール
今回は、1.の「パッチの集中管理を行うツール」について簡単に紹介します。
パッチ管理ツールとは
システムのパッチを管理するツールは、大きく分けて次の2種類に分けられます。
- ディストリビューション等に付属のパッケージ管理ツール
- CUIやWeb-UI等で複数のシステムのパッケージ・パッチを統合管理するもの
ここでは、2番めのパッチを統合管理するツールについて解説します。OSSで提供されている代表的なパッチ統合管理ツールには、次の2つがあります。
- Foreman+Katello
- Spacewalk
今回は、Foreman+KatelloとSpacewalkの概略を解説し、それぞれの基本的な機能を比較してみます。
Foremanとは
「Foreman」は「Red Hat Satellite 6.0」の中核となるOSSのツールです。様々なプラグインを用いて拡張でき、「Katello」もその中の1つです。Red Hat Satellite 6.0は、下記の4つのツールを組み合わせて構成されています。
- Foreman:プロビジョニングと構成管理
- Pulp:プロビジョニングと構成管理
- Candlepin:プロビジョニングと構成管理
- Katello:ソフトウェアライフサイクル管理
Foreman+Katelloをセットアップしてみる
Foreman+Katelloの構成は、既存のForemanにKatelloのプラグインをインストールすることでも実現できますが、まっさらな状態でインストールする場合はKatelloのインストーラを使用したほうが簡単です。
Katelloをインストールする際のハードウェア要件は、下記のとおりです。
- CPU:2CPU(x64)
- Memory:8GB(推奨は12GB)
- HDD:容量が大きければ大きいほど良い
・/var/lib/pulp以下に管理するOSの更新パッケージが格納されます。一つのOSにつき、30GB以上が必要です。
・/var/spool/squid以下がテンポラリディレクトリとして使用されます。/var/lib/pulp以下と同じサイズ(一つのOSにつき、30GB以上)を用意しておいたほうが良いです。
・/var/lib/mongodbは4GB以上必要になります。目安として、/var/lib/pulpの40%程度が最小限になります。
・/ファイルシステムは20GB以上が必要になります。
なお、Katelloのインストール自体はKatelloのインストールマニュアルに従えば簡単に完了できるので、詳しい手順は割愛します。
Katelloを使ってOSを管理してみる
それでは、Katelloを使って実際にCentOS(7.4)を管理してみましょう。KatelloではWeb-UIからシステムを管理します。
図1のようにWeb-UIのアカウントでログインすると、図2のようなDashboard形式で管理しているシステムの状況が表示されます。Katelloでは管理組織(Organization)と位置(Location)でシステムのグループを作ることができ、それぞれのシステムでDashboardを確認できます。今回の例では、Organizationとして「JSOSUG」、Locationとして「TOKYO」「Osaka」「Nagoya」等を登録しています(図3、図4)。
管理するプロダクトの登録
Productとそのレポジトリを登録しておくことで、複数の種類のディストリビューション等の更新パッケージを管理できます。例えば、CentOS/RHELの各バージョンやDockerイメージ等です。
ちなみに、2018年4月時点ではKatelloでDebianのパッケージを管理するための機能拡張は開発中となっています。今後の機能拡張が待たれるところです。
なお、Productとレポジトリの登録方法も、前出のインストールガイドに詳しく書かれています。今回の例ではCentOS 7.4のbaseレポジトリとupdateレポジトリを「CentOS_7」というProduct名で登録して管理しています(図5)。インターネットからのレポジトリ更新スケジュールも「Sync Plan」として設定できます(図6)。
ホストの登録
「Katello-Agent」をインストールして、既存のサーバを管理対象として登録します。Katello-Agentのインストール方法については、こちらのドキュメントを参照してください。
最初にホストを登録したい組織(今回の例ではJSOSUG)を選択しておき、画面上部のメニューから「Hosts」→「Content Hosts」と選択して「Register Content Host」をクリックするとホストを登録する手順が表示されるので、その手順に従います(図7、図8)。また、登録したホスト情報をEditすることで、ホストの管理(Manage) やOSの登録などを行えます。
パッケージの更新
Katelloに登録して管理されているホストは、Katello内にダウンロードしたレポジトリと比較して、バージョンが古い場合はパッケージを更新できます。これにより、パッケージの更新を一括して集中監視できます。また、更新は一括/個別を選択して行うことができます(図9、図10)。
Spacewalkとは
「Spacewalk」は「Red Hat Satellite 5.x」のOSS版です。Red Hat Satelliteのバージョンとしては若干古めですが、その分Web等で参考になる情報が多くあります。また、他のディストリビューション等にも対応済みで、DebianやSuSE等も管理対象に含めることができます。開発自体も積極的に続けられており、2018年4月時点の最新バージョンは2.7です。
Spacewalkをセットアップしてみる
Spacewalkをインストールする際のハードウェア要件は、下記のとおりです。
- Memory:2GB(推奨は4GB)
- HDD:容量が大きければ大きいほど良い
・/var/satellite(パッケージがダウンロードされます)は、一つのchannel(前述のKatelloでのレポジトリと同様のものです)に対して6GBが推奨されています。
なお、Spacewalkもインストール自体はSpacewalkのインストールマニュアルに従えば簡単に完了できるので、詳しい手順は割愛します。
Spacewalkを使ってOSを管理してみる
それでは、Spacewalkで実際にCentOS(7.4)を管理してみましょう。SpacewalkもWeb-UIからシステムを管理します。
インストール直後にSpacewalkサーバにhttpsでアクセスすると、組織(Organization)の名前とSpacewalkのID・パスワードを設定する画面が出てきます(図11)。以降は、ここで設定したID・パスワードでログインすることになります(図12)。
管理するChannelの登録
ローカルでパッケージの「Channel」を登録し、インターネット上に公開されているレポジトリと同期を取ることで、ローカルでパッケージを管理できます。例えば、CentOS/RHEL/Fedoraの各バージョン、SuSE、Debian等が登録可能です。
Channelの登録方法は、前出のインストールガイドを参照してください。今回の例では、CentOS 7.4のChannelを「CentOS_7_x86_6」、update Channelを「CentOS_7_x86_64_Update」というProduct名で登録して管理しています(図13)。ここではChannelの更新頻度も設定できます。
ホストの登録
「Spacewalk-Client」をインストールして、既存のサーバを管理対象として登録できます。Spacewalk-Clientのインストール方法とホストの登録方法については、こちらのドキュメントを参考にしてください。具体的にはSpacewalkでActivation Keyを作成し(図14)、管理するホストに手動でspacewalk-client/rhnのRPMパッケージをインストールします。
また、登録したホスト情報をEditすることで、ホストの管理(Manage)などを行えます。
パッケージの更新
Spacewalkに登録して管理しているホストは、Spacewalkにダウンロードしたレポジトリと比較して、バージョンが古い場合はパッケージを更新できます。一括もしくは個別で更新することもできます(図15)。
Foreman+KatelloとSpacewalkの機能比較
最後に、Foreman+KatelloとSpacewalkの機能比較を図16にまとめました。Spacewalkの方が成熟度や対応するディストリビューションも多く、ドキュメントも多めです。
現在でも両ツールの開発は継続されていますが、Foreman+Katelloの方が最新のRed Hat Satelliteとして実装されていることから、不足している機能等の補完・開発は今後も継続されていくと思われます。サポートしたいシステムが対応しており、英語で情報をキャッチできる方であればForeman+Katelloを使用すると良いでしょう。ただし、構築には少し時間がかかると思われます。
一方で、Spacewalkは簡単にインストールと設定ができるので、「手軽にパッチ管理を導入したい」といった場合にはSpacewalkを使用すると良いでしょう。