在Debian上安装和配置Firewalld

安装

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

apt -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

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注