Hadoop Eco 보안 사례
YARN은 Hadoop 시스템의 통일된 자원 관리 플랫폼으로, Hadoop 내 작업 스케줄링, 클러스터 리소스 관리를 위한 프레임워크입니다. YARN은 REST API를 호출하여 작업 실행 시, YARN의 기본 포트인 8088
포트를 오픈합니다. 이때 User는 dr.who로 설정되어 기본 작업이 실행됩니다.
이 과정에서 ACL은 확인하지 않으며, 따라서 외부 공격자는 공개된 8088
포트를 사용하여 서버에 실행 명령을 수행하고 악성 스크립트를 다운로드하는 등 악의적인 공격을 할 수 있습니다.
User: dr.who로 기본 작업 실행
퍼블릭 클라우드에서 이용되는 모든 Hadoop Eco는 악의적인 외부 공격을 받을 수 있습니다.
따라서 REST API 호출을 아예 제한하거나, 또는 REST API 사용 시 적절한 보안 조치를 취해야 합니다.
Rest API 호출 제한하기
악의적인 외부 공격에 대응하기 위해 Rest API를 이용한 작업 실행을 제한할 수 있습니다. Hadoop Eco 2.10.1 버전부터 Rest API를 이용한 작업 제출을 제한하는 기능을 제공합니다. Hadoop Eco는 기본적으로 이 옵션을 true(기본값, REST API 호출을 허용)로 사용하고 있습니다.
-
Rest API 호출을 허용하지 않도록 설정하기 위해서는 /etc/hadoop/conf/yarn-site.xml 파일에서 yarn.webapp.enable-rest-app-submissions의 설정을 false로 수정 후 리소스 매니저를 재부팅해야 합니다.
Rest API 작업 실행 제한<property>
<name>yarn.webapp.enable-rest-app-submissions</name>
<value>false</value>
</property>파라미터 설명 yarn.webapp.enable-rest-app-submissions REST API 호출 허용 여부
-true
(기본값): 호출을 허용
-false
: 호출을 허용하지 않음 -
해당 옵션을 이용하여 작업 실행이 제한되면 Rest API를 이용하여 작업을 실행할 때 다음과 같은 메시지가 출력됩니다.
작업 실행 제한 옵션
REST API 사용 시, 보안 조치
REST API를 사용해야 하는 성황이라면, 보안 취약점이 발생하지 않도록 아래와 같이 대응하시기 바랍니다. 사용자가 작업 실행을 목적으로 REST API를 이용한 작업 실행을 사용해야 한다면 다음과 같은 대응 방법을 생각할 수 있습니다.
대응 방법 1. 8088 포트 비공개
첫 번째로 8088 포트를 외부로 오픈하지 않는 것입니다. Hadoop Eco는 기본적으로 퍼블릭 IP를 사용하지 않기 때문에 VM에 퍼블릭 IP를 지정하지 않으면 외부에서 접근할 방법이 없습니다. 다음과 같이 퍼블릭 IP를 지정하지 않으면 외부에서 접근할 수 없습니다.
-
카카오클라우드 콘솔 > Analytics > Hadoop Eco 메뉴로 이동합니다.
-
클러스터 목록에서 노드 목록을 작업 실행할 클러스터를 선택합니다.
-
노드 목록 탭을 클릭한 후, 해당 클러스터의 노드 목록을 확인합니다.
-
노드 목록에서 퍼블릭 IP가 비어 있는지 확인합니다.
노드 목록에서 퍼블릭 IP 확인
대응 방법 2. 인바운드 규칙 수정
두 번째로 인바운드 규칙을 수정할 수 있습니다. 기본 설정된 0.0.0.0/0 오픈을 접속하고자 하는 소스 컴퓨터의 IP로 설정하는 것이 좋습니다. 보안 그룹의 인바운드 규칙에서 패킷 출발지를 접근하고자 하는 호스트의 퍼블릭 IP로 설정하면 접근할 수 있습니다.
-
카카오클라우드 콘솔 > Analytics > Hadoop Eco 메뉴로 이동합니다.
-
클러스터 목록에서 노드 목록을 작업 실행할 클러스터를 선택합니다.
-
노드 목록 탭을 클릭한 후, 해당 클러스터의 노드 목록을 확인합니다.
-
노드 목록에서 노드 인스턴스 이름을 선택합니다.
-
해당 노드의 인스턴스 상세 페이지에서 보안 탭을 선택합니다.
-
Inbound 탭에서 패킷 출발지를 확인합니다.
-
적용된 보안 그룹을 클릭하여 VPC의 보안 탭으로 이동합니다.
-
인바운드 규칙 탭에서 인바운드 규칙 관리를 클릭하여 정책을 변경합니다.
인바운드 탭에서 패킷 출발지 확인
대응 방법 3. 리소스 매니저 포트 정보 변경
세 번째로 외부에 리소스 매니저의 정보를 꼭 오픈해야 하는 상황이라면 리소스 매니저의 포트 정보를 변경하는 것입니다. 다만 포트 정보를 변경하면 증설/축소 등의 동작이 실패할 수도 있습니다.
yarn-site.xml의 다음 정보를 수정한 후 리소스 매니저를 재부팅하면 접근 포트를 변경할 수 있습니다.
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>127.0.0.1:8088</value>
</property>