Linux环境下,apache设置禁止恶意域名绑定和直接ip访问方法

原创 2016年08月30日 09:43:17

       为了防止恶意域名绑定到自己的服务器ip上以及直接通过ip访问方式访问。我们可以通过apache配置可以实现这一目的,具体操作步骤如下。

第一步,httpd.conf配置设置

  • 启用虚拟主机、ssl、重写模块

LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule ssl_module modules/mod_ssl.so

  • 禁用根目录访问

<Directory />
    AllowOverride None
    Require all denied
</Directory>

  • 允许htdocs目录访问

DocumentRoot "/usr/local/httpd/htdocs"
<Directory "/usr/local/httpd/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #

    # cache 
       

    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all denied
</Directory>

httpd-vhosts.conf中配置

   将所有未知的域名访问和直接的ip访问独立一个虚拟主机,并将该主机设置为拒绝访问。对于正式域名访问独立一个虚拟主机访问,并设置为允许访问。注意必须将拒绝的虚拟主机放在第一个。

<VirtualHost *:80>
    ServerAdmin unAllowedDomain
    DocumentRoot "/usr/local/httpd/htdocs"
    ErrorLog "/home/logs/apache/unAllowedDomain-error_log"
    CustomLog "/home/logs/apache/unAllowedDomain-access_log" common
    <Directory "/usr/local/httpd/htdocs">
        AllowOverride None
        Require all denied
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin xxxx.cn
    ServerName www.xxxx.cn
    ServerAlias xxxx.cn
    DocumentRoot "/usr/local/httpd/htdocs"
    ErrorLog "/home/logs/apache/xxxx-error_log"
    CustomLog "/home/logs/apache/xxxx-access_log" common

    <Directory "/usr/local/httpd/htdocs">
        AllowOverride all
        Require all granted
    </Directory>
</VirtualHost>

httpd-ssl.conf中配置

如果使用了ssl证书访问,这个时候像拒绝https://ip访问需要做如下操作。仍然需要创建一个不允许域名访问虚拟主机站点,并设置为拒绝状态,并且放在第一个。ssl虚拟主机需要注意以下两点:

  • serverName必须带上端口号,80端口是默认的因此不需要带端口号
  • xxxx.cn无法作为别名进行访问,ServerAlias xxxx.cn:443是无效的,因此需要单独一个虚拟主机站点访问

<VirtualHost *:443>
	DocumentRoot "/usr/local/httpd/htdocs"
	ServerAdmin unAllowedDomain
	ErrorLog "/usr/local/httpd/logs/error_log"
	TransferLog "/usr/local/httpd/logs/access_log"

	SSLEngine on

	SSLCertificateFile "/usr/local/httpd/conf/server.crt"
	SSLCertificateKeyFile "/usr/local/httpd/conf/server.key"
	SSLCertificateChainFile "/usr/local/httpd/conf/server-ca.crt"

	<FilesMatch "\.(cgi|shtml|phtml|php)$">
	    SSLOptions +StdEnvVars
	</FilesMatch>

	<Directory "/usr/local/httpd/htdocs">
	    SSLOptions +StdEnvVars
	    AllowOverride None
	    Require all denied
	</Directory>

	<Directory "/usr/local/httpd/cgi-bin">
	    SSLOptions +StdEnvVars
	    AllowOverride None
            Require all denied
	</Directory>

	BrowserMatch "MSIE [2-5]" \
		 nokeepalive ssl-unclean-shutdown \
		 downgrade-1.0 force-response-1.0

	CustomLog "/usr/local/httpd/logs/ssl_request_log" \
		  "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>                                                                       
  
<VirtualHost *:443>
	DocumentRoot "/usr/local/httpd/htdocs"
	ServerName www.xxxx.cn:443
	ServerAdmin you@example.com
	ErrorLog "/usr/local/httpd/logs/error_log"
	TransferLog "/usr/local/httpd/logs/access_log"

	SSLEngine on
	SSLCertificateFile "/usr/local/httpd/conf/server.crt"
	SSLCertificateKeyFile "/usr/local/httpd/conf/server.key"
	SSLCertificateChainFile "/usr/local/httpd/conf/server-ca.crt"

	<FilesMatch "\.(cgi|shtml|phtml|php)$">
	    SSLOptions +StdEnvVars
	</FilesMatch>

        <Directory "/usr/local/httpd/htdocs">
            AllowOverride all
            Require all granted
        </Directory>
        <Directory "/usr/local/httpd/cgi-bin"> 
            SSLOptions +StdEnvVars
        </Directory>
 
        BrowserMatch "MSIE [2-5]" \ 
        nokeepalive ssl-unclean-shutdown \ 
        downgrade-1.0 force-response-1.0CustomLog "/usr/local/httpd/logs/ssl_request_log" \ 
        "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
