Apache部署与安全优化

2023-01-01 0 355

布署关键步骤与安全可靠强化

控制系统自然环境实用性

安 装 Apache HTTP Server 2.2

浏览新一代版方可

安 装 tomcat-connector/jk for HTTP 2.2

应用软件自然环境实用性

Apache

此基础配置

–增设相较子目录的方向,一般来说是指放置实用性文档和笔记文档的地方性。

ServerRoot “C:/Program Files (x86)/Apache Software Foundation/Apache2.2”

–增设监听端口为 80

Listen 80

–增设网络管理员的Email,当客户端服务器发生错误时,服务器一般来说会向客户端返回错误提示

页面,为了方便解决错误,这个网页中一般来说有管理员的 Email 地址,可以通过使用 ServerAdmin 语句来增设管理员的EMail 地址

ServerAdmin [email protected]

–Apache 默认服务器主目录方向

DocumentRoot “D:/tomcat-7-dsp/webapps/dsp”

–增设服务器主机名称 (如果有域名可以填入域名,没有域名则可填入服务器IP 地址)

#ServerName localhost:80

–增设目录权限(此次写增设目录权限的语句

<Directory ” D:/tomcat-7-dsp/webapps/dsp “> Options FollowSymLinks

AllowOverride None Order allow,deny Allow from all

</Directory>

注:在上面这段目录属性实用性中,主要有下面的选项:

Options:实用性在特定目录使用哪些特性,常用的值和基本含义如下:

ExecCGI : 在 该 目 录 下 允 许 执 行 CGI 脚 本 。 Follow Sym Links: 在该目录下允许文档控制系统使用符号连接。

Indexes: 当用户访问该目录时,如果用户找不到 DirectoryIndex 指定的主页文档(例如 index.html),则返回该目录下的文档列表给用户。

Sym LinksIfOwner Match : 当使用符号连接时,只有当符号连接的文档拥有者与实际文档的拥有者相同时才可以访问。

其它可用值和含义请参阅:

AllowOverride :允许存在于.htaccess 文档中的指令类型(.htaccess 文档名是可以改变的, 其文件名由 AccessFileName 指令决定):

None: 当 AllowOverride 被增设为 None 时。不搜索该目录下的.htaccess 文档(可以减小服务器开销)。

All: 在.htaccess 文档中可以使用所有的指令。

其他的可用值及含义请参看:

Order :控制在访问时 Allow 和 Deny 两个访问规则哪个优先: Allow :允许访问的主机列表(可用域名或子网,例如:Allow from 192.168.0.0/16)。Deny :拒绝访问的主机列表。

–主页文档的增设(本例将主页文档增设为:index.html,index.htm 和index.php)

<IfModule dir_module>

DirectoryIndex index.html index.jsp

</IfModule>

实用性全局错误页面

#ErrorDocument 500 “The server made a boo boo.” ErrorDocument 404 /error/index.html

#ErrorDocument 404 “/cgi-bin/missing_handler.pl”

#ErrorDocument 402 http://localhost/subscription_info.html

Tomcat

如果单独使用Tomcat 做JSP 服务器,在工作效率上会存在问题,Tomcat 对于静态的html 文档、图片文档等的解析效率上不如 Apache,并且所能承受的最大并发连接数也有一定的限制。

在测试中,当并发连接较多时,Tomcat 就会处于“僵死”状态,对后继的请求连接失去响应。所以现在提出一个“整合”解决方案:将 HTML 与 JSP 的功能部分进行明确分工,让Tomcat 只处理 JSP 部分,其它的由 Apache 处理。Apache 与 Tomcat 各司其职,那么服务器的整体效率就能够得到提升。

Tomcat 服务器通过 Connector 连接器组件与客户程序建立连接,Connector 组件负责接收客户的请求,以及把 Tomcat 服务器的响应结果发送给客户。

默认情况下,Tomcat 在 server.xml 中实用性了两种连接器:

<!– Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 –>

<Connector port=”8080″

maxThreads=”150″

minSpareThreads=”25″ maxSpareThreads=”75″ enableLookups=”false” redirectPort=”8443″ acceptCount=”100″ debug=”0″ connectionTimeout=”20000″

disableUploadTimeout=”true” />

<!– Define a Coyote/JK2 AJP 1.3 Connector on port 8009 –>

<Connector port=”8009″

enableLookups=”false” redirectPort=”8443″ debug=”0″ protocol=”AJP/1.3″ />

第一个连接器监听 8080 端口,负责建立 HTTP 连接。在通过浏览器访问 Tomcat 服务器的 Web 应用时,使用的就是这个连接器。

Apache部署与安全优化

第二个连接器监听 8009 端口,负责和其他的 HTTP 服务器建立连接。Tomcat 与其他HTTP 服务器集成时,就需要用到这个连接器。Web 客户访问 Tomcat 服务器上 JSP 组件的两种方式如图:

快速实用性 JK 连接器连接 APACHE 和 Tomcat 的关键步骤:

实用性 workers.properties

这是 JK 连接器接口的命令实用性文档一个实,workers.properties 使用 ajp13 协议连接Apache 和 Tomcat。

Apache部署与安全优化

# Defining a worker named worker1 and of type ajp13 worker.list=dsp,datashare

# Set properties for dsp worker.dsp.type=ajp13 worker.dsp.host=localhost worker.dsp.port=1009 worker.datashare.type=ajp13 worker.datashare.host=localhost worker.datashare.port=8009

实用性 mod_jk.conf

Apache部署与安全优化

#指出 mod_jk 模块工作所需要的工作文档 workers.properties 的位置JkWorkersFile conf/workers.properties

JkShmFile D:\logs\jk.shm # Where to put jk logs

JkLogFile D:\logs\mod_jk.log

# Set the jk log level [debug/error/info]

JkLogLevel error

# Select the log format

JkLogStampFormat “[%a %b %d %H:%M:%S %Y]” # JkOptions indicate to send SSL KEY SIZE,

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format

JkRequestLogFormat “%w %V %T”

# 将所有 servlet 和 jsp 请求通过 ajp13 的协议送给 Tomcat,让 Tomcat 来处理JkMount /dsp/* dsp

JkMount /datashare/* datashare

实用性插件

在”Apache 文档夹/conf/httpd.conf”文档最后添加如下实用性LoadModule jk_module modules/mod_jk.so

Include conf/mod_jk.conf

实用性站点(样例)

NameVirtualHost *:*

<VirtualHost *:80>

ServerName www.chinageoss.org

ErrorDocument 500 /error/index.html

ErrorDocument 404 /error/index.html

ErrorDocument 403 /error/index.html

RewriteEngine On

RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* – [F]

#共享平台网站应用

<Directory “D:\tomcat-7-dsp\webapps\dsp”> AllowOverride None

Options None Order allow,deny Allow from all

</Directory>

Alias /dsp “D:\tomcat-7-dsp\webapps\dsp”

JkMount /dsp/* dsp

#共享平台网站检索应用

<Directory “D:\tomcat-7-datashare\webapps\datashare”> AllowOverride None

Options None Order allow,deny Allow from all

</Directory>

Alias /datashare “D:\tomcat-7-datashare\webapps\datashare”

JkMount /datashare/* datashare

#网站错误

<Directory “D:\tomcat-7-dsp\webapps\404error”> AllowOverride None

Options None

Order allow,deny Allow from all

</Directory>

Alias /error “D:\tomcat-7-dsp\webapps\404error”

#共享平台网站卫星遥感数据集编目快视图

<Directory “F:\dsp\preview”> AllowOverride None Options None

Order allow,deny Allow from all

</Directory>

Alias /preview “F:\dsp\preview”

</VirtualHost>

s 安全可靠实用性与强化

启用 gzip 功能

从服务端强化来说,通过对服务端做压缩实用性可以大大减小文本文档的体积,从而使加载 文本的速度成倍的加快。目前比较通用的压缩方法是启用 gzip 压缩。它会把浏览器请求的页面, 以及页面中引用的静态资源以压缩包的形式发送到客户端,然后在客户端完成解压和拼装.具体是 实现不用关心,我们只要将 GZip 启用就好.下图是使用相关工具检测没有开启网页压缩的效果。如下关键步骤我们就来具体开启基于 apache 的 GZip 压缩支持。

找到并打开 apache/conf 目录中的 httpd.conf 文档;

httpd.conf 中打开 deflate_Module 和 headers_Module 模块,具体做法为将 如下两句前面的#去掉:

LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so

Apache部署与安全优化

在 httpd.conf 文档底部加入如下代码实用性需要压缩的文档:

<IfModule deflate_module> SetOutputFilter DEFLATE

SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary AddOutputFilterByType DEFLATE text/*

AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript

</IfModule>

重启 apache 服务端

使用工具重新检测是否开启 gzip 压缩。使用 Fiddler2:

使用在线检测工具:

Apache部署与安全优化

关闭 TraceEnable

黑客攻击网站前一般会搜集网站的相关信息,以查找出控制系统可能存在的漏洞,比如控制系统版 本和名称,网站服务器版和名称,对外开放端口,确认网址 IP 地址和 DNS 信息,WEB 资料收集等。

对于隐藏网站服务器版信息和网页版信息,之前的文章隐藏 apache 版号和 php 版号有进行说明。

而 TraceEnable 选项是默认开启,用途是除错,在网站漏洞检测中是一个警告漏洞,建议关闭。

2.0.55 以上版的 Apache 服务器,可以在 httpd.conf 的尾部添加: TraceEnable off

如果你使用的是 Apache:

确认 rewrite 模块激活(httpd.conf,下面一行前面没有#): LoadModule rewrite_module modules/mod_rewrite.so

在各虚拟主机的实用性文档里添加如下语句:

RewriteEngine On

RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* – [F]

注:可以在 httpd.conf 里搜索 VirtualHost 确定虚拟主机的实用性文档。

隐藏 apache 版号

修改 httpd.conf 文档的下面实用性为: ServerTokens ProductOnly ServerSignature Off

重启 Apache,现在 http 头里面只看到: Server: Apache

举报/反馈

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务