|
Enterprise Java Security. Building Secure J2EE Applications Authors: Pistoia M., Nagaratnam N., Koved L. Published year: 2004 Pages: 17-18/164 |
| < Day Day Up > |
2.2 Network SecurityThe classic three- tier architecture pictures can hide other attack routes. Figures 2.2, 2.3, and 2.5 imply that there are separate connections between the client and the Web server/gateway and between the gateway and the end server. However, the real network may not be configured that way. For simplicity or cost, there might be only a single network interface on the Web server, as shown in Figure 2.6. Figure 2.6. Web Server with One Network Interface
In this case, the third-tier server is on the same network and can potentially be accessed directly from the firewall. Perhaps the firewall is configured correctly and will prevent direct access to the end server. However, will this be true tomorrow, after additional services have been added? For very little extra cost, the networks can be physically separated by providing two network interfaces in the Web server, as shown in Figure 2.7. Figure 2.7. Separating the Third Tier
Or, a second firewall system can be used. This configuration has the benefit that even if the Web server is compromised, the second firewall still restricts access to the rest of the network. It is more expensive to provide such a demilitarized zone (DMZ) (Figure 2.8), but if such a configuration is already required to provide safe Internet connection, there is no extra cost. The cost of a second firewall is likely to be less than the value of the data it protects, so a value assessment needs to be made. Figure 2.8. DMZ Network Environment
One additional security barrier to consider using is the type of network. The gateway and the end server could be linked by using SNA protocols or by a small custom-built program communicating over a dedicated serial link. These approaches effectively use the network connection as another firewall; if TCP/IP cannot travel over it, many hacking techniques are simply not possible. However, if the Web server is totally compromised, the hackers have all the communications software at their disposal if they can discover it. Therefore, the third-tier server still needs to be guarded (see Figure 2.9). Figure 2.9. Protection Using Mixed Connection Protocols
|
| < Day Day Up > |
| < Day Day Up > |
2.3 Server-Side Java TechnologyRunning Java technology on the server side can greatly simplify the work of software developers, especially of distributed architectures. Although the majority of client systems might be personal computers (PCs) running some version of Microsoft Windows, most of the world's crucial business data is kept on mainframe, Linux, and UNIX servers. A server-side distributed application developed in Java technology can be run on almost any of these servers, whether they run z/OS, [3] Virtual Machine (VM), Windows, Operating System/2 (OS/2), AS/400, one of the many flavors of UNIX, or Linux.
In many ways, the Java environment is ideal for server applications. The multithreaded environment is well suited for supporting simultaneous requests to a server. Even the standard classes are simplified, as many server programs are unlikely to need the java.awt windowing classes as well as several others, which is where most cross-platform problems often arise. As an example, because it is written in the Java language, the gateway component of the CICS Java gateway can run on any Web server system, reducing porting and testing costs. Web application servers supplement and even surpass traditional Web servers in their use and functionality in enterprise environments. Unlike a traditional Web server, a WAS provides a robust and flexible foundation for dynamic transactions and objects. Traditional Web servers are constrained to servicing standard HTTP requests, returning the contents of static HTML pages and images or the output from executed CGI scripts. Some Web servers have extended their functionality by including support for Java servlets, JSP applications, and EJB components .
The blend of EJB, servlets, and JSP provides the foundation for representing a Model-View-Controller (MVC) architecture [4] to developers. Typically, the modularity and focus of purpose in EJB represents the model; JSP and servlets represent the view through their ability to dynamically generate HTML and XML information; the client system represents the controller.
2.3.1 WAS ComponentsA Web application server must contain a servlet container and an EJB container. 2.3.1.1 Servlet ContainerA servlet container , a Java environment within which servlets execute, constitutes an intermediary between the Web server and the servlets in the WAS. The servlet container is responsible for managing the life cycle of servlets by loading, initializing, and executing them (see Section 4.3 on page 107). A servlet container ensures that memory contains a single instance of a servlet and dispatches a thread that executes the servlet for each request. When a request arrives, a servlet container maps the request to a servlet and then passes the request to the servlet. The servlet processes the request and produces a response. The servlet container translates the response into the network format and sends the response back to the Web server. For this process to work, a servlet container must provide the network services over which the requests and responses are sent and is responsible for decoding and formatting MIME-type requests and responses. All servlet containers must support HTTP as a protocol for requests and responses but may also support additional request/response protocols, such as HTTP over SSL (HTTPS). A servlet container is designed to perform well while serving large numbers of requests. A servlet container can hold any number of active servlets. Both a servlet container and the objects in it are multithreaded. A servlet container creates and manages threads as necessary to handle incoming requests. It can handle multiple requests concurrently, and more than one thread may enter an object at a time. Therefore, each object within a servlet container must be thread safe. Additionally, to support JSP applications, a servlet container provides an engine that interprets and processes JSP pages into servlets. A servlet container can manage numerous distinct applications. As noted in Section 4.4 on page 111 and Section 4.10.3 on page 150, an application may consist of any number of servlets, JSP applications, filters, listeners, utility classes, and static Web pages. A collection of such components working together is a Web application . A servlet container uses a context to group - related components. The servlet loads the objects within a context as a group; objects within the same context can easily share data. Therefore, each context corresponds to a distinct Web application. A context is represented as an instance of the javax.servlet.ServletContext interface. Therefore, a servlet container is responsible for creating one ServletContext instance for each invocation of a Web application. Programmers can use the ServletContext object to make resources available to all servlets within a Web application. 2.3.1.2 EJB ContainerAn EJB container is a runtime environment that manages one or more enterprise beans. It manages the life cycles of enterprise bean objects, coordinates distributed transactions, and implements object security. Generally, each EJB container is provided by a WAS and contains a set of enterprise beans that run on the WAS. An EJB container acts as the interface between an enterprise bean and the WAS. In essence, the EJB container is an abstraction that manages one or more EJB classes while making the required services available to EJB classes through standard interfaces as defined in the EJB specification. The EJB container vendor is also free to provide additional services implemented at either the container or the server level. An EJB client never accesses an enterprise bean directly. Any access to the enterprise bean is done through the methods of the container-generated classes, which in turn invoke the enterprise bean's methods. Multiple EJB component instances typically exist inside a single EJB container. Having an EJB container interposed on all enterprise bean invocations allows the EJB container to manage transactions and resources, load enterprise bean instances, and provide such services as versioning, scalability, mobility, persistence, concurrency, deployment, and security to the EJB components it contains. Because the EJB container handles all these functions, the Enterprise Bean Provider can concentrate on business rules and leave database manipulation and other details to the EJB container. For example, if it needs to abort the current transaction, a single EJB component simply tells its EJB container; the EJB container is responsible for performing all rollbacks and doing whatever is necessary to cancel a transaction in progress. 2.3.2 WAS Security EnvironmentA WAS is more than a grouping of Java objects. In the multiuser enterprise environment, a WAS also provides integrated authentication and authorization support for user transactions, whether they originate from Web browsers, client applications, or another WAS. This complex environment of both friendly and potentially malicious entities requires answers to a number of questions:
These questions deal with the security issues of authentication, authorization, and encryption. Objects that play a major role in the WAS environment are client objects and server objects. Client objects include Web clients and application clients . Server objects include Web servers, WASs, security servers, and user registry servers. The physical WAS executing the supported Java objects plays an important role, but it is only one member of the entire ensemble of processes that complete the WAS environment. Note the distinction between the WAS and the WAS environment, depicted in Figure 3.1 on page 56. The WAS represents the server that handles requests for EJB objects, servlets, and JSP pages. The WAS environment encompasses all the client and server objects that have a direct or indirect interaction with the WAS, including the WAS itself. Clients to a WAS include Web browsers, Java client applications or applets, and pervasive devices, such as mobile appliances. Client objects can originate from many different sources but can be categorized into those from traditional Web browsers and those from stand-alone applications. A WAS typically does not directly service client requests. Web servers respond to HTTP requests for HTML pages or to execute CGI scripts. For more complex tasks , such as the manipulation of EJB objects, Web servers pass the service requests to the WAS. The security server is an essential element in the WAS environment, maintaining a consistent security schema and arbitrating user authentication and authorization access to objects. To authenticate users, as well as to obtain the user's authorization attributes and digital certificate information, the security server obtains the information from an enterprise user registry, such as a Lightweight Directory Access Protocol (LDAP) server, RACF, or IBM Tivoli Access Manager. Security in the WAS environment is not limited to authentication and authorization. Between the various server and client objects, security also comes into play through the use of encryption technologies. |
| < Day Day Up > |
|
Enterprise Java Security. Building Secure J2EE Applications Authors: Pistoia M., Nagaratnam N., Koved L. Published year: 2004 Pages: 17-18/164 |
![]() JAVA 2 Network Security (2nd Edition) | ![]() Java Security (2nd Edition) |