linux

【firewalld】通过firewalld放行、限制ip po

2024-08-28  本文已影响0人  Bogon

安装fiirewalld

# yum  -y install  firewalld

# rpm -qa | grep firewalld

firewalld-0.6.3-13.el7_9.noarch
firewalld-filesystem-0.6.3-13.el7_9.noarch
# yum info firewalld
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * epel: repo.jing.rocks
已安装的软件包
名称    :firewalld
架构    :noarch
版本    :0.6.3
发布    :13.el7_9
大小    :1.9 M
源    :installed
来自源:anaconda
简介    : A firewall daemon with D-Bus interface providing a dynamic firewall
网址    :http://www.firewalld.org
协议    : GPLv2+
描述    : firewalld is a firewall service daemon that provides a dynamic customizable
         : firewall with a D-Bus interface.

firewalld的匹配规则是什么?

firewalld 的匹配规则用于定义哪些流量被允许或拒绝。

以下是一些常见的匹配规则类型和概念:

1. 端口匹配

2. 服务匹配

3. IP 地址匹配

4. 丰富规则(Rich Rules)

5. 协议匹配

6. 链(Chains)

7. 区域(Zones)

示例命令

应用更改

在修改了 firewalld 配置后,必须重新加载配置才能生效:

sudo firewall-cmd --reload

这些规则可以根据需求进行组合,以满足特定的安全和访问需求。

cat set-firelwalld.sh

#!/bin/bash

ips="
127.0.0.1
xx.xx.xx.xx
"

sudo systemctl start  firewalld
sudo systemctl enable firewalld

sudo firewall-cmd --permanent --zone=public --add-port=22/tcp
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp

for ip in ${ips}
do
  sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=${ip} port port=1-65355 protocol=tcp accept'
  sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=${ip} port port=1-65355 protocol=udp accept'
done

# 放行docker run 的容器默认网段
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address="172.17.0.0/16" port port=1-65535 protocol=tcp accept"
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address="172.17.0.0/16" port port=1-65535 protocol=udp accept"

sudo firewall-cmd --reload

# firewall-cmd  --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: dhcpv6-client ssh
  ports: 22/tcp 80/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
        rule family="ipv4" source address="127.0.0.1" port port="1-65355" protocol="tcp" accept
        rule family="ipv4" source address="127.0.0.1" port port="1-65355" protocol="udp" accept
        rule family="ipv4" source address="xx.xx.xx.xx" port port="1-65355" protocol="tcp" accept
        rule family="ipv4" source address="xx.xx.xx.xx" port port="1-65355" protocol="udp" accept

firewalldiptables 的匹配规则和处理方式 有什么不同?

firewalldiptables 的匹配规则和处理方式有一些显著的区别:

1. 动态管理

2. 区域和服务

3. 规则的顺序

4. 规则处理

5. 配置管理

总的来说,firewalld 提供了更高层次的抽象和动态管理功能,而 iptables 提供了更细粒度的控制,但管理起来相对复杂。

相较于iptables的匹配即停止原则,firewalld在这点上有什么不一样?

iptablesfirewalld 都是用于管理Linux防火墙的工具,但它们在处理数据包匹配和规则执行的方式上有些不同。

iptables 的匹配即停止原则

iptables 中,规则链是顺序匹配的。每个链中的规则是逐条检查的,一旦一个规则匹配了数据包,iptables 就会执行相应的操作(比如接受、拒绝或丢弃数据包),并且通常会停止进一步的规则检查。这种“匹配即停止”的原则意味着一旦数据包满足了某个规则,它将不会再被后续规则处理。

firewalld 的处理方式

firewalld 使用了不同于 iptables 的处理机制,主要体现在以下几个方面:

  1. 区域和服务的概念

    • firewalld 基于区域(zones)和服务(services)的概念来管理防火墙规则。每个区域定义了一组规则,服务则是预定义的规则集合。
  2. 动态规则管理

    • firewalld 提供了动态的规则管理方式。你可以在不重新加载防火墙的情况下添加、删除或修改规则。它支持运行时配置和永久配置,使得对规则的更改可以即时生效。
  3. 规则的匹配

    • firewalld 中,规则的匹配并不是“匹配即停止”的。它使用了类似 iptables 的链式规则匹配机制,但其背后的实现机制更为复杂。具体来说,firewalld 在实际操作中会根据区域和服务的定义来处理数据包,规则的应用顺序和优先级可能会有所不同。
  4. 集成化和简化

    • firewalld 提供了一个更高层次的抽象,通过使用区域和服务的概念,简化了规则的管理。这意味着用户不需要像在 iptables 中那样手动编写规则链,而是通过区域和服务来进行配置。

总的来说,firewalld 的设计旨在提供更灵活、动态和用户友好的防火墙管理方式,相对于 iptables 的规则链式匹配,firewalld 通过区域和服务的抽象简化了规则管理过程。在实际应用中,firewalld 并不严格遵循“匹配即停止”的原则,而是结合了不同的匹配机制来实现复杂的防火墙策略。

上一篇下一篇

猜你喜欢

热点阅读