ufw 工具介绍

UFWUncomplicated Firewall)是 Ubuntu 提供的一个易于使用的防火墙配置工具,简化了 iptables 的复杂配置。它通过提供简单的命令来允许或拒绝网络流量规则,以保护你的服务器或系统。

下面详细介绍 UFW 命令及其选项。


1. UFW 基本命令

1.1. 启用防火墙
sudo ufw enable
  • 作用:启用 UFW 防火墙并应用配置的规则。
  • 注意:启用 UFW 后,系统将根据现有的规则进行流量过滤,建议在启用前检查规则以避免锁定自己。
1.2. 禁用防火墙
sudo ufw disable
  • 作用:禁用 UFW 防火墙。此命令会立即停止所有防火墙规则,允许所有流量通过。
1.3. 检查防火墙状态
sudo ufw status
  • 作用:显示防火墙的当前状态及活动规则(默认显示简要信息)。
  • 选项
    • status verbose:显示详细的状态信息,包括默认的拒绝/允许规则、日志记录状态等。
1.4. 重置 UFW
sudo ufw reset
  • 作用:重置 UFW,清除所有已定义的规则并禁用防火墙。使用该命令后需要重新启用和配置规则。

2. 配置防火墙规则

2.1. 允许或拒绝端口
  • 允许端口

    sudo ufw allow 22
    
    • 作用:允许端口 22(通常是 SSH)上的流量。你可以通过此命令打开其他服务的端口。
  • 拒绝端口

    sudo ufw deny 80
    
    • 作用:拒绝 HTTP 服务(端口 80)上的所有入站连接。
  • 删除规则

    sudo ufw delete allow 22
    
    • 作用:删除允许 SSH 端口 22 的规则。deny 规则也可以通过类似方式删除。
2.2. 允许或拒绝协议
  • 允许特定协议的流量

    sudo ufw allow 443/tcp
    sudo ufw allow 53/udp
    
    • 作用:分别允许 TCP 端口 443(HTTPS)和 UDP 端口 53(DNS)上的流量。
  • 拒绝特定协议的流量

    sudo ufw deny 443/tcp
    sudo ufw deny 53/udp
    
2.3. 允许或拒绝 IP 地址
  • 允许来自特定 IP 地址的流量

    sudo ufw allow from 192.168.1.100
    
    • 作用:允许来自 IP 地址 192.168.1.100 的所有入站流量。
  • 允许来自 IP 地址到特定端口的流量

    sudo ufw allow from 192.168.1.100 to any port 22
    
    • 作用:允许 IP 地址 192.168.1.100 访问 SSH 端口 22
  • 拒绝特定 IP 地址的流量

    sudo ufw deny from 192.168.1.200
    
    • 作用:拒绝来自 IP 地址 192.168.1.200 的所有流量。
2.4. 限制(防止暴力攻击)
sudo ufw limit ssh
  • 作用:限制 SSH(端口 22)的流量,防止暴力破解攻击。如果某个 IP 尝试在短时间内多次连接,该命令会自动拒绝该 IP 的请求。
2.5. 拒绝指定端口和子网的流量
sudo ufw deny proto tcp from 192.168.1.0/24 to any port 80
  • 作用:拒绝来自子网 192.168.1.0/24 访问端口 80 的 TCP 流量。可以根据需要指定协议和端口。

3. 默认规则

3.1. 默认拒绝入站连接
sudo ufw default deny incoming
  • 作用:默认拒绝所有入站连接,确保只有明确允许的连接才会被通过。这是一个推荐的安全策略。
3.2. 默认允许出站连接
sudo ufw default allow outgoing
  • 作用:默认允许所有出站连接。意味着本地系统可以自由地与外部网络通信。
3.3. 更改默认出站规则
sudo ufw default deny outgoing
  • 作用:拒绝所有出站流量,确保只有明确允许的出站流量可以通过。这会加强系统的安全性,但可能需要对特定服务开放出站流量。

4. UFW 其他命令

4.1. 启用或禁用 UFW 日志记录
sudo ufw logging on
sudo ufw logging off
  • 作用:启用或禁用防火墙的日志记录。启用后,UFW 会将有关流量的活动记录到 /var/log/ufw.log 中,方便管理员排查网络问题。
