如何在 Ubuntu 中安装防火墙脚本?

如何在 Ubuntu 中安装防火墙脚本?

https://help.ubuntu.com/community/Router/Firewall

上面的链接描述了一个防火墙脚本。如何在 Ubuntu 10.0.4 桌面中安装此脚本?

答案1

“高级”防火墙脚本是一个 shell 脚本,应该在内部和外部接口都启动后执行。

首先,将脚本放在某个地方,例如/etc/init.d/local/my_firewall_script,使其可执行,并#!/bin/sh作为脚本文件的第一行添加。

接下来,您需要安排脚本在两个接口启动后运行。您有两个选择:

  • 通过 upstart。这是我的偏好,因为脚本必须在两个接口都启动时运行。创建一个/etc/init/my_firewall.conf包含以下内容的文件:

    description "My firewall script"
    start on (net-device-up IFACE=br0 and net-device-up IFACE=eth0)
    console output
    
    pre-start exec /etc/init.d/local/my_firewall_script
    

    这完全没有经过测试,而且我没有任何经验,所以你可能需要调整这个文件。此外还有一个与 net-device-up 事件相关的错误这可能会影响到你。

  • 通过 ifup 脚本。这里有点麻烦,因为第二个接口启动时必须运行脚本。创建一个/etc/network/if-up.d/my_firewall包含以下内容的文件(未经测试):

    #!/bin/sh
    if [ "$IFACE" = "br0" ] || [ "$IFACE" = "eth0" ]; then
      if [ -n "$(ip addr show br0 | grep '^ *inet ')" ] 2>/dev/null &&
         [ -n "$(ip addr show eth0 | grep '^ *inet ')" ] 2>/dev/null; then
        /etc/init.d/local/my_firewall_script
      fi
    fi
    

    如果只有一个接口,或者可以保证其中一个接口总是在另一个接口之后出现,则此方法将更简单且更受欢迎:脚本将是(假设单个或最后一个接口是eth0):

    #!/bin/sh
    if [ "$IFACE" = "et0" ]; then
      /etc/init.d/local/my_firewall_script
    fi
    

请注意,此处给出的脚本非常特定于特定设置 — 它是一个相对高级脚本的示例。您必须使其适应您的设置,至少是 IP 地址范围,可能还有接口名称。

在您找到可行的方法后,我建议您在 wiki 页面上写下您如何操作的描述。

答案2

这里有一些全面的文档,其中提供了几个您可以选择的选项:

启动时配置

答案3

您可以将脚本保存为例如/etc/iptables.up.rules并添加:

post-up iptables-restore < /etc/iptables.up.rules

/etc/network/interfaces你的接口定义文件下。

相关内容