如何使用Firewalld配置Linux主机?
在之前的文章中我介绍了Linux防火墙的基本配置,并在最后简单提及了下firewalld。本文我将详细为大家介绍如何使用firewalld配置Linux防火墙。Firewalld为用户提供了一个GUI界面,在这上面用户可以访问到所有的功能。此外,它还为我们提供了一个任务栏/面板小程序,可以让你快速的访问到最常用的功能,包括“阻止所有网络流量”选项。大多数配置都将在CLI(命令行界面)完成。本文我使用的是xfce终端,但只要是支持bash,ksh或其他Linux shell的任何终端你都可以用。
关于 firewalld
firewalld提供了支持网络/防火墙区域(zone)定义网络链接,以及接口安全等级的动态防火墙管理工具。它支持IPv4,IPv6,以太网桥以及IPSet防火墙设置。拥有运行时配置和永久配置选项。它还为服务或应用程序提供了一个接口,可以直接添加iptables,ip6tables和ebtables规则。高级用户也可以使用此接口。
参考来源:https://firewalld.org/documentation/
这部分的内容可能需要更新,现在firewalld已经支持nftables。如果你安装了iptables并且想要使用nftables,那么你应该结束所有iptables进程(理想情况下,如果这是你首选的防火墙选项,那么最好是安装nftables之前卸载iptables)。
带有防火墙配置的Firewalld,它的图形配置工具和防火墙面板小程序你可以从Ubuntu的存储库中进行安装(所有Ubuntu的衍生版都可以从这里安装 )。此外,它也是Centos中的默认防火墙选项,大多数主要Linux发行版都可以在pkgs.org中以下列格式获取:
.rpm
.deb
.tar.xz
以及适用于以下发行版的firewalld linux软件包:
ALT Linux Sisypus
Arch
Centos7
Fedora
Mageia
Open Suse
Ubuntu
包括其它一些非发行版本的软件包
安装 firewalld
在大多数主要的Linux发行版中,你只需从包管理器(synaptic,pacman等)中选择firewalld(以及GUI和面板小程序,如果你需要的话),下载并让包管理器安装即可。
或者你也可以编译安装firewalld。
你可以在运行时环境中进行更改,不需要重新启动服务或守护程序。
使用firewalld D-Bus接口,服务,应用程序和用户都可以轻松调整防火墙设置。该接口被用于防火墙配置工具firewall-cmd,firewall-config和firewall-applet。
运行时和永久配置的分离使得在运行时进行评估和测试成为可能。运行时配置仅在下次服务重新加载和重新启动或系统重新引导时有效,并将再次加载永久配置。 使用运行时环境,可以使用运行时的设置这些设置只在有限的时间内有效。如果运行时配置已用于评估,并已完成且正常工作,则可以将此配置保存到永久环境中。
特性
完整的D-Bus API
支持IPv4,IPv6,网桥和ipset
支持IPv4和IPv6 NAT
防火墙区域(zones)
预定义的区域,服务和icmptypes列表
区域中的简单服务,端口,协议,源端口,地址伪装(masquerading),端口转发,icmp过滤器,丰富规则,接口和源地址处理
简单的服务定义,包括端口,协议,源端口,模块(netfilter helpers)和目标地址处理
丰富的语言,可在区域中实现更灵活,复杂的规则
区域中的定时防火墙规则
简单记录被拒绝的数据包
直接接口
锁定:可能修改防火墙的应用程序的白名单
自动加载Linux内核模块
与Puppet集成
命令行clints用于联机和脱机配置
使用gtk3的图形配置工具
使用Qt4的Applet
参考来源:https://firewalld.org/
所有firewalld软件和文档(包括网站)都包含在https://unlicense.org/中。
安装firewalld后,你可以启用该服务并重启服务器。注意:启用firewalld将导致服务在重启时启动。最佳做法是在配置此行为之前创建防火墙规则,并对其进行测试以避免潜在问题的发生。
sudo systemctl enable firewalld
sudo reboot
当服务器重启时,防火墙会被启动,你的网络接口将被放入你配置的区域(或回退到配置的默认区域),并且与区域关联的任何规则都将应用于关联的接口。
参考来源:在centos7上使用firewalld
如果你安装了firewall-config,它应该在你的菜单中。在Mint中,它位于Menu→system下。你只需单击“firewall”启动firewall-config,并在出现提示时输入密码即可。
区域中public是默认值,默认情况下信任的服务为dhcpv6,mdns和ssh的最小集合。相同的基本可信服务集适用于内部区域。
工作区仅信任dhcpv6和ssh,外部区域仅信任ssh。
而在所有其他区域中,则没有服务被信任:
dmz(非军事区):仅接受ssh服务
block(限制):拒绝所有的网络服务
drop(丢弃):任何访问的网络数据包都会被丢弃,没有任何回应
trust(信任):可接受所有的网络连接
查看区域选项卡中的其他选项我们发现:
在端口中,没有定义任何的内容
在协议中,也没有定义任何内容
地址伪装未开启
端口转发没有任何内容
而且没有定义ICMP过滤器
没有“丰富的规则”,也没有接口,来源。
因此,看起来firewalld做了一个合理的工作,即设置最小的默认值以允许基本的工作站操作。服务器将需要根据其预期的功能进行不同的配置。
查看服务选项卡,每个预定义服务都分配了其默认端口要求。
telnet在端口23 tcp,ntp在端口123 udp上,snmp在端口161上用于moth tcp和udp等等…
注意:firewalld对权限的超时非常严格,可能你离开几秒钟,它就会要求你再次进行身份验证。
在之前的文章中我介绍了Linux防火墙的基本配置,并在最后简单提及了下firewalld。本文我将详细为大家介绍如何使用firewalld配置Linux防火墙。Firewalld为用户提供了一个GUI界面,在这上面用户可以访问到所有的功能。此外,它还为我们提供了一个任务栏/面板小程序,可以让你快速的访问到最常用的功能,包括“阻止所有网络流量”选项。大多数配置都将在CLI(命令行界面)完成。本文我使用的是xfce终端,但只要是支持bash,ksh或其他Linux shell的任何终端你都可以用。
关于 firewalld
firewalld提供了支持网络/防火墙区域(zone)定义网络链接,以及接口安全等级的动态防火墙管理工具。它支持IPv4,IPv6,以太网桥以及IPSet防火墙设置。拥有运行时配置和永久配置选项。它还为服务或应用程序提供了一个接口,可以直接添加iptables,ip6tables和ebtables规则。高级用户也可以使用此接口。
参考来源:https://firewalld.org/documentation/
这部分的内容可能需要更新,现在firewalld已经支持nftables。如果你安装了iptables并且想要使用nftables,那么你应该结束所有iptables进程(理想情况下,如果这是你首选的防火墙选项,那么最好是安装nftables之前卸载iptables)。
带有防火墙配置的Firewalld,它的图形配置工具和防火墙面板小程序你可以从Ubuntu的存储库中进行安装(所有Ubuntu的衍生版都可以从这里安装 )。此外,它也是Centos中的默认防火墙选项,大多数主要Linux发行版都可以在pkgs.org中以下列格式获取:
.rpm
.deb
.tar.xz
以及适用于以下发行版的firewalld linux软件包:
ALT Linux Sisypus
Arch
Centos7
Fedora
Mageia
Open Suse
Ubuntu
包括其它一些非发行版本的软件包
安装 firewalld
在大多数主要的Linux发行版中,你只需从包管理器(synaptic,pacman等)中选择firewalld(以及GUI和面板小程序,如果你需要的话),下载并让包管理器安装即可。
或者你也可以编译安装firewalld。
你可以在运行时环境中进行更改,不需要重新启动服务或守护程序。
使用firewalld D-Bus接口,服务,应用程序和用户都可以轻松调整防火墙设置。该接口被用于防火墙配置工具firewall-cmd,firewall-config和firewall-applet。
运行时和永久配置的分离使得在运行时进行评估和测试成为可能。运行时配置仅在下次服务重新加载和重新启动或系统重新引导时有效,并将再次加载永久配置。 使用运行时环境,可以使用运行时的设置这些设置只在有限的时间内有效。如果运行时配置已用于评估,并已完成且正常工作,则可以将此配置保存到永久环境中。
特性
完整的D-Bus API
支持IPv4,IPv6,网桥和ipset
支持IPv4和IPv6 NAT
防火墙区域(zones)
预定义的区域,服务和icmptypes列表
区域中的简单服务,端口,协议,源端口,地址伪装(masquerading),端口转发,icmp过滤器,丰富规则,接口和源地址处理
简单的服务定义,包括端口,协议,源端口,模块(netfilter helpers)和目标地址处理
丰富的语言,可在区域中实现更灵活,复杂的规则
区域中的定时防火墙规则
简单记录被拒绝的数据包
直接接口
锁定:可能修改防火墙的应用程序的白名单
自动加载Linux内核模块
与Puppet集成
命令行clints用于联机和脱机配置
使用gtk3的图形配置工具
使用Qt4的Applet
参考来源:https://firewalld.org/
所有firewalld软件和文档(包括网站)都包含在https://unlicense.org/中。
安装firewalld后,你可以启用该服务并重启服务器。注意:启用firewalld将导致服务在重启时启动。最佳做法是在配置此行为之前创建防火墙规则,并对其进行测试以避免潜在问题的发生。
sudo systemctl enable firewalld
sudo reboot
当服务器重启时,防火墙会被启动,你的网络接口将被放入你配置的区域(或回退到配置的默认区域),并且与区域关联的任何规则都将应用于关联的接口。
参考来源:在centos7上使用firewalld
如果你安装了firewall-config,它应该在你的菜单中。在Mint中,它位于Menu→system下。你只需单击“firewall”启动firewall-config,并在出现提示时输入密码即可。
区域中public是默认值,默认情况下信任的服务为dhcpv6,mdns和ssh的最小集合。相同的基本可信服务集适用于内部区域。
工作区仅信任dhcpv6和ssh,外部区域仅信任ssh。
而在所有其他区域中,则没有服务被信任:
dmz(非军事区):仅接受ssh服务
block(限制):拒绝所有的网络服务
drop(丢弃):任何访问的网络数据包都会被丢弃,没有任何回应
trust(信任):可接受所有的网络连接 内容来自无奈安全网
查看区域选项卡中的其他选项我们发现:
在端口中,没有定义任何的内容
在协议中,也没有定义任何内容
地址伪装未开启
端口转发没有任何内容
而且没有定义ICMP过滤器
没有“丰富的规则”,也没有接口,来源。
因此,看起来firewalld做了一个合理的工作,即设置最小的默认值以允许基本的工作站操作。服务器将需要根据其预期的功能进行不同的配置。
查看服务选项卡,每个预定义服务都分配了其默认端口要求。
telnet在端口23 tcp,ntp在端口123 udp上,snmp在端口161上用于moth tcp和udp等等…
注意:firewalld对权限的超时非常严格,可能你离开几秒钟,它就会要求你再次进行身份验证。