女人天堂在线_美女福利视频在线观看_欧美影院天天5g天天爽_九九久久久久久_国产一区在线精品_国产精品suv一区二区_亚洲国产你懂的_99久久99久久免费精品小说_日韩av中文字幕在线_伊人影院蕉久552

Security Considerations

Table of Contents

Introduction

Tomcat is configured to be reasonably secure for most use cases by default. Some environments may require more, or less, secure configurations. This page is to provide a single point of reference for configuration options that may impact security and to offer some commentary on the expected impact of changing those options. The intention is to provide a list of configuration options that should be considered when assessing the security of a Tomcat installation.

Note: Reading this page is not a substitute for reading and understanding the detailed configuration documentation. Fuller descriptions of these attributes may be found in the relevant documentation pages.

Non-Tomcat settings

Tomcat configuration should not be the only line of defense. The other components in the system (operating system, network, database, etc.) should also be secured.

Tomcat should not be run under the root user. Create a dedicated user for the Tomcat process and provide that user with the minimum necessary permissions for the operating system. For example, it should not be possible to log on remotely using the Tomcat user.

File permissions should also be suitably restricted. In the .tar.gz distribution, files and directories are not world readable and the group does not have write access. On Unix like operating systems, Tomcat runs with a default umask of 0027 to maintain these permissions for files created while Tomcat is running (e.g. log files, expanded WARs, etc.).

Taking the Tomcat instances at the ASF as an example (where auto-deployment is disabled and web applications are deployed as exploded directories), the standard configuration is to have all Tomcat files owned by root with group Tomcat and whilst owner has read/write privileges, group only has read and world has no permissions. The exceptions are the logs, temp and work directory that are owned by the Tomcat user rather than root. This means that even if an attacker compromises the Tomcat process, they can't change the Tomcat configuration, deploy new web applications or modify existing web applications. The Tomcat process runs with a umask of 007 to maintain these permissions.

At the network level, consider using a firewall to limit both incoming and outgoing connections to only those connections you expect to be present.

JMX

The security of the JMX connection is dependent on the implementation provided by the JRE and therefore falls outside the control of Tomcat.

Typically, access control is very limited (either read-only to everything or read-write to everything). Tomcat exposes a large amount of internal information and control via JMX to aid debugging, monitoring and management. Given the limited access control available, JMX access should be treated as equivalent to local root/admin access and restricted accordingly.

The JMX access control provided by most (all?) JRE vendors does not log failed authentication attempts, nor does it provide an account lock-out feature after repeated failed authentications. This makes a brute force attack easy to mount and difficult to detect.

Given all of the above, care should be taken to ensure that, if used, the JMX interface is appropriately secured. Options you may wish to consider to secure the JMX interface include:

  • configuring a strong password for all JMX users;
  • binding the JMX listener only to an internal network;
  • limiting network access to the JMX port to trusted clients; and
  • providing an application specific health page for use by external monitoring systems.

Default web applications

General

Tomcat ships with a number of web applications that are enabled by default. Vulnerabilities have been discovered in these applications in the past. Applications that are not required should be removed so the system will not be at risk if another vulnerability is discovered.

ROOT

The ROOT web application presents a very low security risk but it does include the version of Tomcat that is being used. The ROOT web application should normally be removed from a publicly accessible Tomcat instance, not for security reasons, but so that a more appropriate default page is shown to users.

Documentation

The documentation web application presents a very low security risk but it does identify the version of Tomcat that is being used. It should normally be removed from a publicly accessible Tomcat instance.

Examples

The examples web application should always be removed from any security sensitive installation. While the examples web application does not contain any known vulnerabilities, it is known to contain features (particularly the cookie examples that display the contents of all received and allow new cookies to be set) that may be used by an attacker in conjunction with a vulnerability in another application deployed on the Tomcat instance to obtain additional information that would otherwise be unavailable.

Manager

