防火墙是指什么什么?小白想了解基础的知识点。

一:防火墙基础介绍防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。Linux中最常见的防火墙:iptables,firewalld二:iptables 的历史以及工作原理1、iptables的发展:iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的)。当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,它叫做iptables,可以将规则组成一个列表,实现绝对详细的访问控制功能。他们都是工作在用户空间中,定义规则的工具,本身并不算是防火墙。它们定义的规则,可以让在内核空间当中的netfilter来读取,并且实现让防火墙工作。而放入内核的地方必须要是特定的位置,必须是tcp/ip的协议栈经过的地方。而这个tcp/ip协议栈必须经过的地方,可以实现读取规则的地方就叫做 netfilter.(网络过滤器)
作者一共在内核空间中选择了5个位置1.内核空间中:从一个网络接口进来,到另一个网络接口去的2.数据包从内核流入用户空间的3.数据包从用户空间流出的4.进入/离开本机的外网接口5.进入/离开本机的内网接口
2、iptables简介netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。Nefilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:网络地址转换(NetworkAddressTranslate)数据包内容修改数据包过滤3、iptables的工作机制从上面的发展我们知道了作者选择了5个位置,来作为控制的地方,但是你有没有发现,其实前三个位置已经基本上能将路径彻底封锁了,但是为什么已经在进出的口设置了关卡之后还要在内部卡呢? 由于数据包尚未进行路由决策,还不知道数据要走向哪里,所以在进出口是没办法实现数据过滤的。所以要在内核空间里设置转发的关卡,进入用户空间的关卡,从用户空间出去的关卡。那么,既然他们没什么用,那我们为什么还要放置他们呢?因为我们在做NAT和DNAT的时候,目标地址转换必须在路由之前转换。所以我们必须在外网而后内网的接口处进行设置关卡。
这五个位置也被称为五个钩子函数(hook functions),也叫五个规则链。1.PREROUTING (路由前)2.INPUT (数据包流入口) :负责过滤进入主机的数据包3.FORWARD (转发管卡) :负责转发流经主机的数据包4.OUTPUT(数据包出口) :负责处理从主机发出去的数据包5.POSTROUTING(路由后)
这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。三:iptables基础1、规则(rule)规则(rule)就是网络管理员预定的条件,规则一般定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(TCP、UDP、ICMP)和服务类型(如HTTP、FTP、SMTP)。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(ACCEPT)、拒绝(REJECT)、或丢弃(DROP)等。配置防火墙的主要规则就是添加、修改和删除这些规则。
处理动作在iptables中被称为target动作也可以分为基本动作和扩展动作。此处列出一些常用的动作。ACCEPT:允许数据包通过。DROP:直接丢弃数据包,不给任何回应信息。REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息, 客户端刚请求就会收到拒绝的信息。SNAT:源地址转换,解决内网用户同一个公网地址上网的问题。MASQUERADE:是SNAT的-种特殊形式,适用于动态的、临时会变的ip上。DNAT:目标地址转换。REDIRECT:在本机做端口映射。LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配。
2、链(chains)链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中的第一条规则开始检查,看该数据包是否满足规则所定义的条件,如果满足,系统就会根据该条规则所定义的方法处理该数据包, 否则iptables将继续检查下一条规则。如果该数据包不符合链中任何一何况规则,iptables就会根据该链预先定义的默认策略来处理该数据包。如下图所示:3、iptables的规则表和链表(tables):提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。链(chains):是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一 条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。iptables采用“表”和“链”的分层结构,在Linux中现在是四张表五个链。下面罗列一下这四张表和五个链
规则表:1)filter表——三个链:INPUT、FORWARD、OUTPUT作用:过滤数据包内核模块:iptables_filter.2)Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT作用:用于网络地址转换(IP、端口)内核模块:iptable_nat3)Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle(此表虽麻烦,设置策略时几乎都不会用到mangle表。)4)Raw表——两个链:OUTPUT、PREROUTING作用:决定数据包是否被状态跟踪机制处理内核模块:iptable_raw
规则链:1)INPUT——进来的数据包应用此规则链中的策略2)OUTPUT——外出的数据包应用此规则链中的策略3)FORWARD——转发数据包时应用此规则链中的策略4)PREROUTING——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)5)POSTROUTING——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)
4、iptables传输数据包的过程
传输数据包报文的流向:到本机某进程的报文: PREROUTING --> INPUT由本机转发的报文:PREROUTING --> FORWARD --> POSTROUTING由本机的某进程发出报文(通常为响应报文) : OUTPUT --> POSTROUTING
当一个数据包进入网卡时,它首先进入prepouting链,内核根据数据包目的IP判断是否需要转送出去。如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。5、管理和设置iptables规则:
1)命令选项(command)命令选项用于指定iptables的执行方式,包括插入规则、删除规则和添加规则等:-P 或–policy 定义默认策略-L 或–list 查看iptables规则列表-A 或–append 在规则列表的最后增加一条规则-I 或–insert 在指定的位置插入一条规则-D 或–delete 在规则列表中删除一条规则-R 或–replace 替换规则列表中的某条规则-F 或–flush 删除表中的所有规则-Z 或–zero 将表中所有链的计数和流量计数器都清零``2)匹配选项(parameter)匹配选项指定数据包与规则匹配所应具有的特征,包括源地址、目的地址、传输协议(如TCP、UDP、ICMP)和端口号(如80、21、110)等:-i 或–in-interface 指定数据包是从哪个网络接口进入-o 或–out-interface 指定数据包是从哪个网络接口输出-p 或–porto 指定数据包匹配的协议,如TCP、UDP-s 或–source 指定数据包匹配的源地址-sport 指定数据包匹配的源端口号,可以使用“起始端口号:结束端口号”的格式指定一个范围的端口-d 或–destination 指定数据包匹配的目标地址-dport 指定数据包匹配的目标端口号,可以使用“起始端口号:结束端口号”的格式指定一个范围的端口
四:firewalld1、firewalld简介CentOS 7默认的防火墙管理工具,取代之前的iptables防火墙,属于用户态。firewalld和iptables内部结构都指向netfilter这个强大的网络过滤子系统,以实现包过滤防火墙功能。支持动态更新、加入防火墙zone概念,支持IPv4和IPv6地址。2、firewalld与iptables区别名称firewalldiptables配置文件/usr/lib/firewalld/和/etc/firewalld//etc/sysconfig/iptables对规则的修改不需要全部刷新策略,不丢失现行连接需要全部刷新策略,丢失连接防火墙类型动态防火墙静态防火墙3、firewalld的区域firewalld将所有的网络数据流量划分为多个区域,从而简化防火墙管理。根据数据包的源IP地址或传入网络接口等条件,将数据流量转入相应区域的防火墙规则。对于进入系统的数据包,首先检查的就是其源地址。区域介绍:区域默认策略规则trusted允许所有的数据包home拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、mdns、ipp-client、amba-client 与 dhcpv6-client 服务相关,则允许流量internal等同于 home 区域work拒绝流入的流量,除非与流出的流量数相关;而如果流量与 ssh、ipp-client 与 dhcv6-client 服务相关则允许流量public拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、dhcpv6-client 服务 相关则允许流量external拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量dmz拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量block拒绝流入的流量,除非与流出的流量相关drop拒绝流入的流量,除非与流出的流量相关
数据处理流程:检查数据来源的源地址
若源地址关联到特定的区域,则执行该区域所指定的规则若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所指定的规则若网络接口未关联到特定的区域,则使用默认区域并执行该区域所指定的规则4、终端管理工具 firewall-cmdfirewall-cmd 是 firewalld 防火墙配置管理工具的 CLI(命令行界面)版本。参数作用–get-default-zone查询默认的区域名称–set-default-zone=<区域名称>设置默认的区域,使其永久生效–get-zones显示可用的区域–get-services显示预先定义的服务–get-active-zones显示当前正在使用的区域与网卡名称–add-source=将源自此 IP 或子网的流量导向指定的区域–remove-source=不再将源自此 IP 或子网的流量导向某个指定区域–add-interface=<网卡名称>将源自该网卡的所有流量都导向某个指定区域–change-interface=<网卡名称>将某个网卡与区域进行关联–list-all显示当前区域的网卡配置参数、资源、端口以及服务等信息–list-all-zones显示所有区域的网卡配置参数、资源、端口以及服务等信息–add-service=<服务名>设置默认区域允许该服务的流量–add-port=<端口号/协议>设置默认区域允许该端口的流量–remove-service=<服务名>设置默认区域不再允许该服务的流量–remove-port=<端口号/协议>设置默认区域不再允许该端口的流量–reload让“永久生效”的配置规则立即生效,并覆盖当前的配置规则–panic-on开启应急状况模式–panic-off关闭应急状况模式5、终端管理工具 firewall-cmd的使用查询操作[ 查看当前所使用的区域]firewall-cmd --get-default-zone[ 查看指定网卡在firewalld服务中的区域]firewall-cmd --get-zone-of-interface=网卡名[查询指定服务在指定区域下当前是否允许请求服务协议的流量]firewall-cmd --zone=区域 --query-service=服务名[查看指定服务在指定区域下当前的端口所有状态]firewall-cmd --zone=区域 --list-ports[查看指定区域下当前所有状态]firewall-cmd --zone=区域 --list-all配置策略[修改指定网卡内使用的永久模式区域、系统重启后生效]firewall-cmd --permanent --zone=区域 --change-interface=网卡名称[修改当前区域修改成指定区域]firewall-cmd --set-default-zone=区域[修改指定服务在指定区域下当前允许协议流量访问、立即生效、重启后失效]firewall-cmd --zone=区域 --add-service=服务名[修改指定服务在指定区域下永久允许协议流量访问、重启后生效]firewall-cmd --permanent --zone=区域 --add-service=服务名[修改指定服务再指定区域下当前拒绝协议流量访问、立即生效、重启后失效]firewall-cmd --zone=区域 --remove-service=服务名[修改指定服务再指定区域下永久拒绝协议流量访问、重启生效]firewall-cmd --permanent --zone=区域 --remove-service=服务名[允许指定端口再指定区域下当前允许访问、立即生效]firewall-cmd --zone=区域 --add-port=端口号/tcp[允许指定端口再指定区域下永久允许访问、重启生效]firewall-cmd --permanent --zone=区域 --add-port=端口号/tcp[把访问指定源端口再指定区域下临时转发到指定目标端口、立即生效]firewall-cmd --zone=区域 --add-forward-port=port=源端口:proto=tcp:toport=目标端口:toaddr=目标IP地址[把访问指定源端口再指定区域下永久转发到指定目标端口、重启生效]firewall-cmd --permanent --zone=区域 --add-forward-port=port=源端口:proto=tcp:toport=目标端口:toaddr=目标IP地址[指定源端口再指定区域下临时转发到目标网段端口、立即生效]firewall-cmd --zone=区域 --add-rich-rule 'rule family=“ipv4” source address=“网段/掩码位” forward-port port=“源端口” protocol=“tcp” to-port=“目标端口”[把指定源端口再指定区域下永久转发到目标网段端口、重启生效]firewall-cmd --permanent --zone=区域 --add-rich-rule ‘rule family=“ipv4” source address=“网段/掩码位” forward-port port=“源端口” protocol=“tcp” to-port=“目标端口”’[指定区域下临时禁用指定IP地址的访问、accept 为允许]firewall-cmd --zone=区域 --add-rich-rule=‘rule family=ipv4 source address=“IP地址” reject’[指定区域下永久禁用指定IP地址的访问、重启生效、accept 为允许]firewall-cmd --permanent --zone=区域 --add-rich-rule=‘rule family=“ipv4” source address=“IP地址” reject’[指定区域下指定服务临时拒绝一个网段访问、适用于单个IP、accept 为允许]firewall-cmd --zone=区域 --add-rich-rule=“rule family=“ipv4” source address=“网段/掩码位” service name=“服务名” reject”[指定区域下指定服务永久拒绝一个网段访问、重启生效、适用于单个IP、accept 为允许]firewall-cmd --permanent --zone=区域 --add-rich-rule=“rule family=“ipv4” source address=“网段/掩码位” service name=“服务名” reject”[指定区域下指定端口临时拒绝一个网段访问、适用于单个IP、accept 为允许]firewall-cmd --zone=区域 --add-rich-rule=“rule family=“ipv4” source address=“网段/掩码位” port protocol=“tcp” port=“端口号” reject”[指定区域下指定端口永久拒绝一个网段访问、重启生效、适用于单个IP、accept 为允许]firewall-cmd --permanent --zone=区域 --add-rich-rule=“rule family=“ipv4” source address=“网段/掩码位” port protocol=“tcp” port=“端口号” reject”其他操作[启动/关闭 firewalld 防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时请慎用)]firewall-cmd --panic-onfirewall-cmd --panic-off[保存设置、可立即生效permanent配置]firewall-cmd --reload[删除操作、将参数签的 add 改为 remove]firewall-cmd … --zone=区域 --remove-………
本文参考:
朱双印个人日志—iptables详解iptables防火墙规则使用详解LinSenGeGe—Linux Firewalld 基础实例项思凯—Linux firewalld 防火墙}

我要回帖

更多关于 防火墙是指什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信