zoukankan      html  css  js  c++  java
  • linux中级之netfilter防火墙(firewalld)

    一、firewalld主要概念

    dynamic firewall daemon。支持ipv4ipv6Centos7中默认将防火墙从iptables升级为了firewalldfirewalld相对于iptables主要的优点有:

    1firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;

    2firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。

    1、过滤规则集合:zone

    一个zone就是一套过滤规则,数据包必须要经过某个zone才能入站或出站。不同zone中规则粒度粗细、安全强度都不尽相同。可以把zone看作是一个个出站或入站必须经过的安检门,有的严格、有的宽松、有的检查的细致、有的检查的粗略。

    每个zone单独对应一个xml配置文件,文件名为<zone名称>.xml。自定义zone只需要添加一个<zone名称>.xml文件,然后在其中添加过滤规则即可。

    每个zone都有一个默认的处理行为,包括:default(省缺),   ACCEPT,   %%REJECT%%,  DROP

    firewalld提供了9zone

    drop:任何流入的包都被丢弃,不做任何响应。只允许流出的数据包。

    block:任何流入的包都被拒绝,返回icmp-host-prohibited报文(ipv4)icmp6-adm-prohibited报文(ipv6)。只允许由该系统初始化的网络连接

    public默认的zone。部分公开,不信任网络中其他计算机,只放行特定服务。

    external:只允许选中的服务通过,用在路由器等启用伪装的外部网络。认为网路中其他计算器不可信。

    dmz:允许隔离区(dmz)中的电脑有限的被外界网络访问,只允许选中的服务通过。

    work:用在工作网络。你信任网络中的大多数计算机不会影响你的计算机,只允许选中的服务通过。

    home:用在家庭网络。信任网络中的大多数计算机,只允许选中的服务通过。

    internal:用在内部网络。信任网络中的大多数计算机,只允许选中的服务通过。

    trusted:允许所有网络连接,即使没有开放任何服务,那么使用此zone的流量照样通过(一路绿灯)。

    2service

    一个service中可以配置特定的端口(将端口和service的名字关联)。zone中加入service规则就等效于直接加入了port规则,但是使用service更容易管理和理解。

    定义service的方式:添加<service名称>.xml文件,在其中加入要关联的端口即可

    3、过滤规则

    source:根据数据包源地址过滤,相同的source只能在一个zone中配置。

    interface:根据接收数据包的网卡过滤

    service:根据服务名过滤(实际是查找服务关联的端口,根据端口过滤),一个service可以配置到多个zone中。

    port:根据端口过滤

    icmp-blockicmp报文过滤,可按照icmp类型设置

    masqueradeip地址伪装,即将接收到的请求的源地址设置为转发请求网卡的地址(路由器的工作原理)。

    forward-port:端口转发

    rule:自定义规则,与itables配置接近。rule结合--timeout可以实现一些有用的功能,比如可以写个自动化脚本,发现异常连接时添加一条rule将相应地址drop掉,并使用--timeout设置时间段,过了之后再自动开放。

    4、过滤规则优先级

    source:源地址

    interface:接收请求的网卡

    firewalld.conf中配置的默认zone

    二、firewalld配置文件

    1firewalld配置方式

    firewall-configGUI工具

    firewall-cmd:命令行工具

    直接编辑xml文件:编辑后还需要reload才生效

    2、配置文件存储位置

    firewalld的配置文件以xml为主(主配置文件firewalld.conf除外),有两个存储位置:

    1/etc/firewalld/:存放修改过的配置(优先查找,找不到再找默认的配置)

    2/usr/lib/firewalld/:默认的配置

    修改配置的话只需要将/usr/lib/firewalld中的配置文件复制到/etc/firewalld中修改。恢复配置的话直接删除/etc/firewalld中的配置文件即可。

    3、配置文件结构

    1firewalld.conf:主配置文件,键值对格式

    DefaultZone:默认使用的zone,默认值为public

    MinimalMark:标记的最小值,默认为100

    CleanupOnExit:退出firewalld后是否清除防火墙规则,默认为yes

    Lockdown:是否其他程序允许通过D-BUS接口操作,使用lockdown-whitelist.xml限制程序,默认为no

    IPv6_rpfilter:类似rp_filter,判断接收的包是否是伪造的(通过路由表中的路由条目,查找uRPF),默认为yes    

    2lockdown-whitelist.xml

    3direct.xmldirect功能,直接使用防火墙的过滤规则,便于iptables的迁移

    4zones/zone配置文件

    5services/service配置文件

    6icmptypes/icmp类型相关的配置文件

    三、firewalld应用

    1firewalld的基本使用

    启动: systemctl start firewalld

    关闭: systemctl stop firewalld

    查看状态: systemctl status firewalld

    开机禁用  systemctl disable firewalld

    开机启用  systemctl enable firewalld

    2systemctlCentOS7的服务管理工具中主要的工具,它融合之前servicechkconfig的功能于一体。

    启动一个服务:systemctl start firewalld.service

    关闭一个服务:systemctl stop firewalld.service

    重启一个服务:systemctl restart firewalld.service

    显示一个服务的状态:systemctl status firewalld.service

    在开机时启用一个服务:systemctl enable firewalld.service

    在开机时禁用一个服务:systemctl disable firewalld.service

    查看服务是否开机启动:systemctl is-enabled firewalld.service

    查看已启动的服务列表:systemctl list-unit-files|grep enabled

    查看启动失败的服务列表:systemctl --failed

    3、配置firewalld-cmd

    查看版本: firewall-cmd --version

    查看帮助: firewall-cmd --help

    显示状态: firewall-cmd --state

    查看所有打开的端口: firewall-cmd --zone=public --list-ports

    更新防火墙规则: firewall-cmd --reload

    查看区域信息:  firewall-cmd --get-active-zones

    查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0

    拒绝所有包:firewall-cmd --panic-on

    取消拒绝状态: firewall-cmd --panic-off

    查看是否拒绝: firewall-cmd --query-panic

    添加:firewall-cmd --zone=public --add-port=80/tcp --permanent--permanent永久生效,没有此参数重启后失效)

    重新载入:firewall-cmd --reload

    查看:firewall-cmd --zone= public --query-port=80/tcp

    删除:firewall-cmd --zone= public --remove-port=80/tcp --permanent

  • 相关阅读:
    jmeter上做分布压测
    jpg,jpeg,bmp,png,gif图片格式区别
    jmeter的命令行进行压力测试
    Java8新特性
    02-Git
    01-Maven
    Java-集合
    Java-I/O框架
    mongodb安装配置
    Nginx常见错误及处理方法
  • 原文地址:https://www.cnblogs.com/renyz/p/11380891.html
Copyright © 2011-2022 走看看