<VirtualHost *:443>
    DocumentRoot "/usr/local/httpd/htdocs"
    ServerName xxxx.cn:443
    ServerAdmin you@example.com
    ErrorLog "/usr/local/httpd/logs/error_log"
    TransferLog "/usr/local/httpd/logs/access_log"
    SSLEngine onSSLCertificateFile "/usr/local/httpd/conf/server.crt"
    SSLCertificateKeyFile "/usr/local/httpd/conf/server.key"
    SSLCertificateChainFile "/usr/local/httpd/conf/server-ca.crt"
    <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars</FilesMatch>
    <Directory "/usr/local/httpd/htdocs">
<pre name="code" class="html">         AllowOverride all
         Require all granted
    </Directory>
<Directory "/usr/local/httpd/cgi-bin"> SSLOptions +StdEnvVars</Directory>
BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "/usr/local/httpd/logs/ssl_request_log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \
"%r\" %b"
</VirtualHost>




版权声明:本文为博主原创文章,未经博主允许不得转载。

apache禁止恶意域名访问

修改apache配置文件:/usr/local/apache/conf/httpd.conf 加入配置 ServerName IP Order Allow,Den...
  • benben0503
  • benben0503
  • 2012年11月15日 14:53
  • 987

配置apache禁止通过IP访问网站

两步:修改配置文件,重启服务。 1. 找到apache的服务配置文件,httpd.conf,最后加上修改内容: ServerName *.*.*.* Order Allow,Deny De...
  • u010806212
  • u010806212
  • 2017年01月06日 20:53
  • 4503

Apache防恶意解析—禁止直接通过IP访问网站

NameVirtualHost 218.244.141.244:80 ServerName  218.244.141.244 Order Allow,Deny Deny from...
  • panfanglin
  • panfanglin
  • 2014年05月12日 11:49
  • 4280

apache如何不被别人的域名指向,Apache禁止别人的域名指向到自己的服务器

用Apache搭建的WEB服务器,如何让网友只能通过设定的域名访问,而不能直接通过服务器的IP地址访问呢,有两个方法可以实现(仅限于我知道的,当然肯定还会有其他方法可以实现),都是修改httpd.co...
  • ybds88
  • ybds88
  • 2013年01月12日 22:14
  • 3335

Apache中限制和允许特定IP访问

Apache中限制和允许特定IP访问 Options All AllowOverride None Order Deny,Allow Deny From all Allow Fr...
  • aldenphy
  • aldenphy
  • 2011年11月10日 11:15
  • 21625

Linux Apache 设置只允许固定某IP才能请求

如果我们要限制服务器只能某个IP能访问(这种情况可能出现在内部服务器之间通讯的情况),Apache 服务器上我们要怎么做呢?解决方案查到到Apache 的 http.conf 文件,设置一下下面的规则...
  • weixin_36333654
  • weixin_36333654
  • 2016年10月10日 22:02
  • 688

apache防止恶意解析

1、Apache2.4.1以前:第一种 直接拒绝访问打开 httpd.conf 文件,将一下配置追加到文件最后。 [html] view plain copy #直接拒绝所有非法域名 ...
  • qq_21956483
  • qq_21956483
  • 2017年01月05日 21:29
  • 1374

apache如何不被别人的域名指向,Apache禁止别人的域名指向到自己的服务器

用Apache搭建的WEB服务器,如何让网友只能通过设定的域名访问,而不能直接通过服务器的IP地址访问呢,有两个方法可以实现(仅限于我知道的,当然肯定还会有其他方法可以实现),都是修改httpd.co...
  • ybds88
  • ybds88
  • 2013年01月12日 22:14
  • 3335

防恶意解析,禁止用IP访问网站的Apache设置+如何阻止网站被恶意反向代理访问

一般来说,网站可以用域名和IP来访问。你的网站可以通过IP直接访问,本来这没什么问题,但是会有些隐患: 由于搜索引擎也会收录你的IP地址的页面,所以同一个页面搜索引擎会重复收录,造成页面的权重不...
  • zqtsx
  • zqtsx
  • 2014年03月25日 11:03
  • 3299

配置服务器禁止所有非法域名 访问自己的服务器

配置 Apache 服务器禁止所有非法域名 访问自己的服务器 禁止单个域名访问服务器...
  • chenxiruanhai
  • chenxiruanhai
  • 2014年08月27日 21:26
  • 4104
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux环境下,apache设置禁止恶意域名绑定和直接ip访问方法
举报原因:
原因补充:

(最多只允许输入30个字)