参考:
FirewallD/zh-cn:(http://fedoraproject.org/wiki/FirewallD/zh-cn#.E4.BB.80.E4.B9.88.E6.98.AF.E5.8C.BA.E5.9F.9F.EF.BC.9F)
Linux Firewall (firewalld, firewall-cmd, firewall-config):(http://oracle-base.com/articles/linux/linux-firewall-firewalld.php)
fedora中iptables与firewall的关系:http://www.tuicool.com/articles/qYnuMj
fedora的firewall配置:http://www.tuicool.com/articles/b6VZNvA
iptables用于过滤数据包,属于网络层防火墙.firewall能够允许哪些服务可用,那些端口可用.... 属于更高一层的防火墙。firewall的底层是使用iptables进行数据过滤,建立在iptables之上。
Fedora 18 introduced firewalld as a replacement for the previous iptables service. You need to distinguish between the iptables service and the iptables command. Although firewalld is a replacement for the firewall management provided by iptables service, it still uses the iptables command for dynamic communication with the kernel packet filter (netfilter). So it is only the iptables service that is replaced, not the iptables command.
Fedora 18引入了firewalld来替换之前的iptables.service.另外需要注意iptables service与iptables command是不一样的.虽然firewalld替换了iptables.service,但仍然使用iptables command来与内核的netfilter进行动态交互.
FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项。它也支持允许服务或者应用程序直接添加防火墙规则的接口。
网络区域(zone)定义了网络连接的可信等级。这是一个一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接。
由firewalld 提供的区域按照从不信任到信任的顺序排序。
任何流入网络的包都被丢弃,不作出任何响应。只允许流出的网络连接。
任何进入的网络连接都被拒绝,并返回 IPv4 的 icmp-host-prohibited 报文或者 IPv6 的 icmp6-adm-prohibited 报文。只允许由该系统初始化的网络连接。
用以可以公开的部分。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。(You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.)
用在路由器等启用伪装的外部网络。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。
用以允许隔离区(dmz)中的电脑有限地被外界网络访问。只接受被选中的连接。
用在工作网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
用在家庭网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
用在内部网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
允许所有网络连接。
firewall-cmd --state
此举返回 firewalld 的状态,没有任何输出。可以使用以下方式获得状态输出:
firewall-cmd --state && echo "Running" || echo "Not running"
在 Fedora 19 中, 状态输出比此前直观:
# rpm -qf $( which firewall-cmd ) firewalld-0.3.3-2.fc19.noarch # firewall-cmd --state not running
firewall-cmd --reload
如果你使用 --complete-reload ,状态信息将会丢失。这个选项应当仅用于处理防火墙问题时,例如,状态信息和防火墙规则都正常,但是不能建立任何连接的情况。
firewall-cmd --get-zones
这条命令输出用空格分隔的列表。
firewall-cmd --get-services
这条命令输出用空格分隔的列表。
firewall-cmd --get-icmptypes
这条命令输出用空格分隔的列表。
firewall-cmd --list-all-zones
输出格式是:
interfaces: .. services: .. ports: .. forward-ports: .. icmp-blocks: .. ..
firewall-cmd [--zone=] --list-all
firewall-cmd --get-default-zone
firewall-cmd --set-default-zone=
流入默认区域中配置的接口的新访问请求将被置入新的默认区域。当前活动的连接将不受影响。
firewall-cmd --get-active-zones
这条命令将用以下格式输出每个区域所含接口:
: .. : ..
firewall-cmd --get-zone-of-interface=
这条命令将输出接口所属的区域名称。
firewall-cmd [--zone=] --add-interface=
如果接口不属于区域,接口将被增加到区域。如果区域被省略了,将使用默认区域。接口在重新加载后将重新应用。
firewall-cmd [--zone=] --change-interface=
这个选项与 --add-interface 选项相似,但是当接口已经存在于另一个区域的时候,该接口将被添加到新的区域。
firewall-cmd [--zone=] --remove-interface=
firewall-cmd [--zone=] --query-interface=
返回接口是否存在于该区域。没有输出。
firewall-cmd [ --zone=] --list-services
firewall-cmd --panic-on
firewall-cmd --panic-off
firewall-cmd --query-panic
此命令返回应急模式的状态,没有输出。可以使用以下方式获得状态输出:
firewall-cmd --query-panic && echo "On" || echo "Off"
运行时模式下对区域进行的修改不是永久有效的。重新加载或者重启后修改将失效。
firewall-cmd [--zone=] --add-service= [--timeout= ]
此举启用区域中的一种服务。如果未指定区域,将使用默认区域。如果设定了超时时间,服务将只启用特定秒数。如果服务已经活跃,将不会有任何警告信息。
firewall-cmd --zone=home --add-service=ipp-client --timeout=60
firewall-cmd --add-service=http
firewall-cmd [--zone=] --remove-service=
此举禁用区域中的某种服务。如果未指定区域,将使用默认区域。
firewall-cmd --zone=home --remove-service=http
区域种的服务将被禁用。如果服务没有启用,将不会有任何警告信息。
firewall-cmd [--zone=] --query-service=
如果服务启用,将返回1,否则返回0。没有输出信息。
firewall-cmd [--zone=] --add-port= [- ]/ [--timeout= ]
此举将启用端口和协议的组合。端口可以是一个单独的端口
firewall-cmd [--zone=] --remove-port= [- ]/
firewall-cmd [--zone=] --query-port= [- ]/
如果启用,此命令将有返回值。没有输出信息。
firewall-cmd [--zone=] --add-masquerade
此举启用区域的伪装功能。私有网络的地址将被隐藏并映射到一个公有IP。这是地址转换的一种形式,常用于路由。由于内核的限制,伪装功能仅可用于IPv4。
firewall-cmd [--zone=] --remove-masquerade
firewall-cmd [--zone=] --query-masquerade
如果启用,此命令将有返回值。没有输出信息。
firewall-cmd [--zone=] --add-icmp-block=
此举将启用选中的 Internet 控制报文协议 (ICMP) 报文进行阻塞。 ICMP 报文可以是请求信息或者创建的应答报文,以及错误应答。
firewall-cmd [--zone=] --remove-icmp-block=
firewall-cmd [--zone=] --query-icmp-block=
如果启用,此命令将有返回值。没有输出信息。
firewall-cmd --zone=public --add-icmp-block=echo-reply
firewall-cmd [--zone=] --add-forward-port=port= [- ]:proto= { :toport= [- ] | :toaddr= | :toport= [- ]:toaddr= }
端口可以映射到另一台主机的同一端口,也可以是同一主机或另一主机的不同端口。端口号可以是一个单独的端口
firewall-cmd [--zone=] --remove-forward-port=port= [- ]:proto= { :toport= [- ] | :toaddr= | :toport= [- ]:toaddr= }
firewall-cmd [--zone=] --query-forward-port=port= [- ]:proto= { :toport= [- ] | :toaddr= | :toport= [- ]:toaddr= }
如果启用,此命令将有返回值。没有输出信息。
firewall-cmd --zone=home --add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2
永久选项不直接影响运行时的状态。这些选项仅在重载或者重启服务时可用。为了使用运行时和永久设置,需要分别设置两者。 选项 --permanent 需要是永久设置的第一个参数。
firewall-cmd --permanent --get-services
firewall-cmd --permanent --get-icmptypes
firewall-cmd --permanent --get-zones
firewall-cmd --permanent [--zone=] --add-service=
此举将永久启用区域中的服务。如果未指定区域,将使用默认区域。
firewall-cmd --permanent [--zone=] --remove-service=
firewall-cmd --permanent [--zone=] --query-service=
如果服务启用,此命令将有返回值。此命令没有输出信息。
firewall-cmd --permanent --zone=home --add-service=ipp-client
firewall-cmd --permanent [--zone=] --add-port= [- ]/
firewall-cmd --permanent [--zone=] --remove-port= [- ]/
firewall-cmd --permanent [--zone=] --query-port= [- ]/
如果服务启用,此命令将有返回值。此命令没有输出信息。
firewall-cmd --permanent --zone=home --add-port=443/tcp
firewall-cmd --permanent [--zone=] --add-masquerade
此举启用区域的伪装功能。私有网络的地址将被隐藏并映射到一个公有IP。这是地址转换的一种形式,常用于路由。由于内核的限制,伪装功能仅可用于IPv4。
firewall-cmd --permanent [--zone=] --remove-masquerade
firewall-cmd --permanent [--zone=] --query-masquerade
如果服务启用,此命令将有返回值。此命令没有输出信息。
firewall-cmd --permanent [--zone=] --add-icmp-block=
此举将启用选中的 Internet 控制报文协议 (ICMP) 报文进行阻塞。 ICMP 报文可以是请求信息或者创建的应答报文或错误应答报文。
firewall-cmd --permanent [--zone=] --remove-icmp-block=
firewall-cmd --permanent [--zone=] --query-icmp-block=
如果服务启用,此命令将有返回值。此命令没有输出信息。
firewall-cmd --permanent --zone=public --add-icmp-block=echo-reply
firewall-cmd --permanent [--zone=] --add-forward-port=port= [- ]:proto= { :toport= [- ] | :toaddr= | :toport= [- ]:toaddr= }
端口可以映射到另一台主机的同一端口,也可以是同一主机或另一主机的不同端口。端口号可以是一个单独的端口
firewall-cmd --permanent [--zone=] --remove-forward-port=port= [- ]:proto= { :toport= [- ] | :toaddr= | :toport= [- ]:toaddr= }
firewall-cmd --permanent [--zone=] --query-forward-port=port= [- ]:proto= { :toport= [- ] | :toaddr= | :toport= [- ]:toaddr= }
如果服务启用,此命令将有返回值。此命令没有输出信息。
firewall-cmd --permanent --zone=home --add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2