Ubuntu 系统防火墙命令详解

发布于:
更新于:

Ubuntu 系统防火墙命令详解

Ubuntu 系统中主要使用两种防火墙工具:UFW (Uncomplicated Firewall) 和 iptables。UFW 是一个对 iptables 的前端简化工具,旨在使防火墙配置更加简单。下面将详细讲解这两种工具的相关命令。

一、UFW (Uncomplicated Firewall)

UFW 是 Ubuntu 默认的防火墙配置工具,设计简单易用,适合初学者。

1. 基本操作命令

# 检查 UFW 状态
sudo ufw status
sudo ufw status verbose  # 显示详细信息
sudo ufw status numbered  # 显示规则编号

# 启用/禁用 UFW
sudo ufw enable
sudo ufw disable

# 重置 UFW(删除所有规则)
sudo ufw reset

2. 管理防火墙规则

# 允许/拒绝特定端口
sudo ufw allow 22  # 允许 SSH 连接
sudo ufw deny 23   # 拒绝 Telnet 连接

# 允许/拒绝特定服务(根据服务名)
sudo ufw allow ssh
sudo ufw deny telnet

# 允许/拒绝特定协议
sudo ufw allow http  # 允许 HTTP 流量
sudo ufw allow https  # 允许 HTTPS 流量

# 指定协议类型
sudo ufw allow 53/tcp  # 允许 TCP 协议的 53 端口
sudo ufw allow 53/udp  # 允许 UDP 协议的 53 端口

# 指定来源 IP 地址
sudo ufw allow from 192.168.1.100  # 允许来自特定 IP 的所有连接
sudo ufw allow from 192.168.1.0/24  # 允许来自特定网段的所有连接

# 指定来源 IP 和目标端口
sudo ufw allow from 192.168.1.100 to any port 22  # 允许特定 IP 访问 SSH

# 删除规则
sudo ufw delete allow 80  # 删除允许 80 端口的规则
sudo ufw delete 3         # 删除规则编号为 3 的规则(需先使用 numbered 查看编号)

3. 高级规则配置

# 限制连接次数(防止暴力破解)
sudo ufw limit ssh  # 限制 SSH 连接尝试次数

# 允许特定范围的端口
sudo ufw allow 6000:6007/tcp  # 允许 TCP 端口范围
sudo ufw allow 6000:6007/udp  # 允许 UDP 端口范围

# 转发端口
sudo ufw route allow in on eth0 out on eth1  # 允许从 eth0 到 eth1 的流量转发

4. 应用配置和日志

# 应用配置(当修改了配置文件后)
sudo ufw reload

# 查看日志
sudo ufw logging on   # 开启日志
sudo ufw logging off  # 关闭日志
sudo ufw logging low|medium|high  # 设置日志级别

二、iptables 命令

iptables 是 Linux 系统中强大的防火墙工具,比 UFW 更复杂但功能更强大。

1. 基本查看命令

# 查看当前 iptables 规则
sudo iptables -L  # 列出所有规则
sudo iptables -L -v  # 显示详细信息
sudo iptables -L -n  # 显示 IP 地址和端口号(不解析为名称)
sudo iptables -L --line-numbers  # 显示规则编号

2. 链和表的操作

# 查看特定链的规则
sudo iptables -L INPUT  # 查看 INPUT 链规则
sudo iptables -L OUTPUT  # 查看 OUTPUT 链规则
sudo iptables -L FORWARD  # 查看 FORWARD 链规则

# 清空某个链的规则
sudo iptables -F INPUT  # 清空 INPUT 链
sudo iptables -F  # 清空所有链

# 设置链的默认策略
sudo iptables -P INPUT DROP  # 设置 INPUT 链默认策略为 DROP(拒绝所有)
sudo iptables -P OUTPUT ACCEPT  # 设置 OUTPUT 链默认策略为 ACCEPT(允许所有)

3. 添加规则

# 允许特定端口
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # 允许 SSH 连接

# 允许特定 IP 地址
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT  # 允许来自特定 IP 的连接

# 根据状态进行过滤
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  # 允许已建立的连接

# 拒绝特定端口
sudo iptables -A INPUT -p tcp --dport 23 -j DROP  # 拒绝 Telnet 连接

# 添加规则到特定位置
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT  # 在 INPUT 链的第一位添加规则

4. 删除规则

# 通过规则匹配删除
sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT  # 删除允许 80 端口的规则

# 通过规则编号删除
sudo iptables -D INPUT 3  # 删除 INPUT 链中第 3 条规则

5. 保存和恢复规则

# 保存 iptables 规则
sudo sh -c "iptables-save > /etc/iptables.rules"

# 恢复 iptables 规则
sudo sh -c "iptables-restore < /etc/iptables.rules"

三、常见防火墙配置示例

1. 基本的服务器安全配置

# 使用 UFW
sudo ufw default deny incoming  # 默认拒绝所有入站连接
sudo ufw default allow outgoing  # 默认允许所有出站连接
sudo ufw allow ssh  # 允许 SSH 连接
sudo ufw allow http  # 允许 HTTP 连接
sudo ufw allow https  # 允许 HTTPS 连接
sudo ufw enable  # 启用防火墙

# 使用 iptables
sudo iptables -P INPUT DROP  # 设置默认策略为拒绝
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # SSH
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  # HTTP
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT  # HTTPS
sudo iptables -A INPUT -i lo -j ACCEPT  # 允许本地回环接口

2. 防止 DoS 攻击配置

# 使用 iptables 限制连接数
sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

四、防火墙管理工具

除了命令行,Ubuntu 还提供了一些图形化的防火墙管理工具:

  1. gufw:UFW 的图形界面

    sudo apt install gufw
  2. fwbuilder:功能更丰富的防火墙配置工具

    sudo apt install fwbuilder

五、故障排查技巧

  1. 查看防火墙是否阻止了连接

    sudo ufw status
    sudo iptables -L
  2. 临时禁用防火墙进行测试

    sudo ufw disable
    sudo iptables -P INPUT ACCEPT
    sudo iptables -F
  3. 检查防火墙日志

    sudo tail -f /var/log/ufw.log
    sudo journalctl -f | grep UFW

六、防火墙最佳实践

  1. 遵循最小权限原则:只开放必要的端口
  2. 定期审查防火墙规则:移除不需要的规则
  3. 使用限制规则:防止暴力破解攻击
  4. 记录防火墙活动:开启日志功能
  5. 备份防火墙规则:定期导出规则配置

通过以上命令和配置示例,您应该能够灵活管理 Ubuntu 系统上的防火墙,保护您的服务器安全。