为Proxmox VE PVE启用防火墙

安装docker会破坏防火墙功能。所以!要用防火墙,请卸载docker

一:防火墙简介

pve有3种防火墙:
1、面对数据中心的防火墙。处理流出流入数据中心的流量
2、面对虚拟化服务器的防火墙。处理主机的流量
3、面对vm的防火墙。处理vm流出流出的流量。

初次接触,可能很搞昏,这么多的防火墙,搞锤子,到底是哪个管哪个?

实际上,他们的是独立的。互不干预,但是又有联系。

当我们进入pve-webgui面板。会看到数据中心——节点——vm。这3个模块。

1.1 数据中心防火墙

数据中心,是由节点组成的一个集群。
可以说,数据中心防火墙,是专门处理集群流量的防火墙。

只有数据中心防火墙开启,才能开启集群内的防火墙,否则单独开启vm的防火墙是无效的。

1.2 主机防火墙

主机防火墙,只负责处理虚拟化服务器上的流量,比如一台服务器ip为192.168.1.2。

那么这个防火墙,只会关注192.168.1.2的流量。下面的虚拟机流量是独立开的。

这个防火墙的开关,不会影响vm的防火墙,所以要开启vm的防火墙,不必须开启这个防火墙,不同于数据中心防火墙

 

1.3 vm防火墙

这个不用介绍吧。

二: 防火墙配置文件

pve的防火墙配置文件在下面路径

#数据中心防火墙

/etc/pve/firewall/cluster.fw

#主机防火墙

/etc/pve/nodes/<nodename>/host.fw

#vm和lxc的防火墙

/etc/pve/firewall/<VMID>.fw

2.1 数据中心防火墙的配置文件

OPTIONS]

该小节用于设置整个集群的防火墙配置项。

ebtables: <boolean> (default = 1)

集群范围内启用 ebtables。

enable: <integer> (0 -N)

启用/禁用集群范围的防火墙。

log_ratelimit: [enable=]<1|0> [,burst=<integer>] [,rate=<rate>]

设置日志记录速度阀值。

burst=<integer> (0 – N) (default = 5)

将被记录的初始突发包。

enable=<boolean> (default = 1)

启用或禁用阀值

rate=<rate> (default = 1/second)

突发缓冲区重新填充频度。

policy_in: <ACCEPT | DROP | REJECT>

流入方向的防火墙策略。

policy_out: <ACCEPT | DROP | REJECT>

流出方向的防火墙策略。

[RULES]

该小节用于设置所有节点公共的防火墙策略。

[IPSET <name>]

整个集群范围内有效的 IP 集合定义。

[GROUP <name>]

整个集群范围内有效的组定义。

[ALIASES]

整个集群范围内有效的别名定义

对于web-gui来说,防火墙是能可视化编辑,对应【数据中心】——【防火墙】。
当然还是需要了解这个东西,毕竟可能在某些环境中,关闭了GUI,需要进终端手动编辑。

2.2 主机防火墙配置文件

[OPTIONS]

该小节用于设置当前主机的防火墙配置项。

enable: <boolean>

启用/禁用主机防火墙策略。

log_level_in: <alert | crit | debug | emerg | err | info | nolog | notice | warning>

流入方向的防火墙日志级别。

log_level_out: <alert | crit | debug | emerg | err | info | nolog | notice | warning>

流出方向的防火墙日志级别。

log_nf_conntrack: <boolean> (default = 0)

启用记录连接跟踪信息。

ndp: <boolean>

启用 NDP。

nf_conntrack_allow_invalid: <boolean> (default = 0)

在跟踪连接时允许记录不合法的包。

nf_conntrack_max: <integer> (32768 -N)

最大的跟踪连接数量。

nf_conntrack_tcp_timeout_established: <integer> (7875 -N)

反向连接建立超时时间。

nosmurfs: <boolean>

启用 SMURFS 过滤器。

smurf_log_level: <alert | crit | debug | emerg | err | info | nolog | notice | warning>

SMURFS 过滤器日志级别。

tcp_flags_log_level: <alert | crit | debug | emerg | err | info | nolog | notice | warning>

非法 TCP 标志过滤器日志级别。

tcpflags: <boolean>

启用非法 TCP 标志组合过滤器。

[RULES]

该小节用于设置当前主机的防火墙策略。

2.3 vm/lxc的防火墙配置文件

[OPTIONS]

该小节用于设置当前虚拟机或容器的防火墙配置项。

dhcp: <boolean>

启用 DHCP。

enable: <boolean>

启用/禁用防火墙策略。

ipfilter: <boolean>

启用默认 IP 地址过滤器。相当于为每个网卡接口增加一个空白的 ipfilter-net<id>地

址集合。该 IP 地址集合隐式包含了一些默认控制,例如限制 IPv6 链路本地地址为网

卡 MAC 生成的地址。对于容器,配置的 IP 地址将被隐式添加进去。

log_level_in: <alert | crit | debug | emerg | err | info | nolog | notice | warning>

