CentOS的防火墙介绍

10.12 firewalld和netfilter

netfilter和firewalld都是CentOS版本的防火墙,CentOS7以前的防火墙为netfilter,CentOS7的防火墙为firewalld。服务器

下面是关于防火墙的关闭和开启方法:网络

而后就可使用以前版本的iptables了。ssh

CentOS默认设有iptables规则,但对于咱们来讲没有用,反而会形成某些影响,因此咱们先清除规则,而后把清除后的规则保存一下:tcp

保存防火墙规则的文件:工具


10.13 netfilter5表5链介绍

filter表主要用于过滤包,是系统预设的表。该表内建3个链:INPUT、OUTPUT以及FORWARD。spa

INPUT链做用于进入本机的包,OUTPUT链做用于本机送出的包,FORWARD链做用于那些跟本机无关的包。3d

 

nat表主要用于网络地址转换,它也有3个链。xml

PREROUTING链的做用是在包刚刚到达防火墙时改变它的目的地址(若是有须要的话),OUTPUT链的做用是改变本地产生的包的目的地址,POSTROUTING链的做用是在包即将离开防火墙时改变其源地址。blog

 

mangle表主要用于给数据包作标记,而后根据标记去操做相应的包。接口

 

raw表能够实现不追踪某些数据包,默认系统的数据包都会被追踪,但追踪势必消耗必定的资源,因此能够用raw表来指定某些端口的包不被追踪。

 

security表在CentOS6中是没有的,用于强制访问控制(MAC)的规则。

 

netfilter的5个链

PREROUTING:数据包进入路由表以前。

INPUT:经过路由表后目的地为本机。

FORWARDING:经过路由表后,目的地不为本机。

OUTPUT:由本机产生,向外转发。

POSTROUTING:发送到网卡接口以前。


10.14 iptables语法

一、查看规则以及清除规则:

-t后面跟表名,-nvL表示查看该表的规则,其中,-n表示不针对IP反解析主机名,-L表示列出,-v表示列出详细信息。若是不加-t,则打印filter表的相关信息:

-F表示把全部规则所有清除,若是不加-t指定表,默认只清除filter表的规则:

-Z表示把包以及流量计数器置零:

二、增长/删除一条规则:

没有加-t,因此针对的是filter表。这条规则中各个选项的做用以下:

-A/-D:表示增长/删除一条规则。

-I:表示插入一条规则,等同于-A。

-p:表示指定协议,能够是tcp、udp或者icmp。

--dport:跟-p一块儿使用,表示指定目标端口。

--sport:跟-p一块儿使用,表示指定目标端口。

-s:表示指定源IP(能够是一个IP段)。

-d:表示指定目的IP(能够是一个IP段)。

-j:后面跟动做,其中ACCEPT表示容许包,DROP表示丢掉包,REJECT表示拒绝包。

-i:表示指定网卡。


10.15 iptables filter表案例

#iptables -I -s 1.1.1.1 -j DROP 插入一条规则,把来处1.1.1.1的全部数据包丢掉。

#iptables -I -s 1.1.1.1 -j DROP 删除刚才插入的规则。

#iptables -I INPUT -s 2.2.2.2 -p tcp --dport 80 -j DROP 把来处2.2.2.2而且是TCP协议到本机80端口的数据包丢掉。(--dport/--sport必须和-p选项一块儿使用,不然会出错)

#iptables -I OUTPUT -p tcp --dport 22 -d 10.0.1.14 -j DROP 把发送到10.0.1.14的22端口的数据包丢掉。

把来处192.168.1.0/24这个网段且做用在eth0上的包放行:

有时候服务器上的iptables过多了,想删除某一条规则,但又不容易掌握建立时的规则,这时候有一种比较简单的方法,先查看iptables规则:

而后删除某一条规则

 


10.16/10.17/10.18 iptables nat表应用

Linux的iptables功能是很是强大的,好比,路由器的功能其实就是由Linux的iptables实现的,而iptables又是经过nat表做用而实现的。

