长亭百川云 - 文章详情

别在直接关防火墙了,很危险!规则其实很简单。

lutixia

53

2024-06-18

防火墙是重要的网络安全工具,它可以是硬件设备也可以软件工具。主要用于监控和控制进出网络的流量。它基于一组预定义的安全规则,决定哪些流量可以通过,哪些流量需要被阻止。

防火墙的主要功能如下:

  • 过滤不安全的流量:阻止来自不可信来源的网络请求。

  • 保护内部网络:防止未经授权的访问,保护内部网络资源。

  • 监控网络活动:记录和分析网络流量,帮助识别和应对安全威胁。

工具介绍

iptables

iptables是一个用户空间命令行工具,用于配置Linux内核中的Netfilter防火墙。它可以定义各种规则来过滤和转发网络数据包。

  • 结构:iptables基于表(table)和链(chain)的结构。传说中的四表是:filter、nat、mangle、raw,五链是:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。

  • 功能:iptables可以进行包过滤、网络地址转换(NAT)、包修改等。

  • 工作原理:当数据包到达时,iptables根据预定义规则进行匹配和处理,决定是否放行、拒绝或记录该数据包。

四表五链详解:

四表:

  1. Filter表
    功能:主要用于包过滤,是最常用的表。
    链:INPUT、FORWARD、OUTPUT。

  2. Nat表
    功能:用于网络地址转换(NAT),如源地址转换(SNAT)和目的地址转换(DNAT)。
    链:PREROUTING、OUTPUT、POSTROUTING。

  3. Mangle表
    功能:用于修改数据包的服务类型、TTL等标记。
    链:PREROUTING、OUTPUT、FORWARD、INPUT、POSTROUTING。

  4. Raw表
    功能:用于配置数据包是否应被状态跟踪机制处理。常用于排除某些数据包的状态跟踪。
    链:PREROUTING、OUTPUT。

五链:

  1. PREROUTING链
    位置:在数据包进入防火墙时最先处理。
    应用表:Nat、Mangle、Raw。

  2. INPUT链
    位置:处理进入防火墙并且目标是本地系统的数据包。
    应用表:Filter、Mangle。

  3. FORWARD链
    位置:处理进入防火墙但不直接送往本地系统的数据包,通常是转发到其他网络接口。
    应用表:Filter、Mangle。

  4. OUTPUT链
    位置:处理从本地系统发出的数据包。
    应用表:Filter、Nat、Mangle、Raw。

  5. POSTROUTING链
    位置:在数据包离开防火墙时最后处理。
    应用表:Nat、Mangle。

数据包在链表中的处理过程大致如下:

firewalld

firewalld是一个动态管理防火墙工具,提供更高级的配置接口。它默认在CentOS 7及以后的版本中使用。

  • 结构:firewalld基于区域(zone)和服务(service)的概念,每个区域对应不同的信任级别。

  • 功能:支持动态更新,无需重启服务即可应用新的规则。提供丰富的命令行和图形界面工具。

  • 工作原理:firewalld通过D-Bus接口与系统交互,实时管理iptables规则。

命令使用

iptables常用命令:

  1. 查看当前所有规则:
    默认是filter表。

    iptables -L
    
  2. 查看INPUT链规则:

    iptables -L INPUT  
    或者:  
    iptables -t 表名 -L 链名
    
  3. 查看详细信息,且不做域名解析:

    iptables -nvL INPUT
    
  4. 拒绝192.168.0.100的ip访问:

    iptables  -I INPUT -s 192.168.0.100 -j DROP  
    或者  
    iptables  -I INPUT -s 192.168.0.100 -j REJECT  
    或者  
    iptables  -A INPUT -s 192.168.0.100 -j DROP  
    或者  
    iptables  -A INPUT -s 192.168.0.100  -j REJECT  
      
    -I:在链的最前面添加规则,第一个匹配  
    -A:在链的最后面追加规则,最后匹配  
    -j DROP: 丢弃数据包,不给出回应,客户端会一直保持连接,直到超时  
    -j REJECT:  直接拒绝数据包,客户端会收到拒绝信息
    
  5. 拒绝192.168.0.0/24网段的ip访问:

    iptables  -I INPUT -s 192.168.0.0/24 -j DROP
    
  6. 禁止Ping本机:

    iptables -A INPUT -p icmp -j REJECT
    
  7. 删除规则:

    # 指定删除某规则,如删除禁ping规则  
    iptables -D INPUT -p icmp -j REJECT  
      
    # 删除指定行规则,先通过--line-numbers 获得规则行号,然后删除  
    iptabls -nvL --line-numbers  
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)  
     num  target     prot opt source               destination  
     1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0  
     2    REJECT     icmp --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable  
      
    iptables -D INPUT 2
    
  8. 保存规则:

    iptables-save > /etc/sysconfig/iptables
    

firewalld命令示例

firewalld管理服务,需要先在zone中关联IP地址或者网段,或者关联网卡。

  1. 关联网卡:

    firewall-cmd --permanent --add-interface=ens33  
    firewall-cmd --reload
    
  2. 查看当前区域和规则:

    firewall-cmd --get-active-zones  
    firewall-cmd --list-all
    
  3. 允许HTTP服务:
    默认zone是public,不指定zone就是在public中。

    # 临时且及时生效  
    firewall-cmd --add-service=http  
    # 永久生效,需要reload规则  
    firewall-cmd --add-service=http --permanent  
    firewall-cmd --reload
    
  4. 添加特定端口:

    firewall-cmd --add-port=80/tcp --permanent  
    firewall-cmd --reload
    
  5. 禁止ping:

    firewall-cmd --zone=public --add-icmp-block=echo-request --permanent  
    firewall-cmd --reload  
    或者  
    firewall-cmd --add-rich-rule='rule protocol value="icmp" drop' --permanent  
    firewall-cmd --reload
    
  6. 富规则:

    # 不允许142.0网段IP远程连接,允许215.0网段IP远程连接(指定端口):  
    firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.142.0/24 port port=22  protocol=tcp  reject'  
    firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.215.0/24 port port=22  protocol=tcp  accept'  
    firewall-cmd --reload
    
  7. 端口转发:

    # 内网出外网:  
    firewall-cmd --permanent --add-masquerade  
    firewall-cmd --reload  
      
    # 外网进内网(192.168.0.100为目标内网地址):  
    firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toport=22:toaddr=192.168.0.100  
    firewall-cmd --reload
    

安全

在配置防火墙时,需注意以下安全因素:

  • 最小化暴露端口:只开放必要的端口,减少攻击面。

  • 定期审计规则:定期检查和更新防火墙规则,确保它们仍然符合安全策略。

  • 日志记录:启用防火墙日志功能,监控异常流量和潜在威胁。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2