Firewalld-如何在RHEL/CentOS 7中动态管理防火墙

时间:2020-03-05 15:26:48  来源:igfitidea点击:

Fedora 17/RHEL/CentOS 7引入了一个名为FirewallD的新防火墙守护程序,这是一种动态管理的防火墙,它支持区域来定义网络连接或者接口的信任级别。
因为FirewallD作为守护程序运行,所以它还允许立即添加规则,而无需重新启动完整的防火墙(iptables),而这可能会导致破坏状态防火墙和已建立的连接。
可以随时进行配置更改,并且可以立即实施,无需保存或者应用更改。
Firewalld守护程序使用iptables工具与内核数据包过滤器进行通信。

区域

FirewallD使用网络区域来定义网络连接的信任级别,一个连接只能是一个区域的一部分,但是一个区域可以用于许多网络连接。

通常情况下,有许多预定义区域可以供用户使用:

丢弃传入网络数据包被丢弃,没有应答,只能进行传出网络连接,阻止传入的网络连接时会显示一条icmp-host-prohibited消息,仅此系统内发起的网络连接是可能的。

公共在不信任其他计算机不会损害计算机的区域中使用,仅接受选定的传入连接。

外部对于在启用了伪装的外部网络(尤其是路由器)上使用,我们不信任其他计算机不会损害计算机,仅接受选定的传入连接。
dmz对于非军事区内的计算机,这些计算机可以公开访问且对内部计算机的访问权限有限网络,仅接受选定的传入连接。

工作/家庭/内部我们最信任网络上的其他计算机不会损害计算机,仅接受选定的传入连接,并接受所有网络连接

配置工具

可以使用firewall-config图形化配置工具,firewall-cmd命令行工具或者D-BUS界面配置FirewallD。

我们可以通过firewall-config命令或者从系统菜单访问图形工具。

其中我们可以看到我们之前指定的区域列表,我们可以选择每个区域并从如下选项卡中进行不同的调整:

服务可从所有主机访问的受信任服务。

端口受信任的端口将在此区域打开。
伪装允许我们设置将本地网络连接到Internet的主机或者路由器。
端口转发添加条目,以允许端口从一个端口转发到另一个或者从一个主机转发到另一个。

ICMP筛选受信任的icmp服务丰富的规则使用丰富的语言来添加复杂的规则接口将接口绑定到区域源将源地址绑定到区域或者将Ares绑定到区域

我们还可以使用firewall-cmd命令行工具来设置防火墙,最重要的命令是:

firewall-cmd --state显示FirewallD是否正在运行

firewall-cmd --reload重新加载防火墙

firewall-cmd --get-zones列出所有定义的区域

firewall-cmd --get-services列出所有受支持的服务

firewall-cmd --get-active-zones列出所有活动区域

firewall-cmd [--zone =] --add-interface =将接口添加到区域中

firewall-cmd [--zone =] --change-interface =将接口更改为区域

firewall-cmd [--zone =] --remove-interface =从区域中删除接口

firewall-cmd --panic-on启用恐慌模式,阻止所有网络连接

firewall-cmd --panic-off禁用紧急模式

firewall-cmd [--zone =] --add-service = [--timeout =]将服务添加到区域

Firewall-cmd [--zone =] --remove-service = [--timeout =]从区域中删除服务

firewall-cmd [--zone =] --add-port = [-]/[--timeout =]将端口添加到区域

firewall-cmd [--zone =] --remove-port = [-]/[--timeout =]从区域中删除端口

Firewall-cmd [--zone =] --add-Masquerade将伪装添加到区域中

Firewall-cmd [--zone =] --remove-masquerade可以从区域中删除化装舞会

firewall-cmd [--zone =] --add-forward-port = port = [-]:proto = {:toport = [-] | :toaddr = | :toport = [-]:toaddr =}将端口转发添加到区域

firewall-cmd [--zone =] --remove-forward-port = port = [-]:proto = {:toport = [-] | :toaddr = | :toport = [-]:toaddr =}从区域中删除端口转发

如何禁用FirewallD

如果出于任何原因我们希望禁用FirewallD或者使用iptables,则可以使用以下命令来禁用它:

# systemctl disable firewalld
# systemctl stop firewalld

如果我们还希望安装iptables来替换它:

# yum install iptables-services
# touch /etc/sysconfig/iptables
# touch /etc/sysconfig/ip6tables
# systemctl start iptables
# systemctl start ip6tables
# systemctl enable iptables
# systemctl enable ip6tables