firewalld概念及配置项

概念

  Firewall被设计为两层:核心层和D-BUS层。核心层负责处理firewall的配置和iptables, ip6tables, ebtables, ipset,module loader 等底层功能。

  Firewalld D-Bus接口是更改和创建防火墙配置的主要方法。该接口被所有firewalld提供的在线工具所使用,例如firewall-cmd、firewall-config和firewall-applet。firewall-offline-cmd 并不与Firewalld通信,而是通过带有IO处理程序的Firewalld核心直接修改和创建firewalld配置文件。firewall-offline-cmd可以在Firewalld运行时使用,但不推荐使用它,因为它在大约5秒后才会更改防火墙中可见的永久配置。

  Firewalld不依赖于NetworkManager组件,但是推荐使用。如果不使用NetworkManager,会有一些限制,例如:Firewalld不会收到关于网络设备重命名的通知。如果在network已经启动之后才启动firewalld,那么连接和手动创建的接口不会绑定到zone。使用firewall-cmd [–permanent] –zone=zone –add-interface=interface命令可以将接口添加到zone,但是要确保是否有/etc/sysconfig/network-scripts/ifcfg-*** 的网卡文件,ZONE和zone在这里不区分大小写,默认zone为空。

  Firewalld支持znoe、service、ipset和icmptype

配置

关于目录

  Firewall 支持两个配置目录:默认和后备配置,系统特定配置

默认和后备配置

  /usr/lib/firewalld目录下包含icmptypes, services ,zones等默认和后备配置,Firewall所提供的晚间不应被修改,做出的更改会随着Firewall的更新而消失,Additional icmptypes, services and zones can be provided with packages or by creating files.

系统特定配置

  /etc/firewalld中存储的系统或用户配置要么由系统管理员创建,要么使用firewalld的配置接口进行定制,要么手工创建。这些文件将覆盖默认文件。要手动更改预定义的 icmptypes, zones,services的设置,应将文件从默认配置目录复制到系统配置目录中,并相应地进行修改。
  如果没有/etc/firewalld目录,Firewalld将使用firewall .conf中的默认配置和默认设置。

运行性配置和永久配置

  配置被分为运行时配置和永久配置

运行时配置

  运行时配置是实际有效的配置,应用于内核中的防火墙,Firewalld服务启动时,永久配置变为运行时配置,运行时配置中的更改不会自动保存到永久配置。运行时配置将随着Firewalld服务停止而丢失。
  Firewalld重载时将用永久配置替换运行时配置。重新加载后,将恢复已更改的zone绑定。

永久配置

  永久配置存储在配置文件中,将在每次机器重启或服务重新加载或重新启动时加载并成为新的运行时配置
运行时环境同样可用于创建符合需要的防火墙设置,当完成工作时可以和运行时状态一起迁移(When it is complete and working it can be migrated with the runtime to permanent migration).
  可以使用firewall-config和firewall-cmd –runtime-to-permanent两条命令。
如果防火墙设置不工作,一个简单的firewalld reload/restart 将重新加载永久配置。

firewalld.conf

  /etc/firewalld中的firewall .conf文件提供了firewalld的基本配置。如果不存在该文件或/etc/firewalld缺失,则将使用firewalld内部缺省值。

  下面列出的为设置默认参数:

Default Zone

  如果区域字符串为空,则使用默认区域。没有指定绑定到其他区域的所有内容都将由默认区域处理。

1
2
3
4
# default zone
# The default zone used if an empty zone string is used.
# Default: public
DefaultZone=public
Minimal Mark

  这个最小值以下的标记可以自由使用,例如在direct接口中。如果需要更多的自由数则增加最小值。

1
2
3
4
5
# Minimal mark
# Marks up to this minimum are free for use for example in the direct
# interface. If more free marks are needed, increase the minimum
# Default: 100
MinimalMark=100
Clean Up On Exit

  如果设置为no或false,防火墙配置将不会在firewalld退出或停止时清除

1
2
3
4
5
# Clean up on exit
# If set to no or false the firewall configuration will not get cleaned up
# on exit or stop of firewalld
# Default: yes
CleanupOnExit=yes
Lockdown

  如果设置为”启用”,使用D-Bus接口的防火墙的更改将仅限于锁定白名单中列出的应用程序。锁定白名单文件是lockdown-white.xml。

1
2
3
4
5
6
# Lockdown
# If set to enabled, firewall changes with the D-Bus interface will be limited
# to applications that are listed in the lockdown whitelist.
# The lockdown whitelist file is lockdown-whitelist.xml
# Default: no
Lockdown=no
IPv6_rpfilter

  对IPv6数据包执行反向路径筛选测试。如果对包的应答通过与包到达时相同的接口发送,那么将被接受,否则将被丢弃(防止DDOS和IP Spoofing)。IPv4的rp_filter是使用sysctl控制的。

1
2
3
4
5
6
7
# IPv6_rpfilter
# Performs a reverse path filter test on a packet for IPv6. If a reply to the
# packet would be sent via the same interface that the packet arrived on, the
# packet will match and be accepted, otherwise dropped.
# The rp_filter for IPv4 is controlled using sysctl.
# Default: yes
IPv6_rpfilter=yes
Individual Calls

  Do not use combined -restore calls, but individual calls. This increases the time that is needed to apply changes and to start the daemon, but is good for debugging.

1
2
3
4
5
6
# IndividualCalls
# Do not use combined -restore calls, but individual calls. This increases the
# time that is needed to apply changes and to start the daemon, but is good for
# debugging.
# Default: no
IndividualCalls=no
Log Denied

  在缺省规则的输入、转发和输出链中添加日志记录规则,并在区域中添加最终的拒绝和删除规则。可能的值是: all, unicast, broadcast, multicast,off

1
2
3
4
5
6
# LogDenied
# Add logging rules right before reject and drop rules in the INPUT, FORWARD
# and OUTPUT chains for the default rules and also final reject and drop rules
# in zones. Possible values are: all, unicast, broadcast, multicast and off.
# Default: off
LogDenied=off
AutomaticHelpers

  为了安全使用iptables和连接跟踪助手,建议关闭AutomaticHelpers。但是这可能会对使用netfilter helper作为/proc/sys/net/netfilter/nf_conntrack_helper中的sysctl设置的其他服务产生副作用。对于系统设置,将使用内核或sysctl中设置的默认值。可能的值是:yes、no、system。

1
2
3
4
5
6
7
8
9
# AutomaticHelpers
# For the secure use of iptables and connection tracking helpers it is
# recommended to turn AutomaticHelpers off. But this might have side effects on
# other services using the netfilter helpers as the sysctl setting in
# /proc/sys/net/netfilter/nf_conntrack_helper will be changed.
# With the system setting, the default value set in the kernel or with sysctl
# will be used. Possible values are: yes, no and system.
# Default: system
AutomaticHelpers=system
------ end ------
0%