FreeBSD连载86:对IP地址和域名的控制

来源:岁月联盟 编辑:zhu 时间:2008-01-17
FreeBSD连载86:对IP地址和域名的控制内容简介:【FreeBSD教程】服务器的安全控制 Apache提供的各种特性非常丰富,主要是由于其采用的是模块化的结构,这样就很轻易进行分布式开发。 Internet上的众多开发者为Apache提供了各种各样的能力,使其能具备其

  【FreeBSD教程】服务器的安全控制

  Apache提供的各种特性非常丰富,主要是由于其采用的是模块化的结构,这样就很轻易进行分布式开发。 Internet上的众多开发者为Apache提供了各种各样的能力,使其能具备其他的Web服务器不能与之相比的能力。在服务器所具备的众多特性中,安全控制的特性最为有用。

  对IP地址和域名的控制

  Apache服务器可以基于IP地址和基于用户对访问服务器进行控制。在设置文件httpd.conf(或 access.conf)中,这些访问控制的设置是放置在Directory、File和Location语句中的,分别针对主机上的目录、文件以及URI进行存取控制。然而,由于不是每个使用者都可以随便更改系统Web服务器的设置文件,并能重新启动服务器的,因此在设置文件中的控制语句只是提供了基本的访问控制策略,而更灵活的方式是通过各个文档目录中的访问控制文件来实现的。

  为了在需要访问控制的每个目录下都设置访问控制文件,首先要在系统配置文件中设置这个访问控制文件及其访问作用。需要使用AccessFileName定义访问控制文件的名字,缺省它被设置为.htaccess。缺省设置文件将在针对根目录及/usr/local/www/data这个文档根目录的访问控制语句中设置AllowOverride None ,这就意味着不答应这个目录及其子目录中的访问控制文件起作用,为了使得访问控制文件发挥作用,必须针对需要设置访问控制的目录设置AllowOverride All或其他有部分访问控制功能的选项,此时该目录及其子目录下的访问控制文件也会发挥作用。

  AllowOverride All将答应.htaccess文件能改变所有的访问控制功能,假如仅仅希望目录的所有者只控制部分访问控制功能,可以使用AllowOverride的其他设置选项,那样.htaccess只能使用答应的设置选项。

  要在.htaccess文件中针对IP地址和域名进行控制,就需要使用访问控制语句的Limit语句。因此就要求httpd.conf中必须答应控制文件使用Limit功能,对应的设置为AllowOverride Limit选项(或All选项)。

  Limit语句可以使用不同的参数,这些参数为HTTP协议的请求方法,如使用<limit GET> 限制HTTP协议中的GET方法,<limit POST>限制http协议中的POST方法,使用</limit>标识这个控制段的结束。对于一般的情况,可以对大部分客户打开GET、POST和HEAD 请求,而关闭PUT、DELETE等其他更复杂且不常用的请求。

  假如在.htaccess中没有使用Limit语句指定具体的访问方法,那么就表示访问控制命令将对所有的请求方法都进行控制。

  Order定义服务器查询访问控制的顺序,当设置为Order Allow, Deny的时候将先处理Allow 语句,再处理Deny语句。Order Deny, Allow的处理顺序相反。由于这两种不同的方式代表不同的访问控制策略,Order deny, allow和deny from all合作,是用于只答应设置过的客户机访问服务器,而Order allow, deny和allow from all合作,是答应所有的客户机访问,而仅仅屏蔽部分具有恶意的网络地址。

  在每个Allow或Deny命令中,可以使用域名(从后向前匹配)、IP(从前向后匹配),all(代表所有主机)来标识Internet上的计算机。这里是一个例子:

order deny, allow
deny from all
allow from 192.168.1.
allow from example.org.cn
allow from 127.


  这个例子是一个专有网络的例子,它采用的封闭式策略,以保证服务器的安全性。对于对整个 Internet开放的公共Web服务器,那么采取的策略应该与之相反。

图片内容