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 / 问题 / 533117
Accepted
csi
csi
Asked: 2013-08-23 16:30:31 +0800 CST2013-08-23 16:30:31 +0800 CST 2013-08-23 16:30:31 +0800 CST

这两个 iptables 规则有什么区别?

  • 772

尝试允许端口 22 上的传入 ssh 流量。默认行为是丢弃所有传入流量。

我遇到了 2 篇关于如何允许流量的文章。但是,它们是不同的。

## open port ssh tcp port 22 ##
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT

VS

# Allow all incoming SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

似乎第一个允许所有流量,然后指定一个特定的网络。好像这些是互斥的?

这两个有什么区别,我应该使用哪一个?

ssh
  • 3 3 个回答
  • 1227 Views

3 个回答

  • Voted
  1. Best Answer
    Michael Hampton
    2013-08-23T17:32:27+08:002013-08-23T17:32:27+08:00

    这两套规则都有问题,我不会按原样使用它们。


    在第一组中,第一条规则允许从任何地方到目标端口 22 的新传入流量。这不是问题。

    第一个问题是第二个规则允许新的传入流量从特定子网到达目标端口 22。这是完全多余的,因为第一条规则允许来自任何地方的流量。

    我的猜测是您阅读了一些使用这些规则作为(互斥)示例的教程,建议您选择其中一个,但不能同时选择两者。

    第二个问题是在此规则之前需要另一个规则才能使防火墙完全有状态,而这里缺少该规则。如果没有此规则,则只允许 SYN 数据包,并且连接永远不会完成。

    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    

    第二组规则也有类似的问题。我不知道最初是谁编写了这个规则集,但它已在互联网上被广泛复制。它似乎是由不熟悉一般状态防火墙或特别是 iptables 的人编写的。

    在此规则集中,输入规则允许从任何地方到目标端口 22 的新的和已建立的传入流量。然后,输出规则允许从源端口 22 到任何地方的已建立流量。这本质上是第一条规则的镜像,如果您对传出流量的默认策略是丢弃或拒绝它,则需要类似的东西。

    问题是这些出站规则很快就会变得多余,这会导致性能问题以及以后必须阅读规则的任何人的理解问题。如果您要丢弃传出流量,则无论您允许多少传入端口,任何端口上已建立的传出流量(匹配允许的传入流量)都只需要一个规则。

    -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    

    对于默认输入策略是拒绝流量而默认输出策略是允许流量的主机防火墙,您的大多数规则都将在 INPUT 表中。拥有状态规则和规则来为您需要的任何传入流量打开端口就足够了。

    例如,要允许 ssh 和 http 连接:

    -P INPUT DROP
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    

    如果您还默认拒绝输出流量,那么您还需要允许这些允许的入站连接的返回流量。

    -P OUTPUT DROP
    -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    

    这是一个与 iptables 一样简单和有效的防火墙。

    • 16
  2. AngryWombat
    2013-08-23T17:12:00+08:002013-08-23T17:12:00+08:00

    如果 connection = NEW CONNECTION,则 First Set 的第 1 行将允许 INBOUND 端口 22 流量。第一组的第 2 行似乎没有必要,因为仅允许一组网络范围的端口 22 流量也必须是新连接。但是,第 2 行上的先前规则已经允许流量通过。
    这似乎是错误的或不完整的

    第二组第 1 行,如果端口 = 22 并且是新的或已建立的连接,则允许在 the0 上进行 INBOUND 流量 第 2 行,如果设备 = eth0 和端口 = 22 并建立连接,则允许 OUTBOUND 流量

    这将允许 SSH 连接到此主机,也将允许传出 SSH。

    2 nd set 是你更好的选择

    • 2
  3. Aaron Tate
    2013-08-23T17:14:27+08:002013-08-23T17:14:27+08:00

    最上面的似乎对它试图做什么有点困惑,如果 iptables 没有看到双向流量,它似乎只允许 ssh 数据包进入,非常奇怪。

    最下面的行要明智得多,但第二行是多余的,除非您的 OUTPUT 链上有 ACCEPT 以外的策略。(iptables -L 并查找“链输出(策略 XXXXXX)”)。

    您可能只想要底部集合的第一行。

    • 2

相关问题

  • 如何最好地设置 ssh 隧道以访问远程网络 (Linux)

  • SSH 和重定向

  • 通过 SSH 会话使用 NET USER 命令拒绝访问

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

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