The Manager application allows the remote deployment of web applications and is frequently targeted by attackers due to the widespread use of weak passwords and publicly accessible Tomcat instances with the Manager application enabled. The Manager application is not accessible by default as no users are configured with the necessary access. If the Manager application is enabled then guidance in the section Securing Management Applications section should be followed.

Host Manager

The Host Manager application allows the creation and management of virtual hosts - including the enabling of the Manager application for a virtual host. The Host Manager application is not accessible by default as no users are configured with the necessary access. If the Host Manager application is enabled then guidance in the section Securing Management Applications section should be followed.

Securing Management Applications

When deploying a web application that provides management functions for the Tomcat instance, the following guidelines should be followed:

  • Ensure that any users permitted to access the management application have strong passwords.
  • Do not remove the use of the LockOutRealm which prevents brute force attacks against user passwords.
  • Configure the RemoteAddrValve in the context.xml file for the management application which limits access to localhost by default. If remote access is required, limit it to specific IP addresses using this valve.

Security manager

Enabling the security manager causes web applications to be run in a sandbox, significantly limiting a web application's ability to perform malicious actions such as calling System.exit(), establishing network connections or accessing the file system outside of the web application's root and temporary directories. However, it should be noted that there are some malicious actions, such as triggering high CPU consumption via an infinite loop, that the security manager cannot prevent.

Enabling the security manager is usually done to limit the potential impact, should an attacker find a way to compromise a trusted web application . A security manager may also be used to reduce the risks of running untrusted web applications (e.g. in hosting environments) but it should be noted that the security manager only reduces the risks of running untrusted web applications, it does not eliminate them. If running multiple untrusted web applications, it is recommended that each web application is deployed to a separate Tomcat instance (and ideally separate hosts) to reduce the ability of a malicious web application impacting the availability of other applications.

Tomcat is tested with the security manager enabled; but the majority of Tomcat users do not run with a security manager, so Tomcat is not as well user-tested in this configuration. There have been, and continue to be, bugs reported that are triggered by running under a security manager.

The restrictions imposed by a security manager are likely to break most applications if the security manager is enabled. The security manager should not be used without extensive testing. Ideally, the use of a security manager should be introduced at the start of the development cycle as it can be time-consuming to track down and fix issues caused by enabling a security manager for a mature application.

Enabling the security manager changes the defaults for the following settings:

  • The default value for the deployXML attribute of the Host element is changed to false.

server.xml

General

The default server.xml contains a large number of comments, including some example component definitions that are commented out. Removing these comments makes it considerably easier to read and comprehend server.xml.

If a component type is not listed, then there are no settings for that type that directly impact security.

Server

Setting the port attribute to -1 disables the shutdown port.

If the shutdown port is not disabled, a strong password should be configured for shutdown.

Listeners

The APR Lifecycle Listener is not stable if compiled on Solaris using gcc. If using the APR/native connector on Solaris, compile it with the Sun Studio compiler.

The JNI Library Loading Listener may be used to load native code. It should only be used to load trusted libraries.

The Security Lifecycle Listener should be enabled and configured as appropriate.

Connectors

By default, a non-TLS, HTTP/1.1 connector is configured on port 8080. Connectors that will not be used should be removed from server.xml.

AJP Connectors should only be used on trusted networks or be appropriately secured with a suitable secret attribute.

AJP Connectors block forwarded requests with unknown request attributes. Known safe and/or expected attributes may be allowed by configuration an appropriate regular expression for the allowedRequestAttributesPattern attribute.

The address attribute may be used to control which IP address a connector listens on for connections. By default, a connector listens on all configured IP addresses.

The allowTrace attribute may be used to enable TRACE requests which can be useful for debugging. Due to the way some browsers handle the response from a TRACE request (which exposes the browser to an XSS attack), support for TRACE requests is disabled by default.

The discardFacades attribute set to true will cause a new facade object to be created for each request. This reduces the chances of a bug in an application exposing data from one request to another.

