Tomcat セキュリティ仕様 (Tomcat セキュリティ強化と仕様)

Tomcat セキュリティ仕様 (Tomcat セキュリティ強化と仕様)

tomcat はオープンソースの Web サーバーです。Tomcat ベースの Web は実行効率が高く、一般的なハードウェア プラットフォームでスムーズに実行できます。そのため、Web マスターの間で非常に人気があります。ただし、デフォルト構成では、特定のセキュリティ リスクがあり、悪意のある攻撃を受ける可能性があります。セキュリティ強化のいくつかを以下に示します。

バージョンセキュリティ

最新の安定バージョンにアップグレードします。安定性上の理由から、バージョン間のアップグレードは推奨されません。

サービス降格

Tomcatを起動する際にはrootユーザーを使用しないでください。通常のユーザーを使用してTomcatを起動してください。クラスタ内のユーザー名はUIDと統一されています。

ポート保護

1 Tomcat 管理ポート 8005 を変更します。このポートには Tomcat サービスをシャットダウンする権限がありますが、ポートを 8000 から 8999 の間で設定し、シャットダウン コマンドを変更する必要があります。
2 Tomcat がイントラネット内に配置されている場合、Tomcat サービスのリスニング アドレスはイントラネット アドレスになります。
3 デフォルトの ajp 8009 ポートを変更して競合の可能性を低くします (1024 より大きい)。ただし、ポートは 8000 から 8999 の間で構成する必要があります。

管理端末を無効にする

1 デフォルトの$CATALINA_HOME/conf/tomcat-users.xmlファイルを削除し、Tomcatを再起動すると新しいファイルが自動的に生成されます。
2 $CATALINA_HOME/webappsからダウンロードしたすべてのデフォルトディレクトリとファイルを削除します。
3 TomcatアプリケーションルートディレクトリをTomcatインストールディレクトリ以外のディレクトリに設定する

Tomcatのバージョン情報を非表示にする

この情報の表示は、$CATALINA_HOME/lib ディレクトリに保存され、catalina.jar という名前の jar パッケージによって制御されます。
jar xf コマンドを使用して jar パッケージを解凍すると、META-INF と org の 2 つのディレクトリが生成されます。
org/apache/catalina/util/ServerInfo.propertiesファイルのserverinfoフィールドを変更して、Tomcatのバージョン情報を変更します。

自動戦争展開を無効にする

デフォルトでは、Tomcat は war パッケージのホット デプロイメントを有効にします。トロイの木馬やその他の悪意のあるプログラムの埋め込みを防ぐために、自動展開をオフにする必要があります。

インスタンスを変更します。

<ホスト名="localhost" appBase=""
unpackWARs="false" autoDeploy="false">

カスタムエラーページ

conf/web.xml を編集し、</web-app> タグの上に次のコンテンツを追加します。

<エラーページ>
  <エラーコード>404</エラーコード>
  <場所>/404.html</場所>
</エラーページ>
<エラーページ>
  <エラーコード>500</エラーコード>
  <場所>/500.html</場所>
</エラーページ>

ディレクトリファイルが自動的にリストされないように保護する

conf/web.xmlファイルを編集する

<サーブレット>
    <サーブレット名>デフォルト</サーブレット名>
    <サーブレットクラス>org.apache.catalina.servlets.DefaultServlet</サーブレットクラス>
    <初期化パラメータ>
      <param-name>デバッグ</param-name>
      <パラメータ値>0</パラメータ値>
    </init-param>
    <初期化パラメータ>
      <param-name>リスト</param-name>
      <param-value>false</param-value>
    </init-param>
    <起動時に読み込む>1</起動時に読み込む>
  </サーブレット>
 
<param-value>false</param-value>

ここで、falseはリストに表示しないことを意味し、trueはリストに表示することを許可することを意味します

複数の仮想ホスト