4.2. 显示所有规则编号
sudo ufw status numbered
  • 作用:显示所有规则,并为每条规则分配一个编号。这在删除特定规则时非常有用。
4.3. 删除特定编号的规则
sudo ufw delete <编号>
  • 作用:通过规则的编号删除规则。例如,sudo ufw delete 3 将删除编号为 3 的规则。

5. 应用场景的命令示例

5.1. 开启 HTTP 和 HTTPS 服务
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
  • 作用:允许 HTTP 和 HTTPS 服务流量。
5.2. 限制 SSH 连接防止暴力破解
sudo ufw limit ssh
  • 作用:防止暴力破解 SSH 的攻击。
5.3. 允许特定 IP 访问服务器
sudo ufw allow from 203.0.113.4
  • 作用:允许 IP 地址 203.0.113.4 访问服务器。
5.4. 阻止特定 IP 的访问
sudo ufw deny from 192.168.1.123
  • 作用:阻止来自 IP 地址 192.168.1.123 的所有访问。

总结

UFW 是一个简单但功能强大的防火墙工具,适合管理入站和出站的网络流量。它通过提供易于使用的命令行界面,简化了复杂的防火墙规则配置,特别适合于 Ubuntu 等系统环境。

### 如何使用和配置 UFW 防火墙 UFW(Uncomplicated Firewall)是一个简单易用的防火墙管理工具,旨在简化 Linux 系统中的防火墙配置过程。以下是关于如何安装、配置以及管理 UFW 的详细介绍。 #### 安装 UFW 在大多数基于 Debian 和 Ubuntu 的发行版中,默认情况下已经预装了 UFW。如果没有安装,则可以通过以下命令完成安装: ```bash sudo apt update && sudo apt install ufw ``` #### 基本配置 1. **设置默认规则** 默认规则决定了未显式允许或拒绝的所有流量的行为。通常建议先设置默认规则为拒绝所有传入连接并允许所有传出连接。 ```bash sudo ufw default deny incoming sudo ufw default allow outgoing ``` 2. **启用 UFW** 在应用任何规则前,需要启动 UFW 并使其生效。 ```bash sudo ufw enable ``` 如果希望查看当前状态可以运行 `sudo ufw status`[^2]。 3. **放行特定端口和服务** 可以为某些服务或者端口号创建例外规则。例如,为了开放 SSH 连接以便远程登录到服务器: ```bash sudo ufw allow ssh ``` 或者指定具体的 TCP/UDP 端口范围: ```bash sudo ufw allow 80/tcp # 允许 HTTP 流量 sudo ufw allow 443 # 自动识别 HTTPS 协议 sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp # 仅限局域网内的SSH访问 ``` 4. **删除现有规则** 若要移除某条规则,可重新执行相同的命令加上参数 `delete`: ```bash sudo ufw delete allow ssh ``` 5. **高级功能** - 对于更复杂的需求比如限制 IP 地址段之间的通信,也可以利用 CIDR 表达法实现精细控制。 ```bash sudo ufw allow from 172.17.150.0/24 # 批准来自该子网的所有请求 ``` - 若需支持 ICMP 请求(即 ping),则添加如下指令即可: ```bash sudo ufw allow icmp ``` #### 查看与调试 - 使用 `sudo ufw status verbose` 来获取详细的防火墙状态报告,这有助于诊断潜在问题[^3]。 #### 特殊场景下的调整 当部署 Web 应用程序时,可能还需要额外考虑数据库或其他内部组件的安全性。下面给出一个针对 LAMP (Linux, Apache, MySQL/MariaDB, PHP) 架构的例子: 1. 开启必要的外部入口点: ```bash sudo ufw allow http # Apache web server listens on this protocol by default. sudo ufw allow https # Secure version of the above service. ``` 2. 调整本地资源交互权限: ```sql GRANT ALL PRIVILEGES ON *.* TO 'db_user'@'localhost'; -- Ensure only localhost can connect directly into DBMS without exposing it publicly over network interfaces unless absolutely required otherwise! FLUSH PRIVILEGES; ``` 最后记得再次确认整体安全性状况并通过实际测试验证预期效果是否达成目标! --- 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值