前回、SELinuxのアクセス拒否が原因で起きる問題を、いくつかの事例を見ながら確認しました。今回はさらに進んで、SELinuxの機能により、新たにアプリケーションに特定のドメインを作成して制御する方法を紹介します。

 SELinuxで新たにドメインを作成するにはいろいろな方法がありますが、一番簡単なのは「selinux-devel」のパッケージをインストールすることです。

 ただし、このパッケージはDevパッケージで開発環境を提供するため、ポリシーの開発は開発用サーバーで行い、本番環境には出来上がったポリシーのみをコピーする方が安全に本番環境を運用できます。

 以下、実例を使ってドメインの作成方法を見ていきましょう。

logstashのテスト環境を作る

 logの集中化と安全な保存は、運用管理の中でも(特に金融系など、官庁による査察などが入る場合には)重要なタスクになります。その中でも、logを集中化して可視化し予兆検知や管理をするシステムとして、logstash+ElasticSearch+Kibana(いわゆるELK)のシステムが注目されています。

 今回は、この中でも主要なパートになるログ収集部分の「logstash」をSELinuxにより保護することにします。

 logstashはログを収集し、転送する部分になります。logstashの開発元の米Elastic Search社のサイトにインストール方法が記載されていますので、オフィシャルの手順に従いインストールします(図1)。

図1●logstashパッケージをインストールする
図1●logstashパッケージをインストールする
[画像のクリックで拡大表示]

 次にlogstashの動作を確認するために、サンプルを作成します。システムログを監視対象として設定し、出力を/var/tmp/logstash-outputというファイルとして出力します。

 logstashは「logstash」ユーザで動くため、このままですと/var/log/messagesを開くときに「Permission Denied」が表示されてアクセスできません。そのため

  • logstashをrootで動かす
  • /var/log/以下のファイルの権限を緩くする

のいずれかが必要になります。今回は、/etc/rsyslog.confを修正し、所有者をlogstashにしたログファイル「/var/log/messages_logstash」を作成します。