防火墙firewall:将内网区域与外部不安全网络区域隔离开来。内部网络和外部网络之间的所有网络数据流都必须经过防火墙。
防火墙设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间的,是不同网络或网络安全域之间信息的唯一出入口,通过监测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况,有选择地接受外部访问,对内部强化设备监管、控制对服务器与外部网络的访问,在被保护网络和外部网络之间架起一道屏障,以防止发生不可预测的、潜在的破坏性侵入。防火墙作用:
1.强化内部网络的安全性
防火墙可以限制非法用户,比如防止黑客、网络破坏者等进入内部网络,禁止存在安全脆弱性的服务和未授权的通信进出网络,并抗击来自各种路线的攻击。对网络存取和访问进行记录、监控作为单一的网络接入点,所有进出信息都必须通过防火墙 。
2. 限定内部用户访问特殊站点
防火墙通过用户身份认证来确定合法用户。防火墙通过事先确定的完全检查策略,来决定内部用户可以使用哪些服务或网站。
3. 限制暴露用户点,防止内部攻击
利用防火墙对内部网络的划分,可实现网络中网段的隔离,防止影响一个网段的问题通过整个网络传播,从而限制了局部重点或敏感网络安全问题对全局网络造成的影响,同时,保护一个网段不受来自网络内部其它网段的攻击 [6] 。
4. 网络地址转换(NAT,Network Address Translation)
防火墙可以作为部署NAT的逻辑地址。
5. 虚拟专用网(VPN,Virtual Private Network)
防火墙还支持具有Internet服务特性的企业内部网络技术体系VPN。
保护对象上的分类:
主机防火墙:针对于单个主机进行防护,是运行在主机上的,主机防火墙可以阻止未授权用户通过网络访问计算机来保护您的计算机,Windows和Linux都有自带的防火墙。
网络防火墙:往往部署于网络边界,对流入以及流出的流量进行过滤
网络防火墙从产品形态来说可以分为软件防火墙和硬件防火墙:
硬件防火墙:拥有经过特别设计的硬件及芯片,性能高、成本高
软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低、成本低
防火墙通常使用的安全控制手段主要有包过滤、状态检测、代理服务等。
防火墙的作用是防止不希望的、 未授权的通信进出被保护的网络。
用一个防守城堡的比方:
入城检查:入侵者想要进入一座城,它有多种方式,打扮成各种方式入城,例如,假口令、假令牌,伪装等。所以要防止这种可疑的人员入城的,另外对于城内百姓,也是禁止百姓靠近城内的主要防御设施。
出城监视:同时为了更好保护城内百姓,守城队当然还需要打探城外的动向,了解到那些地方安全,那些地方有危险,然后规定普通百姓想要出城,有一些地方能去,有些地方有危险不能去。
防火墙有以下两种之一的默认配置:
(一)拒绝所有的通信。在这种情况下,内外的通信完全被阻断,是最安全但也最不适用的形式。
(二)允许所有的通信。在这种情况下,内外可以进行无限制的通信,防火墙好象不存在。
对于安全性要求比较高的防火墙,一般采用拒绝所有通信作为默认设置。一旦安装了防火墙,为了授予防火墙内的用户访问他们的被授权的系统,则需要打根据公司的安全策略只打开某些特定的端口以允许特定的内外通信,这就是需要进行相应的访问规则的配置。
防火墙的规则
访问规则定义了允许或拒绝网络之间的通信的条件。访问规则中运用的元素是防火墙中可用于创建特定访问规则的配置对象。规则元素一般可分为以下五种类型:
主机防火墙可以阻止未授权用户通过网络访问计算机来保护您的计算机,Windows和Linux都有自带的防火墙。通过防火墙可以阻止大量的攻击。
|提示|:为降低来自网络的攻击风险,按照最小化原则,应关闭不需要的系统服务、默认共享和高危端口。
Netfilter是位于Linux内核中的包过滤功能体系,称为Linux防火墙“内核态”。
firewalld/iptables是Centos7默认的管理防火墙规则的工具,称为Linux防火墙的“用户态”。其角色主要为对于防火墙策略的管理,真正的防火墙执行者是位于内核中的 Netfilter。
firewalld就是iptables的封装是为了简化操作,firewall更加灵活,提供了命令行配置工具firewall-cmd,GUI配置工具firewall-config(中标麒麟内置firewall-config图形化配置工具)。
防火墙的核心处理机制是过滤,而说到过滤,就必须具有“条件 & 动作”这两个关键要素,而在 iptables 中,这两种要素分别叫做“rule & target”,可以理解成符合 rule 的流量将会去往 target。
防火墙的处理对象是网络流量,而对于网络流量来讲,标识流量的最重要的信息便是五元组,包括:S_IP, S_PORT, D_IP, DI_PORT, TCP/UDP,iptables 常用的也往往是根据五元组中的某个或某些要素进行过滤.
iptables里有4张表(优先级递增):
Filter(过滤器),进入Linux本机的数据包有关,是默认的表。
NAT(地址转换),与Linux本机无关,主要与Linux主机后的局域网内计算机相关。
Mangle(破坏者),这个表格主要是与特殊的数据包的路由标志有关(通常不用涉及到这个表的修改,慎改)。
raw, 用于决定数据包是否被跟踪机制处理
每张表里有多条链:
Filter:INPUT, OUTPUT, FORWARD
NAT:PREROUTING, POSTROUTING, OUTPUT
Mangle:PREROUTING, OUTPUT, INPUT, FORWARD
raw:PREROUTING, OUTPUT
iptables的基本语法格式:
iptables [-t 表名] 命令选项 [链名] [条件匹配] [-] 目标动作或跳转
iptables配置可以参考相关文档。
Rhel7/centos7中默认将防火墙从iptables升级为 firewalld。firewalld相对于iptables主要的优点有:
firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得重启服务才可以生效;
firewalld在使用上要比iptables人性化很多,即使不明白“四张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。
firewall-cmd 命令:启动、停止、查看 firewalld 服务
[root@localhost /]# systemctl start firewalld ##启动防火墙
[root@localhost /]# systemctl enable firewalld ##设置为开机自启
[root@localhost /]# systemctl status firewalld.service ##查看防火墙运行状态
firewalld 默认有 9 个 zone(zone是firewalld的单位,相当于安全域)。一个zone就是一套过滤规则,数据包必须要经过某个zone才能入站或出站。不同zone中规则粒度粗细、安全强度都不尽相同。可以把zone看作是一个个出站或入站必须经过的安检门,有的严格、有的宽松、有的检查的细致、有的检查的粗略。可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口。默认情况下,pubilc区域是默认区域,包含所有接口(网卡)。
见下一部分中标麒麟防火墙管理。
中标麒麟操作系统中,【控制面板】→【服务】,弹出【服务配置窗口】,可以看到大量的Linux服务,和windows service类似,很多系统服务都是本地使用的,如网络、日志、dns解析等。如下图:
对于终端而言,不像服务器那样提供对外的很多服务,但并不意味着什么服务都不提供,比如在局域网上的文件共享、打印共享、远程桌面服务等,这就需要开放部分端口,但是作为一项安全策略,开放的端口越少越好。中标麒麟系统中提供的服务及端口号可以通过命令“netstat -ntlp”查看。下图是中标麒麟桌面版中提供的服务,其中22是SSH服务,631是CUSP网络打印服务,445和139是用于samba服务,5900是VNC服务端口。
中标麒麟内置firewall-config图形化配置工具,配置防火墙允许通过的服务、端口、伪装、端口转发、ICMP 过滤器等。从开始菜单→系统工具→防火墙,界面如图所示。点击“关闭(不推荐)”或 “启用(推荐)”时,关闭/启动防火墙服务有一定延时,该程序会弹出“正在关闭/启动服务,请等待 X秒”提示窗,计时结束,该窗口会自动消失。选择“启用(推荐)”,“高级设置”按钮高亮,点击“高级设置”按钮,弹出下图窗口。在高级设置界面中可对具体服务权限进行设置。
图中左边定义很多区域,基于用户对网络中设备和流量所给予的信任程度,防火墙可以用来将网络分割成不同的区域,可以理解为模板,一般每个网卡配置一个区域,默认区域为public,可根据终端所处的环境进行切换区域(模板)。
public(公共) |
在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。 |
drop(丢弃) |
任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。 |
block(限制) |
任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。 |
external(外部)
|
特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。 |
dmz(非军事区) |
用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。 |
work(工作) |
用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。 |
home(家庭) |
用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。 |
internal(内部) |
用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。 |
trusted(信任) |
可接受所有的网络连接。 |
在public模式下,可以看到,前面提到的22(SSH服务)、631(CUSP网络打印服务)、445和139(samba)、5900(VNC服务)端口是允许外部访问的,还有一些多余的端口如数据库缺省也是开放的,为了安全起见,可以关闭这些不必要的端口。修改防火墙规则一种是运行时模式:表示当前内存中运行的防火墙配置,在系统或firewalld服务重启、停止时将失效;第二种是永久模式:表示重启防火墙或重新加载防火墙时的规则配置,是永久存储在配置文件中的。永久配置修改后要从菜单栏【选项】→【重载防火墙】,当前永久配置将变成新的运行时配置。
windows自带的防火墙,从windows7开始已经很成熟和完善,基本概念和功能也和Linux类似。
1. 控制面板\系统和安全\Windows Defender 防火墙
2. 开始-》firewall.cpl,直接输入firewall会自动匹配
点击左侧的打开和关闭Windows防火墙,私有网络和公用网络的配置是完全分开的,有两个选项:
1、“阻止所有传入连接,包括位于允许程序列表中的程序”,这个默认即可,否则可能会影响允许程序列表里的一些程序使用。
2、“Windows防火墙阻止新程序时通知我”,对于个人日常使用需要选中的,方便自己随时作出判断响应。
允许程序规则配置,点击图上侧的“允许程序或功能通过Windows防火墙”,以开放"文件和打印机共享"为例,如下图:
1、常规配置没有端口配置,所以不需要手动指定端口TCP、UDP协议了。
2、应用程序的许可规则可以区分网络类型,并支持独立配置。
勾选文件和打印机共享右侧的“专用”,即表示允许在专用网络中可以访问文件和打印共享。
如果是添加自己的应用程序许可规则,“允许其他应用”按钮进行添加。
如果还想对增加的允许规则进行详细定制,比如端口、协议、安全连接及作用域等等,则需要到高级设置。从防火墙左侧主菜单中选择高级设置,出现下图配置界面。
防火墙的入站规则和出站规则:出站就是你访问外网,入站就是外网访问你。
例如,在入站规则中可以找到与刚才专用区域开启“文件和打印共享对应”的入站规则。
用户可以创建入站和出站规则,从而阻挡或者允许特定程序或者端口进行连接; 可以使用预先设置的规则,也可以创建自定义规则。
右键点击入站规则或者出站规则,点击“新建规则”菜单项出现“新建规则向导”,向导指导用户逐步完成创建规则的步骤;用户可以将规则应用于一组程序、端口或者服务,也可以将规则应用于所有程序或者某个特定程序;可以阻挡某个软件进行所有连接、允许所有连接,或者只允许安全连接,并要求使用加密来保护通过该连接发送的数据 的安全性; 可以为入站和出站流量配置源IP地址及目的地IP地址,同样还可以为源TCP和UDP端口及目的地TCP和UPD端口配置规则。