The encodedSolidusHandling attribute allows non-standard parsing of the request URI. Setting this attribute to a non-default value when behind a reverse proxy may enable an attacker to bypass any security constraints enforced by the proxy.

The maxPostSize attribute controls the maximum size of a POST request that will be parsed for parameters. The parameters are cached for the duration of the request so this is limited to 2MB by default to reduce exposure to a DOS attack.

The maxSavePostSize attribute controls the saving of POST requests during FORM and CLIENT-CERT authentication. The parameters are cached for the duration of the authentication (which may be many minutes) so this is limited to 4KB by default to reduce exposure to a DOS attack.

The maxParameterCount attribute controls the maximum number of parameter and value pairs (GET plus POST) that can be parsed and stored in the request. Excessive parameters are ignored. If you want to reject such requests, configure a FailedRequestFilter.

The xpoweredBy attribute controls whether or not the X-Powered-By HTTP header is sent with each request. If sent, the value of the header contains the Servlet and JSP specification versions, the full Tomcat version (e.g. Apache Tomcat/8.5), the name of the JVM vendor and the version of the JVM. This header is disabled by default. This header can provide useful information to both legitimate clients and attackers.

The server attribute controls the value of the Server HTTP header. The default value of this header for Tomcat 4.1.x to 8.0.x is Apache-Coyote/1.1. From 8.5.x onwards this header is not set by default. This header can provide limited information to both legitimate clients and attackers.

The SSLEnabled, scheme and secure attributes may all be independently set. These are normally used when Tomcat is located behind a reverse proxy and the proxy is connecting to Tomcat via HTTP or HTTPS. They allow Tomcat to see the SSL attributes of the connections between the client and the proxy rather than the proxy and Tomcat. For example, the client may connect to the proxy over HTTPS but the proxy connects to Tomcat using HTTP. If it is necessary for Tomcat to be able to distinguish between secure and non-secure connections received by a proxy, the proxy must use separate connectors to pass secure and non-secure requests to Tomcat. If the proxy uses AJP then the SSL attributes of the client connection are passed via the AJP protocol and separate connectors are not needed.

The tomcatAuthentication and tomcatAuthorization attributes are used with the AJP connectors to determine if Tomcat should handle all authentication and authorisation or if authentication should be delegated to the reverse proxy (the authenticated user name is passed to Tomcat as part of the AJP protocol) with the option for Tomcat to still perform authorization.

The requiredSecret attribute in AJP connectors configures shared secret between Tomcat and reverse proxy in front of Tomcat. It is used to prevent unauthorized connections over AJP protocol.

Host

The host element controls deployment. Automatic deployment allows for simpler management but also makes it easier for an attacker to deploy a malicious application. Automatic deployment is controlled by the autoDeploy and deployOnStartup attributes. If both are false, only Contexts defined in server.xml will be deployed and any changes will require a Tomcat restart.

In a hosted environment where web applications may not be trusted, set the deployXML attribute to false to ignore any context.xml packaged with the web application that may try to assign increased privileges to the web application. Note that if the security manager is enabled that the deployXML attribute will default to false.

Context

This applies to Context elements in all places where they can be defined: server.xml file, default context.xml file, per-host context.xml.default file, web application context file in per-host configuration directory or inside the web application.

The crossContext attribute controls if a context is allowed to access the resources of another context. It is false by default and should only be changed for trusted web applications.

The privileged attribute controls if a context is allowed to use container provided servlets like the Manager servlet. It is false by default and should only be changed for trusted web applications.

The allowLinking attribute of a nested Resources element controls if a context is allowed to use linked files. If enabled and the context is undeployed, the links will be followed when deleting the context resources. Changing this setting from the default of false on case insensitive operating systems (this includes Windows) will disable a number of security measures and allow, among other things, direct access to the WEB-INF directory.