流入方向的防火墙日志级别。

log_level_out: <alert | crit | debug | emerg | err | info | nolog | notice | warning>

流出方向的防火墙日志级别。

macfilter: <boolean>

启用/禁用 MAC 地址过滤器。

ndp: <boolean>

启用 NDP。

policy_in: <ACCEPT | DROP | REJECT>

流入方向的防火墙策略。

policy_out: <ACCEPT | DROP | REJECT>

流出方向的防火墙策略。

radv: <boolean>

允许发出路由通知。

[RULES]

该小节用于设置当前虚拟机或容器的防火墙策略。

[IPSET <name>]

IP 集合定义。

[ALIASES]

IP 地址别名定义。

看不懂,没关系!都是由GUI的

三:GUI里的防火墙

这部分好难写呀!

3.1 GUI防火墙2步走

GUI防火墙,总的来说,只有2个选项。

3.1.1 自定义防火墙规则

就是点击【防火墙】三个字,出现自定义防火墙界面。

图形用户界面, 文本, 应用程序

描述已自动生成

这里重点介绍一下。点击【添加】,我们会出现下面这个界面

图形用户界面, 应用程序

描述已自动生成

这里可以看到这些选项,因为是GUI特别好理解

【方向】:“in”指进入的流量,“out”出去的流量。
【启用】:勾选之后,才会启用这个防火墙规则。
【操作】:“accept”接受,“drop”丢弃,“reject”拒绝。
【宏】:是官方预定义的参数,比如“https”就是tcp/443,不用再选协议和端口了。
【接口】:是vm的网络接口,具体是网络接口,可以查看vm-【硬件】选项里的“网络设备”,后面接了个net1,这个就是网络接口。
【协议】:自选协议
【源】:源地址,可以是一个ip,也可以是ip集合,也可以是一段网络,用英文逗号分开。
【源端口】:源地址的端口, 端口范围例如800:900,开放800-900端口
【目标】:目标
【目标端口】:目标端口,端口范围例如800:900,开放800-900端口
【备注】:就是备注而已!

注意!如果上述选项,为空,就代表所有。协议为空,就代表所有协议

例1,我要给VM开放一个任何人都可连接的22-ssh端口。那么这里ssh是基于TCP的,所以就需要开通一个TCP/22的端口。在想一下。这个22端口,是所有人都可以连接的,于是源和端口都应该为空,如下图

图形用户界面, 应用程序

描述已自动生成

防火墙启用之后,会有一段生效的时间,大概是几秒钟吧。

例2:我要给一个主机访问vm的所有网络权限。给一个主机,单个网络权限。

图形用户界面, 应用程序

描述已自动生成

在192.168.4.221的主机上,只能ping,无法ssh

文本

描述已自动生成

在192.168.4.2主机上,能ssh。

文本

描述已自动生成

有其他例子,稍后会给大家展现。

3.1.2 官方预设防火墙规则

如下图所述,我简单介绍下。

表格

描述已自动生成

在这些选项中,可以设定vm/主机/防火墙的开关。

输入/输出策略。是默认策略。这里需要强调一下。

如果,默认输入是accept,那么自定义防火墙,输入必须是reject和drop,才会生效。因为已经默认了可以输入!所以,再去自定义输入规则是无效的。
同理!如果默认是drop,你得设置accept或者reject才行,不然设置是多余的!

3.2 IPSET和别名

ip分组能够简化管理员的管理。

3.2.1 什么是ipset和别名

在pve里,有两个ip群组概念。

1、别名:别名是一个ip段的集合。例如192.168.1.1/24 我可以设置名称为local
2、IPSET:这是一个别名的集合。

3.2.2 区别

一个别名只能对应一个ip段。

图形用户界面

描述已自动生成 可以看到只能填写ip/CIDR

注意的是,不管是别名还是ipset,名称都需要是英文,否则创建别名/ipset会提示错误,备注可以使用中文 。

ipset是别名中的集合。

例如有两个ip别名
local别名:192.168.1.0/24
local本地别名:10.13.14.0/24
创建ipset的时候,可选别名或者自定义ip段

图形用户界面, 文本, 应用程序, 电子邮件

描述已自动生成

3.2.3 例子

ipset和集合具体应用可以看下图

图形用户界面, 应用程序, 表格

描述已自动生成

在设置ipset和别名之后,可以选择ipset或者别名。相当方便,能够显著的减少防火墙规则数目。

四 开启防火墙步骤

1、在数据中心的防火墙,开启tcp/8006端口

2、在主机防火墙,开启tcp/22,8006端口

3、在面板里面,开启数据中心防火墙、开启主机防火墙、开启VM的防火墙。

PVE官方文档说的是,开启防火墙之后,默认开放8006/22端口,但是我有一次失败了,所以,还是先开启端口,再开总的防火墙吧,免得出意外了。

之后,就可以按照上面的介绍,按照需求来了。

 

在PVE的角色权限中,只有VMADMIN/VMnetwork权限才能使用防火墙,vmuser不行

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