컨테이너 보안
Are your containers secure?
액세스 제어 또는 애플리케이션 코드 익스플로잇과 같은 공격이 컨테이너에 침투하거나 공격자가 컨테이너 이미지 취약점을 악용하는 경우가 많습니다.이로 인해 커널 패닉, 권한 상승 실행 또는 시스템에 대한 기타 위협이 발생할 수 있습니다.
이러한 위험에도 불구하고 컨테이너화는 여러 가지 이점을 제공합니다.빠르고 가벼워 앱 환경을 쉽게 복제할 수 있습니다.또한 개발 프로세스의 테스트 및 개선 단계에서 유용한 자산이기도 합니다.
적절한 보안 조치가 없으면 컨테이너가 프로세스를 다른 방법으로는 처리할 필요가 없는 위협에 노출될 수 있습니다.하지만 확실히 위험보다 이점이 더 큽니다.컨테이너 보안을 강화하기 위해 취할 수 있는 다섯 가지 실행 가능한 단계는 다음과 같습니다.
컨테이너 보안을 강화하기 위해 취할 수 있는 5가지 단계
1.운영 체제의 지방 제거
컨테이너가 실행될 운영 체제에서 모든 기능, 휘슬 및 불필요한 자산을 제거해야 합니다.이는 경각심을 불러일으키는 접근 방식처럼 보일 수 있지만 사실 사이버 범죄자들은 운영 체제에서 수행하는 다양한 서비스를 각각 공격 표면으로 사용합니다.프라이빗 또는 퍼블릭 클라우드를 통해 호스팅되는 시스템을 사용하는 경우에도 모든 추가 항목 (단, 기타) 은 제거해야 합니다. 클라우드 보안 기능) 을 사용하면 심각한 보안 문제를 방지할 수 있습니다.
따라서 다음을 시도해야 합니다.
- 컨테이너를 지원해야 하는 시스템 식별
- 나머지는 모두 버리세요
- 첫 번째 삭제 후 컨테이너 테스트
- 처음에 간과했을 수 있는 불필요한 기능이 있는지 찾아 버리세요.
- 컨테이너를 다시 테스트합니다.
컨테이너 OS에서 불필요한 기능을 제거해야 하는 이유
이 접근법을 정당화하는 추론은 비교적 간단합니다.각 워크로드에는 고유한 요구 사항이 있습니다.예를 들어 컨테이너 워크로드에는 업데이트 주기, 스택 아키텍처, 액세스 제어 매개변수, 보안 도구 및 OS가 관리해야 하는 DevOps 프로세스의 기타 중요한 기능이 있습니다.가상 머신을 사용하든 기존 환경을 사용하든 마찬가지입니다.
이러한 각 기능에는 요구 사항을 충족하는 데 적합한 보안 프로토콜이 있습니다.이와 동시에 호스트 OS에서 실행되는 다른 앱에는 자체 인프라 요구 사항이 있습니다.이러한 외부 애플리케이션은 OS의 리소스를 DevOps 팀으로부터 빼앗을 뿐만 아니라 각 애플리케이션은 의도치 않게 추가 공격 표면을 생성합니다.컨테이너 보안 수단에는 다른 프로그램을 보호하기 위해 설계된 리소스와 항상 다른 리소스가 필요하기 때문입니다.OS가 보조 애플리케이션 코드를 보호할 수는 있지만 컨테이너가 노출될 수 있습니다.
2.컨테이너와 함께 제공된 소프트웨어를 신뢰하지 마십시오
제공업체의 주장 외에는 컨테이너 보안 조치가 얼마나 강력한지 전혀 모르고 작동 방식도 신경 쓰지 않는다는 점을 명심하는 것이 중요합니다.몇 가지 중요한 질문은 다음과 같습니다.
- 공급자가 필요한 취약성 검사를 수행했습니까?
- 어떤 종류의 침입 방지 시스템을 구현했을까요?
- 컨테이너식 애플리케이션과 함께 사용할 경우 환경이 예상치 못한 위험에 노출됩니까?
컨테이너와 함께 번들로 제공되는 보안 도구의 세부 정보를 모르기 때문에 잠재적 취약성을 보거나 예측할 수 없습니다.따라서 컨테이너 패키지와 함께 제공되는 보호 기능을 믿기 전에 다음과 같은 보안 모범 사례를 구현해 보십시오.
- 용기 내용물을 다시 확인하세요
- 더 이상 사용되지 않는 소프트웨어가 있는 컨테이너를 실행하지 마십시오.
- 소프트웨어에 익숙하지 않은 경우 배포하기 전에 작동 방식을 이해하십시오.
- 각 프로그램과 라이브러리가 실제로 최신의 최고의 보호 기능을 제공하는지 확인하십시오.
3.컨테이너의 런타임 검사
런타임은 컨테이너를 시작하고 관리하는 역할을 하므로 보안 패치를 주의 깊게 추적해야 합니다.런타임에는 뚜렷한 취약점이 있는 것으로 알려져 있습니다.이러한 현상이 반드시 흔하지는 않지만 잠재적 여파는 심각합니다.
예를 들어, 런타임 구성을 통해 컨테이너에 호스트의 디바이스와 디렉터리에 대한 전체 액세스 권한을 부여할 수 있습니다.이 경우 맬웨어에 감염된 컨테이너가 호스트에 대한 공격을 시작하는 데 사용될 수 있습니다.또한 적절한 솔루션을 구현하지 않은 경우 네트워크 세분화, 네트워크 통신의 영향을 받는 다른 컨테이너 및 영역도 감염될 수 있습니다.
취약점은 이전 런타임 프로그램에서 더 두드러질 수 있습니다.이 프로그램이 처음 코딩될 당시에는 문제가 없었을 수도 있지만, 처음부터 사이버 범죄자들은 새로운 공격 방법을 고안해 왔습니다.따라서 레거시 런타임 프로그램에서 취약점이 악용될 가능성이 매달 증가하고 있습니다.또한 오픈 소스 환경에서는 신뢰할 수 있는 소스와 의심스러운 소스를 구별하기 어려울 수 있으므로 주의가 더욱 필요합니다.
4.완전한 가시성 보장
컨테이너를 채택하면 베어메탈 가상 머신 워크로드에서 실행되는 시스템의 수가 기하급수적으로 증가할 수 있습니다.컨테이너의 캡슐화된 특성 때문에 컨테이너를 호스팅하는 워크로드의 가시성이 컨테이너 자체에 대한 적절한 가시성을 제공한다고 가정할 수 없습니다.각 컨테이너를 고유한 개체로 보고 그에 따라 가시성 조치를 취하는 것이 중요합니다.완전한 가시성을 확보하려면 다음을 수행해야 합니다.
- 각 컨테이너의 위치를 자세히 설명하십시오.
- 각 컨테이너의 작업 개요
- 컨테이너로 들어오고 나가는 데이터의 흐름을 매핑합니다.
- 애플리케이션, 파일 및 운영 체제의 리소스를 포함하여 각 컨테이너가 소비할 수 있는 리소스의 개요를 설명합니다.
이 마지막 조치는 매우 중요합니다. 컨테이너 자체는 안전할 수 있지만 다른 곳에서 리소스를 끌어오기 때문입니다.따라서 의도치 않게 다른 곳에서 취약점이 발생할 수 있습니다.또한 산업에 따라 각 컨테이너의 데이터에 적용되는 필수 규정 준수 표준을 수립해야 할 수도 있습니다.
5.네트워크 세그멘테이션 사용
네트워크를 신중하게 분할하면 각 세그먼트에 대해 맞춤형으로 설계된 보안 솔루션과 각 보호 표면을 최소화함으로써 얻을 수 있는 향상된 제어의 이점을 얻을 수 있습니다.
네트워크 세그멘테이션이 컨테이너를 보호하는 방법
세그먼트화되지 않은 네트워크는 벽이 없는 아파트와 같습니다.만약 해충이 실내로 들어온다면 모든 생활 공간에 자유롭게 번식할 수 있을 것입니다.세그멘테이션이 없는 네트워크도 이와 같은 종류의 핵심 취약점을 안고 있습니다.컨테이너는 이름에도 불구하고 본질적으로 “격리”되지 않으며 멀웨어, 바이러스 및 기타 사이버 해충으로부터 보호되지 않습니다.
사용하는 경우 네트워크 세분화 컨테이너에 자체 세그먼트가 있도록 네트워크를 구조화하려면 한 세그먼트에 대한 위협이 다른 세그먼트에 영향을 미치지 않습니다.사실상 해충 방지가 가능한 벽을 만들고 있는 셈이죠.사이버 위협이 내부로 침투할 수 있다고 해도 그 한 구역 안에 갇혀 있을 것입니다.이렇게 하면 측면 또는 동서 오염이 차단되므로 사이버 공격이 네트워크의 한 부분에 침투하더라도 팀은 자유롭게 생산성을 유지할 수 있습니다.
네트워크 세분화를 사용하고, 컨테이너 보안을 3중 확인하고, 런타임 프로그램을 검사하고, OS에서 불필요한 앱을 제거하고, 완전한 가시성을 보장함으로써 DevOps 팀을 위한 더 안전하고 생산적인 환경을 만들 수 있습니다.
자세히 알아보기
방법 알아보기 제로 트러스트 세그멘테이션 쿠버네티스 및 레드햇 OpenShift 플랫폼을 포함한 컨테이너 배포를 보호합니다.