防火墙是一种软件,充当用户系统和外部网络之间的屏障,允许某些数据包通过,同时丢弃其他数据包。防火墙通常在网络层上运行,即在 Ipv4 和 Ipv6 的 IP 数据包上运行。
数据包是否会通过或被阻止,取决于防火墙中针对此类数据包的规则。这些规则可以是内置的或用户定义的。进入网络的每个数据包都必须通过此防护罩,该防护罩将根据其中为此类数据包定义的规则对其进行验证。
每个规则都有一个目标操作,当数据包无法满足该规则时将应用该目标操作。在 Linux 系统上,防火墙即服务由许多软件提供,最常见的是:firewalld 和 iptables。
在 Linux 中使用了许多不同类型的防火墙,但最标准的防火墙是 Iptables 和 Firewalld,这将在本文中讨论。
什么是FirewallD
FirewallD 是 Linux 系统的动态防火墙管理器。该服务用于配置网络连接,从而决定允许哪些外部网络或内部数据包通过网络以及阻止哪些数据包。
它允许两种类型的配置:永久配置和运行时配置。运行时配置将在服务重新启动时丢失,而永久配置将在系统启动过程中保留,以便每次服务激活时都会遵循它们。
与这些配置相对应,firewallD 有两个目录,默认/后备目录(/usr/lib/firewall),丢失的系统会更新,系统配置(/etc/firewall)保持永久,并覆盖默认目录(如果给定)。这是 RHEL/CentOS 7 和 Fedora 18 中的默认服务。
什么是 iptables
Iptables 是另一个决定允许、丢弃或返回 IP 数据包的服务。 Iptables 服务管理 Ipv4 数据包,而 Ip6tables 管理 Ipv6 数据包。该服务管理一个表列表,其中每个表都出于不同的目的而维护,例如:“filter”表用于防火墙规则,“nat”表在新连接时参考,“mangle”表用于数据包更改等。
每个表还具有可以内置或用户定义的链,其中链表示一组适用于数据包的规则,从而决定该数据包的目标操作应该是什么,即必须允许、阻止或返回。该服务是 RHEL/CentOS 6/5 和 Fedora、ArchLinux、Ubuntu 等系统上的默认服务。
在本文中,我们将解释如何在 Linux 中启动、停止或重新启动 Iptables 和 FirewallD 服务。
如何启用/禁用 FirewallD 服务
如果您使用的是 CentOS/RHEL 7 或 Fedora 18+ 版本,则应按照以下说明来管理 FirewallD 服务。
启动FirewallD服务
# systemctl start firewalld
停止 FirewallD 服务
# systemctl stop firewalld
检查FirewallD的状态
# systemctl status firewalld
检查FirewallD的状态
# firewall-cmd --state
作为替代方案,您可以禁用firewalld服务,以便它不会将规则应用于数据包并再次启用所需的规则。
禁用 FirewallD 服务
# systemctl disable firewalld
启用FirewallD服务
# systemctl enable firewalld
屏蔽FirewallD服务
# systemctl mask firewalld
此外,您还可以屏蔽防火墙服务,该服务会创建firewall.service到/dev/null的符号链接,从而禁用该服务。
取消屏蔽 FirewallD 服务
# systemctl unmask firewalld
这与屏蔽服务相反。这将删除在屏蔽期间创建的服务的符号链接,从而重新启用该服务。
如何启用/禁用 IPtables 服务
在 RHEL/CentOS 6/5/4 和 Fedora 12-18 上,iptables 防火墙作为先前版本和更高版本提供,可以通过以下方式安装 iptables 服务:
# yum install iptables-services
然后,可以通过以下命令启动、停止或重新启动该服务:
启动 iptables 服务
# systemctl start iptables
OR
# service iptables start
停止 iptables 服务
# systemctl stop iptables
OR
# service iptables stop
禁用 iptables 服务
# systemctl disable iptables
Or
# service iptables save
# service iptables stop
启用 iptables 服务
# systemctl enable iptables
Or
# service iptables start
检查 iptables 服务的状态
# systemctl status iptables
OR
# service iptables status
然而,在 Ubuntu 和其他一些 Linux 发行版上,ufw 是用于管理 iptables 防火墙服务的命令。 Ufw 为用户提供了一个简单的界面来处理 iptables 防火墙服务。
启用 Ufw Iptables 防火墙
$ sudo ufw enable
禁用 Ufw Iptables 防火墙
$ sudo ufw disable
检查UFW iptables防火墙的状态
# sudo ufw status
但是,如果您想列出 iptables 中包含所有规则的链,以下命令可以帮助您实现相同的目的:
# iptables -L -n -v
总结
这些技术可以帮助您在基于 Linux 的系统中启动、停止、禁用和启用数据包管理服务。不同的Linux发行版可以有不同的默认服务,例如:Ubuntu可以将iptables作为默认和预安装的服务,而CentOS可以将firewalld作为默认配置的服务来管理IP数据包的传入和传出。