zoukankan      html  css  js  c++  java
  • firewall详细配置

    一、防火墙 firewalld 的安装

    1、在CentOS7中安装 firewalld 的命令如下:

    yum install firewalld

    2、如果需要图形界面,需再安装:

    yum install firewall-config

    3、使用tab键补全命令提示:

    yum install bash-completion

      防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。

    Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别:

    drop:丢弃所有进入的包,而不给出任何响应
    block:拒绝所有外部发起的连接,允许内部发起的连接
    public:允许指定的进入连接
    external:同上,对伪装的进入连接,一般用于路由转发
    dmz:允许受限制的进入连接
    work:允许受信任的计算机被限制的进入连接,类似 workgroup
    home:同上,类似 homegroup
    internal:同上,范围针对所有互联网用户
    trusted:信任所有连接

    二、防火墙 firewalld 的应用

    查看版本: firewall-cmd --version
    查看帮助: firewall-cmd --help
    查看状态: firewall-cmd --state
    查看防火墙规则:firewall-cmd --list-all
    查看所有打开的端口: firewall-cmd --list-ports
    查看指定区域打开的端口: firewall-cmd --zone=public --list-ports
    查询端口是否开放:firewall-cmd --query-port=8080/tcp
    更新防火墙规则: firewall-cmd --reload (修改配置后要更新防火墙)
    查看已被激活的 Zone 信息: firewall-cmd --get-active-zones
    查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
    查看指定级别的接口:firewall-cmd --zone=public --list-interfaces
    查看指定级别的所有信息:firewall-cmd --zone=public --list-all
    查看所有级别被允许的信息:firewall-cmd --get-service
    查看重启后所有 Zones 级别中永久放行的服务:firewall-cmd --get-service --permanent

    查看区域:firewall-cmd --get-zones
    查看默认区域:firewall-cmd --get-default-zone

    一个区域可以绑定多个网卡,一个网卡只能绑定一个区域:
    查看网卡和区域绑定:
    firewall-cmd --get-zone-of-interface=ens33

    区域添加网卡接口:
    firewall-cmd --add-interface=ens34 --zone=public --permanent

    区域删除网卡:
    firewall-cmd --remove-interface=ens34 --zone=public --permanent

    修改网卡的区域:
    firewall-cmd --change-interface=ens33 --zone=public --permanent

    trusted区域的所有服务都被允许:

    网卡如果不属于任何区域,那么来自该接口的所有数据包将使用默认的区域规则:
    区域添加来源地址,如果接口不属于某个区域,那么来自于该接口的流量如果匹配来源地址,那么流量将从来源的区域通过:

    所有的配置操作如果想永久生效,则需要加--permanent选项,否则配置只会在当前运行环境生效。

    三、firewalld的工作过程

    firewalld将所有传入流量划分区域,每个区域都有自己的一套规则。为检查哪个区域用于传入连接。firewalld使用以下逻辑,第一个匹配规则胜出:
    1、传入包的源地址与区域的某个源规则设置匹配,该包将通过该区域进行路由。
    2、包的传入接口与区域的过滤器设置匹配,则将使用该区域。
    3、否则将使用默认区域。默认区域不是单独的区域,而是指向系统上定义的某个其他区域。
    除非管理员NetworkManager配置所覆盖,否则,任何新网络接口的默认区域都将设置为public区域。

    防火墙的网络区域定义了网络连接的可信等级(共9个区域),我们可以根据不同场景来调用不同的firewalld区域,区域规则如下:

    四、使用示例如下:

    1、添加tcp的80端口:
    firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效
    firewall-cmd --add-port=80/tcp --permanent 
    2、删除tcp的80端口:
    firewall-cmd --remove-port=80/tcp --permanent
    firewall-cmd --zone= public --remove-port=80/tcp --permanent

    参数解释
    1、firwall-cmd:是Linux提供的操作firewall的一个工具;
    2、--permanent:表示设置为持久;
    3、--add-port:标识添加的端口;

    # firewall-cmd --panic-on # 丢弃
    # firewall-cmd --panic-off # 取消丢弃
    $ firewall-cmd --query-panic # 查看丢弃状态
    # firewall-cmd --reload # 更新规则,不重启服务
    # firewall-cmd --complete-reload # 更新规则,重启服务
    添加某接口至某信任等级,譬如添加 eth0 至 public,再永久生效

    # firewall-cmd --zone=public --add-interface=eth0 --permanent

    设置 public 为默认的信任级别

    # firewall-cmd --set-default-zone=public

    a. 管理端口
    列出 dmz 级别的被允许的进入端口

    # firewall-cmd --zome=dmz --list-ports
    允许 tcp 端口 8080 至 dmz 级别

    # firewall-cmd --zone=dmz --add-port=8080/tcp
    允许某范围的 udp 端口至 public 级别,并永久生效

    # firewall-cmd --zome=public --add-port=5060-5059/udp --permanent
    b. 管理服务
    添加 smtp 服务至 work zone

    # firewall-cmd --zone=work --add-service=smtp
    移除 work zone 中的 smtp 服务

    # firewall-cmd --zone=work --remove-service=smtp
    c. 配置 ip 地址伪装
    查看

    # firewall-cmd --zone=external --query-masquerade
    打开伪装

    # firewall-cmd --zone=external --add-masquerade
    关闭伪装

    # firewall-cmd --zone=external --remove-masquerade
    d. 端口转发
    要打开端口转发,则需要先

    # firewall-cmd --zone=external --add-masquerade
    然后转发 tcp 22 端口至 3753

    # firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=3753
    转发 22 端口数据至另一个 ip 的相同端口上

    # firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100
    转发 22 端口数据至另一 ip 的 2055 端口上

    # firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100

    五、服务和其他构件

    在区域中有一些基本的构件块,其中服务是最重要的。防火墙使用管理员创建在/usr/lib/firewalld/services(系统默认服务) 和/etc/firewalld/services文件下的XML文件,配置的自身服务集。XML文件时通过列表3中的例子创建的。

    firewall-cmd --add-service=ftp #开放 ftp 服务规则 
    firewall-cmd --add-service=mysql # 开放mysql端口规则 
    firewall-cmd --add-service=http # 开放http端口规则 
    firewall-cmd --add-service=ssh # 开放ssh端口规则 

      以上四个规则重启服务会消失,只能临时生效,也是立刻生效的,如果要永久保存的规则就要添加参数:--permanent,添加此参数后不会立刻生效。需要重载或重启服务才生效。

  • 相关阅读:
    什么样的代码称得上是好代码?
    九年程序人生 总结分享
    Docker入门 第一课 --.Net Core 使用Docker全程记录
    阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅
    Visual studio 2015 Community 安装过程中遇到问题的终极解决
    Activiti6.0 spring5 工作流引擎 java SSM流程审批 项目框架
    java 进销存 库存管理 销售报表 商户管理 springmvc SSM crm 项目
    Leetcode名企之路
    24. 两两交换链表中的节点
    21. 合并两个有序链表
  • 原文地址:https://www.cnblogs.com/xiaofeng666/p/13386483.html
Copyright © 2011-2022 走看看