AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 417543
Accepted
WEBjuju
WEBjuju
Asked: 2018-01-17 07:30:26 +0800 CST2018-01-17 07:30:26 +0800 CST 2018-01-17 07:30:26 +0800 CST

在 centos/apache 中防止不正确的虚拟主机请求

  • 772

我们使用 Apache 2.4 运行CentOS Linux 7.4 版LAMP 堆栈。在监控仪表板上,我跟踪各种性能指标,其中之一是虚拟主机与我们的服务器不匹配的“错误主机请求”。

手动,我使用 arin.net 来查找错误的主机请求。因为我们业务的性质是美国,仅限国内,我们阻止访问我们的外国 IP 范围没有正确的虚拟主机名称。我们使用 iptables 来做到这一点;以下是其中的一个示例,fwiw。

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  187.0.0.0/8          anywhere             /* montevideo uruguay */
DROP       all  --  177.0.0.0/8          anywhere             /* vmontevideo uraguay */
DROP       all  --  164.77.0.0/16        anywhere             /* montevideo uraguay */
DROP       all  --  78-0-0-0.adsl.net.t-com.hr/8  anywhere             /* amsterdam */

这对于减缓来自海外的所有“嗅探器”流量非常有效。.


几乎突然间,在过去的两周里,我们开始每天收到 3-6 个请求,这些请求来自伊利诺伊州芝加哥、亚马逊 AWS(华盛顿州西雅图)、弗里蒙特 CA 等。


以下是 apache 的 access_log 中的一些日志条目:

./myurl.com-access.log:23.20.12.111 - - [16/Jan/2018:00:16:21 -0600] "HEAD / HTTP/1.1" 200 - "-" "Cloud mapping experiment. Contact [email protected]"
./myurl.com-access.log:23.20.54.152 - - [16/Jan/2018:08:10:03 -0600] "HEAD / HTTP/1.1" 200 - "-" "Cloud mapping experiment. Contact [email protected]"
./myurl.com-access.log-20180114:23.20.12.111 - - [13/Jan/2018:08:07:44 -0600] "HEAD / HTTP/1.1" 200 - "-" "Cloud mapping experiment. Contact [email protected]"
./myurl.com-ssl-access.log:74.82.47.3 - - [14/Jan/2018:07:20:31 -0600] "GET / HTTP/1.1" 200 21 "-" "-"
./myurl.com-ssl-access.log:108.178.61.58 - - [15/Jan/2018:06:40:17 -0600] "GET / HTTP/1.1" 200 20 "-" "Mozilla/5.0 zgrab/0.x"
./myurl.com-ssl-access.log:184.154.189.90 - - [15/Jan/2018:07:54:29 -0600] "GET / HTTP/1.1" 200 21 "-" "Mozilla/5.0 zgrab/0.x"
./myurl.com-ssl-access.log:108.178.61.58 - - [16/Jan/2018:06:16:45 -0600] "GET / HTTP/1.1" 200 21 "-" "Mozilla/5.0 zgrab/0.x"
./myurl.com-ssl-access.log:184.154.189.90 - - [16/Jan/2018:06:51:18 -0600] "GET / HTTP/1.1" 200 21 "-" "Mozilla/5.0 zgrab/0.x"
./myurl.com-ssl-access.log:74.82.47.3 - - [16/Jan/2018:07:28:43 -0600] "GET / HTTP/1.1" 200 20 "-" "-"
./myurl.com-ssl-access.log-20180114:74.82.47.3 - - [08/Jan/2018:06:25:14 -0600] "GET / HTTP/1.1" 302 - "-" "-"

有哪些方法可以防止(尽可能早地完全阻止)对没有单个正确虚拟主机的服务器的请求?


为了响应fail2ban可能有帮助的解决方案,我检查了 fail2ban 正在运行:

