在Internet中,企业经过架设各类应用系统来为用户提供各类网络服务,好比Web网站、电子邮件、FTP服务器等。并且大部分都是使用Linux服务器进行搭建的。那么,想要保护这些服务器,过滤非受权的访问,甚至恶意进入内部网络 。就须要使用到——防火墙。安全
防火墙除了硬件防火墙以外,Linux系统的防火墙也十分强大,今天主要认识CentOS 7系统的防火墙的管理工具——firewalld。服务器
不论是Linux系统、Windows系统的防火墙或者是硬件防火墙都是设置不一样网络与网络安全之间的一系列部件的组合,也是不一样安全域之间信息的惟一出(入)口。经过检测、限制并更改跨越防火墙的数据流。尽量地对外屏蔽网络内部的信息、结构和运行状态,且能够有选择的接受外部外部网络的访问。在内外网之间架起一道安全的屏障,以免发生不知情的状况下进入内部网络,对咱们内部网络产生必定的威胁。网络
从传统意义上来讲防火墙分为三类:包过滤、应用代理、状态检测。不管一个防火墙的实现过程有多复杂,说到底都是在这三种技术的基础上进行扩展的。ssh
Linux的防火墙体系主要工做在网络层,属于典型的包过滤防火墙(也称为网络层防火墙)。tcp
包过滤防火墙的工做原理:ide
- 工做在网络层,针对IP数据包;
- 静态的打开端口、具备必定的安全隐患;
- 体如今对包内的IP地址、端口等信息的处理上;
状态检测防火墙的工做原理:工具
- 工做在网络层;
- 动态的打开端口;
应用代理防火墙的工做原理:性能
- 工做在应用层;
Linux系统的防火墙体系基于内核编码实现,既有很是稳定的性能和高效率,也所以得到普遍的应用。Linux系统的防火墙主要有:firewalld、iptables、ebtables。不过在CentOS 7 系统中默认使用firewalld来管理netfilter子系统。网站
- netfilter:指的是Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于“内核态”的防火墙功能体系;
- firewalld:指用于管理Linux防火墙的命令程序,属于“用户态”的防火墙的管理体系。
严格意义上来讲,netfilter才是Linux系统的防火墙,firewalld只是管理netfilter的工具而已!编码
firewalld提供了支持网络区域所定义的网络连接以及接口安全等级的动态防火墙管理工具,支持ipv四、ipv6防火墙以及以太网桥,而且拥有两种配置模式:运行时配置与永久配置。它还支持服务或应用程序直接添加防火墙规则。
firewalld将全部的网络数据流量划分为多个区域,从而简化防火墙管理。根据数据包的源IP地址或传入网络接口等条件,将数据流量转入相应区域的防火墙规则。对于进入系统的数据包,首先检查的就是其源地址。
firewalld数据处理流程:
首先检查的就是其源地址。
- 若源地址关联到特定的区域,则执行该区域所制定的规则;
- 若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所制定的规则;
- 若网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则;
默认区域不是单独的区域,而是执行系统上定义的某个其余区域。默认状况下,默认区域是public,系统管理员能够根据实际状况进行修改。
以上匹配规则,按照前后顺序,第一个匹配的规则胜出(从上往下、找到即停!)
在每一个区域中均可以配置其要打开或者关闭的一系列服务或端口,firewalld的每一个预约义的区域默认都开启一些相应的服务,如图:
传出流量:简单来讲就是访问的资源不是防火墙自己,而是经过防火墙的流量称为传出流量。
在CentOS 7 系统中,可使用三种方式配置防火墙:
- firewall-config图形工具;
- firewall-cmd命令行工具;
- /etc/firewalld/中的配置文件;
一般状况下,不建议直接修改其配置文件!
打开图形化管理工具的两种方式:
[root@localhost ~]# firewall-config
因为图形化简单易懂,因此这里就不详细介绍了!
[root@localhost ~]# systemctl start firewalld //启动firewalld服务 [root@localhost ~]# systemctl enable firewalld //将firewalld服务设置为开机自启动 [root@localhost ~]# systemctl status firewalld //查看firewalld服务状态 [root@localhost ~]# firewall-cmd --state //查看firewalld服务状态 [root@localhost ~]# systemctl stop firewalld //中止firewalld服务 [root@localhost ~]# systemctl disable firewalld //将firewalld服务设置为开机不自动启动
[root@localhost ~]# firewall-cmd --get-zones //显示预约义的区域信息 [root@localhost ~]# firewall-cmd --get-services //显示预约义的服务(服务较多,大部分都是经常使用的,这里就不介绍了) [root@localhost ~]# firewall-cmd --get-icmptypes //显示预约义的ICMP类型
firewall-cmd --get-icmptypes命令执行结果中各种的含义:
- destination-unreachable:目的地址不可达;
- echo-reply:应答回应;
- parameter-problem:参数问题;
- redirect:从新定向;
- router-advertisement:路由器通告;
- router-solicitation:路由器征寻;
- source-quench:源端抑制;
- time-exceeded:超时;
- timestamp-reply:时间戳应答回应;
- timestamp-request:时间戳请求;
区域管理命令的经常使用选项,如图:
[root@localhost ~]# firewall-cmd --get-default-zone //显示当前系统中的默认区域 [root@localhost ~]# firewall-cmd --list-all //显示默认区域的全部规则 [root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33 //显示网络接口ens33对应的区域 [root@localhost ~]# firewall-cmd --zone=internal --change-interface=ens33 The interface is under control of NetworkManager, setting zone to 'internal'. success //将网络接口ens33对应区域改成internal区域 [root@localhost ~]# firewall-cmd --zone=internal --list-interfaces ens33 [root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33 internal //验证 [root@localhost ~]# firewall-cmd --get-active-zones internal interfaces: ens33 //显示全部激活区域
在最新版本firewalld中默认定义了70多种服务供咱们使用,对于每一个网络区域,都可以配置容许访问服务。当须要添加的服务在列表中没有的话,能够添加端口。
区域服务管理的经常使用选项,如图:
[root@localhost ~]# firewall-cmd --list-services dhcpv6-client ssh //显示默认区域容许访问的服务 [root@localhost ~]# firewall-cmd --add-service=http //设置默认区域容许访问http服务 [root@localhost ~]# firewall-cmd --list-services dhcpv6-client ssh http //验证效果 [root@localhost ~]# firewall-cmd --zone=internal --add-port=80/tcp success //在internal区域上容许TCP协议80端口访问 [root@localhost ~]# firewall-cmd --zone=internal --remove-port=443/tcp success //在internal区域上禁止TCP协议443端口访问 [root@localhost ~]# firewall-cmd --list-all --zone=internal internal (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: dhcpv6-client mdns samba-client ssh ports: 80/tcp protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules: //查看指定区域的详细配置
使用firewall-cmd命令行工具备两种配置模式:
- 运行时模式:表示当前内存中运行的防火墙配置,在系统重启或者firewalld服务重启时配置将会失效;
- 永久模式:表示重启firewalld服务或重启系统时,系统将自动的加载防火墙的规则配置,是永久存储在配置文件中;
firewall-cmd命令工具与配置模式相关的三个选项:
- --reload:从新加载防火墙并保持状态信息,即将永久配置应用为运行时配置;
- --permanent:带此选项的命令用于设置永久规则,这些规则只有在从新启动firewalld服务是规则才会生效;若不带此选项,表示用于设置运行时规则;
- --runtime-to-permanent:将当前的运行配置写入规则配置文件中,使其成为永久配置。
关于firewalld防火墙介绍到此结束!
具体配置可参考博文:保证Linux系统安全之配置firewalld防火墙的地址假装及端口转发实例,可跟作!!!