我有一台有两个 IP 的云服务器,每个 IP 分别配置了apache
一台wildfly
服务器。在生产环境中,每个 IP 上都有一些域/虚拟主机设置。
检查 apache 访问日志(以及同一云上的 widlfy 日志)我看到许多类似的 HTTP CONNECT 请求:
192.99.xxx.xxx - - [21/Jun/2019:09:58:03 +0200] "CONNECT www.instagram.com:443 HTTP/1.1" 200 - "-" "-"
118.24.xxx.xxx - - [21/Jun/2019:09:59:20 +0200] "CONNECT api.zxkjj.cn:443 HTTP/1.1" 200 - "-" "Python/3.6 aiohttp/3.4.4"
等等..
有人试图入侵我的服务器吗?为什么我会收到他们的邮件?还有……如何在不iptables
为每个域或 IP 编写规则的情况下阻止它?
附加信息:我希望直接从 apache 配置阻止不需要的请求。使用 mod_security 删除请求将是最佳选择,而不是 http 403。
我的httpd.conf非常简单:
具有以下设置的默认虚拟主机:
<VirtualHost _default_:*>
ServerName catchall
<Location />
Deny from all
Options None
</Location>
</VirtualHost>
第二个虚拟主机的设置如下:
<VirtualHost myserverip:80>
DocumentRoot "/var/www/mydir"
ServerName www.mydomain.com
SSLProxyEngine on
ProxyRequests Off
<Directory "/var/www/mydir">
Options FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
</Directory>
<Proxy *>
Order Deny,Allow
Deny from all
Allow from www.mydomain.com
</Proxy>
</VirtualHost>
但我继续在第二个虚拟主机中收到请求,正如我在第一个问题中所解释的那样。
我哪里错了?
答案1
很可能是该服务器被放入了代理列表,因为有人确实在其上检测到了开放的代理。
CONNECT 返回状态 200 而不是状态 405,这是好/坏的指标。如果此服务器不打算代理 http 请求,则禁用 Apache 中的 mod_proxy 模块。
如果 Apache 用作 Wildfly 的反向代理,则至少禁用 mod_proxy_connect。如果 RewriteRule [P] 用于反向代理,则检查它是否只能代理到 Wildfly 实例,而不能代理到随机域,例如通过捕获 HTTP_HOST 变量并将其放入 RewriteRule 中,如 RewriteRule /wildflyhttps://%1/[P] 或者类似的东西。
答案2
不,这不是试图破解您的服务器。这是试图将您的apache
服务器用作代理。您可以做的是在配置中禁用apache
CONNECT 方法:
使用重写引擎:
RewriteCond %{REQUEST_METHOD} ^(OPTIONS)
RewriteRule .* - [F]
通过允许/拒绝(使用这个答案):
<Proxy *>
Order Deny,Allow
Deny from all
Allow from yournetwork.example.com
</Proxy>