以下是删除通向互联网的默认路由以及配置出站代理以更好地确保安全性的方式和原因。 如果企业数据中心网络的某些部分不需要直接与互联网通信,那么我们为什么要配置路由器,以便网络上的每个系统都默认使用互联网访问? 部分原因是许多企业使用互联网外围防火墙执行端口地址转换(PAT),默认策略允许访问互联网,这一解决方案为攻击者提供了破坏安全性的可能途径。 具有默认路由的传统网络设计网络工程师使用防火墙北向路由器上的上游ISP配置静态或动态(例如BGP)路由。网络工程师的传统和习惯是在防火墙内部的路由器上配置静态 默认路由(例如0.0.0.0/0,:: / 0)。如下图所示,此内部路由器然后将此静态默认值重新分配到内部动态路由协议(例如OSPF,EIGRP)。因此,当任何内部路由器接收到目的地为其路由表中未出现的IP地址的数据包时,将使用默认路由(例如 ,最后的网关)转发数据包。 因此,无论是否需要,每个内部网络上的每个系统都有一条到Internet的路径。 删除默认网关现在,连接到这些内部边缘路由器的终端节点也使用默认网关,将所有非本地网络流量引向第一跳路由器。对于接入网络,最终用户设备从DHCP选项接收此默认路由。虽然可以从所有主机中删除默认路由,但是为每个服务器手动执行此操作将是一个管理负担。在有限的一组数据中心网络设备上配置默认路由的存在与否将更容易实现相同的结果。 防止恶意软件通信渠道即使这些节点位于内部网络上,恶意软件仍然可以访问这些内部系统。一旦主机被感染,恶意软件就会打电话回家,在主机上下载/删除更多恶意软件,然后通过默认路由联系攻击者命令和控制网络。为了帮助缓解这些威胁,企业采用了外围防御措施,例如电子邮件/ Web内容过滤器,IPS,文件检查, 基于DNS的安全性以及利用威胁情报源的安全系统。默认路由通过这些安全保护措施引导出站数据包,以仔细检查传出连接。但是,如果没有出站默认路由,则出站连接将不可路由,并且数据包将在到达外围防御之前被丢弃。 确定需要默认路由如果最终用户没有互联网接入,他们会抱怨,但事实是并非所有企业系统都需要上网。例如,楼宇自动化系统,视频监控系统,徽章访问系统,数据中心电源和冷却设备不一定需要建立到Internet的出站连接。 如果您有敏感的内部应用程序只能通过内部资源访问,那么它们不需要默认路由。例如,如果您的环境中的服务器上有信用卡数据并且符合PCI DSS,那么您应该使用反向代理, Web应用程序防火墙(WAF)或状态防火墙来访问此系统,并且它不应该具有到Internet的直接出站路径。 允许这些内部系统具有Internet可访问性的常见要求之一是用于补丁管理。我们都同意系统必须定期修补,作为健康安全计划的一部分。但是,有补丁管理系统可以从受信任的源检索其补丁,然后将这些补丁提供给内部系统。因此,补丁管理系统需要Internet访问,但内部系统可能不需要。 此外,内部网络上唯一应该向Internet发送DNS查询的系统是内部DNS解析器。如果内部网络上的每个系统都被允许将DNS数据包发送到Internet并使用外部DNS解析器,那么 DNS泄漏就会令人担心。通过删除默认路由,仍可以应用软件修补程序,仍可以在内部管理服务器,合法用户仍可以访问内部服务器上托管的应用程序。 多层应用程序架构数据中心中用于缓解这些入站威胁并实施分层安全防御模型的技术是使用多层服务器体系结构,如下图所示。 数据中心和云环境具有通用的三层应用程序体系结构,其中Web层接收最终用户连接,后端应用程序层以及安全地隐藏在其他层之后的数据库层。这与基于云的基础 架构即服务(IaaS)虚拟数据中心中使用的安全方法相同。Web层负载平衡器,反向代理和Web服务器使用默认路由需要Internet可访问性。但是,应用程序层和数据库层只需要可以访问自己的专用网络。 在数据中心或云环境中,您可以进行物理隔离或逻辑隔离。企业应该从军事和财务组织的最佳实践中获取一页,并根据数据敏感性,资产评估和信任对其环境进行更大的细分和分离。创建分层安全方法时,不需要默认路由。您最信任的应用程序应密封在企业网络或云基础架构的内部密室,专用网络中,而无需任何Internet可访问性。 控制云基础架构中的默认路由与企业构建带外(OOB)管理网络的方式类似,可以在云IaaS服务中创建相同的方式。与典型员工相比,企业系统和网络管理员具有更高级别的访问权限,有时他们会被置于具有访问限制的特殊管理网络上。例如,在 Amazon Web Services(AWS)等公共云中运行时,使用 虚拟私有云(VPC)并为上述各种应用程序层使用单独的子网被视为 安全性最佳实践。与VPC子网关联的VPC路由器不一定需要到Internet的默认路由。没有默认路线 Internet网关(IGW)和缺少公共/ 弹性IP(EIP)可防止私有子网上的 EC2实例直接通过Internet访问。在IaaS环境中运行时,您可能拥有包含最敏感服务和数据的专用网络。如果这些隔离实例只能通过管理VPC中的堡垒服务器访问,并且只有表现为Web服务器层的应用服务器才能访问它们,则这些系统不需要默认路由。 删除默认路由的实现如果您想要安全,则需要控制路由和数据包转发。您可以在物理本地路由器或云环境中的虚拟路由器中控制路由表和动态路由。您还可以使用IP路由的存在或不存在来控制流量是否以及如何到达特定目的地。您可以在防火墙上的路由器和有状态数据包筛选器上使用访问控制列表(ACL)。在像AWS这样的IaaS环境中,这意味着在具有最小权限策略的实例上配置子网上的无状态 NACL或有状态安全组。 使用出站代理而不是默认路由在VPC中的AWS私有子网中,我们可以删除与这些私有子网关联的路由表的默认路由。此外,为了允许这些私有子网上的EC2实例安全地到达Internet,我们可以配置EC2实例以使用本地Web代理服务器。出站代理服务器具有一组白名单软件存储库,用于受信任的更新位置。一种流行的方法是使用 Squid 3.5+高速缓存代理并为安全软件存储库配置高级白名单。 acl manager proto cache_object # ACLs for localhost and the local VPC subnet acl localhost src 127.0.0.1/32 ::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 acl localnet src 10.10.0.0/16 # Allow only these ports acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 443 # https acl CONNECT method CONNECT # Allow access to regional AWS software repositories acl yum dstdomain repo.us-east-1.amazonaws.com acl yum dstdomain repo.us-west-1.amazonaws.com acl yum dstdomain repo.us-west-2.amazonaws.com acl yum dstdomain repo.eu-west-1.amazonaws.com acl yum dstdomain repo.eu-central-1.amazonaws.com acl yum dstdomain repo.ap-southeast-1.amazonaws.com acl yum dstdomain repo.ap-southeast-2.amazonaws.com acl yum dstdomain repo.ap-northeast-1.amazonaws.com acl yum dstdomain repo.sa-east-1.amazonaws.com acl yum dstdomain packages.us-east-1.amazonaws.com acl yum dstdomain packages.us-west-1.amazonaws.com acl yum dstdomain packages.us-west-2.amazonaws.com acl yum dstdomain packages.eu-west-1.amazonaws.com acl yum dstdomain packages.eu-central-1.amazonaws.com acl yum dstdomain packages.ap-southeast-1.amazonaws.com acl yum dstdomain packages.ap-northeast-1.amazonaws.com acl yum dstdomain packages.sa-east-1.amazonaws.com acl yum dstdomain packages.ap-southeast-2.amazonaws.com # Only allow cachemgr access from localhost http_access allow manager localhost http_access deny manager # Deny requests to certain unsafe ports http_access deny !Safe_ports # Deny CONNECT to other than secure SSL ports http_access deny CONNECT !SSL_ports # Allow local web apps using "localhost" http_access deny to_localhost # Allow outbound access http_access allow localnet http_access allow localhost http_access allow yum # And finally deny all other access to this proxy http_access deny all # Squid normally listens to port 3128 http_port 3128 #... other default squid proxy caching and logging configuration Linux的代理客户端配置对于代理客户端EC2实例在其私有子网上使用Squid代理,它们不需要默认路由,而是在本地配置代理服务。以下两个命令使用端口3128启用HTTP和HTTPS通信的代理,以使用IPv4地址10.10.10.10与代理服务器进行通信。 $ export http_proxy = http://10.10.10.10:3128 $ export https_proxy = http://10.10.10.10:3128 在AWS中运行时,我们不希望在使用IP地址168.254.169.254从EC2实例检索元数据时使用代理,因此我们需要阻止此IP地址使用代理。 $ export no_proxy =“169.254.169.254” 然后,我们可以尝试使用默认通信方法连接到公共网站。 我们还可以使用这些命令来测试与公共网站的通信,与AWS S3存储桶通信或访问AWS软件存储库。 然后,您可以测试此EC2实例是否仍可从AWS存储库接收其软件更新。 $ sudo yum update Windows的代理客户端配置配置本地代理服务的相同方法也适用于Windows实例。以下两个命令配置代理,第三个命令阻止代理用于实例元数据。 C:\> set HTTP_PROXY=http://10.10.10.10:3128 C:\> set HTTPS_PROXY=http://10.10.10.10:3128 C:\> set NO_PROXY=169.254.169.254 C:\> netsh winhttp set proxy 10.10.10.10:3128 "localhost;10.10.10.10" 如果要重置WinHTTP的主机代理设置,则可以使用此命令。 C:\> netsh winhttp reset proxy 并非每个私有内部企业网络或每个基于云的虚拟子网都需要到Internet的默认路由。网络和安全管理员通常不会再考虑这个问题,这会导致安全问题。当使用允许Internet可访问性的路由时,恶意软件可以轻松地向攻击者报告,并且可以轻松地泄露数据。但是,在许多情况下删除默认路由并不实用,但应将其视为安全性最重要的环境的选项。使用OOB管理网络,堡垒管理主机,补丁管理系统和出站代理,您可以创建功能和安全环境,而无需使用到Internet的默认路由。 CCNP培训机构 CCIE培训中心 HCIE认证培训 HCNA培训
文章节选自NETWOKWORLD: ielab老师:赵韶磊
|