Apache Tomcatのユーザーへのアクセス許可のベストプラクティス


22

さまざまな開発者がLinuxボックスを共有しています。彼らは、共有ファイル(/ opt / tomcat)にあるApache Tomcatにwarファイルをデプロイしたいと考えています。

彼らはsudoアクセスを持っていないので、私はtomcatディレクトリのフォルダ許可を変更しなければなりません。

下のディレクトリ構造/opt/tomcatは-

bin/

conf/

lib/

logs/

temp/

webapps/

work/

上記の状況でのベストプラクティスは何ですか-ユーザーに最も適したアクセス許可ですか?当分の間、777の許可をwebappsとlogsに変更しました。

ありがとう

回答:


32

私はこのようにします:

TomcatユーザーをTomcatのフォルダーの所有者として設定します。

# chown -R tomcat:tomcat /opt/tomcat

ユーザーは、Tomcatの構成を変更できません

# chmod -R g+r /opt/tomcat/conf

ユーザーは他のフォルダーを変更できます。

# chmod -R g+w /opt/tomcat/logs
# chmod -R g+w /opt/tomcat/temp
# chmod -R g+w /opt/tomcat/webapps
# chmod -R g+w /opt/tomcat/work

新しいファイルのスティッキビットをアクティブにして、アクセス許可を定義します。

# chmod -R g+s /opt/tomcat/conf
# chmod -R g+s /opt/tomcat/logs
# chmod -R g+s /opt/tomcat/temp
# chmod -R g+s /opt/tomcat/webapps
# chmod -R g+s /opt/tomcat/work

最後に、Tomcatを使用できるユーザーが必要なTomcatグループを追加します。

# usermod -a -G tomcat MIUSER

4
-aタグなしで実行した場合、ユーザーをTomcatグループに追加しますが、MIUSERが属する他のすべてのグループからMIUSERを削除します(これは、これ以上sudoグループを意味しません)。私は、サーバーの1つのメインアカウントでグループを回復するために迅速に行動する必要があり、それらのグループをまだ保持していた古いセッションからそれらを取得しました。この回答を読んでいる他のユーザーへの警告の言葉。
Axoren

応答にオプションを追加しました。おかげで
intropedro

TomcatをTomcatユーザーとして起動するにはどうすればよいですか?私はデーモンとして開始され、現在はルートとして実行されています。
ステファン

1
こんにちはステファン、Ubuntuでは、Tomcatはtomcatユーザーで実行されており、ファイル/ etc / default / tomcat8に変数TOMCAT8_USERおよびTOMCAT8_GROUPが含まれています。他のLinuxでは、私は知りません。
-intropedro

+sユーザー/グループIDが設定されていませんか?マニュアルページに+tはスティッキービットと書かれています。
bmaupin

13

Non-Tomcat settingsTomcatのセキュリティハウツーのセクションでは、このトピックに関する有用な情報を提供しています。こちらをご覧ください:

Tomcatをrootユーザーで実行しないでください。Tomcatプロセス専用のユーザーを作成し、そのユーザーにオペレーティングシステムに最低限必要な権限を付与します。たとえば、Tomcatユーザーを使用してリモートでログオンすることはできません。

ファイルの許可も適切に制限する必要があります。ASFのTomcatインスタンスを例として(自動展開が無効になっており、Webアプリケーションが展開ディレクトリとして展開される場合)、標準構成では、Tomcatグループで所有者が読み取り/書き込み権限を持つすべてのTomcatファイルをrootが所有します、グループには読み取りのみが許可され、worldには許可がありません。例外は、rootではなくTomcatユーザーが所有するログ、一時ディレクトリ、および作業ディレクトリです。つまり、攻撃者がTomcatプロセスを侵害したとしても、Tomcatの構成を変更したり、新しいWebアプリケーションを展開したり、既存のWebアプリケーションを変更したりすることはできません。Tomcatプロセスは、007のumaskで実行され、これらのアクセス許可を維持します。


説明したアプローチがTomcatだけでなく、他のサービス(データベース、リバースプロキシなど)でも採用できるかどうか疑問に思います。実現可能/賢明だと思いますか?
パオロ

1

最小限の特権原則に従う必要があります。サーバー(おそらくwww-dataですが、確認する必要があります)は、ほとんどのファイル(すべてとしましょう)を読み取り、ログのみに書き込むことができる必要があります。Web開発者は、必要な場所に書き込むことができます。ファイルの所有者だけが削除できるように、ディレクトリにスティッキービットを設定します。

実際には、グループを作成し(たとえばwebdev)、すべての開発者とサーバーをそのグループに追加する必要があります(usermod -aG webdev <user>またはusermod -A webdev <user>Linuxフレーバーに応じて)。chownすべてのファイルとディレクトリをウェブサーバーユーザーに、すべてのディレクトリを500に、すべてのファイルを400にchmodします(bin実行可能ファイルも500にする必要がある場合を除く)。

/opt/tomcatグループ(570)に書き込み権限を付与し、所有するファイルのみを削除できるようにスティッキービットを設定します(chmod 1570)。サーバーへのログへの書き込み許可と開発者への読み取り許可を付与します(フォルダーの場合は0740、ファイルの場合は0640、おそらくスティッキービットは必要ありません。異なる意味(ファイルが実行可能な場合、所有者の許可で実行)。

次にwebdev、いくつかのディレクトリに対して書き込み許可(1570)を付与する必要があります。ここではいくつかの試行錯誤が必要であり、アプリケーションに依存する可能性があります。これらのフォルダーは1570である必要がありますが、他のフォルダーは0500にすることができます。

開発者は、ファイルの読み取りアクセスをグループに許可して、サーバーがそれらを読み取り(640)、ディレクトリ(750)を実行できるようにする必要があります。


1

@intropedroの受け入れられた答えは良いものだと思います。パッケージインストーラを使用すると、多くの頭痛の種を節約できることを指摘しておく価値があります。少なくともUbuntu上のTomcat 7の場合apt-get install tomcat7、インストールディレクトリの「標準」セットは次のとおりです。

  • /etc/tomcat7 構成ファイルの場合、
  • /var/lib/tomcat7 コアライブラリ用
  • /usr/share/tomcat7 共有リソース用。

グループにユーザーを追加tomcat7するだけで展開が許可されるように、すべての権限が最小権限の原則で正しく設定されます。さらに、Tomcatサーバーは、他のサービスとして(たとえば、sudo service tomcat startまたは/etc/init.d/tomcat start)起動および停止できるサービスとして設定されます。Tomcatは再起動時に自動的に起動し、「再起動」コマンドがあります。RHEL / CentOSユーザー向けの同等のyumパッケージがあると確信しています。(そして、はい、ローカルOSXインストール用の自作インストーラーがあります)。

問題が発生している場合は、権限またはその他のエラーがあるかどうかを報告する便利なユーティリティが/usr/share/bin呼び出さconfigtest.shれます。注:いくつかのシンボリックリンクを追加することを提案する未解決のバグがあります

まだUbuntu trusty(14.04)を実行しています。より新しいバージョンを実行している人のために、Tomcat 8 apt-getリポジトリがあると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.