菜鸟科技网

防火墙基本命令有哪些?

防火墙是网络安全体系中的重要组成部分,主要用于监控和控制进出网络的数据流,依据预设的安全规则决定是否允许数据包通过,在不同操作系统中,防火墙的实现方式和管理命令有所不同,以下将以Linux系统中的iptables和firewalld为例,详细介绍防火墙的基本命令及其使用方法,同时涵盖Windows系统防火墙的基础操作,帮助用户全面掌握防火墙的配置与管理。

防火墙基本命令有哪些?-图1
(图片来源网络,侵删)

Linux系统防火墙基本命令

iptables命令(基于Netfilter框架)

iptables是Linux内核中经典的防火墙工具,通过表(table)和链(chain)来管理规则,默认包含filter、nat和mangle三个表,其中filter表最常用,用于过滤数据包。

  1. 查看规则

    • 查看filter表中所有规则(默认):
      sudo iptables -L -n -v

      参数说明:-L列出规则,-n以数字形式显示地址和端口(避免DNS解析),-v显示详细信息(如数据包数量、字节数)。

    • 查看指定链的规则(如INPUT链):
      sudo iptables -L INPUT -n
  2. 添加规则

    防火墙基本命令有哪些?-图2
    (图片来源网络,侵删)
    • 允许特定IP访问(如192.168.1.100):
      sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT

      参数说明:-A在链末尾添加规则,-s指定源IP,-j采取的动作(ACCEPT允许、DROP丢弃、REJECT拒绝并返回错误信息)。

    • 允许访问特定端口(如80端口):
      sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

      -p指定协议(tcp/udp/icmp),--dport指定目标端口。

  3. 删除规则

    • 删除最后一条规则:
      sudo iptables -D INPUT -s 192.168.1.100 -j ACCEPT

      -D删除规则,需与添加规则时的参数完全一致。

      防火墙基本命令有哪些?-图3
      (图片来源网络,侵删)
    • 通过规则编号删除(先查看规则编号):
      sudo iptables --line-numbers -L INPUT
      sudo iptables -D INPUT 3  # 删除INPUT链的第3条规则
  4. 修改默认策略
    默认策略为ACCEPT(允许所有),修改为DROP(禁止所有)需谨慎:

    sudo iptables -P INPUT DROP  # 修改INPUT链默认策略为DROP
  5. 保存规则
    不同Linux发行版保存方式不同:

    • Ubuntu/Debian:sudo iptables-save > /etc/iptables/rules.v4
    • CentOS/RHEL:sudo service iptables save

firewalld命令(CentOS 7+/RHEL 7+默认防火墙)

firewalld采用区域(zone)概念,根据网络连接信任程度将流量划分到不同区域(如public、trusted、home),每个区域有独立的规则集。

  1. 启动与启用服务

    sudo systemctl start firewalld  # 启动服务
    sudo systemctl enable firewalld # 开机自启
  2. 查看区域与规则

    • 查看当前活跃区域:
      sudo firewall-cmd --get-active-zones
    • 查看指定区域的规则(如public区域):
      sudo firewall-cmd --zone=public --list-all
  3. 添加规则

    • 允许端口(如添加8080端口到public区域):
      sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

      --permanent表示永久生效(需重启服务或重新加载),不加则临时生效。

    • 允许特定IP(如192.168.1.50访问):
      sudo firewall-cmd --zone=public --add-source=192.168.1.50 --permanent
  4. 重新加载与删除规则

    • 重新加载规则使永久配置生效:
      sudo firewall-cmd --reload
    • 删除规则(如删除8080端口):
      sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
  5. 端口转发与MASQUERADE(NAT)

    • 启用IP转发:
      sudo sysctl -w net.ipv4.ip_forward=1
    • 设置MASQUERADE(适用于内网共享外网IP):
      sudo firewall-cmd --zone=public --add-masquerade --permanent

Windows系统防火墙基本命令

Windows防火墙可通过命令行工具netsh进行管理,适用于批量操作或脚本自动化。

  1. 启用/禁用防火墙

    • 启用防火墙(所有配置文件):
      netsh advfirewall set allprofiles state on
    • 禁用防火墙:
      netsh advfirewall set allprofiles state off
  2. 添加入站规则
    允许特定程序(如C:\Program Files\app.exe):

    netsh advfirewall firewall add rule name="Allow MyApp" dir=in action=allow program="C:\Program Files\app.exe"

    允许特定端口(如TCP 3389):

    netsh advfirewall firewall add rule name="Allow RDP" dir=in action=allow protocol=TCP localport=3389
  3. 删除规则
    按规则名称删除:

    netsh advfirewall firewall delete rule name="Allow MyApp"

防火墙规则管理表格(Linux firewalld示例)

操作 命令示例 说明
添加端口规则 sudo firewall-cmd --zone=public --add-port=80/tcp --permanent 永久开放80端口
查看规则 sudo firewall-cmd --zone=public --list-ports 列出public区域已开放端口
删除端口规则 sudo firewall-cmd --zone=public --remove-port=443/tcp --permanent 永久关闭443端口
添加服务规则 sudo firewall-cmd --zone=public --add-service=http --permanent 开放http服务(对应80端口)
查看已开放服务 sudo firewall-cmd --zone=public --list-services 列出public区域已开放服务

相关问答FAQs

Q1: 防火墙规则添加后不生效怎么办?
A1: 首先检查规则是否添加到正确的链或区域(如iptables需确认添加到INPUT链,firewalld需确认区域匹配),对于iptables,确保规则顺序正确(按从上到下匹配);对于firewalld,添加--permanent规则后需执行--reload重新加载,检查默认策略是否为DROP,若为DROP需明确允许相关流量,同时排查网络接口是否正确绑定规则。

Q2: 如何允许防火墙阻止的特定程序联网?
A2: 以Linux firewalld为例,可通过添加服务规则或程序路径实现:

  • 若程序属于已知服务(如SSH、HTTP),直接开放对应服务:
    sudo firewall-cmd --zone=public --add-service=ssh --permanent
  • 若为自定义程序,需开放其使用的端口(如程序使用12345端口):
    sudo firewall-cmd --zone=public --add-port=12345/tcp --permanent

    对于Windows系统,使用netsh添加程序规则(见上文),或在防火墙控制面板中“允许应用通过防火墙”手动添加程序路径,注意:开放端口或程序时需遵循最小权限原则,避免过度开放导致安全风险。

分享:
扫描分享到社交APP
上一篇
下一篇