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 / 问题 / 6956
In Process
amarillion
amarillion
Asked: 2009-05-12 03:05:16 +0800 CST2009-05-12 03:05:16 +0800 CST 2009-05-12 03:05:16 +0800 CST

存储 iptables 规则的规范方法是什么

  • 772

iptables 是标准的 Linux 防火墙,不会在重启之间保存规则。你必须自己解决这个问题。有很多方法可以做到这一点。这样做的规范方法是什么?什么是最佳实践?

我会用我自己的解决方案来回答,但我对其他/更好的解决方案感兴趣。

linux iptables
  • 7 7 个回答
  • 6241 Views

7 个回答

  • Voted
  1. amarillion
    2009-05-12T03:08:07+08:002009-05-12T03:08:07+08:00

    以下是一些示例规则。将它们保存到 /etc/iptables.rules

    # Generated by iptables-save v1.3.6 on Wed Oct 24 17:07:29 2007
    *filter
    :INPUT ACCEPT [89458:132056082]
    :FORWARD DROP [0:0]
    :OUTPUT ACCEPT [263904:15667452]
    -A INPUT -i lo -j ACCEPT 
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 
    -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
    -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 
    -A INPUT -j DROP 
    COMMIT
    # Completed on Wed Oct 24 17:07:29 2007
    

    在 /etc/network/interfaces 末尾添加这一行

    pre-up iptables-restore < /etc/iptables.rules
    
    • 6
  2. Brent
    2009-05-12T06:23:22+08:002009-05-12T06:23:22+08:00

    我们使用了很多iptables 规则,因此为了简化管理,我们执行以下操作:

    • 规则都是从脚本调用的 - 脚本是从 /etc/init.d/firewall 调用的(自定义脚本)
    • 保存服务器名称/网络名称(IP 地址变量)的文件,并包含在每个 iptables 脚本中以保持一致性。
    • 为每个子网(即私有/DMZ/VPN 等)保留单独的脚本,以便更容易找到。属于 2 个脚本的规则(例如限制通信 b/w 私有和 DMZ 的规则)放在更“安全”网络的脚本中
    • 只要有可能,就会使用循环和嵌套循环来使脚本尽可能短。
    • 每个新规则或更改都记录在脚本相应部分之前的注释中。

    我不知道这是否是最好的方法,但它对我们来说效果很好。

    • 4
  3. jtimberman
    2009-06-02T21:31:41+08:002009-06-02T21:31:41+08:00

    虽然这确实取决于环境和平台,但我已经看到了两种好的方法,具体取决于平台:

    • RHEL / CentOS:将所有规则存储在单个 /etc/sysconfig/iptables 文件中,该文件由 iptables 启动脚本读取。

    • Debian/Ubuntu:将所有规则存储在 /etc/iptables.d/ 目录中的单独服务特定文件中。例如,/etc/iptables.d/port_http、/etc/iptables.d/port_dns,其中 port_service 映射到 /etc/services 中的服务名称。

    无论哪种情况,文件都由 Chef 或 Puppet 等配置工具管理,并由启动时运行的 iptables 的“主”启动脚本读取。

    • 3
  4. gimel
    2009-05-12T04:01:19+08:002009-05-12T04:01:19+08:00

    除了iptables-save(和iptables-restore)之外,复杂的防火墙方案最好使用专用程序来处理。例如,我们使用shorewall("iptables made easy") 来配置 iptables。

    也可以使用更简单的工具,例如firestarter和kmyfirewall。

    • 1
  5. TrueDuality
    2009-05-12T05:14:31+08:002009-05-12T05:14:31+08:00

    这取决于您使用的发行版。一些发行版,尤其是那些基于 Red Hat 发行版的发行版会自动保留 iptables 规则,但会保存在自己的特殊目录中。我最熟悉 RHEL,iptables 规则可以在 /etc/sysconfig/iptables 中找到。开始熟悉 iptables 规则语法可能会很棘手,但一旦掌握了窍门就很容易了。

    netfilter 网站上有很多关于 iptables 的文档,包括一些介绍。如果您愿意阅读一下,您可以在这里找到很多很好的信息:http: //www.netfilter.org/documentation/

    • 1
  6. Zoredache
    2009-05-12T08:34:05+08:002009-05-12T08:34:05+08:00

    这个问题非常接近4934的重复,并且与397有关。

    我将firehol与我开发的用于管理配置文件的 Web 界面结合使用。

    我真的很喜欢 firehol,它提供了比直接使用 iptables 更简单的语法。

    • 您可以使用 firehol 调试命令来准确生成 iptables 命令
    • 如果您的配置中有错误并启动防火墙,firehol 会检测到错误并恢复到以前的状态。
    • Firehol 有一个“尝试”命令,您可以使用它来远程启动防火墙,如果您的更改终止了您的连接,firehol 将恢复到以前的状态,如果您没有终止您的连接,那么它会要求您确认更改。
    • Firehol 有大量预定义的服务,因此您不必确切地记住您必须拥有哪些端口才能为某些晦涩的协议打开哪些端口。
    • 1
  7. Christian
    2009-05-16T00:16:45+08:002009-05-16T00:16:45+08:00

    当然,我们使用自定义的初始化脚本。我可以使用 for 循环遍历端口列表,解析其他配置文件,如 vpn 用户等。太棒了!

    而 iptables-restore 无疑是最“规范”的保存方式。

    我要补充的:

    请注意,当前版本的 iptables 将在每次调用时要求内核将完整的链列表返回给它。然后它会做出你要求它做的一个改变。然后它将再次上传列表。

    这很慢(O(n^2)),对我们来说需要 5 秒,这太长了 ;-)

    如果您使用 iptables-restore,这一切都在一个快速操作中完成。

    • 1

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

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

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +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