有关firewalld和iptables详细使用的文章

iptables详解

firewalld详解

=====================================华丽的分割线=====================================

1. 认识防火墙

从逻辑上讲防火墙可以分为主机防火墙和网络防护墙。

  主机防火墙:针对个别主机对出站入站的数据包进行过滤。(操作对象为个体)

  网络防火墙:处于网络边缘,针对网络入口进行防护。(操作对象为整体)

从物理上讲防火墙可以分为硬件防火墙和软件防火墙。

  硬件防火墙:通过硬件层面实现防火墙的功能,性能高,成本高。

  软件防火墙:通过应用软件实现防火墙的功能,性能低,成本低。

2. 系统防火墙发展过程

防火墙的发展史就是从墙到链再到表,也是从简单到复杂的过程。

防火墙工具变化如下:

ipfirewall--->ipchains--->iptables-->nftables(正在推广)

  Linux 2.0版内核中:包过滤机制为ipfw,管理工具是ipfwadm。

  Linux 2.2版内核中:包过滤机制为ipchain,管理工具是ipchains。

  Linux 2.4,2.6,3.0+版内核中:包过滤机制为netfilter,管理工具是iptables。

  Linux 3.1(3.13+)版内核中:包过滤机制为netfilter,中间采取daemon动态管理防火墙,管理工具是firewalld。

    # 目前低版本的firewalld通过调用iptables(command),它可以支持老的iptables规则(在firewalld里面叫做直接规则),

    # 同时firewalld兼顾了iptables,ebtables,ip6tables的功能。

3. iptables和nftables

nftables

  nftables诞生于2008年,2013年底合并到Linux内核,从 Linux 3.13起开始作为iptables的替代品提供给用户。

  它是新的数据包分类框架,新的linux防火墙管理程序,旨在替代现存的 {ip,ip6,arp,eb}_tables,它的用户空间管理工具是nft。

由于iptables的一些缺陷,目前正在慢慢过渡用nftables替换iptables,同时由于这个新的框架的兼容性,

所以nftables也支持在这个框架上运行直接iptables这个用户空间的管理工具。

  nftables实现了一组被称为表达式的指令,可通过在寄存器中储存和加载来交换数据。

也就是说,nftables的核心可视为一个虚拟机,nftables的前端工具nft可以利用内核提供的表达式去模拟旧的iptables匹配,

维持兼容性的同时获得更大的灵活性。

  而未来最新的firewalld(0.8.0)默认使用将使用nftables。详情可以看www.firewalld.org

iptables、nftables和firewalld之间的区别与联系

  firewalld同时支持iptables和nftables,未来最新版本(0.8.0)默认将使用nftables。

简单的说firewalld是基于nftfilter防火墙的用户界面工具。而iptables和nftables是命令行工具。

firewalld引入区域的概念,可以动态配置,让防火墙配置及使用变得简便。

  准确的说:iptables(command)的最底层是netfilter,它的用户空间管理工具是iptables

nftables(command)是iptables(command) 的一个替代品并兼容iptables(command),最底层依然是netfilter,它的用户空间管理工具是nft,

同时未来firewalld最新版(0.8.0)也将默认支持nftables(command)。https://firewalld.org/

  iptables会把配置好的防火墙策略交给内核层的netfilter网络过滤器来处理

  firewalld会把配置好的防火墙策略交给内核层的nftables包过滤框架来处理

下图为iptables、firewalld、nftables之间的关系图:

4. centos6.X到centos7.X

centos6.X:防火墙由netfilter和iptables构成。其中iptables用于制定规则,又被称为防火墙的用户态;

  而netfilter实现防火墙的具体功能,又被称为内核态。简单地讲,iptables制定规则,而netfilter执行规则。

centos7.X:防火墙在6.X防火墙的基础之上提出了新的防火墙管理工具,提出了区域的概念,通过区域定义网络链接以及安全等级。

5.怎样学好防火墙的配置?

  1)OSI7层模型以及不同层对应哪些协议必须很熟悉  # 基础必备

  2)TCP/IP三次握手,四次断开的过程,TCP HEADER,状态转换  # 基础必备

  3)常用的服务端口要非常清楚了解。  # 基础必备

  4)常用服务协议的原理,特别是http协议,icmp协议。  # 基础必备

  5)能够熟练的利用tcpdump和wireshark进行抓包并分析,这样会更好  # 拓展

  6)对计算机网络有研究,至少基本路由交换要很熟悉  # 拓展

6、企业中安全配置原则

  尽可能不给服务器配置外网IP,可以通过代理转发或者通过防火墙映射。

  并发不是特别大情况有外网IP,可以开启防火墙服务。

  大并发的情况,不能开iptables,影响性能,利用硬件防火墙提升架构安全。

 
 

Linux下系统防火墙的发展历程和怎样学好防火墙(iptalbes和firewalld)的更多相关文章

  1. Linux下系统时间函数、DST等相关问题总结(转)

    Linux下系统时间函数.DST等相关问题总结 下面这个结构体存储了跟时区相关的位移量(offset)以及是否存在DST等信息,根据所在的时区信息,很容易找到系统时间与UTC时间之间的时区偏移,另外根 ...

  2. Linux下系统如何监控服务器硬件、操作系统、应用服务和业务

    1.Linux监控概述       Linux服务器要保证系统的高可用性,需要实时了解到服务器的硬件.操作系统.应用服务等的运行状况,各项性能指标是否正常,需要使用各种LINUX命令.做到自动化运维就 ...

  3. linux下系统定时任务配置----crontab(mysql定时备份)

    crontab命令用于设置周期性被执行的指令,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任 ...

  4. 从故纸堆里,回顾下Web技术的发展历程

    通过对比这些年的计算机图书来让大家感受下前些年Web技术的发展历程. Web开发框架,目前是Spring Boot+JPA,我正好出过本书,从中大家能感受到现在的技术. <Spring Boot ...

  5. linux下系统编程C环境搭建

    一.系统安装 我使用的是VMware8下的ubuntu12.04,这是培训老师说的,12.04相对来说,比较新,而且是5年长期支持版,不容易过时.对于系统的安装,我不想说很多,只是希望大家主义这几点: ...

  6. linux下系统对于sigsegv错误时的处理

    一般来讲,对非法地址的访问会导致应用程序收到由系统发送的sigsegv信号,默认情况下,函数对于这个信号的处理是退出. 但是为了方便调试,我们可以自己设置处理函数,使用signal函数. 这里比较重要 ...

  7. 标准c库函数与Linux下系统函数库 区别 (即带不带缓冲区的学习)

    我们都知道,C语言在UNIX/Linux系统下有一套系统调用(系统函数),比如文件操作open().close().write().read()等,而标准C语言的库函数中也有一套对文件的操作函数fop ...

  8. Linux下系统监控工具nmon使用

    Mongodb安装在Centos7或以上的版本,对于系统的监控方法如下: 1.从\\10.10.10.1\ShareDoc\User\Zchen\linux系统监控下下载2个工具 nmon16e_mp ...

  9. Linux下系统的定时及延时任务

    一.系统的延时 是临时的.对系统做的任务指定一个时间点.发起的命令是at at    时间点(now+1min)      ## 设定任务实行时间 at>  执行命令               ...

随机推荐

  1. 深入理解java虚拟机笔记Chapter2

    java虚拟机运行时数据区 首先获取一个直观的认识: 程序计数器 线程私有.各条线程之间计数器互不影响,独立存储. 当前线程所执行的字节码行号指示器.字节码解释器工作时通过改变这个计数器值选取下一条需 ...

  2. 『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)

    目录 1.为什么要使用JMeter连接数据库 2.JMeter连接数据库的前提 3.JDBC连接配置组件界面介绍 4.JMeter连接数据库演示 (1)测试计划内包含的元件 (2)测试计划中添加链接数 ...

  3. SpringBoot2 参数管理实践,入参出参与校验

    一.参数管理 在编程系统中,为了能写出良好的代码,会根据是各种设计模式.原则.约束等去规范代码,从而提高代码的可读性.复用性.可修改,实际上个人觉得,如果写出的代码很好,即别人修改也无法破坏原作者的思 ...

  4. 【NX二次开发】Block UI OrientXpress

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  5. JavaScript 中的延迟加载属性模式

    传统上,开发人员在 JavaScript 类中为实例中可能需要的任何数据创建属性.对于在构造函数中随时可用的小块数据来说,这不是问题.但是,如果在实例中可用之前需要计算某些数据,您可能不想预先支付该费 ...

  6. Error in invoking target 'mkldflags ntcontab.o nnfgt.o' of mkdefile '/u01/app/oracle/product/11.2.0

    rpm -ivh cpp-4.4.7-3.el6.x86 64.rpm  --nodeps  --force  (强制安装rpm包)

  7. Java基础-封装和继承

    @ 目录 Java基础知识(封装和继承) 一. 封装 1.1 封装的目的 1.2 封装的好处 1.3 封装的步骤 1.4 封装的例子 1.5 小结 二. 继承 2.1 继承的介绍 2.2 生活中的继承 ...

  8. 『动善时』JMeter基础 — 50、使用JMeter测试WebService接口

    目录 1.什么是WebService 2.WebService和SOAP的关系 3.什么是WSDL 4.测试WebService接口前的准备 (1)如何判断是WebService接口 (2)如何获取W ...

  9. 4、linux32位和64位操作系统的区别

  10. 深入学习Netty(3)——传统AIO编程

    前言 之前已经整理过了BIO.NIO两种I/O的相关博文,每一种I/O都有其特点,但相对开发而言,肯定是要又高效又简单的I/O编程才是真正需要的,在之前的NIO博文(深入学习Netty(2)--传统N ...