前言
最近一直忙于考研的复习,闲下来的时间也比较颓废,打打游戏看看剧。身边的同学也相继找工作了,虽然我没有准备那么早工作,但是因为不少同学也让我给给意见或聊天吐槽这个公司怎么样,那个公司怎么样。总的来说身边的技术大佬都找到了不错的工作,交谈感觉在找工作的几个月中,人的成长也是十分的大的,看看自己反而会觉得有点不进而退,相比自己的颓废还有些难为情。前几日老师介绍了PCI-DSS(支付卡行业数据安全标准),听完同学的分享,觉得这部分的知识还是很重要的,就是有一种没有好好了解过怎么能说在安全的圈子里混的感觉。所以准备在考研的时候,学习之余也看些自己感兴趣的的东西,拿出珍贵的每天吃鸡的两小时,学学这份必不可少的知识,同时也会结合里面的要点分享一下自己工作学习中遇到的实际情况。
PCI-DSS
什么是PCI-DSS
PCI-DSS全称Payment Card Industry (PCI) Data Security Standard,第三方支付行业(支付卡行业PCI DSS)数据安全标准,是由PCI安全标准委员会的创始成员(visa、mastercard、American Express、Discover Financial Services、JCB等)制定,力在使国际上采用一致的数据安全措施,简称PCI DSS。
这是百度给出的官方名词解释,翻译成人话就是为保护第三方支付的数据安全而制定的一个标准。为了保护敏感数据的安全我们需要从哪些方面都要做到哪些要求,这个标准会给我们安排的明明白白的,每一条的背后也都是有故事的。
当然我们可能大家觉得这只是支付行业或者金融行业才需要学习的,但是接触后你就会发现,这不仅仅局限于支付行业的数据安全,是对于所有的网络上的信息的安全来说的。任何被我们或者被公司定义为敏感的信息,我们就有责任去保护。
这是同学给推荐的一个脑图,因为图太大,我就直接放链接了,可以在学习之前大概有一个了解:
$ https://pan.baidu.com/s/1y8kbEUcjbNl_XUsd5GLLjw
学习文档:
$ https://zh.pcisecuritystandards.org/_onelink_/pcisecurity/en2zhcn/minisite/en/docs/PCI_DSS_v3-2_zh-CN.pdf
这是官方给出的3.2的中文版,现在已经有3.2.1的中文版,但是博主大概看了看,都是一些很蹩脚的翻译,实在太影响阅读了,所以还是暂时看官方给出的中文版。因为能力有限,所以此次是从别人嚼过得的馒头里面汲取知识,之后有时间会重新学习英文原版。
概述
先看看文档,我们暂且将这个标准分为六大区域十二个要点(有一些分为五大区域,将要求10-12统一纳为定期监控和测试网络),所以大概按一个要点来慢慢学习,估计两个礼拜可以简单把这份标准学习一遍。有不足的地方请读者指出!
PCI首先是从下面六个区域来制定标准和要求的:
1、建立和维护一个安全的网络和系统
2、 保护持卡人数据
3、 维护漏洞管理计划
4、 实施强访问控制策略
5、 定期监控和监测网络
6、 维护信息安全策略
依次看下来我们会发现,这是很有逻辑的一个划分。首先是建立好安全的环境,来确保我们所处的环境是安全的,这是最基础的保护。其次再来说怎么保护敏感的数据信息,如果出现漏洞我们怎么快速响应,以及实施数据的强访问控制,最后就是定期的监控和检测。
在文档的前面还有一些PCI-DSS的要求范围,实用性的信息等一些说明,这个大家可以自己看,我主要记录和分享详细的PCI-DSS要求和安全评估程序,从六大区域12个要点依次来说。
一、建立和维护一个安全的网络和系统
要求1:安装并维护防火墙配置,以保护持卡人数据
不用说,防火墙大家应该都知道,是控制内部网络和外部网络通信的一个重要设施,他是阻止和控制所有恶意访问的一个重要的关卡,是内网环境的重要保护机制。所以对于防火墙的配置是十分重要的。
1.1 建立和实施防火墙和路由器配置标准,包括以下内容:
1.1.1 批准和测试所有网络连接以及更改防火墙配置的正确流程
(第一列为PCI DSS要求,第二列为测试程序,第三列为指导,后面都如此)
1.1.1的要求就是说将所有网络连接和防火墙路由器的配置规范化,每一项操作都有对应的记录,并确保这些规范有批准和通过的测试。有变更,则记录!这样可以避免会有错误的防火墙或者路由器配置,对业务或者数据产生危害。
1.1.2 识别持卡人数据环境和其他网络之间的所有连接当前网络图,包括任何无线网络
1.1.2的要求就是说我们需要绘制一个实时的准确的网络连接图,这个网络连接图是以敏感数据所在的环境为基础,包含了所有和他连接的设备。通过这个图我们可以知道这些敏感数据可能到达的网络区域,或者到达的具体设备。
1.1.3 显示所有持卡人数据电流图跨系统和网络图
学过软件工程的同学应该都会知道有一个数据流图,没错,我们这里就是一个数据流图,不过是跨系统和网络的。通过这个图我们可以知道数据在哪些地方被储存,被处理。
1.1.4 在每个互联网连接的防火墙和任何非军事区(DMZ)和内部网络去之间要求
DMZ就是两个防火墙之间的区域,重要的信息我们会放在内网,然后一个防火墙隔离,另一个防火墙隔离外网,这两个防火墙中间的区域就是DMZ。DMZ区域里往往会有一些不是很重要的数据。这里就是验证外部网络和DMZ的连接以及DMZ和内部网络的连接是否符合防火墙配置的标准,防止恶意的内网网络访问出现。、
1.1.5 组,角色和职责的描述网络组建的管理
这个应该比较好理解,就是利用了用户组和用户的管理方法。网络组件主要就是防火墙和路由器了。不同的用户组对不同的网络组件拥有不同的权限,更改,删除,审计等。变更用户权限的时候,往往通过添加到不同的用户组来实现。就和linux的group一样。这样也明确了不同角色的不同责任。
1.1.6 商业论证和批准使用的所有服务,协议和端口的文档允许的,其中包括对被认为是不安全的协议来实现安全功能的文档
这个看着很多,其实就是要注意不开多余的端口,每一个端口都得有根有据,确保安全。每一个开放的端口都有对应的被批准的文件记录。这个问题经常会在企业中出现。有一些运维人员会因为种种原因使用不安全的协议开放端口,导致一些列的安全问题。博主曾经看过一个日站帖子,帖子上的同志一直卡在如何突破上传文件拿shell,但是一直没有办法,最后发现ftp服务开启并且免密登录,最后直接登录ftp上传getshell了。就算我们使用了不安全的协议或者服务,我们必须有记录,并且确保我们的防火墙配置或者其他可以弥补这个不安全的服务,比如上文的就可以限制访问指定端口的ip。
1.1.7 要求审查防火墙和路由器的规则集,每半年至少
可能因为很多原因,比如业务变动或者其他的,我们的内部网络环境可能会发生变动,所以我们的防火墙和路由器的规则就得随时审查,以防止有遗漏的地方出现。
1.2 构建限制不受信的网络,并在持卡人数据环境中的任何系统组件之间的连接的防火墙和路由器配置
这里就是限制不受信网络的访问,防止未授权访问或者恶意访问。通过配置路由器和防火墙这些网络组件来限制。
1.2.1 限制入站和出站流量到这是必要的持卡人数据环境,特别否认所有其他流量
通过路由器和防火墙的配置来限制恶意的流量。一般都是通过检测源地址和目的地址来检测。防火墙的配置呢,一般来首首先都是deny all,然后我们需要什么在添加什么,就是默认是拒绝所有的,只接受我们允许的,这样就可以拒绝所有我们不承认的流量了。
1.2.2 保护并同步路由器的配置文件
这就是确保路由器的安全了,确保路由器的配置文件不会被未授权访问。网上曾经就爆出过很多路由器的漏洞,不管是老的TPlink还是小米什么的之前很多都有未授权访问,不用登陆就可以读取配置文件,导致路由器的配置信息泄露。同时我们也要实时更新启动文件,很多时候我们因为需求直接在运行的时候改了,但是没有更改启动配置,在路由器重启的时候就不会保存,会存在安全隐患。保证配置的同步更新。
1.2.3 在所有无线网络和持卡人数据环境间安装外围防火墙,并配置这些防火墙以拒绝流量或(如果业务需要流量)今允许无线环境和持卡人数据环境间的授权流量
我的理解实际一点就是用防火墙隔离办公网和生产网。确保敏感信息所在的环境(硬件环境或网络环境)的安全。在举一个例子,就是我们的公司服务器内网和外部网络隔离,就算软件也是用内部源更新下载,这样便可拒绝所有流量,如果实在需要,比如调取微信接口,那就授权,只有经过授权的流量才能连入内网。这里的所有无线网络泛指除了持卡人数据所在环境之外的所有其他网络。
1.3 禁止互联网与持卡人数据环境中任何系统组件之间的直接公共访问
限制公网内对内网系统组件即路由器或防火墙的直接访问。前面都是说的内部网络与外部网络的,但是因为系统组件在两个网络的边界,所以也要注意限制公网对内部或者DMZ的路由器或防火墙的直接访问。
1.3.1 实施DMZ,仅向提供授权服务、协议和端口(支持公共访问)的系统组件输入流量
这个很好理解,就是我们通DMZ来限制输入流量,只有那些有授权服务开启的端口我们才能通过防火墙。具体说说DMZ,我们一个门户网站,两层防火墙。最里面是数据库信息所在网络,然后一层防火墙,然后就是DMZ这里可能放的是web server,web server可以连接内部网络读取数据信息,然后DMZ之外又是一个防火墙,连接着外网。这里我们的DMZ就仅仅向有授权服务的端口流入流量,比如我这里之授权了3306的mysql,你就只能通过DMZ向3306流入流量,不能请求22的ssh端口。这里都只对支持公共访问的端口来说。
1.3.2 仅向DMZ内的IP地址输入互联网流量
就是通过防火墙或者路由器,我们过滤掉那些对DMZ内不存在的ip的访问。或者使用ACL之类的,如果包内的目的地址不存在(DMZ中),那就丢掉这个包。
1.3.3 实施反欺骗措施以检查并阻止伪造的源IP地址进入网络
这个很好理解,我们通过前面的可以知道,我们可能通过识别源地址的方式拒绝外部网络连接入内部网络,但是这个源地址也是可以被伪造的。攻击者可以伪造一个内网的ip然后去访问内部网络,这个时候我们就被绕过了。所以我们要实施反欺骗措施。比如禁止内网ip从公网访问内网。理论上内网ip访问内网不需要从公网来,所以所有从公网来的内网ip的请求可以被认为是伪造的。
1.3.4 禁止持卡人数据环境到互联网的非授权出站流量
这个就很经典了。公司中很多工作人员想着都限制了恶意流量的流入就没必要限制“恶意流量的流出了”,难不成我还会攻击别人吗?所以这就造成了反弹shell屡试不爽,我连接不了你,你可以连接我啊!很真实了。
1.3.5 仅允许“已建立”连接进入网络
这个呢就先说说防火墙的东西,防火墙通常使用的安全控制手段主要有包过滤、状态检测。这里的意识就是让我们用状态监测防火墙。可以上网看看,包过滤是比较简便,快速的安全控制,但是状态检测是比包过滤更为有效的安全控制方法,所以还是比较推荐使用状态监测防火墙的。
1.3.6 将存储持卡人数据的系统组件(例如:数据库)放置在DMZ以及其他不可信网络隔离的内部网络区域中
这是企业安全建设中很重要的一点,就比如前面说DMZ时说到的,web server可能会放在DMZ中,但是存储数据的服务器一定不能是同一台服务器,甚至是放在用防火墙隔离的另一个网络,放在内部网络中,这个网络要与所有不安全的网络隔离。数据才是最重要的!从另一个方面来说,如果web服务器被攻击了,但是数据库的服务器还很安全,提高了攻击者的门槛,也给我们应急响应准备了更多的时间。最重要的东西当然要放在最安全的地方。
1.3.7 不要将私人IP地址和路由器信息泄露给非授权方
就是不要泄露我们服务器的私人ip,这是很重要的一点,如果被攻击者获取,很容易就锁定攻击目标。现在很多都是使用NAT网络地址转换的方法。内网ip映射一个外网ip,然后端口映射。只映射必要端口就行。这样不管内部端口开的多乱,只映射安全的,必要的端口就行。
1.4 在可在网络外连接互联网且可用于访 问 CDE 的任何便携式计算设备(包括公 司和/或员工所有的便携式计算设备,例 如,员工使用的笔记本电脑)上安装个人 防火墙软件或等效功能。
防火墙(或等效 功能)配置包括:
1、定义了具体的配置设备。
2、个人防火墙(或等效功能)正在活跃 运行。
3、便携式计算设备用户无法更改个人防 火墙(或等效功能)。
这个就是员工个人电脑的安全设置了。对于那些可以连入公司内网的笔记本或者个人终端,不管是vpn还是其他,我们都要对这些设备进行安全保护,使用公司特制的个人防火墙,并且用户自己无法关闭防火墙,并且定期检测。这个东西还是很有必要的,毕竟我们作为从事安全各行业的工作者也会有忽略的时候,其他的人员,而且公司的人员不可能每个人的安全意识都很充足,所以通过个人防火墙来保护个人电脑还是很有必要的。不然也不会有那个么多邮件钓鱼之类的攻击了。
1.5 确保用于防火墙管理的安全政策和操作程序已记录、使用,并为所有相关方锁了解
我们阅读的时候发现每一条基本上都会要求我们和工作人员面谈,确认,这也是很重要的,只有这样才能保证信息的准确,实时。防火墙管理的安全策略我们每一个都得有记录,记得之前朋友所在的公司的一个老运维离职了,但是他所管理的服务器的配置没有留下任何操作记录和文件,也没有说明,导致没有人敢更改任何一条配置,不管某条配置是否起作用。所以不仅仅是对于防火墙的管理,我们都要有详细的文房记录,第一确保防火墙有人管理,也可以根据文档快速的进行交接工作。
总结
要求一大概到这里就结束了,稍微总结一下。要求一:安装并维护防火墙配置以保护持卡人数据。这一条是属于安全的网络和系统的建立和维护区域,我们主要从防火墙的配置角度来构建一个安全的网络和系统,以保护我们的敏感信息。上面的每一条的学习可能比较简陋,也可能很多错误的地方,欢迎大家指出,共同学习,之后有更多的经历也会回来更改的!