我如何阻止对我的 Web 服务器的直接 IP 访问而不响应错误代码?

我如何阻止对我的 Web 服务器的直接 IP 访问而不响应错误代码?

我希望人们可以帮助我解决这个问题。

例子:

我的域名是:example.com

我的 IP 地址是 103.103.103.103

当人们尝试通过端口 80 连接到我的 IP 时,它不会响应任何请求。

它应该显示:正在连接(在浏览器上)...没有响应。(看起来像无法连接)

我曾尝试修改 httpd.conf(我使用的是 apache 2.4)但尚未成功。

我尝试用谷歌搜索,但没有找到与我的问题相关的结果。

谢谢

答案1

假设您希望请求http://example.com为您的网站提供服务,并请求http://103.103.103.103据我所知,要明确删除你有两个主要选项。

1)是使用mod_security模块和drop目标。像这样的配置;

    <VirtualHost *:80>
        ServerName default.only
        SecRuleEngine On
        SecRule REMOTE_ADDR "^\d" id:'1234',drop,phase:1
    </VirtualHost>

    <Directory /var/www/example.com >
      Options FollowSymLinks
      AllowOverride FileInfo Options
      Order allow,deny
      Allow from all
    </Directory>

    <VirtualHost *:80>
        ServerName example.com
        DocumentRoot /var/www/example.com
    </VirtualHost>

返回网站,如果你访问http://example.com

# wget -O-  http://example.com
--2018-03-09 15:35:35--  http://example.com/
Resolving example.com (example.com)... 127.0.0.1
Connecting to example.com (example.com)|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 24 [text/html]
Saving to: ‘STDOUT’

如果你尝试通过 IP 访问默认网站http://127.0.0.1

# wget -O-  http://127.0.0.1
--2018-03-09 15:35:28--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... No data received.

连接断开

2)第二种选择是使用string模块iptables并丢弃与标题匹配的连接Host: 103.103.103.103

iptables -A INPUT -m string --string "Host: 103.103.103.103" -j DROP

(我没有测试过 iptables 规则...所以你必须查看文档以找到正确的咒语...)但是我认为 mod_security 选项更简单

相关内容