了解 iptables shell 脚本

了解 iptables shell 脚本

情况:

我最近发现以下 shell 脚本,它与 iptables 配合使用,阻止所有进出 Linux 操作系统的互联网访问,除了在团体称为internet

代码:

这听起来可能很复杂,但其实很简单。首先,创建“internet”组,如下所示:

 sudo groupadd internet 

然后,将其保存到脚本中:

 #!/bin/sh
 # Firewall apps - only allow apps run from "internet" group to run

 # clear previous rules
 sudo iptables -F

 # accept packets for internet group
 sudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT

 # also allow local connections
 sudo iptables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT
 sudo iptables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT

 # reject packets for other users
 sudo iptables -A OUTPUT -p tcp -j REJECT

 # open a shell with internet access
 sudo -g internet -s

来源: https://plus.google.com/+TobyKurien/posts/YZhZJCZmGgm

问题:

以下对所发生事件的解释正确吗?

  • sudo groupadd internet一个叫internet的团体成立了
  • sudo iptables -F清除 iptables 中所有当前规则
  • sudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT 我遇到了这个问题...-A OUTPUT告诉终端附加/添加规则,然后根据文档-p“要检查的规则或数据包的协议”,所以-p tcp似乎放置了一条仅反映TCP协议协议,但是如果我想在 youtube/twitch 上观看流媒体怎么办?是否udp需要包含在内,如果需要,我将如何包含它?

    然后是 -m (用于匹配)。我阅读了文档,但不确定它的作用。现在,我不知道这-m owner --gid-owner internet -j意味着什么。来自评论 # accept packets for internet group我了解代码的作用,但我想了解每个元素在做什么才能得出该结论。

答案1

你的解释是正确的。

如果您希望整个事情也适用于 UDP 数据包,您必须再次添加相同的规则集,但使用-p udp而不是-p tcp.或者只是忽略此选项并将规则应用于所有数据包(尽管 ICMP 数据包可能存在一些问题,因此仅添加两种规则可能更安全)。但是,您首先需要 TCP使用权例如 Youtube,因此即使来自 Youtube 的流式传输使用 UDP,您也无法观看流式传输,因为您永远不会走到这一步。

该选项-m选择要使用的匹配类型。您可以匹配许多不同的标准,甚至还可以man iptables-extensions使用匹配的模块对 iptables () 进行扩展。这里,-m owner选择按数据包的所有权进行匹配,并--gid-owner指定匹配组所有权。因此,这两个选项一起意味着“此规则仅适用于从组中某人发送的数据包internet”。

选项-j(最初是“jump”)指定规则匹配时要执行的操作。你可以跳到不同的链,也可以ACCEPT(停止处理规则并发送这个数据包),也可以REJECT(停止处理规则并忽略这个数据包)。

接下来的两条规则允许将数据包 ( ACCEPT) 发送至特殊目的地 ( -d),无论发送应用程序位于哪个组,最后一条规则将丢弃所有REJECT与前面的规则不匹配的数据包 ( )。因此,最后一条规则执行了实际的阻止操作。

iptables互联网上有很多教程,如果您想了解更多详细信息,请在谷歌上搜索一下,然后选择您喜欢的一个。我过去发现一些有用的随机链接:

相关内容