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 / 问题 / 116488
In Process
readonly
readonly
Asked: 2010-02-25 15:16:29 +0800 CST2010-02-25 15:16:29 +0800 CST 2010-02-25 15:16:29 +0800 CST

安全地更改 iptables 防火墙规则?

  • 772

人们在更改防火墙规则以确保不会意外将自己锁定时会怎么做?

例如,有没有办法加载防火墙规则,以便它们仅在某个测试期间处于活动状态,然后让防火墙规则恢复到以前的设置?

iptables
  • 9 9 个回答
  • 2396 Views

9 个回答

  • Voted
  1. Kyle Brandt
    2010-02-25T16:44:47+08:002010-02-25T16:44:47+08:00

    另一种选择是在服务器上打开一个屏幕会话,并在屏幕会话中有一个工作,它会休眠几分钟,然后刷新表。进行更改后,您可以终止工作。您也可以让脚本将 INPUT 策略更改为 ACCEPT 或类似的东西。

    可能比 cron 方便一点,但思路一样。我对路由器做类似的事情reload in 10。因此,如果我将自己锁定,路由器将重新启动并将配置恢复到我进行更改之前的状态。

    • 3
  2. Zoredache
    2010-02-25T16:57:38+08:002010-02-25T16:57:38+08:00

    我使用firehol作为 iptables 的前端。Firehol 有一个非常好的功能,可以让您安全地测试一组新规则。

    当您运行命令firehol try时,Firehol 将自己设置为忽略 HUP,备份当前规则集,应用新规则集,然后提示用户是否要提交新规则集。如果您在三十秒内没有响应,则 firehol 会恢复之前的规则集。

    • 1
  3. rjewell
    2010-02-25T15:21:30+08:002010-02-25T15:21:30+08:00

    当然,理想的做法是始终拥有控制台访问权限,即使它是通过另一个界面模拟控制台访问。

    如果您正在使用可以打开和关闭的 iptables 服务(如 /etc/init.d/iptables),您可以设置一个简单的 cronjob 以每 30 分钟将其关闭。更通用的解决方案是每隔一段时间运行以下命令: 如何:Linux 刷新或删除所有 iptables 规则。这可以通过 cronjob 来完成,或者只是运行 screen 并在 bash 中执行睡眠循环以偶尔运行那个小脚本。

    但是,如果您正在尝试使用 iptables 并学习如何使用它,那么没有什么比插入监视器更好的了,以防万一。

    • 0
  4. einstiien
    2010-02-25T15:33:22+08:002010-02-25T15:33:22+08:00

    脱离 rjewell 所说的话。您可以创建一个 cron 作业,每 30 分钟从配置文件刷新和重新加载所有规则。然后,当您进行测试时,您可以直接使用命令更改规则,并且只有在您确定它有效时才将其保存到配置文件中。

    • 0
  5. Rook
    2010-02-25T15:42:31+08:002010-02-25T15:42:31+08:00

    对于我们的远程服务器,我们使用 KVM over IP。这允许我们拥有一个独立于我们的 iptables 规则集的远程键盘/鼠标/显示器。

    • 0
  6. Andy Smith
    2010-02-25T17:32:02+08:002010-02-25T17:32:02+08:00

    我要么设置一个 at 工作几分钟来重新加载之前的一组规则,但我认为更好的方法是确保您允许从您的 IP 访问作为第一条规则之一 - 如果不是第一条规则。这样,您可以在满意时将其取出。

    还值得注意的是,如果您允许相关和已建立的连接(即-m state --state RELATED,ESTABLISHED -j ACCEPT)并且您设法阻止 SSH 访问,则应维护任何现有连接 - 因此请确保在注销现有会话之前再次检查您是否可以 SSH!

    • 0
  7. Frenchie
    2010-02-25T19:10:40+08:002010-02-25T19:10:40+08:00

    作为一项规则,我从不将 INPUT 链的策略更改为 DENY。我改为添加最终规则:

    iptables -A INPUT -i <dev> -j REJECT
    

    如果你的脚本在执行过程中死掉了(比如你在一个坏的链接上远程运行并断开连接)并且你设置了一个拒绝策略,你可能会锁定自己。通过这种方式,您提高了在失败的情况下至少可以访问的可能性。

    您仍然需要确保您的规则授予足够的访问权限,以便最终规则不会引导您,但我认为其他回复已经足够好。

    • 0
  8. cwoebker
    2017-10-31T18:29:30+08:002017-10-31T18:29:30+08:00

    比这里的其他一些答案更准确。我最终做了以下事情:

    我备份了我当前的 iptables 规则:

    sudo iptables-save > original-iptables.save
    

    我使用 tmux 创建了一个新会话:

    tmux
    

    我使用以下方法将 tmux 会话分成两个窗格:

    <C>-b %
    

    在我执行的第一个窗格中:(以 root 用户身份运行sudo su)

    sleep 5m && sudo iptables-restore original-iptables.save
    

    这将在 5 分钟后重置您的 iptables 规则。该命令实际上确保您不会意外地将自己锁定在服务器之外。 您可以使用另一个窗格来尝试任何新规则。(使用 切换窗格<C>-b o)如果新规则有效,您始终可以使用 -c 取消原始命令,以确保新规则保持活动状态并且不会被重置。

    你可以在这里找到一份关于 tmux 的简单实用的备忘单。

    • 0
  9. Diego Velez
    2017-10-31T20:49:00+08:002017-10-31T20:49:00+08:00

    在这种情况下,我喜欢使用CSF,它是一个 iptables 管理器,但更简单,您可以在其中指定入站和出站端口以及 ip 范围。它还有一个测试活动,它启用了规则 5 分钟,之后规则消失了,这样你就可以确保即使你被锁定,5 分钟后你将能够再次进入。

    希望这可以帮助!

    • 0

相关问题

  • OpenVPN 的 Linux IP 转发 - 正确的防火墙设置?

  • iptables 单个规则中的多个源 IP

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

  • 使用 iptables 和 dhcpd 进行端口转发

  • 根据 Apache 日志数据自动修改 iptables 以阻止行为不良的客户端

Sidebar

Stats

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

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

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

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

    • 30 个回答
  • Marko Smith

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

    • 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
    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