<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8406769846810528194</id><updated>2011-07-07T18:27:45.400-07:00</updated><category term='apache'/><category term='ohs'/><category term='security'/><title type='text'>bjm battle room</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bjm-battle-room.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406769846810528194/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bjm-battle-room.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Brian</name><uri>http://www.blogger.com/profile/17751243128132249691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_R-K239aHYqY/S0jUrUj6kYI/AAAAAAAAAKw/oMp_ICFucfE/S220/bjm-fb.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8406769846810528194.post-3171512667736776039</id><published>2010-02-14T05:42:00.000-08:00</published><updated>2010-02-14T05:42:21.129-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>The only winning move is not to play</title><content type='html'>Did you ever see the movie &lt;a href="http://www.imdb.com/title/tt0086567/"&gt;WarGames&lt;/a&gt;?&amp;nbsp; This featured a computer called the WOPR.&amp;nbsp; I really liked this movie.&amp;nbsp; I thought there was a good balance between the human story and the computer.&amp;nbsp; I liked most of the movie &lt;a href="http://www.imdb.com/title/tt0117998/"&gt;Twister&lt;/a&gt; up until the end.&amp;nbsp; Both movies climaxed with flashing computer lights.&amp;nbsp; In Twister it was just numbers scrolling on a laptop, which was lame.&amp;nbsp; In WarGames the flashing lights showed simulated attacks demonstrating the computer learning, and worked well.&lt;br /&gt;&lt;br /&gt;Two recent things reminded me of the movie WarGames.&amp;nbsp; One item was an article in the Washington Post about students &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2010/01/28/AR2010012803494.html"&gt;hacking into the school computer&lt;/a&gt; and changing grades.&amp;nbsp; The other was the new release of Oracle WebCache that includes a learning rule capability for request filtering.&amp;nbsp; In the movie, they use Tic-Tac-Toe to help the computer learn.&amp;nbsp; To try out the new WebCache learning mode I chose &lt;a href="http://cirt.net/nikto2"&gt;Nikto&lt;/a&gt;.&amp;nbsp; This is a web security scanner that sends thousands of requests to test the security of a web server.&amp;nbsp; This tool is easy to setup and use, and it rhymes with Tic-Tac-Toe.&amp;nbsp; Let's try it against the Webcache Oracle Process for Request Filtering (WOPRF), and see how it does.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;I fired up the new WebCache 11g and chose the new Request Filters menu option.&amp;nbsp; I looked to see what rules were provided out of the box.&amp;nbsp; There are less than 10 rules defined!&amp;nbsp; I checked Metalink for any additional information about the learned rules feature and did not find anything.&amp;nbsp; I read the &lt;a href="http://download.oracle.com/docs/cd/E12839_01/web.1111/e10143/requestfilter.htm#BABFDDJB"&gt;documentation&lt;/a&gt;, however it does not explain how this feature works.&amp;nbsp; I looked at the rules that were defined and it included one for the Trace method and another for checking for null bytes.&amp;nbsp; Those are keepers.&amp;nbsp; I tried adding a rule and then checked the configuration to see the rule format.&amp;nbsp; The new rule was added to the webcache.xml file.&amp;nbsp; It's too bad the rules were not split out into a separate XML file.&amp;nbsp; Most of the WebCache configuration does not change, but the rules are likely to be updated more regularly.&amp;nbsp; Managing these in an independent file would have been much better.&amp;nbsp; If you add rules to block bots and spiders, and other rules for cross site scripting and SQL injection then this will add a lot of entries to the file.&lt;br /&gt;&lt;br /&gt;There are two categories for learned rules, method and URL.&amp;nbsp; I ran Nikto and it sent thousands of requests.&amp;nbsp; After the test was complete I reviewed the learned rules. &amp;nbsp;&amp;nbsp; The Method category showed learned rules for all the HTTP methods (OPTIONS, PUT, etc.) with a suggested action of Allow.&amp;nbsp; The URL category showed 25 learned rules.&amp;nbsp; This included a number of useful Deny rules for prefixes like cgi-bin and scripts.&amp;nbsp; The following screen shot shows the URL category with some of the learned rules.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_R-K239aHYqY/S3f9Yg-qRxI/AAAAAAAAALQ/WaDbvbICpnk/s1600-h/webcache11g_learned-rules.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_R-K239aHYqY/S3f9Yg-qRxI/AAAAAAAAALQ/WaDbvbICpnk/s320/webcache11g_learned-rules.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Overall WOPRF was more like Twister rather than WarGames.&amp;nbsp; If you use mod_security it's easy to find a large number of rules that can be plugged right in and used.&amp;nbsp; You would either have to create these rules in WebCache or convert the mod_security rules to WebCache format.&amp;nbsp; Another limitation is the filtering is limited to requests.&amp;nbsp; This means the response cannot be filtered.&amp;nbsp; Filtering responses to prevent information leaks with error messages is a basic feature that needs to be there.&lt;br /&gt;&lt;br /&gt;If you have a strong filtering mechanism in place to protect the web site, then you can achieve your goal of reaching a draw between people trying to attack the web site and your defenses.&amp;nbsp; This may convince them that the only winning move is not to play.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406769846810528194-3171512667736776039?l=bjm-battle-room.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bjm-battle-room.blogspot.com/feeds/3171512667736776039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bjm-battle-room.blogspot.com/2010/02/only-winning-move-is-not-to-play.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406769846810528194/posts/default/3171512667736776039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406769846810528194/posts/default/3171512667736776039'/><link rel='alternate' type='text/html' href='http://bjm-battle-room.blogspot.com/2010/02/only-winning-move-is-not-to-play.html' title='The only winning move is not to play'/><author><name>Brian</name><uri>http://www.blogger.com/profile/17751243128132249691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_R-K239aHYqY/S0jUrUj6kYI/AAAAAAAAAKw/oMp_ICFucfE/S220/bjm-fb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_R-K239aHYqY/S3f9Yg-qRxI/AAAAAAAAALQ/WaDbvbICpnk/s72-c/webcache11g_learned-rules.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406769846810528194.post-4239735766888115058</id><published>2010-01-24T13:23:00.000-08:00</published><updated>2010-01-24T13:25:50.645-08:00</updated><title type='text'>Artificial Ignorance - Elementary my dear Watson</title><content type='html'>Marcus Ranum applied the term &lt;a href="http://www.ranum.com/security/computer_security/index.html"&gt;artificial ignorance&lt;/a&gt; to the process of monitoring log files.&amp;nbsp; You build a filter of events to ignore, and then look at everything else.&amp;nbsp; All the items that you consider normal get filtered out.&amp;nbsp; This reminds me of the Sherlock Holmes quote &lt;i&gt;“Once you eliminate the impossible, whatever remains, no matter how improbable, must be the truth.”&lt;/i&gt;&amp;nbsp; - Arthur Conan Doyle.&amp;nbsp; It’s impossible to identify all the potential attacks that might be launched against a web site.&amp;nbsp; New attacks surface every day.&amp;nbsp; While part of the strategy should be to look for specific types of attacks, an equally important strategy is to look for the unusual.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;One of the web sites we support is frequently bookmarked by end users.&amp;nbsp; When a user bookmarks a site, the browser sends a request to retrieve the favicon.ico file from the web server.&amp;nbsp; This is the image that will be used for the bookmark.&amp;nbsp; We currently do not have a bookmark image for the web site.&amp;nbsp; This means a 404 Not Found error is returned to the browser.&amp;nbsp; The user never sees this error, the browser simply continues to bookmark the site using a generic image.&amp;nbsp; Web site reports always show the file favicon.ico as the top Not Found document.&amp;nbsp; In our situation, this is normal.&amp;nbsp; We considered modifying the response for this request to eliminate the error, but the 404 error actually serves a purpose.&amp;nbsp; If we review the web site reports, we always expect to see this file with the most 404 errors.&amp;nbsp; If this file is not at the top, then something unusual happened.&amp;nbsp; This is a clue to do more investigation.&amp;nbsp; It may mean that a popular document has been removed, either by mistake or in an attempt to deface the site.&lt;br /&gt;&lt;br /&gt;We keep a close watch on HTTP 500 Internal Server errors because they always indicate some problem on the site.&amp;nbsp; Unfortunately, some of the products that we run trap errors and return a 200 Successful code to the browser, which does not indicate any error in the logs.&amp;nbsp; The message on the screen back to the user might say something like “fatal error”, but the logs don’t show this.&amp;nbsp; One way to look for these situations is to inspect the number of bytes sent.&amp;nbsp; The number of bytes for a good result frequently falls in one range, while the fatal errors tend to fall in a different range.&amp;nbsp; This has helped us spot problems when all the other logs did not contain any errors.&lt;br /&gt;&lt;br /&gt;It’s important to look at other errors even if the volume is very low.&amp;nbsp; If you see requests for technology that you do not support or types of content that you do not serve, then these are red flags.&amp;nbsp; In our case we do not use php on the site.&amp;nbsp; A request for a php file is a strong indication of some unusual condition.&amp;nbsp; We block these requests and return an error code.&amp;nbsp; Even though you may only see one or two requests that fall in this category it is important to investigate these further because they may mean that someone is probing the site.&amp;nbsp; As Holmes said &lt;i&gt;"You know my method. It is founded upon the observation of trifles."&lt;/i&gt;&amp;nbsp; Use this method when setting up your log analysis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406769846810528194-4239735766888115058?l=bjm-battle-room.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bjm-battle-room.blogspot.com/feeds/4239735766888115058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bjm-battle-room.blogspot.com/2010/01/artificial-ignorance-elementary-my-dear.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406769846810528194/posts/default/4239735766888115058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406769846810528194/posts/default/4239735766888115058'/><link rel='alternate' type='text/html' href='http://bjm-battle-room.blogspot.com/2010/01/artificial-ignorance-elementary-my-dear.html' title='Artificial Ignorance - Elementary my dear Watson'/><author><name>Brian</name><uri>http://www.blogger.com/profile/17751243128132249691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_R-K239aHYqY/S0jUrUj6kYI/AAAAAAAAAKw/oMp_ICFucfE/S220/bjm-fb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406769846810528194.post-3090790086477215986</id><published>2010-01-17T10:12:00.000-08:00</published><updated>2010-01-17T10:12:10.782-08:00</updated><title type='text'>Is your web server an all inclusive resort?</title><content type='html'>The Apache web server is a versatile product with lots of options to configure and support a wide variety of web applications.&amp;nbsp; It can act as a proxy server, directly run applications such as Perl and PHP, front-end a Java application server, or just serve up content.&lt;br /&gt;&lt;br /&gt;This reminds me of the all inclusive resorts like Club Med.&amp;nbsp; All the activities, food, and drink are available in one place.&amp;nbsp; However, even these resorts modify their model to appeal to specific clientele.&amp;nbsp; The resort locations and activities are designed to fit the groups they cater to.&amp;nbsp; You can go to a resort that is setup for families, for couples, or for singles.&amp;nbsp; While the overall experience is consistent with the resort's philosophy, the activities available at individual clubs can vary widely.&lt;br /&gt;&lt;br /&gt;When you are configuring the web server to support applications are you setting the options to cater to your clientele?&amp;nbsp; This can improve the overall security and performance of your site.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;The Apache server includes a large number of modules in the core distribution, and vendors that distribute Apache add even more.&amp;nbsp; If you are running a large site, then you probably have many instances of Apache running supporting different needs.&amp;nbsp; This would include different environments, prod and test, different access points, Internet and Intranet, and different functions like proxy and application front-end.&lt;br /&gt;&lt;br /&gt;Managing different configurations for each use case would be time consuming and error prone.&amp;nbsp; Apache includes a core feature called &lt;a href="http://httpd.apache.org/docs/2.2/mod/core.html#ifdefine"&gt;IfDefine&lt;/a&gt; to mark conditional directives.&amp;nbsp; This can be used to control which directives apply based on a runtime parameter.&amp;nbsp; Using this option will allow you to maintain a single configuration supporting multiple uses while improving the security of the site.&amp;nbsp; Here are some examples of using this capability.&lt;br /&gt;&lt;br /&gt;Set a command line option, RUNPROXY, to control enabling proxy LoadModules if this instance is used as a proxy.&amp;nbsp; This technique is typically used for loading the SSL module.&lt;br /&gt;&lt;br /&gt;&amp;amp;ltIfDefine RUNPROXY&amp;gt;&lt;br /&gt;&amp;nbsp; LoadModule proxy_module modules/mod_proxy.so&lt;br /&gt;&amp;nbsp; LoadModule proxy_connect_module modules/mod_proxy_connect.so&lt;br /&gt;&amp;nbsp; LoadModule proxy_http_module modules/mod_proxy_http.so&lt;br /&gt;&amp;nbsp; LoadModule proxy_ftp_module modules/mod_proxy_ftp.so&lt;br /&gt;&amp;amp;lt/IfDefine&amp;gt;&lt;br /&gt;&lt;br /&gt;Set a command line option, TESTENV, to allow display of Apache server status if this is a test environment:&lt;br /&gt;&lt;br /&gt;&amp;amp;ltIfDefine TESTENV&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;amp;ltLocation /server-status&amp;gt; &lt;br /&gt;&amp;nbsp; &amp;nbsp; SetHandler server-status&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Order deny,allow&lt;br /&gt;&amp;nbsp; &amp;nbsp; Deny from all&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Allow from .your_domain.com&lt;br /&gt;&amp;nbsp; &amp;amp;lt/Location&amp;gt; &lt;br /&gt;/IfDefine&lt;br /&gt;&lt;br /&gt;Set a command line option, INTRANET, to enable a specific virtual host on the Intranet:&lt;br /&gt;&lt;br /&gt;&amp;amp;ltIfDefine INTRANET&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;amp;ltVirtualHost intranet.your_domain.com:80&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; Port 80&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DocumentRoot /intranet/docs&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; TransferLog /intanet/logs/access.log&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorLog /intranet/logs/error.log&lt;br /&gt;&amp;nbsp; &amp;amp;lt/VirtualHost&amp;gt;&lt;br /&gt;&amp;amp;lt/IfDefine&amp;gt;&lt;br /&gt;&lt;br /&gt;The command line options you use can be tailored to fit your environment and requirements.&amp;nbsp; You can maintain a master configuration file and still support a custom setup that is appropriate for the clientele you serve.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406769846810528194-3090790086477215986?l=bjm-battle-room.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bjm-battle-room.blogspot.com/feeds/3090790086477215986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bjm-battle-room.blogspot.com/2010/01/is-your-web-server-all-inclusive-resort.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406769846810528194/posts/default/3090790086477215986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406769846810528194/posts/default/3090790086477215986'/><link rel='alternate' type='text/html' href='http://bjm-battle-room.blogspot.com/2010/01/is-your-web-server-all-inclusive-resort.html' title='Is your web server an all inclusive resort?'/><author><name>Brian</name><uri>http://www.blogger.com/profile/17751243128132249691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_R-K239aHYqY/S0jUrUj6kYI/AAAAAAAAAKw/oMp_ICFucfE/S220/bjm-fb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406769846810528194.post-4416442317366856977</id><published>2010-01-10T20:01:00.000-08:00</published><updated>2010-01-14T19:03:24.324-08:00</updated><title type='text'>Keep a tight lid on HTTP headers</title><content type='html'>The web server is a common infrastructure component supporting a wide range of applications.&amp;nbsp; If you manage the web server, then you are the community manager, and you have a responsibility to maintain the reputation of the community.&lt;br /&gt;&lt;br /&gt;The weather has been very windy lately.&amp;nbsp; Some people in the neighborhood put out their garbage and don't put a tight lid on the trash can.&amp;nbsp; Of course, the trash blows down the street and into other yards.&amp;nbsp; Now a few of the people in the neighborhood do not see this as a big problem.&amp;nbsp; After all their yard looks fine, and their trash is gone.&amp;nbsp; The president of the homeowners association has been sending out emails to remind people to put a tight lid on their trash cans.&lt;br /&gt;&lt;br /&gt;Software vendors or application providers sometimes have the same attitude when you report a cross site scripting or HTTP response splitting issue.&amp;nbsp; The reaction seems to be "How does this affect me"?&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt; These types of vulnerabilities do not directly affect the application that is creating the issue, but they impact the reputation of the whole community, because a person is launching an attack based on the reputation of the web site.&amp;nbsp; The manager of the web server needs to operate as a community manager and police the site.&lt;br /&gt;&lt;br /&gt;If you look at the &lt;a href="http://www.sans.org/top-cyber-security-risks/"&gt;SANS top cyber security risks for 2009&lt;/a&gt;, you will see cross-site scripting at the top of the list.&amp;nbsp; The &lt;a href="http://projects.webappsec.org/Web-Application-Security-Statistics"&gt;WASC Web Application security statistics&lt;/a&gt; show HTTP response splitting near the top of the list, along with cross-site scripting and SQL injection. &lt;br /&gt;&lt;br /&gt;The root cause of many of these vulnerabilities is due to software developers setting HTTP headers, such as cookies and redirects, from unvalidated user input.&amp;nbsp; Here is an example using a vulnerability that was reported in the Apache mod_status module.&amp;nbsp; A patch is available for this issue.&amp;nbsp; It is considered a moderate level risk because the Apache status page should not be publicly available, and it is disabled by default.&amp;nbsp; This is a link to a description of the issue:&amp;nbsp; &lt;a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6388"&gt;CVE-2007-6388&lt;/a&gt; - Cross-site scripting (XSS) vulnerability in mod_status &lt;br /&gt;&lt;br /&gt;The mod_status module included a feature to refresh the screen using a user entered value for the number of seconds.&amp;nbsp; The refresh parameter normally contains a number of seconds.&amp;nbsp; However, the parameter allows the specification of a URL, and the browser will refresh to the URL specified.&amp;nbsp; The mod_status module did not check the user input.&amp;nbsp; It simply took the value of the parameter and rewrote it as an HTTP refresh header.&amp;nbsp; This means a user could click a link expecting to go to a trusted site showing server-status, and instead be redirected to another site on the Internet.&amp;nbsp; This is what the request/response looks like:&lt;br /&gt;&lt;br /&gt;telnet my-trusted-site.com 80&lt;br /&gt;Trying 127.0.0.1...&lt;br /&gt;Connected my-trusted-site.com.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;GET /server-status?refresh=0;url=http://untrusted-site.com/ HTTP/1.0&lt;br /&gt;&lt;br /&gt;HTTP/1.1 200 OK&lt;br /&gt;Date: Wed, 13 Jan 2010 17:48:03 GMT&lt;br /&gt;Refresh: 0;url=http://untrusted-site.com/&lt;br /&gt;Connection: close&lt;br /&gt;Content-Type: text/html&lt;br /&gt;&lt;br /&gt;The value of the refresh parameter that was entered by the user, and not validated, was placed in an HTTP header in the response causing the browser to immediately redirect to a new site.&amp;nbsp; A user clicking this link would think they were going to my-trusted-site, but instead would be redirected to untrusted-site.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An HTTP header is like a trash can lid.&amp;nbsp; If you don't keep a tight lid on HTTP headers, then garbage will be blown all over the community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406769846810528194-4416442317366856977?l=bjm-battle-room.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bjm-battle-room.blogspot.com/feeds/4416442317366856977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bjm-battle-room.blogspot.com/2010/01/keep-tight-lid-on-http-headers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406769846810528194/posts/default/4416442317366856977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406769846810528194/posts/default/4416442317366856977'/><link rel='alternate' type='text/html' href='http://bjm-battle-room.blogspot.com/2010/01/keep-tight-lid-on-http-headers.html' title='Keep a tight lid on HTTP headers'/><author><name>Brian</name><uri>http://www.blogger.com/profile/17751243128132249691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_R-K239aHYqY/S0jUrUj6kYI/AAAAAAAAAKw/oMp_ICFucfE/S220/bjm-fb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406769846810528194.post-8137717157340567837</id><published>2010-01-06T19:43:00.000-08:00</published><updated>2010-01-06T19:47:25.229-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='ohs'/><title type='text'>Checking out Oracle OHS Apache 11.1.1.2</title><content type='html'>Taking a tour of the latest &lt;a href="http://download.oracle.com/docs/cd/E15523_01/webtier.htm"&gt;Oracle HTTP Server (OHS) 11.1.1.2&lt;/a&gt; release from a security perspective.&amp;nbsp; This uses a simple red, yellow, green scale to assess how that configuration item was addressed in this release.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;It has been a long time since a new version of OHS has come out.&amp;nbsp; The previous OHS versions based on Apache 1.3 and 2.0 were a little tired.&amp;nbsp; The web server is your front door.&amp;nbsp; Let's see how the security of the new OHS version based on Apache 2.2.10 stacks up.&amp;nbsp; This first look was based on installing the web tier configuration on Linux.&lt;br /&gt;&lt;br /&gt;&lt;table border="2"&gt;&lt;caption&gt;OHS 11.1.1.2 Security First Look&lt;/caption&gt;   &lt;thead bgcolor="gray"&gt;&lt;tr&gt;       &lt;th&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;Configuration Item&lt;/center&gt;&lt;br /&gt;&lt;/th&gt;       &lt;th&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;Rating&lt;/center&gt;&lt;br /&gt;&lt;/th&gt;     &lt;/tr&gt;&lt;/thead&gt;   &lt;tfoot&gt;&lt;tr&gt;       &lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;http://bjm-battle-room.blogspot.com/&lt;/center&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;/tfoot&gt;   &lt;tbody&gt;&lt;tr&gt;       &lt;td&gt;Apache Version - The latest release is based on Apache 2.2.10, which is a very recent version.  It looks like Oracle included a fix for a vulnerability in mod_status that Apache fixed in 2.2.11.&lt;br /&gt;&lt;/td&gt;       &lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_R-K239aHYqY/S0K0DNfw9LI/AAAAAAAAAKk/F9jQ6iBsW9c/s1600-h/image005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_R-K239aHYqY/S0K0DNfw9LI/AAAAAAAAAKk/F9jQ6iBsW9c/s320/image005.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;Where is mod_security? -The doc says &lt;a href="http://download.oracle.com/docs/cd/E15523_01/web.1111/e10144/under_mods.htm#BABIBDCC"&gt;version 2.5.9&lt;/a&gt; is included in the distribution.&amp;nbsp; However, if you check you will see the module is not there.&amp;nbsp; The previous versions of OHS distributed an old version of mod_security (1.84), which was still very usable.&amp;nbsp; We used mod_security to setup filtering rules including a rule that stopped an XSS vulnerability in OBIEE.&amp;nbsp; We opened an SR and Oracle replied that mod_security would not be distributed with FWM 11g.&amp;nbsp; Integrating the open source version is not supported, so if you were using this module you are out of luck.&lt;br /&gt;&lt;/td&gt;       &lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_R-K239aHYqY/S0Kzy28bpoI/AAAAAAAAAKU/-i8ybtO8WEE/s1600-h/image015.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_R-K239aHYqY/S0Kzy28bpoI/AAAAAAAAAKU/-i8ybtO8WEE/s320/image015.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;Conf file macros - The httpd.conf file uses macros to set the Oracle Home directory for directives such as the DocumentRoot.  This means other tools cannot understand the format.  We always used the .apachectl configtest option to verify the config before restarting OHS.  This no longer works with the macro format.  The macro option is not a bad choice, but why not go with mod_macro?&lt;br /&gt;&lt;/td&gt;       &lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_R-K239aHYqY/S0K0AzwqKDI/AAAAAAAAAKc/Oa1Mt3Owp9w/s1600-h/image029.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_R-K239aHYqY/S0K0AzwqKDI/AAAAAAAAAKc/Oa1Mt3Owp9w/s320/image029.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;Compile options - Oracle compiled a minimum number of modules in the distribution.  It's basically just the core modules and two Oracle specific modules, odl_log and ora_audit.  You can see the list with the command httpd.worker -l.  This gives you the option to disable modules that are not needed for the intended use.  Oracle also compiled with the threaded MPM worker by default, unlike the previous OHS 2.0 version that required OPMN changes to enable threads.&lt;br /&gt;&lt;/td&gt;       &lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_R-K239aHYqY/S0K0DNfw9LI/AAAAAAAAAKk/F9jQ6iBsW9c/s1600-h/image005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_R-K239aHYqY/S0K0DNfw9LI/AAAAAAAAAKk/F9jQ6iBsW9c/s320/image005.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;Wildcard include - The httpd.conf uses a wildcard to include conf files from the moduleconf sub-directory.  This is really a bad idea.  If someone inserts a bad conf file into the moduleconf sub-directory then the next time the OHS server restarts it will pick up this file and use it.  The configuration files that are used should be explicitly named.&lt;br /&gt;&lt;/td&gt;       &lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_R-K239aHYqY/S0Kzy28bpoI/AAAAAAAAAKU/-i8ybtO8WEE/s1600-h/image015.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_R-K239aHYqY/S0Kzy28bpoI/AAAAAAAAAKU/-i8ybtO8WEE/s320/image015.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;Server Signature - The config directives were set more securely with the addition of ServerTokens Prod and ServerSignature off.&lt;br /&gt;&lt;/td&gt;       &lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_R-K239aHYqY/S0K0DNfw9LI/AAAAAAAAAKk/F9jQ6iBsW9c/s1600-h/image005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_R-K239aHYqY/S0K0DNfw9LI/AAAAAAAAAKk/F9jQ6iBsW9c/s320/image005.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;cgi-bin - The printenv and test-cgi scripts are still being distributed in the cgi-bin directory.  In addition, the cgi-bin directory is uncommented in the httpd.conf file.  The only thing preventing execution of these scripts is setting execute permission on the file.  These files should not be included in the distribution.&lt;br /&gt;&lt;/td&gt;       &lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_R-K239aHYqY/S0K0AzwqKDI/AAAAAAAAAKc/Oa1Mt3Owp9w/s1600-h/image029.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_R-K239aHYqY/S0K0AzwqKDI/AAAAAAAAAKc/Oa1Mt3Owp9w/s320/image029.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;Logging - The default logging is ODL style with an option to switch to standard Apache logging.  Using ODL logging can limit the options for using third party analysis tools.  This just does not look like it adds real value.  The XML style logs just seem to add more overhead.&lt;br /&gt;&lt;/td&gt;       &lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_R-K239aHYqY/S0K0AzwqKDI/AAAAAAAAAKc/Oa1Mt3Owp9w/s1600-h/image029.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_R-K239aHYqY/S0K0AzwqKDI/AAAAAAAAAKc/Oa1Mt3Owp9w/s320/image029.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;What do you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406769846810528194-8137717157340567837?l=bjm-battle-room.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bjm-battle-room.blogspot.com/feeds/8137717157340567837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bjm-battle-room.blogspot.com/2010/01/taking-tour-of-latest-oracle-http.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406769846810528194/posts/default/8137717157340567837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406769846810528194/posts/default/8137717157340567837'/><link rel='alternate' type='text/html' href='http://bjm-battle-room.blogspot.com/2010/01/taking-tour-of-latest-oracle-http.html' title='Checking out Oracle OHS Apache 11.1.1.2'/><author><name>Brian</name><uri>http://www.blogger.com/profile/17751243128132249691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_R-K239aHYqY/S0jUrUj6kYI/AAAAAAAAAKw/oMp_ICFucfE/S220/bjm-fb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_R-K239aHYqY/S0K0DNfw9LI/AAAAAAAAAKk/F9jQ6iBsW9c/s72-c/image005.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406769846810528194.post-5411662155491035667</id><published>2010-01-04T19:03:00.000-08:00</published><updated>2010-01-04T19:13:07.751-08:00</updated><title type='text'>Origin of Battle Room</title><content type='html'>The term Battle Room comes from the book Ender's Game.  It refers to a zero gravity environment where battles are fought.  Tactics are an important part of winning the battles.  If you have not yet read this book, feel free now to go get a copy and read it.  You can return to this blog later.  Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Enders-Game-Ender-Book-1/dp/0812550706"&gt;Ender's Game&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8406769846810528194-5411662155491035667?l=bjm-battle-room.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bjm-battle-room.blogspot.com/feeds/5411662155491035667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bjm-battle-room.blogspot.com/2010/01/origin-of-battle-room.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406769846810528194/posts/default/5411662155491035667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406769846810528194/posts/default/5411662155491035667'/><link rel='alternate' type='text/html' href='http://bjm-battle-room.blogspot.com/2010/01/origin-of-battle-room.html' title='Origin of Battle Room'/><author><name>Brian</name><uri>http://www.blogger.com/profile/17751243128132249691</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://2.bp.blogspot.com/_R-K239aHYqY/S0jUrUj6kYI/AAAAAAAAAKw/oMp_ICFucfE/S220/bjm-fb.jpg'/></author><thr:total>0</thr:total></entry></feed>
