linux怎么查看本机内存大小
340
2022-10-08
利用AWS Network Firewall 实现云中外网访问控制
随着公司规模的日益增加,aws账号也随之增多,每个账号都有独立的NAT 导致无法对外网进行统一的管理,安全风险随之增加。为了更好的管理,在充分调研后,我们准备采用AWS原生的Network firewall 实现白名单访问。
需要实现的目标:
(1) 用户只能访问白名单的域名
(2)对于访问失败的域名要有log 输出,并且可以使用aws cloudwatch 分析出被阻挡的URL
(3)在增加网站时需要对网站地址进行检查
架构图如下:
由于我们在上新服务的时候只允许使用infra as code 的方式,所以本次部署采用terraform 部署,代码可以参考aws官方
官方部署是基于黑名单的,所以请将 firewall.tf 文件中代码generated_rules_type = "ALLOWLIST" 同时也请将targets 作为一个单独的文件输入,便于控制。
resource "aws_networkfirewall_rule_group" "block_domains" { capacity = 100 name = "block-domains" type = "STATEFUL" rule_group { rule_variables { ip_sets { key = "HOME_NET" ip_set { definition = [aws_vpc.spoke_vpc_a.cidr_block, aws_vpc.spoke_vpc_b.cidr_block] } } } rules_source { rules_source_list { generated_rules_type = "LIST" target_types = ["HTTP_HOST", "TLS_SNI"] targets = [".facebook.com", ".twitter.com"] } } }}
部署脚本将所有的log 输出到了cloudwatch,便于我们对用户的行为进行分析。以下是分析过程,首先我们登录aws console cloudwatch界面 在log groups 中选择/aws/network-firewall/alert 你可以看到这里面存储了所有的被阻挡的记录比如下面记录:
{ "firewall_name": "NetworkFirewall", "availability_zone": "us-west-1b", "event_timestamp": "1645390795", "event": { "timestamp": "2022-02-20T20:59:55.829557+0000", "flow_id": 688872686849500, "event_type": "alert", "src_ip": "10.x.x.x", "src_port": 54591, "dest_ip": "20.190.151.131", "dest_port": 443, "proto": "TCP", "alert": { "action": "blocked", "signature_id": 421, "rev": 1, "signature": "not matching any TLS allowlisted FQDNs", "category": "", "severity": 1 }, "tls": { "sni": "login.live.com", "version": "UNDETERMINED", "ja3": {}, "ja3s": {} }, "app_proto": "tls" }}
可以看到用户访问login.live.com 被阻挡了,为了简化白名单添加流程我们对一些常见网站增加顶级域名,在这个案例中我们白名单添加.live.com. 既然有日志记录了被阻挡的域名那我们是否可以做一个dashboard 更明显的知道被挡网站地址和次数呢?答案是可以的。我们在cloudwatch上Insights中Contributor Insights 创建一个fliter 选择json中的event.tls.sni, 使用count计数
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~