aws spark集群web功能

0 spark集群web功能被攻击

在使用aws提供的spark集群时,经常会用到spark集群的web功能,以便于查看集群上任务的运行情况以及相关日志。最初使用时,为了可以在浏览器中访问到spark集群的各个web功能,设置了一个开放所有端口的安全组(是极其不安全的)。最近一段时间使用时,发现集群中启动了非常多的无效任务,这些任务再启动起来之后马上被kill了。经过追查,原因是集群web功能的网址被泄漏了,导致集群被攻击。攻击者可以通过集群的web功能直接向yarn的ResourceManager发送请求来启动任务。虽然可以这种方式可以提交任务,但是因为这种方式无法获取到集群的运行权限,最后导致了其任务再启动的时候就会被kill。虽然攻击者无法使用集群资源,但是频繁的启动这些无效任务对集群也是一种资源上的消耗。
要解决集群被攻击的问题很简单,只需要删除开发所有端口的配置删除掉就可以了。但是这种方式也直接导致了我们自己使用集群web功能遭到限制,为了方便我们自己使用集群的web功能,参考aws的使用文档,可以使用下一节的方式来解决。

1 解决集群web功能访问受限问题

主要的解决办法是建立ssh通道,然后使用浏览器的proxy功能,具体步骤如下所示:

  1. 首先,通过建立ssh通道,使用端口转发功能将本地端口映射到集群的master机器上,这里使用本地的8157端口具体代码如下所示:
ssh -i your_private_key.pem -ND 8157 hadoop@ec2-*****.compute.amazonaws.com

需要注意的是,当这条指令执行之后会一只处于阻塞状态,执行的终端也是不能关闭的。在日常使用时这是很不方便的,为了后续使用,最好使用nohup来启动这个指令让其在后台持续运行。后续使用时,每次断网或者电脑重启之后可能都需要重新运行这条指令,这里可以为这个ssh通道创建一个crontab任务,让其检查这个指令的运行是否正常,当这条指令运行不正常时重启指令。

  1. 然后使用浏览器proxy,将浏览器的流量转发的本地8157端口。因为之前已经建立好了本地8157端口到集群master的ssh通道,这样浏览器的请求就会转发到master这台机器上,在master本机上访问集群的web功能就没有任何限制的。通过这种方式就可以访问到集群的web功能了。

2 使用chrome浏览器上设置proxy

这里使用的是chrome应用商店上的foxyproxy插件,通过如下步骤进行设置:

  1. 在chrome中安装foxyproxy插件,搜索foxyproxy,选择FoxyProxy Stadard添加到CHROME中即可,如下图所示


    chrome安装foxyproxy
  2. 打开foxyproxy中的options选项,进入3中所示的界面


    进入foxyproxy设置
  3. 点击下图中的Add New Proxy按钮


    添加新的proxy
  4. 按照下面所示,对其中的内容进行设置
    General中,修改color为绿色,默认是蓝色


    修改proxy颜色为绿色

    Proxy Details中,做如下修改


    修改proxy details

    最后添加URL Patterns
    添加URL Patterns

3 访问集群web功能

只需要打开foxyproxy中的刚刚设置好的Use Proxy india_spark for all URLs既可以访问集群的web功能。需要注意的是,打开这个proxy之后,在访问其他网页的时候速度会变的非常慢,主要原因可能是其他的网页也会转发到master机器上了,这样访问其他网站就会变慢。为了解决这个问题,可以打开foxyproxy中的Use proxies based on their pre-defined patterns and priorities。这样当访问其他网站是就会按照默认配置走正常流程,当访问到集群的web功能网站时会按照配置好的india_spark proxy配置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。