2018-08-10

RStudio Server と SELinux (Fedora)

RStudio は R のための統合開発環境 (IDE) です。RStudio には 2 つのエディションがあります。デスクトップアプリケーションとして利用する RStudio Desktop と、Linux 上でサービスとして動作させてリモート PC からウェブブラウザでアクセスして利用する RStudio Server です。

普段は RStudio Desktop (デスクトップ版と呼ぶことにします)を利用しているのですが、ある事情で RStudio Server の方も使うことになりました、RStudio Server はリモート PC から利用できますが、もちろんサーバである localhost でもウェブブラウザ上で利用できます。ポートは 8787 です。ウェブブラウザ上で RStudio を利用する以外はデスクトップ版と使用感はほとんど違いません。

Sign In 画面は表示されるが…

RedHat/CentOS 用のパッケージ rstudio-server-rhel-1.1.456-x86_64.rpm をダウンロードして [1] Fedora 28 の環境へインストールしました。

早速 Google Chrome を起動して localhost:8787 にアクセスすると、RStudio への Sign In ウィンドウが表示されます。ログインしている Linux (Fedora) のユーザーアカウント(この例では bitwalk)とそのパスワードを入力して、Sign In ボタンをクリックします。

http://localhost:8787 へアクセスとサインイン (Sign In)

しばし待つと、「サービスに接続できませんでした」という意味のエラーメッセージが表示され、Sign In に失敗してしまいます。

サインイン (Sign In) に失敗

SELinux を一時的に無効にする

Fedora では SELinux がデフォルトで有効になっていますので、まずは SELinux が影響しているかどうかを確認するため、次のように SELinux を一時的に無効(enforcing → permissive)にします。

$ sudo setenforce 0
[sudo] bitwalk のパスワード:
$ 

ウェブブラウザ上で前述の URL を再読み込みさせると無事 Sign In に成功します。どうやら SELinux が影響しているようです。

RStudio Server のサービス利用例

SELinux について

SELinux (Security-Enhanced-Linux) は Linux ディストリビューションの名前ではなく、カーネルに強制アクセス制御機能を加えるモジュールの名称です。ディレクトリやファイルに割り当てられているパーミッションとは別に、SELinux はプロセスごとにアクセス制限し、root を含む全てのユーザに対する制限をかけることで、root に権限が集中することを防ぎ、高いセキュリティを持ったシステムを構築できるようにしています。

これは、コンピュータウィルスのような外部からの不正侵入に対して完全な防御をする、というものではなく、被害を最小限に食い止めるというアプローチです。

SELinux を簡単に無効にはしたくない

では、SELinux を無効にして RStudio Server を使うのか?そういう簡単な選択もできるでしょう。しかし SELinux を全て無効にしてしまうことは、愛用している Linux マシンのセキュリティレベルをむざむざ下げることになります。

業務で使っている Windows PC では、コンピュータウィルスなどの外部からの不正侵入を防ぐため、ウィルス対策ソフトウェアをインストールして、適切に運用することが社内的に義務づけられています。そのため、Winodws PC では自分が使う用途ばかりでなく、常にウィルス対策のためのタスクに相応のリソース(と人的な確認の手間)を割いています。

Linux にウィルス対策ソフトウェアをインストールせずにいろいろなネットワーク環境下で安心して使っていられるのは、(エンドユーザーには)ポピュラーではない OS である、という事情もありますが、Windows OS にはない堅牢なシステムの構造があるからです。

SELinux を扱うのに不慣れだという理由で無効にすることは避けたいので、今回は SELinux と向き合ってみることにしました。

SELinux Troubleshooter を使う

GNOME3 のデスクトップの場合、アプリケーションの一覧にある「諸ツール」から SELinux Troubleshooter を起動します。

SELinux Troubleshooter の起動

SELinux Troubleshooter の起動すると、SELinux が検出した問題と、原因プロセス、試行したアクセス、対象が表示されます。トラブルシュート ボタンをクリックすると解決策が表示されます。

SELinux トラブルシューティング (1)

端末エミュレータを起動し、解決策を実行します。

$ sudo ausearch -c 'rserver' --raw | audit2allow -M my-rserver
[sudo] bitwalk のパスワード:
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i my-rserver.pp

$ sudo semodule -X 300 -i my-rserver.pp
$ 

残念ながら、これだけでは RStudio Server に Sign In できず、状況は変わりませんでした。

めげずに、再度 SELinux Treoubleshooter を起動すると、前回と異る原因プロセスが表示されています。

SELinux トラブルシューティング (2)

再び端末エミュレータ上で、解決策を実行します。

$ sudo ausearch -c 'rsession' --raw | audit2allow -M my-rsession
[sudo] bitwalk のパスワード:
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i my-rsession.pp

$ sudo semodule -X 300 -i my-rsession.pp
$ 

今後は、ウェブブラウザ上で RStudio を利用できるようになりました。

起動後の RStudio Server のサービス

これで全てが問題なく動くようになったかどうかは解りませんが、不具合に遭遇した時に SELinux の影響が考えられる場合には同じやり方で対処できそうです。

補足

その後、パッケージをロードするときなど SELinux の影響はまだまだ続きましたが、SELinux Troubleshooter で同じように確認、対処して使っています。

参考サイト

  1. Download RStudio Server - RStudio
  2. 「SELinuxのせいで動かない」撲滅ガイド [2015-07-19]

 

ブログランキング・にほんブログ村へ
にほんブログ村

0 件のコメント: