• centos7的防火墙(firewalld)


    Centos7中默认将原来的防火墙iptables升级为了firewalld,firewalld跟iptables比起来至少有两大好处:
      1、firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;
      2、firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。

    firewalld和iptables的关系

      FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项。它也支持允许服务或者应用程序直接添加防火墙规则的接口。 以前的 system-config-firewall/lokkit 防火墙模型是静态的,每次修改都要求防火墙完全重启。这个过程包括内核 netfilter 防火墙模块的卸载和新配置所需模块的装载等。而模块的卸载将会破坏状态防火墙和确立的连接。

      firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结 构以及使用方法不一样罢了。

    firewalld的结构
      我们这里所说的结构并不是firewalld软件的结构,而是配置文件的结构。
      在具体介绍firewalld配置文件结构之前学生先来给大家介绍一下firewalld的配置模式,firewalld的配置模式设计的非常巧妙,而且这种设计思路也非常值得我们借鉴和学习。

    firewalld的配置模式

      firewalld的配置文件以xml格式为主(主配置文件firewalld.conf例外),他们有两个存储位置

      用户配置目录 /etc/firewalld/

      系统配置目录 /usr/lib/firewalld/services

      使用时的规则是这样的:当需要一个文件时firewalld会首先到第一个目录中去查找,如果可以找到,那么就直接使用,否则会继续到第二个目录中查找。

    文件和目录的作用

      firewalld的配置文件结构非常简单,主要有两个文件和三个目录:
      文件:firewalld.conf、lockdown-whitelist.xml
      目录:zones、services、icmptypes
      另外,如果使用到direct,还会有一个direct.xml文件。我们要注意,在保存默认配置的目录“/usr/lib/firewalld/”中只有我们这里所说的目录,而没有firewalld.conf、lockdown-whitelist.xml和direct.xml这三个文件,也就是说这三个文件只存在于“/etc/firewalld/”目录中。

    • firewalld.conf:firewalld的主配置文件,是键值对的格式,不过非常简单,只有五个配置项;
    • DefaultZone:默认使用的zone,默认值为public;
    • CleanupOnExit:这个配置项非常容易理解,他表示当退出firewalld后是否清除防火墙规则,默认值为yes;
    • Lockdown: 这个选项跟D-BUS接口操作firewalld有关,firewalld可以让别的程序通过D-BUS接口直接操作,当Lockdown设置为yes的 时候就可以通过lockdown-whitelist.xml文件来限制都有哪些程序可以对其进行操作,而当设置为no的时候就没有限制了,默认值为 no;
    • IPv6_rpfilter:其功能类似于rp_filter,只不过是针对ipv6版的,其作用是判断所接受到的包是否是伪造的,检查方式主要是通过路由表中的路由条目实现的,更多详细的信息大家可以搜索uRPF相关的资料,这里的默认值为yes。
    • lockdown-whitelist.xml:当Lockdown为yes的时候用来限制可以通过D-BUS接口操作firewalld的程序
    • direct.xml:通过这个文件可以直接使用防火墙的过滤规则,这对于熟悉iptables的用户来说会非常顺手,另外也对从原来的iptables到firewalld的迁移提供了一条绿色通道
    • zones:保存zone配置文件
    • services:保存service配置文件
    • icmptypes:保存和icmp类型相关的配置文件
    • zone
      firewalld默认提供了九个zone配置文件:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml,他们都保存在“/usr/lib /firewalld/zones/”目录下。

    常用命令

    运行、停止、禁用firewalld

    • service firewalld restart   重启
    • service firewalld start    开启
    • service firewalld stop    关闭
    • systemctl stop firewalld   禁用

    查看firewall服务状态

    • systemctl status firewall

    • firewall-cmd --state

    查看防火墙规则

    • firewall-cmd --list-all

    配置firewalld

    • 查看版本: firewall-cmd --version

    • 查看帮助: firewall-cmd --help

    查看设置

    • 显示状态:** firewall-cmd --state**

    • 查看区域信息: 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 --reload

    • firewall-cmd --complete-reload
      两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务

    • firewall-cmd --zone=public --add-interface=eth0
      将接口添加到区域,默认接口都在public
      永久生效再加上 --permanent 然后reload防火墙

    • firewall-cmd --set-default-zone=public
      设置默认接口区域

    立即生效无需重启

    设置端口

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

    • 加入一个端口到区域:
      firewall-cmd --zone=dmz --add-port=80/tcp
      若要永久生效再加上 --permanent

    例子
    开启80端口

    firewall-cmd --zone=public --add-port=80/tcp --permanent
    
    # 	出现success表明添加成功
    	--zone #作用域
    	--add-port=80/tcp  #添加端口,格式为:端口/通讯协议
    	--permanent   #永久生效,没有此参数重启后失效
    

    重启防火墙

    systemctl restart firewalld.service
    
    • 打开一个服务,类似于将端口可视化,服务需要在配置文件中添加,/etc/firewalld 目录下有services文件夹
      firewall-cmd --zone=work --add-service=smtp

    • 移除服务
      firewall-cmd --zone=work --remove-service=smtp

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

    CentOS切换为iptables防火墙

      切换到iptables首先应该关掉默认的firewalld,然后安装iptables服务。

    -** 关闭firewall**:

    service firewalld stop
    systemctl disable firewalld.service #禁止firewall开机启动
    
    • 安装iptables防火墙
    yum install iptables-services #安装
    
    • 编辑iptables防火墙配置
    vi /etc/sysconfig/iptables #编辑防火墙配置文件
    
    • 下边是一个完整的配置文件:
    Firewall configuration written by system-config-firewall
    
    Manual customization of this file is not recommended.
    
    *filter
    
    :INPUT ACCEPT [0:0]
    
    :FORWARD ACCEPT [0:0]
    
    :OUTPUT ACCEPT [0:0]
    
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    -A INPUT -p icmp -j ACCEPT
    
    -A INPUT -i lo -j ACCEPT
    
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
    
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    
    COMMIT
    

    :wq! #保存退出

    service iptables start #开启
    systemctl enable iptables.service #设置防火墙开机启动
    
    
  • 相关阅读:
    使非标准 Win32 控件或自画控件也具有 Windows XP 的界面风格
    MapInfo格式到ArcInfo格式的转换
    DICOM医学图像文件格式
    香港身份证
    Cheap Tricks: Let's Talk About METADATA TypeLibs
    ASP中使用ADO访问数据源
    DirectX 9 编程 DirectX窗口
    3DES Source Code
    OLEDB Resource(Session) Pooling (在Ado开发中使用连接池)
    《仙剑奇侠传4》仙剑问答全答案
  • 原文地址:https://www.cnblogs.com/yangliguo/p/7782915.html
Copyright © 2020-2023  润新知