Tomcat は、Java Community Process を通じて Sun が開発した、広く使用されているサーブレットおよび JavaServer Page (JSP) テクノロジの公式リファレンス実装である HTTP サーバーです。サーブレットと JSP テクノロジは、HTTP サーバー アプリケーションの構築に使用されます。サーブレット テクノロジには、アクセス セキュリティ、セッション管理、スレッド制御など、多くの機能が追加されています。 JSP テクノロジーは、動的に生成された HTML ページを処理する簡単な方法を提供します。これらの HTML ページは、実行時間を短縮するためにサーブレットに直接コンパイルされます。セキュリティを確保するための上記の 2 つのテクノロジに加えて、Tomcat パラメータを構成してセキュリティを強化することもできます。 セキュリティ設定: 1. webappsディレクトリ内のすべてのファイルを削除し、tomcat管理インターフェースを無効にします。
2. tomcat-users.xml ファイル内のすべてのユーザー権限をコメント化または削除します。 3. バージョン情報を非表示にしてconf/server.xmlを変更する 3. ユーザーの質問: nginx と httpd は、ルート ユーザーを使用してポート 80 のガードを開始し、子プロセス/スレッドは setuid() および setgid() 関数を通じて通常のユーザーに切り替わります。つまり、親プロセスの所有者は root ユーザーであり、子プロセスとマルチスレッドの所有者は非 root ユーザーです。このユーザーにはシェルがなく、ssh およびコンソール経由でシステムにログインすることはできません。 Tomcat の起動にのみ使用できるユーザーを作成します。
ポートマッピングを作成し、ポート80にアクセスするときにポート8080を呼び出す
リダイレクトをキャンセル:
4. 戦争の自動展開をオフにする vim conf/server.xml 5. 404 に表示されるバージョン情報を非表示にします。 lib 内の catalina.jar を解凍し、jar xf catalina.jar を実行します。
6. tomcatのシャットダウンコマンドを変更する Tomcat インスタンスを直接シャットダウンできる管理ポートは、server.xml で定義されます。 Telnet 経由でポートに接続した後、SHUTDOWN (デフォルトのシャットダウン コマンド) を入力して Tomcat インスタンスをシャットダウンできます (この時点でインスタンスはシャットダウンされますが、プロセスはまだ存在することに注意してください)。 Tomcat のポートはデフォルトで閉じられるため、手順は非常に簡単です。デフォルトのポートは 8005 で、コマンドは SHUTDOWN です。 close コマンドをもう少し複雑に変更する必要があります。 またはポート8005を無効にする
7. tomcatとプロジェクトユーザーを分ける Tomcat が Web シェル プログラムに埋め込まれるのを防ぐには、プロジェクト ファイルを変更します。したがって、Tomcat をプロジェクト所有者から分離して、ハッキングされた場合でもプロジェクト ファイルを作成および編集できないようにする必要があります。 8. conf/web.xmlに次の設定を追加します。 9. カスタムエラーページ web.xml は特定のアプリケーションの下にあり、このアプリケーションの 404 を処理する必要があります。ただし、http://localhost/ は tomcat 独自のアプリケーションにアクセスするため、web.xml 構成は webapp/Root/ の下のアプリケーション内に構成する必要があります。 webappsディレクトリにerror.jspファイルを作成します。 <%@ ページコンテンツタイプ="text/html; charset=UTF-8" %> <%@ ページインポート="java.io.*" %> <%@ ページインポート="java.util.*" %> <html> <ヘッダー> <title>404 ページ</title> <本文> <前> <% 列挙<文字列> attributeNames = request.getAttributeNames(); (attributeNames.hasMoreElements()) の間 { 文字列 attributeName = attributeNames.nextElement(); オブジェクト属性 = request.getAttribute(attributeName); out.println("request.attribute['" + attributeName + "'] = " + attribute); } %> </pre> exception.jsp ファイル <%@ ページ contentType="text/html; charset=UTF-8" isErrorPage="true" %> <%@ ページインポート="java.io.*" %> <html> <ヘッダー> <title>例外ページ</title> <本文> <hr/> <前> <% response.getWriter().println("例外: " + 例外); if(例外 != null) { response.getWriter().println("<pre>"); 例外.printStackTrace(response.getWriter()); レスポンスのgetWriter().println("</pre>"); } 回答 e.getWriter().println("<hr/>"); %> ブラウザでカスタム エラー ページをテストします。 セッションタイムアウトを定義し、ディレクトリリストを禁止する さて、この記事はこれで終わりです。お役に立てれば幸いです。 以下もご興味があるかもしれません:
|
<<: プロジェクトを素早く構築するためのvite+vue3.0+ts+element-plusの実装
>>: MySQL データベースの型変換のための CAST 関数と CONVERT 関数の説明
目次序文RMの後には希望はあるのでしょうか?最前線を使ってファイルを取得するextundeleteを...
序文テーブルを削除するには、無意識に思い浮かぶコマンドは、DROP TABLE "テーブル...
デスクトップ システムをダウンロードするには、Ubuntu の公式 Web サイト (https:/...
1. コマンドの紹介ifconfig (ネットワーク インターフェイスを構成する) コマンドは、ネッ...
初めて仮想マシンに MySQL をインストールしたとき、多くの問題が発生しました。ここでそれらを書き...
dl:定義一覧定義リストdt:定義タイトルタイトルを定義するdd:定義説明定義の説明dt は情報のタ...
Centos7では、/etc/rc.d/rc.localファイルの権限が削減されており、実行権限があ...
目次1. 背景2. 操作手順3. Dockerをインストールする4. 主なサービス構成5. サービス...
最近、コンピューターの電源を入れたところ、Geek Academy が新規ユーザーに 1 か月の無料...
CSS Houdini は、CSS 分野における最もエキサイティングなイノベーションとして知られてい...
質問:最近、プロジェクトの統計を行っていたときに、テーブルを上下にスクロールしたときにテーブルの先頭...
次のように、Win10 での 2 つの MySQL5.6.35 データベースのインストールを記録しま...
目次1. Javascript とは何ですか? 2. DOMとは何か3. JSコードの実行方法4. ...
導入2日前に見た問題について詳細に書きます。バイトコンピューターがバイナリに基づいていることは誰もが...
今日、WordPress がデータベースに接続できないことがわかりました。ウィンドウ サーバーにログ...