$ ps aux | grep fail2ban
root      2824  0.0  0.0 368832 53632 ?        Sl    2017  17:44 /usr/bin/python2 -s /usr/bin/fail2ban-server -s /var/run/fail2ban/fail2ban.sock -p /var/run/fail2ban/fail2ban.pid -x -b

我会考虑为它写一条规则——我不能阻止合法的流量——假设没有虚拟主机没有有效的流量会请求主机是否安全(当然,网络应用程序的编写方式需要这个说实话)。


更新

fail2ban 将不起作用,因为它们只使用每个 IP 地址访问服务器一次 - 它们不会重复使用它们。让我声明,我已经有效地识别了网络应用程序第 2 行的流量。现在,我正在向他们发送一个带有随机数的状态 200,非常小,非常快。但我需要一种“隐藏”服务器的方法,以某种方式简单地不以不会给服务器带来任何实际负载的方式进行响应。

security iptables
  • 3 3 个回答
  • 770 Views

3 个回答

  • Voted
  1. Best Answer
    WEBjuju
    2018-01-19T17:01:19+08:002018-01-19T17:01:19+08:00

    好的,fail2ban 不起作用,因为有问题的请求每次都使用不同的 IP 地址。200、403、404响应都需要apache请求占用​​服务器资源。

    意识到我只想“挂断电话”并让 apache 停止与请求者交谈,我发现安装mod_security允许将 apache 配置为丢弃与服务器 ip 的虚拟主机匹配的所有请求。在 centos 7 上安装 mod_security 轻而易举:

    须藤百胜安装 mod_security

    然后我将这些行放在虚拟主机指令中,其中 ServerName 是主机 IP 地址:

    <VirtualHost *:80>
        ServerName 1xx.1xx.1xx.1xx
    
        SecRuleEngine On
        SecRule REMOTE_ADDR "^\d" "log,drop,phase:1,id:111,msg:'dropped bad host request'"
        ...
    

    在 Firefox 中,通过 ip 访问服务器现在看起来像这样:

    在此处输入图像描述

    ...祝你好运再试一次!

    在服务器日志中,正在记录丢弃:

    # tail -f 1xx.1xx.1xx.1xx-error.log
    [Thu Jan 18 18:51:00.357113 2018] [:error] [pid 41716] [client 69.137.81.33] ModSecurity: Access denied with connection close (phase 1). Pattern match "^\\\\d" at REMOTE_ADDR. [file "/etc/httpd/vhost.d/ipaddyhost.conf"] [line "8"] [id "111"] [msg "dropped bad host access request"] [hostname "1xx.1xx.1xx.1xx"] [uri "/"] [unique_id "WmFA@q@5uqLACI9MKaxAAABbfwX"]
    

    换句话说,要么你知道我的主机名,要么你可以与禁令交谈

    • 2
  2. cas
    2018-01-17T07:49:40+08:002018-01-17T07:49:40+08:00

    fail2ban有几个规则用于阻止扫描或尝试对服务器做坏事的 IP 地址,apache您可以编写自己的规则(例如,匹配 apache 错误日志中的“坏主机请求”)或添加到现有规则中。

    fail2ban可用于大多数 Linux 发行版的预打包。

    • 1
  3. ivanivan
    2018-01-17T07:53:17+08:002018-01-17T07:53:17+08:00

    我会设置一个新的、全新的、包罗万象的虚拟主机(即,任何与您的真实/配置名称不匹配的名称的默认值)。将自定义 404 错误设置为重定向到 google 或类似的,并且正如其他人在此处提到的那样,设置fail2ban为监视该包罗万象的主机的日志。

    • 0

相关问题

  • Iptables 规则允许 appVM 通过配置为仅通过 QubesOS 中的 VPN 的 proxyVM

  • 加强 rhel6/7 服务器的安全性 [关闭]

  • 如果某人被授予 root 访问权限,是否可以劫持服务器作为人质?[关闭]

  • 如何在 Linux 中让所有流量通过一个接口

  • 是否有实现 RFC 5848“签名系统日志消息”的系统日志守护程序?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve