在Debian上安装和配置FirewallD

之前使用CentOS时,防火墙一直用的FirewallD。现在系统换成了Debian,防火墙也变成默认的UFW。在使用Cockpit管理面板时,发现它仅支持FirewallD,因此决定继续使用FirewallD吧。

安装

先友情提示一下,如果使用SSH软件连接服务器的话,在安装完成firewalld后会导致连接断开……因为firewallD安装完就作为防火墙生效了。因此在安装firewall之前,建议先禁用UFW:

ufw disable

接下来安装FirewallD:

apt -y instalapt -y install firewalld

查看是否运行:

firewall-cmd  --state

显示running即为正常。

配置

FirewallD有个“区域”的概念,“区域”是针对给定位置或场景(例如家庭、公共、受信任等)可能具有的各种信任级别的预构建规则集。不同的区域允许不同的网络服务和入站流量类型,而拒绝其他任何流量。 首次启用 FirewallD 后,public将是默认区域(拒绝所有连接)。

查看默认的区域

firewall-cmd --get-default-zone

查看当前使用的区域

firewall-cmd --get-active-zones

返回示例:

public
    interfaces: eth0

其中,eth0是当前使用的网络适配器。我们还可以将其他网络适配器纳入防火墙管理范围,例如加入ens33。

firewall-cmd --zone=public --add-interface=ens33

允许或者拒绝任意端口

允许12345端口:

firewall-cmd --zone=public --add-port=12345/tcp --permanent

同时增加12345,8080端口:

firewall-cmd --zone=public --add-port={12345,8080}/tcp --permanent

删除12345端口:

firewall-cmd --zone=public --remove-port=12345/tcp --permanent

以上是TCP示例,UDP的话对应替换即可。

更新防火墙规则

修改配置后需要重新加装配置才会生效:

firewall-cmd --reload

遇到了命令执行失败失败问题,”‘/usr/sbin/iptables-restore -w -n’failed”如图:

编辑firewalld配置文件:/etc/firewalld/firewalld.conf
IndividualCalls=no 改为IndividualCalls=yes

查看所有允许的端口

firewall-cmd --zone=public --list-ports

本地端口转发

将 80 端口的流量转发到 12345 端口:

firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=12345

要将端口转发到另外一台服务器上

1、在需要的区域中激活 masquerade:

firewall-cmd --zone=public --add-masquerade

2、添加转发规则。例子中是将 80 端口的流量转发到IP 地址为 :123.123.123.123的远程服务器的8080 端口上。

sudo firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=123.123.123.123

要删除规则,用 --remove替换 --add

遇到的问题

1、firewall-cmd –reload失败

留下评论

您的电子邮箱地址不会被公开。