前言

在各大主机厂商不懈努力与我们人类以栏作为动力的前提下 这个原生防火墙就变得薄弱起来了

防火墙 按程序字面意思理解就是 规定什么样的数据可以出去 可以进来

目前采用的是 iptablesfirewall

然后嘛 由于我觉得我学习 iptables 太过于有难度 便 采用了 firewall

当然 这两个是互斥的 都算是封装了命令行 然后交给内核中的netfilter去负责了

安装

debian 11

1
apt install firewalld

使用

他有好几个区域 咱们默认以 public 区域开始

善用 tab

大概主要是这几个大模块 按字面意思晓得就成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
firewall-cmd --add
firewall-cmd --change
firewall-cmd --get
firewall-cmd --info
firewall-cmd --list
firewall-cmd --query
firewall-cmd --remove

# 保存 没有此参数 reload 后失效
firewall-cmd --permanent
# 重新载入配置 每次修改后运行后才会生效
firewall-cmd --reload
# 重启配置 断开已有连接重开
firewall-cmd --complete-reload

获取当前的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
root@test:~# firewall-cmd --list-all
# 区域名称
public
target: default
icmp-block-inversion: no
interfaces:
# 区域 根据不同的区域可以设定 访问 丢弃 等
sources:
# 可以访问的服务
services: dhcpv6-client ssh
# 可以访问的端口
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
# 复杂的规则 注意别和 白名单 冲突
rich rules:

服务

1
2
3
4
5
6
# 可设置服务列表
firewall-cmd --get-services
# 开始让 https 服务对外服务
firewall-cmd --permanent --zone=public --add-service=https
# 停止让 https 服务对外服务
firewall-cmd --permanent --zone=public --remove-service=https

端口

1
2
3
4
5
6
# 查询80 tcp 端口是否对外开放
firewall-cmd --zone=public --query-port=80/tcp
# 开始让 80 tcp 端口对外服务
firewall-cmd --permanent --zone=public --add-port=80/tcp
# 停止让 80 tcp 端口对外服务
firewall-cmd --permanent --zone=public --remove-port=80/tcp

区域 (Zone)

每个区域对于这种 进出 都有不同的行为

源 IP/网段 网卡 等 没关联的 就会进入 默认区域 public (匹配规则)

1
2
3
4
5
6
7
8
9
# 把 ip 加到 trusted 区域 白名单
firewall-cmd --permanent --zone=trusted --add-source=ip
# 把 ip 移除 trusted 区域 白名单
firewall-cmd --permanent --zone=trusted --remove-source=ip

# 把 ip 加到 drop 区域 拉黑
firewall-cmd --permanent --zone=drop --add-source=ip
# 把 ip 移除 drop 区域 拉黑
firewall-cmd --permanent --zone=drop --remove-source=ip

常用区域

  • public 公共区域 默认访问的这个区域
  • block 阻塞区域 全权拒绝 并 告知对方 我拒绝了
  • drop 丢弃区域 全权拒绝
  • trusted 信任区域 全权接受

ping icmp协议

1
2
3
4
# 开启 ping
firewall-cmd --permanent --zone=public --remove-icmp-block-inversion
# 禁止 ping
firewall-cmd --permanent --zone=public --add-icmp-block-inversion

参考