服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 使用iptable和Firewalld工具来管理Linux防火墙连接规则

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

2022-07-24 12:52David Clinton Linux

今天小编就为大家分享一篇关于使用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参数返回当前防火墙状态:

?
1
2
# firewall-cmd --state
running<br>

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

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

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

?
1
# firewall-cmd --reload

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

?
1
2
# firewall-cmd --list-services
dhcpv6-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和Firewalld工具来管理Linux防火墙连接规则

亭的交通流量由iptable控制。

剧本

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

?
1
2
3
4
5
6
7
8
9
#!/bin/bash
iptables -a output -p tcp -d bigmart.com -j accept
iptables -a output -p tcp -d bigmart-data.com -j accept
iptables -a output -p tcp -d ubuntu.com -j accept
iptables -a output -p tcp -d ca.archive.ubuntu.com -j accept
iptables -a output -p tcp --dport 80 -j drop
iptables -a output -p tcp --dport 443 -j drop
iptables -a input -p tcp -s 10.0.3.1 --dport 22 -j accept
iptables -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错误-当然找不到;它不存在。

?
1
2
chmod +x scriptname.sh
sudo ./scriptname.sh

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

?
1
2
curl ubuntu.com
curl manning.com

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

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

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

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

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

?
1
2
3
4
sudo iptables-save | sudo tee /root/my.active.firewall.rules
sudo apt install anacron
sudo nano /etc/anacrontab
1 1 iptables-restore iptables-restore < /root/my.active.firewall.rules

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接

原文链接:https://opensource.com/article/18/9/linux-iptables-firewalld?utm_campaign=intrel

延伸 · 阅读

精彩推荐
  • Linuxlinux sed命令详解

    linux sed命令详解

    Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等 ...

    linux命令大全3822019-11-21
  • Linuxlinux系统中 屏蔽storm ui的kill功能的两种方法

    linux系统中 屏蔽storm ui的kill功能的两种方法

    storm的topology被人kill掉了却找不到是谁做的,该怎么办呢?storm的ui有kill topology的功能,但是没有权限验证,这样就导致知道ui地址的任何人都可以kill掉to...

    linux教程网5912019-10-31
  • Linux设置Linux系统文件权限

    设置Linux系统文件权限

    Linux中,每一个文件都具有特定的属性。主要包括文件类型和文件权限两个方面。可以分为5种不同的类型:普通文件、目录文件、链接文件、设备文件和管...

    Linux教程网5072019-10-13
  • Linux在 Linux 中使用 OBS 和 Wayland 进行屏幕录制

    在 Linux 中使用 OBS 和 Wayland 进行屏幕录制

    有大量可用于 Linux 的屏幕录像机。但是当涉及到支持 Wayland 时,几乎所有的都不能用。这是个问题,因为许多新发布的版本都再次默认切换到 Wayland 显示管...

    Linux中国12732021-09-22
  • Linuxlinux搭建ldap服务器详细步骤

    linux搭建ldap服务器详细步骤

    这篇文章主要介绍了linux搭建ldap服务器详细步骤,需要的朋友可以参考下 ...

    linux教程网6542019-11-11
  • Linuxlinux中mac地址绑定方法

    linux中mac地址绑定方法

    linux下绑定MAC,就可以免除arp欺骗烦恼了 ...

    Linux教程网5142020-07-05
  • Linux详解Linux系统内存寻址的分页机制

    详解Linux系统内存寻址的分页机制

    这篇文章主要介绍了Linux系统内存寻址的分页机制,CPU只按照分页实现来解读线性地址,需要的朋友可以参考下...

    51CTO5912019-07-15
  • LinuxLinux Mint Cinnamon中安装MATE桌面详细步骤

    Linux Mint Cinnamon中安装MATE桌面详细步骤

    通常Linux发行版都有默认的桌面成为你的首选,但如果你安装了Cinnamon版本,想切换到mate版本又不想重装系统的话,来看看下文的介绍吧...

    Hahahahahacn5402019-06-17