The sessionCookiePathUsesTrailingSlash can be used to work around a bug in a number of browsers (Internet Explorer, Safari and Edge) to prevent session cookies being exposed across applications when applications share a common path prefix. However, enabling this option can create problems for applications with Servlets mapped to /*. It should also be noted the RFC6265 section 8.5 makes it clear that different paths should not be considered sufficient to isolate cookies from other applications.

Valves

It is strongly recommended that an AccessLogValve is configured. The default Tomcat configuration includes an AccessLogValve. These are normally configured per host but may also be configured per engine or per context as required.

Any administrative application should be protected by a RemoteAddrValve (this Valve is also available as a Filter). The allow attribute should be used to limit access to a set of known trusted hosts.

The default ErrorReportValve includes the Tomcat version number in the response sent to clients. To avoid this, custom error handling can be configured within each web application. Alternatively, you can explicitly configure an ErrorReportValve and set its showServerInfo attribute to false. Alternatively, the version number can be changed by creating the file CATALINA_BASE/lib/org/apache/catalina/util/ServerInfo.properties with content as follows:

server.info=Apache Tomcat/8.5.x

Modify the values as required. Note that this will also change the version number reported in some of the management tools and may make it harder to determine the real version installed. The CATALINA_HOME/bin/version.bat|sh script will still report the correct version number.

The default ErrorReportValve can display stack traces and/or JSP source code to clients when an error occurs. To avoid this, custom error handling can be configured within each web application. Alternatively, you can explicitly configure an ErrorReportValve and set its showReport attribute to false.

The RewriteValve uses regular expressions and poorly formed regex patterns may be vulnerable to "catastrophic backtracking" or "ReDoS". See Rewrite docs for more details.

Realms

The MemoryRealm is not intended for production use as any changes to tomcat-users.xml require a restart of Tomcat to take effect.

The JDBCRealm is not recommended for production use as it is single threaded for all authentication and authorization options. Use the DataSourceRealm instead.

The UserDatabaseRealm is not intended for large-scale installations. It is intended for small-scale, relatively static environments.

The JAASRealm is not widely used and therefore the code is not as mature as the other realms. Additional testing is recommended before using this realm.

By default, the realms do not implement any form of account lock-out. This means that brute force attacks can be successful. To prevent a brute force attack, the chosen realm should be wrapped in a LockOutRealm.

Manager

The manager component is used to generate session IDs.

The class used to generate random session IDs may be changed with the randomClass attribute.

The length of the session ID may be changed with the sessionIdLength attribute.

The persistAuthentication controls whether the authenticated Principal associated with the session (if any) is included when the session is persisted during a restart or to a Store.

When using the JDBCStore, the session store should be secured (dedicated credentials, appropriate permissions) such that only the JDBCStore is able to access the persisted session data. In particular, the JDBCStore should not be accessible via any credentials available to a web application.

Cluster

The cluster implementation is written on the basis that a secure, trusted network is used for all of the cluster related network traffic. It is not safe to run a cluster on a insecure, untrusted network.

If you are operating on an untrusted network or would prefer to exercise an over-abundance of caution, you can use the EncryptInterceptor to encrypt traffic between nodes.

System Properties

The org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH and org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH system properties allow non-standard parsing of the request URI. Using these options when behind a reverse proxy may enable an attacker to bypass any security constraints enforced by the proxy.

The org.apache.catalina.connector.Response.ENFORCE_ENCODING_IN_GET_WRITER system property has security implications if disabled. Many user agents, in breach of RFC2616, try to guess the character encoding of text media types when the specification-mandated default of ISO-8859-1 should be used. Some browsers will interpret as UTF-7 a response containing characters that are safe for ISO-8859-1 but trigger an XSS vulnerability if interpreted as UTF-7.

web.xml

This applies to the default conf/web.xml file and WEB-INF/web.xml files in web applications if they define the components mentioned here.

The DefaultServlet is configured with readonly set to true. Changing this to false allows clients to delete or modify static resources on the server and to upload new resources. This should not normally be changed without requiring authentication.

The DefaultServlet is configured with listings set to false. This isn't because allowing directory listings is considered unsafe but because generating listings of directories with thousands of files can consume significant CPU leading to a DOS attack.

The DefaultServlet is configured with showServerInfo set to true. When the directory listings is enabled the Tomcat version number is included in the response sent to clients. To avoid this, you can explicitly configure a DefaultServlet and set its showServerInfo attribute to false. Alternatively, the version number can be changed by creating the file CATALINA_BASE/lib/org/apache/catalina/util/ServerInfo.properties with content as follows:

server.info=Apache Tomcat/8.5.x

Modify the values as required. Note that this will also change the version number reported in some of the management tools and may make it harder to determine the real version installed. The CATALINA_HOME/bin/version.bat|sh script will still report the correct version number.

The CGI Servlet is disabled by default. If enabled, the debug initialisation parameter should not be set to 10 or higher on a production system because the debug page is not secure.

When using the CGI Servlet on Windows with enableCmdLineArguments enabled, review the setting of cmdLineArgumentsDecoded carefully and ensure that it is appropriate for your environment. The default value is secure. Insecure configurations may expose the server to remote code execution. Further information on the potential risks and mitigations may be found by following the links in the CGI How To.

FailedRequestFilter can be configured and used to reject requests that had errors during request parameter parsing. Without the filter the default behaviour is to ignore invalid or excessive parameters.

HttpHeaderSecurityFilter can be used to add headers to responses to improve security. If clients access Tomcat directly, then you probably want to enable this filter and all the headers it sets unless your application is already setting them. If Tomcat is accessed via a reverse proxy, then the configuration of this filter needs to be co-ordinated with any headers that the reverse proxy sets.

General

BASIC and FORM authentication pass user names and passwords in clear text. Web applications using these authentication mechanisms with clients connecting over untrusted networks should use SSL.

The session cookie for a session with an authenticated user are nearly as useful as the user's password to an attacker and in nearly all circumstances should be afforded the same level of protection as the password itself. This usually means authenticating over SSL and continuing to use SSL until the session ends.

欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日本伦理网站| 国产精品自拍在线观看| 国产成人精品影视| 亚欧成人乱码一区二区| 久草免费资源| 99久久精品国产高清一区二区| 亚洲女人国产香蕉久久精品| 久久久成人网| 91麻豆精品国产综合久久久| 日韩在线观看视频黄| 国产一区二区精品| 成人免费观看男女羞羞视频| 九九干| 免费国产一级特黄aa大片在线| 久久福利影视| 日韩免费在线| 黄视频网站在线看| 色综合久久天天综合观看| 你懂的国产精品| 香蕉视频亚洲一级| 午夜家庭影院| 欧美一区二区三区在线观看| 国产91精品露脸国语对白| 99久久精品费精品国产一区二区| 美女免费精品视频在线观看| 国产麻豆精品高清在线播放| 欧美激情一区二区三区视频高清 | 91麻豆精品国产高清在线| 国产一区免费在线观看| 国产成+人+综合+亚洲不卡| 国产一区免费在线观看| 亚洲不卡一区二区三区在线| 亚洲精品久久久中文字| 九九干| 天天做人人爱夜夜爽2020毛片| 久久国产影院| 天堂网中文在线| 黄色福利片| 九九九国产| 一级毛片视频免费| 一级片片| 日韩专区一区| 国产一区二区高清视频| 一级女性全黄生活片免费| 九九九网站| 黄视频网站免费| 欧美激情在线精品video| 国产成人啪精品视频免费软件| 国产伦精品一区二区三区在线观看 | 日本特黄一级| 欧美一级视频高清片| 国产精品123| 成人影院一区二区三区| 亚洲 激情| 久草免费在线色站| 国产精品自拍一区| 国产亚洲免费观看| 亚飞与亚基在线观看| 尤物视频网站在线| 国产一区二区精品在线观看| 精品视频在线观看视频免费视频| 麻豆污视频| 久久国产一区二区| 久久精品成人一区二区三区| 国产一区二区精品久久| 99久久视频| 午夜精品国产自在现线拍| 韩国毛片免费| 深夜做爰性大片中文| 四虎久久精品国产| 欧美国产日韩在线| 国产91精品一区| 欧美α片无限看在线观看免费| 精品视频一区二区三区| 一级片片| 国产伦精品一区二区三区在线观看 | 精品视频在线观看免费| 日韩在线观看免费| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 欧美a级v片不卡在线观看| 精品国产一区二区三区国产馆| 国产高清在线精品一区a| 一级毛片视频播放| 久久精品欧美一区二区| 香蕉视频久久| 999久久66久6只有精品| 日本免费乱理伦片在线观看2018| 青青久久网| 亚洲第一页乱| 成人免费网站久久久| 91麻豆精品国产片在线观看| 精品视频在线看 | 国产一区二区精品尤物| 国产视频网站在线观看| 日本在线播放一区| 欧美另类videosbestsex久久| 中文字幕一区二区三区 精品| 色综合久久天天综线观看| 日韩字幕在线| 欧美日本国产| 日韩中文字幕一区| 久久国产精品自由自在| 免费毛片播放| 日本特黄特色aaa大片免费| 精品久久久久久中文字幕2017| 精品国产三级a| 精品毛片视频| 久草免费在线观看| 久久国产精品自线拍免费| 日本免费区| 国产一区免费在线观看| 午夜欧美成人香蕉剧场| 欧美日本免费| 麻豆午夜视频| 在线观看成人网| 九九久久国产精品| 国产网站在线| 99久久网站| 久久99中文字幕| 尤物视频网站在线观看| 国产网站免费| 精品视频在线观看免费| 欧美激情一区二区三区视频 | 一级女性全黄生活片免费| 黄色免费三级| 国产一区二区精品久| 欧美α片无限看在线观看免费| 欧美一区二区三区在线观看| 国产精品自拍在线| 人人干人人插| 欧美大片a一级毛片视频| 国产成人啪精品| 国产a视频| 国产伦久视频免费观看 视频| 九九精品在线| 亚洲女人国产香蕉久久精品| 国产麻豆精品视频| 国产视频一区在线| 欧美大片aaaa一级毛片| 午夜欧美成人久久久久久| 黄色免费三级| 高清一级做a爱过程不卡视频| 99色播| 黄视频网站在线观看| 九九干| 天天色成人网| 精品视频在线观看免费| 成人高清视频免费观看| 国产一区免费在线观看| 毛片高清| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日韩专区亚洲综合久久| 精品在线观看一区| 午夜家庭影院| 国产伦久视频免费观看 视频| 成人高清视频在线观看| 欧美另类videosbestsex高清| 欧美a级大片| 日本特黄一级| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 亚洲女初尝黑人巨高清在线观看| 日韩男人天堂| 韩国毛片免费| 国产一区二区精品| 四虎久久影院| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 一级毛片看真人在线视频| 99热视热频这里只有精品| 日韩字幕在线| 亚洲精品中文字幕久久久久久| 免费国产在线视频| 尤物视频网站在线| 日日夜夜婷婷| a级黄色毛片免费播放视频| 精品在线免费播放| 可以免费看污视频的网站| 久久99这里只有精品国产| 麻豆午夜视频| 久久99爰这里有精品国产| 一级女性全黄久久生活片| 色综合久久久久综合体桃花网| 欧美日本免费| 四虎久久精品国产| 久久国产精品只做精品| 色综合久久天天综合观看| 精品久久久久久中文字幕2017| 青青青草视频在线观看| 午夜在线亚洲男人午在线| 91麻豆精品国产自产在线| 色综合久久久久综合体桃花网| 日本免费乱人伦在线观看| 精品国产一区二区三区久久久蜜臀 | 午夜激情视频在线播放| 国产91丝袜在线播放0| 亚洲 男人 天堂| 欧美爱爱网| 国产网站免费观看| 亚飞与亚基在线观看| 欧美大片aaaa一级毛片|