千家信息网

如何使用iptable和Firewalld工具来管理Linux防火墙连接规则

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下如何使用iptable和Firewalld工具来管理Linux防火墙连接规则,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们
千家信息网最后更新 2026年11月03日如何使用iptable和Firewalld工具来管理Linux防火墙连接规则

小编给大家分享一下如何使用iptable和Firewalld工具来管理Linux防火墙连接规则,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

防火墙

防火墙是一套规则。当数据包进入或离开受保护的网络空间时,将根据防火墙规则测试数据包的内容(特别是有关其来源、目标和计划使用的协议的信息),以确定是否应该允许数据包通过。下面是一个简单的例子:

防火墙可以根据协议或基于目标的规则过滤请求.

一方面,iptables是管理Linux机器上防火墙规则的工具。

另一方面,firewalld也是管理Linux机器上防火墙规则的工具。

你对此有意见吗?如果我告诉你外面还有另一个工具,叫做nftable?

好吧,我承认整件事闻起来有点怪怪的,所以让我解释一下。这一切都是从Netfilter开始的,Netfilter控制Linux内核模块级别对网络堆栈的访问。几十年来,管理Netfilter钩子的主要命令行工具是iptables规则集。

因为调用这些规则所需的语法可能有点神秘,各种用户友好的实现如下UFW并引入了Firewalld作为高级Netfilter解释器.然而,UFW和Firewalld主要是为了解决独立计算机所面临的各种问题而设计的。构建全尺寸的网络解决方案通常需要iptables的额外功能,或者自2014年以来,它的替代品nftable(通过nft命令行工具)。
iptables没有去任何地方,而且仍然被广泛使用。事实上,在未来的许多年里,您应该会在管理员的工作中遇到受iptables保护的网络。但是nftable通过添加到经典的Netfilter工具集,带来了一些重要的新功能。

从现在开始,我将通过示例演示Firewalld和iptables如何解决简单的连接问题。

使用Firewalld配置HTTP访问

正如您从其名称中可能猜到的那样,Firewalld是systemd一家人。Firewalld可以安装在Debian/Ubuntu机器上,但在RedHat和CentOS上是默认的。如果在计算机上运行了像Apache这样的Web服务器,则可以通过浏览服务器的Web根目录来确认防火墙是否正常工作。如果这个网站无法到达,那么Firewalld就在做它的工作。

您将使用firewall-cmd工具来管理命令行中的Firewalld设置。添加-state参数返回当前防火墙状态:

# firewall-cmd --staterunning

默认情况下,Firewalld将处于活动状态,并将拒绝所有传入通信量,但有几个例外情况,如SSH。这意味着您的网站将不会有太多的访问者,这肯定会为您节省大量的数据传输成本。但是,由于这可能不是您对Web服务器的想法,所以您需要打开HTTP和HTTPS端口,按照约定,这两个端口分别被指定为80和443。Firewalld提供了两种方法来做到这一点。一个是通过-add-port参数,直接引用端口号以及它将使用的网络协议(在本例中为TCP)。这,这个,那,那个-permanent参数告诉Firewalld在每次服务器启动时加载此规则:

# firewall-cmd --permanent --add-port=80/tcp# firewall-cmd --permanent --add-port=443/tcp

-reload参数将这些规则应用于本届会议:

# firewall-cmd --reload

对防火墙上的当前设置很好奇吗?跑-list-services:

# firewall-cmd --list-servicesdhcpv6-client http https ssh

假设您添加了前面描述的浏览器访问,HTTP、HTTPS和SSH端口现在都应该是打开的dhcpv6-client,它允许Linux从本地DHCP服务器请求IPv 6 IP地址。

使用iptables配置锁定的客户信息亭

我敢肯定你见过售货亭-它们是平板电脑、触摸屏和类似ATM的个人电脑-在一个包厢里,机场、图书馆和商务室随处可见,邀请顾客和过路人浏览内容。大多数信息亭的特点是,你通常不希望用户在家里把自己当成自己的设备。它们通常不是用来浏览、观看youtube视频或对五角大楼发起拒绝服务攻击的。所以,为了确保它们不被滥用,你需要把它们锁起来。

一种方法是应用某种Kiosk模式,无论是通过聪明地使用Linux显示管理器还是在浏览器级别。但是,为了确保所有的漏洞都已堵塞,您可能还需要通过防火墙添加一些硬网络控件。在下一节中,我将描述如何使用iptable来实现它。

关于使用iptables,有两件重要的事情要记住:您给出的规则的顺序是至关重要的,仅凭它本身,Iptable规则将无法在重新启动后存活下来。我会在这里一次讲一遍。

亭工程
为了说明这一切,让我们想象一下,我们在一家名为BigMart的大型连锁商店工作。他们已经存在了几十年;事实上,我们想象中的祖父母很可能是在那里购物长大的。但如今,BigMart公司总部的人可能只是在数着亚马逊(Amazon)把他们永远赶下去之前的几个小时。

尽管如此,BigMart的IT部门正在尽力而为,他们刚刚给您发送了一些WiFi准备的信息亭设备,您可以在整个商店的战略位置安装这些设备。他们的想法是,他们将显示一个登录到BigMart.com产品页面的网页浏览器,允许他们查找商品特征、走道位置和库存级别。这些信息亭还需要访问bigmart-data.com,那里存储了许多图像和视频媒体。

除此之外,您还希望允许更新,并在必要时允许包下载。最后,您希望只允许从本地工作站访问入站SSH,并阻止其他所有人。下图说明了这一切将如何运作:

亭的交通流量由iptable控制。

剧本

