Apache2.4安全配置和性能优化

前提:在安装时使用自定义的安装路径,并配置使用自定义的WEB目录。

一、Apache禁止遍历目录(重要)

将Options Indexes 中的Indexes 去掉。Indexes 的作用就是当该目录下没有默认索引文件时,就显示目录结构。

利用Web服务器和Web应用程序中会强迫Web服务器返回目录列表的特定问题,例如“URL 诡计”攻击,或形态异常的HTTP
请求,是另一个获取目录列表的可能方式。
注意:攻击者使用目录列表来查找Web目录中,通常不通过Web站点上的链接显现出来的文件。配置文件及可能含有敏感信息
的Web应用程序其他组件,都可以利用这个方式来查看。

二、apache 隐藏版本信息

修改主配置文件httpd.conf,将下面两行添加到配置文件的末尾

ServerSignature Off
ServerTokens ProductOnly

备注:这个作用显而易见,防止对方“知己知彼”

三、关闭trace-method

配置文件添加一行

TraceEnable off

备注:TRACE 方法用于调用请求消息的远程应用层回送。请求的最终接收方应该以 200(OK)响应的实体主体向客户端反映接收到的消息。TRACE 可让客户端查看在请求链的另一端收到什么,并将这项数据用于测试或诊断信息。

四、禁用Multiviews功能

在Apache配置文件中禁用Multiviews功能

<Directory 程序所在目录>
     Options MultiViews   #删除MultiViews
</Directory>

备注:

所谓的Multiviews,即Apache会根据客户端发送的MIME类型,执行一个隐含文件名模式匹配。
如果提供一个无效的MIME类型,如:'application/unknown',Apache会显示所有选项,可能导致Web应用程序
文件系统结构泄露。

也可以用Options None来保证安全性。但是,如果启用了mod_rewrite, 那么Options就一定要启用FollowSymLinks或者SymLinksifOwnerMatch, 否则会出现Fobidden页面禁止访问的错误。

五、Apache文件名解析特性导致上传漏洞

Apache对于文件名的解析是从后往前解析的。例如:webshell.php.jpg这样的文件,上传时会被当做jpg图片,运行时会被当做php。可以在httpd.conf配置文件中添加以下内容来阻止Apache解析这种文件。

<Files ~ "\.(php.)">
  Order Allow,Deny
  Deny from all
</Files>

类似配置,可以禁止对象有很多:

#增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库:
<Files ~ "\.inc$">
   Order allow,deny
   Deny from all
</Files>

#禁止访问某些指定的目录:(可以用 <DirectoryMatch>   来进行正则匹配)

<Directory ~ "^/var/www/(.+/)*[0-9]{3}"> 
   Order allow,deny
   Deny from all
</Directory>

#通过文件匹配来进行禁止,比如禁止所有针对图片的访问:
<FilesMatch \.(?i:gif|jpe?g|png)$>
   Order allow,deny
   Deny from all
</FilesMatch> 

#针对URL相对路径的禁止访问:
<Location /dir/>
   Order allow,deny
   Deny from all
</Location> 

#针对代理方式禁止对某些目标的访问(<ProxyMatch> 可以用来正则匹配),比如拒绝通过代理访问cnn.com:
<Proxy http://cnn.com/*>
   Order allow,deny
   Deny from all
</Proxy> 

#禁止某些IP访问/只允许某些IP访问。如果要控制禁止某些非法IP访问,在Directory选项控制:
<Directory "/var/www/web/">
   Order allow,deny
   Allow from all
   Deny from 10.0.0.1 #阻止一个IP
   Deny from 192.168.0.0/24 #阻止一个IP段
</Directory>

#只允许某些IP访问,适合比如就允许内部或者合作公司访问:
<Directory "/var/www/web/">
   Order deny,allow
   Deny from all
   All from example.com #允许某个域名
   All from 10.0.0.1 #允许一个iP
   All from 10.0.0.1 10.0.0.2 #允许多个iP
   Allow from 10.1.0.0/255.255.0.0 #允许一个IP段,掩码对
   All from 10.0.1 192.168 #允许一个IP段,后面不填写
   All from 192.168.0.0/24 #允许一个IP段,网络号
</Directory>

附录:apache目录权限控制详细说明

<Directory 目录名></Directory>  定义一个目录

Options:目录中将使用哪些服务器特性

None  //不启用任何额外特性

All  //启用除MultiViews之外的所有特性(默认设置)

Indexes  //当用户访问该目录时,找不到index文件,则返回该目录下的文件列表给用户

FollowSymLinks  //可以在该目录中使用符号连接,这样就访问目录之外的文档 

MultiViews  //允许内容协商的多重视图

Includes  //允许服务器端包含

IncludesNOEXEC  //允许服务器端包含,但禁用#exec命令和#exec CGI

ExecCGI //允许执行CGI脚本

另外:

+ 号表示合并上层目录的Options和当前目录的Options

- 号表示移除上层目录的Options选项

<Directory /> 
      Options Indexes FollowSymLinks 
</Directory> 

<Directory /www> 
    Options Includes   //当前目录只有Includes 
</Directory>

#################################################

<Directory /> 
    Options Indexes FollowSymLinks 
</Directory> 

<Directory /www> 
    Options +Includes -Indexes  //当前目录有FollowSymLinks和Includes
</Directory>

AllowOverride

None //禁止搜索该目录下的.htaccess文件。
All //允许使用该目录下的.htaccess文件。

由于Apache对一个目录的访问控制设置是能够被下一级目录继承的,

因此对根目录的设置将影响到它的下级目录,

如果从根目录就允许查看.htaccess文件,

那么Apache就必须一级一级的查看.htaccess文件,对系统性能会造成影响,

因此对于系统根目录设置AllowOverride None不但对于系统安全有帮助,也有益于系统性能。、

<Directory />
   Options FollowSymLinks
   AllowOverride None
</Directory>

目录访问控制

Apache2.2 使用order和allow,deny

Order Allow,Deny  //order决定最后使用哪一条规则
Allow from all
Deny from ip1 ip2  //deny是最后一条,符合ip1和ip2的访问会被禁止
Order Deny,Allow  //最后一条是allow,所以第三条deny不会生效
Allow from all
Deny from domain.org  
Order Allow,Deny  
Allow from ip1
Deny from all   //deny是最后一条,all包含ip1,所以所有访问都会禁止

Apache2.4 使用require

Require all granted  //允许所有访问

Require all denied  //拒绝所有访问

Require local  //仅允许本地访问(默认)

Require all granted
Require ip 192.168.0.1  //仅允许IP:192.168.0.1 访问

Require all granted
Require not ip 192.168.0.1 //仅禁止IP:192.168.0.1访问

附录:常见Web安全漏洞列表,Web开发和部署的时候需要加强注意

  • SQL注入
  • 弱密码 
  • 目录遍历
  • 系统命令执行
  • 越权访问
  • 信息泄露
  • 跨站脚本攻击 
  • 拒绝服务
  • 资源位置可预测 
  • 逻辑错误 
  • 配置不当
  • 内容电子欺骗 
  • 外链信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

才 神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值