Tomcat の仮想ホストを使用しないことを強く推奨します。サイトごとに 1 つのインスタンスを使用することをお勧めします。つまり、複数の仮想ホストを含​​む 1 つの Tomcat を起動する代わりに、複数の Tomcat を起動することができます。
Tomcat はマルチスレッドでメモリを共有するため、仮想ホスト内のいずれかのアプリケーションがクラッシュすると、すべてのアプリケーションに影響します。複数のインスタンスを使用すると過度のオーバーヘッドが発生しますが、少なくともアプリケーションの分離とセキュリティは確保されます。

スクリプト権限の回復

CATALINAHOME/binディレクトリ内のstart.sh、catalina.sh、shutdown.shの実行権限を制御します。
chmod −R744 CATALINA_HOME/bin/*

Tomcatとプロジェクトユーザーを分ける

Tomcat が Web シェル プログラムに埋め込まれるのを防ぐには、プロジェクト ファイルを変更します。したがって、Tomcat をプロジェクト所有者から分離して、ハッキングされた場合でもプロジェクト ファイルを作成および編集できないようにする必要があります。

サーバーヘッドの書き換え

HTTPコネクタ構成にサーバー構成server="server_name"を追加します。デフォルトはApache-Copyote/1.1です。
設定によりアクセスのIPソースを制限する

<ホスト名="localhost" appBase="/data/www/tomcat_webapps" unpackWARs="true" autoDeploy="false">
<Valve クラス名="org.apache.catalina.valves.RemoteAddrValve" 許可="192.168.1.10,192.168.1.30,192.168.2.*" 拒否=""/>
<Valve クラス名="org.apache.catalina.valves.RemoteHostValve" allow="www.test.com,*.test.com" deny=""/>
</ホスト>

アクセス ログ形式の仕様<br /> Tomcat のデフォルトのアクセス ログで Referer レコードと User-Agent レコードを有効にする

標準構成:

<Valve クラス名="org.apache.catalina.valves.AccessLogValve"
ディレクトリ="logs" プレフィックス="localhost_access_log"
サフィックス=".txt" パターン="%h %l %u %t &quot;%r&quot; %s %b %{Referer}i %{User-Agent}i %D"
解決ホスト="false" />

Tomcat は不正な HTTP メソッドを無効化します

web.xmlファイルの設定を編集する

org.apache.catalina.servlets.DefaultServlet の <init-param> 
<param-name>読み取り専用</param-name> 
<param-value>true</param-value> 
</init-param>

param-value が true の場合、削除および配置操作は許可されません。

tomcat ユーザーにリモート管理権限がある<br /> tomcat-users.xml で、次のように tomcat ユーザーのロール値を変更してマネージャーを含めます。

<user ユーザー名="tomcat" パスワード="***"
役割="マネージャー">

tomcat の自動ログアウト時間は 30 秒以内です<br /> server.xml を編集し、次のように自動ログアウト時間を 30 秒に変更します。

<コネクタ 
ポート="8080" 最大Httpヘッダーサイズ="8192" 最大スレッド数="150" 
最小スペアスレッド数="25" 最大スペアスレッド数="75", 
enableLookups="false" リダイレクトポート="8443" 受け入れカウント="100" 
接続タイムアウト="30000" アップロードタイムアウトを無効に="true" />

Tomcat は、マシンのパフォーマンスとビジネス ニーズに基づいて、接続の最小数と最大数を設定する必要があります。

server.xmlファイルを編集します。

例は次のとおりです: <Connector port="8080" minSpareThreads="25" .../>
minSpareThreads="25" は、誰も使用していなくても、待機用にこれだけの空きスレッドが開かれることを意味します。実際の状況に基づいて接続数を設定してください。

server.xmlファイルを編集します。
例は次のとおりです: <Connector port="8080" maxThreads="150"……/>
maxThreads="150" は、最大 150 の接続を同時に処理できることを意味します。実際の状況に基づいて接続数を構成します。

Tomcat 構成アクセス ログ<br /> server.xml を変更し、次のコンテンツのコメントを解除します。

<Valve クラス名="org.apache.catalina.valves.AccessLogValve" 
ディレクトリ=”logs” プレフィックス=”localhost_access_log.” サフィックス=”.txt” 
パターン="common" resloveHosts="false"/>

Tomcat エラーページリダイレクトを構成する

web.xml ファイルを編集し、次のように変更します。

<エラーページ> 
<エラーコード>404</エラーコード> 
<場所>/noFile.htm</場所> 
</エラーページ> 
………… 
<エラーページ> 
<例外タイプ>java.lang.NullPointerException</例外タイプ>
<場所>/error.jsp</場所> 
</エラーページ>

この記事はこれで終わりです。123WORDPRESS.COM の編集者が後ほどさらに詳しい情報をお伝えします。

以下もご興味があるかもしれません:
  • Tomcat セキュリティ設定 win2003 tomcat 権限制限
  • Tomcat サーバーのセキュリティ設定
  • Tomcatのセキュリティ構成とパフォーマンスの最適化の詳細な説明
  • Web セキュリティ - Tomcat は WebDAV を無効にしたり、不要な HTTP メソッドを禁止したりします
  • Tomcatサーバーのセキュリティ設定方法

<<:  TypeScript をインストール、使用、自動コンパイルする方法に関するチュートリアル

>>:  MySQL でデータをクエリし、条件に基づいて別のテーブルに更新する方法の例

推薦する

Tomcat の文字化けしたコードとポート占有の解決方法について簡単に説明します

Tomcat サーバーは、無料でオープン ソースの Web アプリケーション サーバーです。軽量のア...

MySQLデータの挿入、更新、削除の詳細

目次1. 挿入2. 更新3. 削除1. 挿入 顧客に挿入( 顧客.顧客住所、 顧客.cust_cit...

ElementUI のネストされたテーブルに基づいて複数選択を実装するためのサンプル コード

序文:私は友人のプロジェクトのバグを修正するのを手伝ったのでこれを書きました。この関数を書くのは初め...

Linux で複数のファイルの名前を一括で変更する方法

Linux では、通常、ファイルの名前を変更するために mv コマンドを使用します。これは、単一のフ...

nginx設定ファイルの場所を見つける方法の詳細な説明

よく知らないサーバーの場合や、かなり前にインストールした場所を忘れてしまった場合、構成ファイルの場所...

MySQL データ分析ストレージエンジンの例の説明

目次1. 事例紹介2. システムのデフォルトのストレージエンジンとデフォルトの文字セットを表示する3...

MYSQL ログとバックアップおよび復元の問題の詳細な説明

この記事では、参考までにMYSQLログとバックアップとリストアについて紹介します。具体的な内容は以下...

Nginx アクセス ログとエラー ログ パラメータの説明

例: nginx ログには、アクセス ログとエラー ログの 2 つの主な種類があります。アクセス ロ...

MySQL をベースにしたシンプルな検索エンジンを実装する

目次MySQL ベースの検索エンジンの実装1. ngram全文パーサー2. 全文インデックスを作成す...

Vue は水の波紋効果のクリックフィードバック指示を実装します

目次水波効果実装を見てみましょう水の波紋のデフォルトスタイルをカスタマイズする水の波紋の位置と直径を...

Reactのコンテキストとプロパティの説明

目次1. 文脈1. 使用シナリオ2. 使用手順3. 結論2. 小道具の詳細1. 子供の財産2. 小道...

1時間で学ぶMySQLの基礎

目次MySQL を使い始めるMySQL 管理6. MySQL サーバーを起動および停止します。 7....

HTML テーブル マークアップ チュートリアル (15): テーブル タイトル

<br />このタグを使用すると、表のタイトルを直接追加し、タイトル テキストの配置プロ...

Dockerコンテナの入退出方法の詳細な説明

1 Dockerサービスを開始するまず、docker サービスを開始する方法を知っておく必要がありま...

虫眼鏡効果を実現するJavaScript

この記事では、虫眼鏡効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。...