web-dev-qa-db-ja.com

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

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

彼らはSudoアクセスを持っていないので、Tomcatディレクトリのフォルダー権限を変更する必要があります。

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

bin/

conf/

lib/

logs/

temp/

webapps/

work/

上記の状況でのベストプラクティスとは何ですか-ユーザーへの最も適切なアクセス許可?とりあえず、許可を777からwebappsとlogsに変更しました。

ありがとう

25
Kunal

私はこのようにします:

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

# chown -R Tomcat:tomcat /opt/Tomcat

ユーザーはnot 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 MYUSER
36
intropedro

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

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

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

13
Jack

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

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

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

次に、一部のディレクトリのwebdevに書き込み権限(1570)を付与する必要があります。ここでは試行錯誤が必要ですが、アプリケーションによって異なる場合があります。これらのフォルダーは1570でなければなりませんが、他のフォルダーは0500にすることができます)。

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

1
Calimo

@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/binconfigtest.shと呼ばれる素敵なユーティリティがあり、権限やその他のエラーがあるかどうかを報告します。注: いくつかのシンボリックリンクの追加を提案するオープンバグ があります。

Ubuntu trusty(14.04)はまだ実行中です。最近のバージョンを実行している人には、Tomcat 8 apt-getリポジトリがあると思います。

1
Tom Harrison Jr