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
    • 最新
    • 标签
主页 / server / 问题 / 960067
Accepted
Francesco
Francesco
Asked: 2019-03-27 07:22:37 +0800 CST2019-03-27 07:22:37 +0800 CST 2019-03-27 07:22:37 +0800 CST

如何通过网关保留外部 IP 以继续使用 Fail2Ban

  • 772

我有一个带有 2 个 NIC 作为网关的 CentOS 7 机器;一个 NIC 连接到 Internet,而另一个 NIC 连接到我们的 LAN。

第一个 NIC 属于 firewalld 的“外部”区域,它伪装并设置为将端口 22、80 和 443 转发到内部网络中管理 SSH 和 Web 服务器的那些盒子;假设从互联网上,该框在地址“1.2.3.4”处显示为“example.com”,而在 LAN 中其名称为“gateway.lan”,地址为“192.168.1.1”。

一切正常,但有一个重要的警告;因为我们希望能够使用盒子的互联网名称(ssh example.com)通过 SSH 连接,也可以在 LAN 内(SSH 盒子名为“server.lan”,地址为 192.168.1.10),唯一的完成这项工作的方法似乎是在 firewalld 的“内部”区域中设置规则,将所有对“1.2.3.4”端口 22 的访问转发回 SSH 框的端口 22:

internal (active)
target: default
icmp-block-inversion: no
interfaces: XXXXXX
sources:
services: dns
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
      rule family="ipv4" destination address="1.2.3.4" forward-port port="22" protocol="tcp" to-port="22" to-addr="192.168.1.10"

除非为“内部”区域启用伪装,否则仅此规则不起作用;不幸的是,这显然也导致外部 IP 敲击该框,试图暴力破解 root 密码,在“server.lan”的日志中显示为来自“192.168.1.1”(“gateway.lan”地址),这使得不可能在“server.lan”框上使用 Fail2Ban 来阻止每天尝试访问的数千次。

我究竟做错了什么?我认为在“内部”区域启用伪装在概念上是错误的,但我找不到其他方法使 firewalld 规则起作用。我毫不犹豫地保持伪装,但我想知道如何使 Fail2Ban 在网关后面工作......

对任何其他方式使这样的配置像我期望的那样工作有什么建议吗?

centos
  • 1 1 个回答
  • 247 Views

1 个回答

  • Voted
  1. Best Answer
    Francesco
    2019-04-12T06:20:42+08:002019-04-12T06:20:42+08:00

    啊,我们做到了!而且它相对容易(好吧,一旦你知道如何)......

    我们正确地推测“内部”区域的伪装不是全局启用的,而是仅限于来自 LAN 的数据包,这些数据包被路由到公共 IP。

    这意味着不要使用--add-masquerade为整个区域不加选择地启用它,而是使用masquerade INSIDE 特定的丰富规则,形式如下:

    firewall-cmd --zone=internal --permanent --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 destination address=192.168.1.10 masquerade'
    

    有一段时间我们被这样一个事实所愚弄:我们在规则中坚持使用公共IP“1.2.3.4”作为“目标地址”而不是内部IP“192.168.1.10”;我们没有明白,一旦通过“内部”区域,针对“1.2.3.4”的端口 22 的数据包已经被富规则转换为 SSH 框的 LAN 地址。此外,此语法不允许指定端口。

    “内部”区域的最终状态如下:

    internal (active)
    target: default
    icmp-block-inversion: no
    interfaces: XXXXXX
    sources:
    services: dns
    ports:
    protocols:
    masquerade: no
    forward-ports:
    source-ports:
    icmp-blocks:
    rich rules:
          rule family="ipv4" destination address="1.2.3.4" forward-port port="22" protocol="tcp" to-port="22" to-addr="192.168.1.10"
          rule family="ipv4" source address="192.168.1.0/24" destination address="192.168.1.10" masquerade
    

    哪个:

    • 正确地将 SSH 访问从 Internet 重新路由到 SSH 框 - 当然,这还需要在“外部”区域中将端口 22 转发到“内部”区域的同一端口;
    • 让 LAN 机器使用其公共名称或 LAN 名称无差别地 SSH 进入该框;
    • 不会掩盖从互联网到盒子的恶意 SSH 尝试的地址,以便 Fail2Ban 可以执行其工作。

    干杯!

    • 1

相关问题

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 持续监控许多服务器运行状况的简单方法?

  • Hudson 无法在 tomcat5 中启动

  • CentOS 的依赖挑战

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve