type=page
status=published
title=Running in a Secure Environment
prev=administrative-security.html
~~~~~~
Running in a Secure Environment
===============================

[[GSSCG00040]][[gkscr]]


[[running-in-a-secure-environment]]
6 Running in a Secure Environment
---------------------------------

This chapter describes important information about running GlassFish
Server in a secure environment.

This chapter assumes that you are familiar with security features such
as authentication, authorization, and certificates. If you are not, see
link:system-security.html#ablnk[Administering System Security].

Instructions for accomplishing the tasks specific to GlassFish Server by
using the Administration Console are contained in the Administration
Console online help.

The chapter describes the following topics:

* link:#gksbk[Determining Your Security Needs]
* link:#gksbw[Installing GlassFish Server in a Secure Environment]
* link:#gksby[Run on the Web Profile if Possible]
* link:#gksct[Securing the GlassFish Server Host]
* link:#gksca[Securing GlassFish Server]
* link:#gksbf[Securing Applications]

[[gksbk]][[GSSCG00169]][[determining-your-security-needs]]

Determining Your Security Needs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Before you deploy GlassFish Server and your Java EE applications into a
production environment, determine your security needs and make sure that
you take the appropriate security measures, as described in the
following sections:

* link:#gkscs[Understand Your Environment]
* link:#gksce[Read Security Publications]

[[gkscs]][[GSSCG00237]][[understand-your-environment]]

Understand Your Environment
^^^^^^^^^^^^^^^^^^^^^^^^^^^

To better understand your security needs, ask yourself the following
questions:

* Which resources am I protecting? +
Many resources in the production environment can be protected, including
information in databases accessed by GlassFish Server and the
availability, performance, applications, and the integrity of the Web
site. Consider the resources you want to protect when deciding the level
of security you must provide.
* From whom am I protecting the resources? +
For most Web sites, resources must be protected from everyone on the
Internet. But should the Web site be protected from the employees on the
intranet in your enterprise? Should your employees have access to all
resources within the GlassFish Server environment? Should the system
administrators have access to all GlassFish Server resources? Should the
system administrators be able to access all data? You might consider
giving access to highly confidential data or strategic resources to only
a few well trusted system administrators. Perhaps it would be best to
allow no system administrators access to the data or resources.
* What will happen if the protections on strategic resources fail? +
In some cases, a fault in your security scheme is easily detected and
considered nothing more than an inconvenience. In other cases, a fault
might cause great damage to companies or individual clients that use the
Web site. Understanding the security ramifications of each resource will
help you protect it properly.

(`http://www.oracle.com/us/products/ondemand/index.html`)[[gksce]]

[[GSSCG00239]][[read-security-publications]]

Read Security Publications
^^^^^^^^^^^^^^^^^^^^^^^^^^

Read about security issues:

* For the latest information about securing Web servers, Oracle
recommends the "Security Practices & Evaluations" information available
from the CERT Coordination Center operated by Carnegie Mellon University
at `http://www.cert.org/`.

[[gksbw]][[GSSCG00170]][[installing-glassfish-server-in-a-secure-environment]]

Installing GlassFish Server in a Secure Environment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This section describes recommendations for installing GlassFish Server
in a secure environment. The link:#gkscn[Enable the Secure
Administration Feature] topic is described.

[[gkscn]][[GSSCG00240]][[enable-the-secure-administration-feature]]

Enable the Secure Administration Feature
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The secure administration feature allows an administrator to secure all
administrative communication between the domain administration server
(DAS), any remote instances, and administration clients such as the
asadmin utility, the administration console, and REST clients. In
addition, secure administration helps to prevent DAS-to-DAS and
instance-to-instance traffic, and carefully restricts
administration-client-to-instance traffic.

When you install GlassFish Server or create a new domain, secure admin
is disabled by default. GlassFish Server does not encrypt administrative
communication among the system components and does not accept
administrative connections from remote hosts. Imposing a heightened
level of security is optional.

See link:administrative-security.html#gknqh[Managing Administrative
Security] for information on enabling the secure administration feature.

[[gksby]][[GSSCG00172]][[run-on-the-web-profile-if-possible]]

Run on the Web Profile if Possible
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If your applications can run on the Web Profile, use that instead of the
Full Platform.

Starting in Java EE 6, Java EE introduced the concept of profiles. A
profile is a collection of Java EE technologies and APIs that address
specific developer communities and application types.

The following profiles are implemented through the distributions of
GlassFish Server:

* Full Platform -The full Java EE platform is designed for developers
who require the full set of Java EE APIs for enterprise application
development, and is installed when you install GlassFish Server. This
profile is also installed as part of the Java EE 8 SDK installation.
* Web Profile -This profile contains Web technologies that are a subset
of the full Java platform, and is designed for developers who do not
require the full set of Java EE APIs. This profile is also installed
with Java EE 8 Web Profile SDK.

For the list of APIs in each profile, see "link:../release-notes/release-notes.html#GSRLN00136[Java EE
Standards Support]" in GlassFish Server Open Source Edition Release
Notes.

[[gksct]][[GSSCG00173]][[securing-the-glassfish-server-host]]

Securing the GlassFish Server Host
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A GlassFish Server production environment is only as secure as the
security of the machine on which it is running. It is important that you
secure the physical machine, the operating system, and all other
software that is installed on the host machine.

The following are recommendations for securing a GlassFish Server host
in a production environment. Also check with the manufacturer of the
machine and operating system for recommended security measures.


[NOTE]
=======================================================================

The domain and server configuration files should be accessible only by
the operating system users who configure or execute GlassFish Server.

=======================================================================


[[sthref39]][[gksbt]]

Table 6-1 Securing the GlassFish Server Host

[width="100%",cols="27%,73%",options="header",]
|=======================================================================
|Security Action |Description
|Physically secure the hardware. |Keep your hardware in a secured area
to prevent unauthorized operating system users from tampering with the
deployment machine or its network connections.

|Log out of the Administration Console before navigating to a non-secure
site. |If you are logged on to the Administration Console, be sure to
log out completely before browsing to an unknown or non-secure Web site.

|Secure networking services that the operating system provides. a|
Have an expert review network services such as e-mail programs or
directory services to ensure that a malicious attacker cannot access the
operating system or system-level commands. The way you do this depends
on the operating system you use.

Sharing a file system with other machines in the enterprise network
imposes risks of a remote attack on the file system. Be certain that the
remote machines and the network are secure before sharing the file
systems from the machine.

|Use a file system that can prevent unauthorized access. |Make sure that
the file system on each GlassFish Serverhost can prevent unauthorized
access to protected resources. For example, on a Windows computer, use
only NTFS.

|Set file access permissions for data stored on disk. a|
Set operating system file access permissions to restrict access to data
stored on disk. This data includes, but is not limited to, the
following:

The database files. GlassFish Server includes Apache Derby database,
however, you can use any JDBC-compliant database.

The directory and filename location of a private keystore, such as
keystore.jks

The directory and filename location of a Root Certificate Authority (CA)
keystore, such as cacerts.jks.

For example, operating systems provide utilities such as umask and chmod
to set the file access permissions. At a minimum, consider using "umask
066", which denies read and write permission to Group and Others.

|Set file access permission for the GlassFish Server installation. a|
The directory structure in which GlassFish Server is located, including
all files, should be protected from access by unprivileged users.

Taking this step helps ensure that unprivileged users cannot insert code
that can potentially be executed by GlassFish Server.

|Limit the number of user accounts on the host machine. a|
Avoid creating more user accounts than you need on host machines, and
limit the file access privileges granted to each account. On operating
systems that allow more than one system administrator user, the host
machine should have two user accounts with system administrator
privileges and one user with sufficient privileges to run GlassFish
Server. Having two system administrator users provides a back up at all
times. The GlassFish Server user should be a restricted user, not a
system administrator user. One of the system administrator users can
always create a new GlassFish Server user if needed.

Important: Domain and server configuration files should be accessible
only by the operating system users who configure or execute GlassFish
Server.

Review active user accounts regularly and when personnel leave.

Background Information: Configuration data and some URL (Web) resources,
including Java Server Pages (JSPs) and HTML pages, are stored in clear
text on the file system. A sophisticated user or intruder with read
access to files and directories might be able to defeat any security
mechanisms you establish with authentication and authorization schemes.

|For your system administrator user accounts, choose names that are not
obvious. |For additional security, avoid choosing an obvious name such
as "system," "admin," or "administrator" for your system administrator
user accounts.

|Safeguard passwords. a|
The passwords for user accounts on production machines should be
difficult to guess and should be guarded carefully.

Set a policy to expire passwords periodically.

Never code passwords in client applications.

Do not deploy an application that can be accessed with the default
username admin and no password.

|Safeguard password files a|
The `-passwordfile` option of the `asadmin` command specifies the name
of a file that contains password entries in a specific format. These
password entries are stored in clear text in the password file, and rely
on file system mechanisms for protection. Therefore, any password file
created for use with the `-passwordfile` option should be protected with
file system permissions. Additionally, any password file being used for
a transient purpose, such as setting up SSH among nodes, should be
deleted after it has served its purpose.

To provide additional security, create a password alias.

|Use a password alias a|
A password alias stores a password in encrypted form in the domain
keystore, providing a clear-text alias name to use instead of the
password.

To provide additional security, use the `create-password-alias`
subcommand to create an alias for the password. The password for which
the alias is created is stored in an encrypted form.

Then, specify the alias in the entry for the password in the password
file as follows:

In password files and the domain configuration file, use the form
$\{alias=alias-name} to refer to the encrypted password.

|Do not run GlassFish Server as root a|
GlassFish Server should run only as an unprivileged user, never as root.

Taking this step helps ensure that code from other users cannot be
executed by GlassFish Server.

|Consider use PAM Realm |The use of a PAM Realm requires GlassFish
Server to run as an account that has read-access to a shadow password
file or the equivalent, and therefore may not be suitable in your
environment.

|Do not develop on a production machine. |Develop first on a development
machine and then move code to the production machine when it is
completed and tested. This process prevents bugs in the development
environment from affecting the security of the production environment.

|Do not install development or sample software on a production machine.
|Do not install development tools on production machines. Keeping
development tools off the production machine reduces the leverage
intruders have should they get partial access to a production machine.

|Enable security auditing. |If the operating system on which GlassFish
Server runs supports security auditing of file and directory access,
Oracle recommends using audit logging to track any denied directory or
file access violations. Administrators should ensure that sufficient
disk space is available for the audit log.

|Consider using additional software to secure your operating system.
|Most operating systems can run additional software to secure a
production environment. For example, an Intrusion Detection System (IDS)
can detect attempts to modify the production environment. Refer to the
vendor of your operating system for information about available
software.

|Apply operating system patch sets and security patches. |Refer to the
vendor of your operating system for a list of recommended patch sets and
security-related patches.

|Apply the latest maintenance packs and critical patch updates. |Refer
to the vendor of your operating system for a list of maintenance packs
and critical patch updates.
|=======================================================================


[[gksca]][[GSSCG00174]][[securing-glassfish-server]]

Securing GlassFish Server
~~~~~~~~~~~~~~~~~~~~~~~~~

GlassFish Server provides a powerful and flexible set of software tools
for securing the subsystems and applications that run on a server
instance. The following table provides a checklist of essential features
that Oracle recommends you use to secure your production environment.

[[sthref40]][[gkscz]]

Table 6-2 Securing GlassFish Server

[width="100%",cols="25%,75%",options="header",]
|=======================================================================
|Security Action |Description
|Enable Secure Admin. a|
The secure administration feature allows an administrator to secure all
administrative communication between the domain administration server
(DAS), any remote instances, and administration clients such as the
`asadmin` utility, the administration console, and REST clients.

In addition, secure administration helps to prevent DAS-to-DAS and
instance-to-instance traffic, and carefully restricts
administration-client-to-instance traffic.

The secure administration feature provides a secure environment, in
which you can be confident that rogue users or processes cannot
intercept or corrupt administration traffic or impersonate legitimate
GlassFish Server components.

See link:administrative-security.html#gknqh[Managing Administrative
Security].

|Protect the `.asadminpass` file a|
If you create a domain with the `--savelogin` option, `create-domain`
saves the administration user name and password in the `.asadminpass`
file in the user's home directory.

Make sure that this file remains protected. Information stored in this
file will be used by `asadmin` commands to manage this domain.

|Safeguard password files a|
The `-passwordfile` option of the `asadmin` command specifies the name
of a file that contains password entries in a specific format. These
password entries are stored in clear text in the password file, and rely
on file system mechanisms for protection. Therefore, any password file
created for use with the `-passwordfile` option should be protected with
file system permissions. Additionally, any password file being used for
a transient purpose, such as setting up SSH among nodes, should be
deleted after it has served its purpose.

To provide additional security, create a password alias.

|Deploy production-ready security providers to the security realm. a|
Java Authorization Contract for Containers (JACC) is the part of the
Java EE specification that defines an interface for pluggable
authorization providers. This enables you to set up third-party plug-in
modules to perform authorization.

By default, the GlassFish Server provides a simple, file-based
authorization engine that complies with the JACC specification. You can
also specify additional third-party JACC providers.

If you have purchased or written your own security providers, make sure
that you have deployed and configured them properly.

|Use SSL, but do not use the self-signed certificates in a production
environment. a|
To prevent sensitive data from being compromised, secure data transfers
by using HTTPS.

By default, GlassFish Server uses self-signed certificates. The
self-signed certificates that GlassFish Server uses might not be trusted
by clients by default because a certificate authority does not vouch for
the authenticity of the certificate.

You can instead use your own certificates, as described in
link:administrative-security.html#gkped[Using Your Own Certificates].

|Restrict the size and the time limit of requests on external channels
to prevent Denial of Service attacks. a|
To prevent some Denial of Service (DoS) attacks, restrict the size of a
message as well as the maximum time it takes a message to arrive.

The default setting for maximum post size is 2097152 bytes and 900
seconds for the request timeout.

|Enable authentication and authorization auditing. a|
Auditing is the process of recording key security events in your
GlassFish Server environment. You use audit modules to develop an audit
trail of all authentication and authorization decisions. To enable audit
logging, two steps are required:

1.  On the Security page, select the Audit Logging Enabled checkbox to
enable audit logging.
2.  Set the `auditOn` property for the active audit module to true.

Review the auditing records periodically to detect security breaches and
attempted breaches. Noting repeated failed logon attempts or a
surprising pattern of security events can prevent serious problems.

|Set logging for security and SSL messages. a|
Consider setting module log levels for
table.javax.enterprise.system.ssl.security and
javax.enterprise.system.core.security. You can set a level from Severe
to Finest (the default is Info), but be aware that the finer logging
levels may produce a large log file.

By default, GlassFish Server logging messages are recorded in the server
log, and you can set the file rotation limit, as described in
link:../reference-manual/rotate-log.html#GSRFM00224[`rotate-log`(1)]

|Ensure that you have correctly assigned users to the correct groups.
|Make sure you have assigned the desired set of users to the right
groups. In particular, make sure that users assigned to the asadmin
group need to be members of that group.

|Create no fewer than two user accounts in the asadmin group. |The user
admin is created when you install GlassFish Server. For production
environments, create at least one other account in the asadmin group in
case one account password is compromised. When creating asadmin users
give them unique names that cannot be easily guessed.

|Assign a password to the admin account. |By default, GlassFish Server
includes a single account for user "admin" and an empty password. For
production environments this default is inherently unsecure, and you
should set a password for admin.
|=======================================================================


[[gksbf]][[GSSCG00175]][[securing-applications]]

Securing Applications
~~~~~~~~~~~~~~~~~~~~~

Although much of the responsibility for securing the GlassFish Server
resources in a domain fall within the scope of the server, some security
responsibilities lie within the scope of individual applications. For
some security options, GlassFish Server enables you to determine whether
the server or individual applications are responsible. For each
application that you deploy in a production environment, review the
items in the following table to verify that you have secured its
resources.

[[sthref41]][[gkscv]]

Table 6-3 Securing Applications

[width="100%",cols="22%,78%",options="header",]
|=======================================================================
|Security Action |Description
|Use JSP comment tags instead of HTML comment tags. |Comments in JSP
files that might contain sensitive data and or other comments that are
not intended for the end user should use the JSP syntax of <%/* xxx */%>
instead of the HTML syntax <!-- xxx -->. The JSP comments, unlike the
HTML comments, are deleted when the JSP is compiled and therefore cannot
be viewed in the browser.

|Do not install uncompiled JSPs and other source code on the production
machine. a|
Always keep source code off of the production machine. Getting access to
your source code allows an intruder to find security holes.

Consider precompiling JSPs and installing only the compiled JSPs on the
production machine. To do this, set the `deploy` subcommand
`-precompilejsp` option to true for the component.

When set to true, the `deploy` and `redeploy` subcommands
`-precompilejsp` option compiles JSPs during deploy time. If set to
false (the default), JSPs are compiled during runtime.

|Configure your applications to use SSL. |Set the transport-guarantee to
CONFIDENTIAL in the user-data-constraint element of the web.xml file
whenever appropriate.

|Examine applications for security. a|
There are instances where an application can lead to a security
vulnerability.

Of particular concern is code that uses Java native interface (JNI)
because Java positions native code outside of the scope of Java
security. If Java native code behaves errantly, it is only constrained
by the operating system. That is, the Java native code can do anything
GlassFish Server itself can do. This potential vulnerability is further
complicated by the fact that buffer overflow errors are common in native
code and can be used to run arbitrary code.

|If your applications contain untrusted code, enable the Java security
manager. |The Java security manager defines and enforces permissions for
classes that run within a JVM. In many cases, where the threat model
does not include malicious code being run in the JVM, the Java security
manager is unnecessary. However, when third parties use GlassFish Server
and untrusted classes are being run, the Java security manager may be
useful. See "link:../application-development-guide/securing-apps.html#GSDVG00373[Enabling and Disabling the Security
Manager]" in GlassFish Server Open Source Edition Application
Development Guide.

|Replace HTML special characters when servlets or JSPs return
user-supplied data. a|
The ability to return user-supplied data can present a security
vulnerability called cross-site scripting, which can be exploited to
steal a user's security authorization. For a detailed description of
cross-site scripting, refer to "Understanding Malicious Content
Mitigation for Web Developers" (a CERT security advisory) at
`http://www.cert.org/tech_tips/malicious_code_mitigation.html`.

To remove the security vulnerability, before you return data that a user
has supplied, scan the data for HTML special characters. If you find any
such characters, replace them with their HTML entity or character
reference. Replacing the characters prevents the browser from executing
the user-supplied data as HTML.

|=======================================================================