假设咱们的机器上有两块网卡eth0和eth1,其中eth0的IP为10.0.2.68,eth1的IP为192.168.1.1。eth0链接了因特网,但eth1没有链接,如今有另外一台机器(193.168.1.2)和eth1是互通的,那么如何设置才能让链接eth1的这台机器链接因特网,从而和10.0.2.68互通呢?方法以下:

第一个命令的目的是打开路由转发功能,不然没法实现咱们的应用,第二个命令则是iptables对nat表作了一个IP转发的操做。

-O选项后面跟设备名,表示出口的网卡;MASQUERADE表示假装。

 

10.19 iptables规则备份和恢复

保存和备份iptables规则

设定的防火墙规则只保存在内存中,并无保存到某一个文件中。也就是说,当系统重启后,以前设定的规则就没有了,因此设定好规则后要先保存下好,命令以下:

它会提示防火墙规则保存在/etc/sysconfig/iptables文件内,这个文件就是iptables的配置文件。之后若是遇到备份防火墙规则的任务,只要复制一份这个文件的副本便可。

有时须要清除防火墙的全部规则,使用命令iptables -F 固然能够实现,但最好的办法仍是中止 防火墙服务:


10.20 firewalld的9个zone

firewalld是CentOS7系统的防火墙工具。

在操做firewalld以前,咱们先关闭iptables服务,而后再开启firewalld服务:

firewalld有两个基础概念,分别是zone和service,每个zone里面有不一样的iptables规则,默认一共有9个zone,而CentOS7默认的zone为public。获取系统全部的zone,命令以下:

查看系统默认的zone:

firewalld的9个zone:

drop(丢弃):任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络链接。

block(限制):任何接收的网络链接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒绝。

pubilc(公共):在公共区域内使用,不能相信网络内的其余计算机不会对你的计算机形成伤害,只能接收通过选取的链接。

external(外部):特别是为路由器启用了假装功能的外部网。你不能信任来自网络的其余计算机,不能相信它们不会对你的计算机形成危害,只能接收通过选择的链接。

dmz(非军事区):用于你的非军事区内的计算机,此区域内可公开访问,能够有限地进入你的内部网络,仅仅接收通过选择的链接。

work(工做):用于工做区。你能够基本相信网络内的其余计算机不会危害你的计算机。仅仅接收通过选择的链接。

home(家庭):用于家庭网络。你能够基本信任网络内的其余计算机不会危害你的计算机。仅仅接收通过选择的链接。

internal(内部):用于内部网络。你能够基本信任网络内的其余计算机不会危害你的计算机。仅仅接收通过选择的链接。

trusted(信任):可接受全部的网络链接。


10.21 firewalld关于zone的操做

关于zone的命令:


10.22 firewalld关于service的操做

之因此有9个zone,是由于每个zone里面都使用了不一样的service,而service就是针对一个服务(端口)作的iptables规则。

列出当前系统全部的service:

这些service都是由一个个配置文件定义的,配置文件的模板在/usr/lib/firewalld/services/目录下,真正生效的配置在/etc/firewalld/services目录下面(默认为空):

每一个zone里面都有不一样的service,那如何查看一个zone下面有哪些service呢?

一个zone下面有某个service,意味着这个service是被信任的。好比,当前zone下面有ssh,那么ssh服务端口(22)是放行的。咱们给一个zone添加一个service:

对于每一个zone来讲,都有本身的配置文件,能够查看目录/usr/lib/firewalld/zones/下面对应的文件,这些就是zone的配置文件:

上面的例子能够在一个zone里面增长一个service,但这种方法仅仅在内存中生效,并无修改配置文件,若是想修改配置文件,须要加一个选项:

一旦更改了某个zone的配置文件,则会在/etc/firewalld/zones/目录下面生成对应zone的配置文件(.xml后缀的文件),其实这个目录下面的配置文件才是真正的配置文件。

相关文章
相关标签/搜索