예시: SSH 보안 영역
이 예제에서는 프로덕션 및 개발 환경을 위한 보안 존을 개념적으로 설정하겠습니다.
시작하기 위해 h1부터 h4까지 네 개의 호스트가 있다고 가정해보겠습니다.
h1과 h2에는 "dev" 태그를, h3과 h4에는 "prod" 태그를 지정합니다. 따라서 "dev" 호스트 태그를 가진 두 개의 호스트와 "prod" 호스트 태그를 가진 두 개의 호스트가 있습니다.
두 개의 SSH 키 k1과 k2를 생성합니다. k1을 호스트 h1과 h2("dev" 태그 호스트)의 사용자 authorized_keys 파일에 추가하고, k2를 호스트 h3과 h4("prod" 태그 호스트)의 사용자 authorized_keys 파일에 추가합니다.
우리의 목표는 프로덕션 액세스를 허용하는 자격 증명만 프로덕션 서버에 있도록 하는 것입니다. 즉, 개발 키(또는 기타 키)가 프로덕션 서버에서 허용되지 않기를 원합니다. 따라서 키 k1이 호스트 h3과 h4에 나타나는 것은 "나쁜 일"입니다. 허용되는 SSH 키를 제한하는 프로덕션 호스트용 SSH 보안 존을 설정하려고 합니다.
SSH 보안 존은 호스트 및 키 태그에서만 작동합니다. 개별 호스트나 키를 선택하여 존에 추가할 수 없습니다. 태그가 적용되어야 합니다.
첫째, 호스트가 우리의 목표를 지원하는 방식으로 태그가 지정되어 있는지 확인합니다. 이 경우 이미 그렇습니다. 개발 및 프로덕션 호스트는 "dev" 및 "prod" 호스트 태그로 쉽게 구별됩니다.
둘째, 존에서 허용될 수 있도록 SSH 키에 태그를 지정합니다.
따라서 이 경우 k1에 "dev_key" 태그를 추가하고 k2에 "prod_key" 태그를 추가하겠습니다. (SSH 및 호스트 태그 이름이 달라야 하는 것은 아닙니다. 호스트 태그에 사용한 것처럼 "dev"만 사용할 수도 있지만, 문서 작성 목적상 호스트 태그와 키 태그 사이의 혼동을 피하는 것이 이상적일 것입니다.)
셋째, 3단계로 구성된 "보안 존 생성" 양식을 사용하여 SSH 보안 존을 생성합니다.
1단계: 호스트 지정
존을 생성하는 첫 번째 단계는 어떤 호스트가 존의 일부인지 결정하는 것입니다. 이 예제에서는 "prod" 태그가 있는 호스트가 존에 속하기를 원합니다.

Step 1: Include a Single Host Tag
복합 정책
위의 간단한 예제는 단일 태그를 사용합니다. 여러 규칙을 추가하고 규칙에 둘 이상의 태그를 포함하여 더 복잡한 정책을 구축할 수 있습니다. 예를 들어, 많은 "prod" 호스트가 있고 모두 동일하게 취급하는 것보다 더 세밀하게 허용되는 키를 관리해야 한다고 가정해보겠습니다. "prod" "web" 호스트, "prod" "database" 호스트, "prod" "proxy" 호스트 등이 있을 수 있습니다. 존에서 허용하는 키가 프로덕션 웹 및 프록시 호스트에서만 허용되고 데이터베이스 호스트에서는 허용되지 않기를 원한다면, 두 개의 호스트 태그 규칙을 설정할 수 있습니다. 하나는 "prod"와 "web"를 모두 요구하고, 다른 하나는 "prod"와 "proxy"를 모두 요구하는 규칙입니다:

Step 1: Include Multiple Host Tags
'&' 기호는 단일 규칙에 여러 태그를 추가할 때 자동으로 추가되며, 호스트가 자격을 얻으려면 목록의 모든 태그를 가져야 함을 상기시켜 줍니다. 호스트가 포함 규칙 중 하나와 일치하면 해당 호스트가 존에 속하게 됩니다. 따라서 단일 규칙 내의 태그는 AND 연산으로 결합되고, 포함 규칙 자체는 OR 연산으로 결합됩니다.
또는 prod 데이터베이스 호스트를 제외한 모든 prod 호스트를 포함하는 존을 만들어 동일한 결과를 얻을 수 있습니다. 규칙 내에서 "except" 모드를 사용하면 이를 달성할 수 있습니다:

Step 1: Include a Host Tag + an Except Host Tag
이 존은 "prod" 태그를 가진 모든 호스트를 포함하되 "database" 태그를 가진 호스트는 제외합니다 - "database" 호스트가 "prod" 태그도 가지고 있더라도 마찬가지입니다. "except" 규칙은 어떤 호스트가 이 존에 속하는지 결정할 때 항상 "include" 규칙보다 우선합니다.
오직 "except" 규칙만 있는 경우, Sandfly에 알려진 모든 호스트를 포함한 다음 "except" 규칙과 일치하는 호스트만 존에서 제거하는 암묵적인 "include all" 규칙이 있다는 점을 유의하는 것이 중요합니다.
주의: "except" 규칙만 있을 때는 "include all" 규칙이 암시됩니다오직 "except" 규칙만 있을 때는, Sandfly에 알려진 모든 호스트를 포함한 다음 "except" 규칙과 일치하는 호스트만 존에서 제거하는 암묵적인 "include all" 규칙이 있습니다.
예제로 돌아가서, 단일 "prod" 포함 규칙으로 존을 간단하게 만들겠습니다.
2단계: 키 지정
존을 생성할 때 다음 단계는 존의 호스트에서 어떤 키가 허용되는지 지정하는 것입니다. 태그로 호스트를 선택하는 것처럼, "include" 및 "except" 규칙을 사용하여 태그로 키를 선택합니다. prod 호스트에서 "prod_key"로 태그된 키를 허용하려고 하므로, 이를 보안 존에 속하는 키 태그로 입력합니다:

Step 2: Include a Single Key Tag
3단계: 보안 존 세부 정보
마지막으로, 존을 생성하는 마지막 단계는 존에 이름과 선택적 설명을 부여하는 것입니다:

Step 3: Adding Zone Details
이 존을 저장하면, recon_user_list_all을 포함하는 향후 스캔(사용자의 ssh_authorized_keys 데이터를 수집하는 recon sandfly)에서 허용된 키 태그로 태그되지 않은 SSH 키를 호스트에서 발견하면 경고를 받기 시작합니다.
이 예제에서 키 k1("prod"로 태그되지 않은 키)을 호스트 h3 또는 h4에 추가한다면, 존에서 허용하지 않는 키이므로 존 위반이 됩니다.
Updated 7 days ago