1. UFW 简介
- 防火墙是用于监控和过滤传入和传出网络流量的工具,它通过定义一组确定是允许还是阻止特定流量的安全规则来工作
- UFW(Uncomplicated Firewall)是一种简化的防火墙管理界面,它隐藏了较低级别的数据包过滤技术,例如 iptables 和 nftables
2. 安装 UFW
1 | $ sudo apt install ufw |
- 启用 IPV6(可选):如果 Debian 服务器启用了 IPv6,则需要确保 UFW 配置支持 IPv6。这样除了 IPv4 之外,UFW 还将管理 IPv6 的防火墙规则
1 | $ sudo nano /etc/default/ufw |
3. 设置默认规则
- 默认规则会处理不明确匹配任何其他规则的流量
- 默认情况下,UFW 设置为拒绝所有传入连接并允许所有传出连接。这意味着任何试图访问服务器的人都无法连接,而服务器内的任何应用程序都可以访问外部
1 | $ sudo ufw default deny incoming |
4. 允许 SSH 连接
- 目前还不能启动 UFW 防火墙,因为它会拒绝所有传入连接,包括 SSH
1 | # 创建防火墙规则,允许端口 22上的所有连接 |
5. 启用 UFW
1 | $ sudo ufw enable |
6. 允许其他连接
1 | $ sudo ufw allow http # 80 |
- 指定端口范围
- 指定端口范围时必须指定规则适用的协议(TCP 或 UDP)
- 之前的情况如果不指定协议会自动允许两种协议
1 | # 开放端口`6000~6007` |
- 具体 IP 地址
1 | # 允许来自特定IP地址的连接 |
- 子网
1 | #使用CIDR表示法来指定网络掩码 |
- 连接到特定网络接口
1 | # 创建仅适用于特定网络接口的防火墙规则,可以通过指定`allow in on`后跟网络接口名称来实现 |
7. 拒绝连接
- 默认规则下,UFW 将配置为拒绝所有传入连接。我们通常创建明确允许特定端口和 IP 地址通过的规则,从而创建安全防火墙策略
- 有时我们希望根据源 IP 地址或子网拒绝特定连接,如知道服务器正在从某处遭受攻击
1 | # 拒绝HTTP连接 |
8. 删除规则
- 可以通过规则编号或通过规则本身来指定要删除的规则,这类似于规则在创建时的指定方式
- 按规则编号
- 需手动指定删除 IPv4 或 IPv6 规则
1 | # 获取防火墙规则列表,使用`numbered`选项 |
- 按实际规则
- 同时删除 IPv4 和 IPv6 规则(如果存在)
1 | # 指定服务名称 |
9. 禁用或重置 UFW
1 | # 执行后之前定义的所有规则将不再生效 |