下面是如何将所有这些都放入一个Bash脚本中:

#!/bin/bashiptables -A OUTPUT -p tcp -d bigmart.com -j ACCEPTiptables -A OUTPUT -p tcp -d bigmart-data.com -j ACCEPTiptables -A OUTPUT -p tcp -d ubuntu.com -j ACCEPTiptables -A OUTPUT -p tcp -d ca.archive.ubuntu.com -j ACCEPTiptables -A OUTPUT -p tcp --dport 80 -j DROPiptables -A OUTPUT -p tcp --dport 443 -j DROPiptables -A INPUT -p tcp -s 10.0.3.1 --dport 22 -j ACCEPTiptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP

我们的规则的基本解剖是从-A告诉iptables我们要添加以下规则。OUTPUT这意味着这个规则应该成为输出链的一部分。-p指示此规则仅适用于使用tcp协议的数据包,其中,-d告诉我们,目的地是bigmart.com。这,这个,那,那个-j标志指向ACCEPT作为当数据包与规则匹配时要采取的操作。在第一条规则中,该操作是允许或接受请求。但在更低的范围内,您可以看到将被删除或拒绝的请求。

记住秩序很重要。这是因为iptables将运行一个请求,超过它的每个规则,但只有在它得到匹配为止。所以一个向外发送的浏览器请求,比如说,youtube.com将通过前四条规则,但是当它到达-dport 80或-dport 443规则-取决于它是HTTP请求还是HTTPS请求-它将被删除。Iptable不会再费心检查了,因为那是匹配的。

另一方面,如果系统请求ubuntu.com进行软件升级,那么当它达到适当的规则时,它就会通过。显然,我们在这里所做的是只允许发送HTTP或HTTPS请求到我们的BigMart或Ubuntu目的地,而不是其他目的地。

最后两个规则将处理传入的SSH请求。由于它们不使用端口80或443,而是使用22,所以它们不会被前面的两个DROP规则所拒绝。在这种情况下,从我的工作站登录请求将被接受,但其他任何地方的请求将被删除。这一点很重要:确保用于端口22规则的IP地址与用于登录的机器的地址相匹配-如果不这样做,您将立即被锁在门外。当然,这没什么大不了的,因为按照当前的配置方式,您可以简单地重新启动服务器,而iptables规则就会被删除。如果您使用LXC容器作为您的服务器并从您的LXC主机登录,那么使用您的主机用来连接到容器的IP地址,而不是它的公共地址。

如果我的机器的IP曾经改变,您需要记住更新这个规则;否则,您将被锁在门外。

在家里玩(希望是在一个丢弃的VM上)?太棒了创建自己的脚本。现在我可以保存脚本,使用chmod使其可执行,并将其运行为sudo。别担心bigmart-data.com not found错误-当然找不到;它不存在。

chmod +X scriptname.shsudo ./scriptname.sh

您可以在命令行中使用cURL。请求ubuntu.com有效,但是manning.com失败了。

curl ubuntu.comcurl manning.com

将iptables配置为在系统启动时加载

现在,我如何使这些规则自动加载每次售货机启动?第一步是使用iptables-save工具。这将在根目录中创建一个包含规则列表的文件。这个管道,后面跟着tee命令,是应用我的sudo权限到字符串的第二部分:将文件实际保存到其他受限制的根目录。

然后,我可以告诉系统运行一个名为iptables-restore每次它启动。像我们在前面的模块中看到的那样的常规cron作业不会有帮助,因为它们是在设定的时间运行的,但是我们不知道我们的计算机何时会决定崩溃和重新启动。

有很多方法来处理这个问题。这里有一个:

在我的Linux机器上,我将安装一个名为anacron这将在/etc/目录中提供一个名为anacrontab的文件。我将编辑该文件并添加以下内容iptables-restore命令,告诉它每天(必要时)在启动后一分钟将该.Rule文件的当前值加载到iptables中。我会给作业一个标识符(iptables-restore),然后添加命令本身。既然你在家里和我一起玩,你应该重新启动你的系统来测试这一切。

sudo iptables-save | sudo tee /root/my.active.firewall.rulessudo apt install anacronsudo nano /etc/anacrontab1 1 iptables-restore iptables-restore < /root/my.active.firewall.rules

我希望这些实际的例子已经说明了如何使用iptables和Firewalld来管理基于Linux的防火墙上的连接问题。

以上是"如何使用iptable和Firewalld工具来管理Linux防火墙连接规则"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

规则 防火 防火墙 工具 管理 服务 命令 服务器 浏览 数据 机器 网络 工作 重要 信息 内容 地址 文件 端口 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技金融 猪兼强互联网科技 互联网科技公司怎么样 奇酷互联网科技公司 华中科技有哪些互联网大佬 博兴的互联网电子科技公司 金融科技与互联网金融相同和不同 中化能源互联网科技招聘 广州市恰铎互联网科技有限公司 燊美集互联网科技有限公司 深圳艾果互联网通讯科技 滨湖区互联网智能科技产品有哪些 宇信科技在杭州互联网排第几 半导体是互联网高科技吗 互联网风格科技公司名称 郑州欣桑互联网科技有限公司 互联网科技品牌 青岛互联网科技园 恒生科技互联网指数十大成分股 互联网科技快速发展优美句子 互联网金融 科技 远信互联网科技 互联网金融科技创新 互联网科技有限公司 翻译 互联网科技产品 深圳前海聚择互联网科技有限公司 天速互联网络科技有限公司 互联网科技圈年度人物 上海万顺科技互联网有限公司招聘 米泉互联网科技专业怎么样
0