Firezone 방화벽 문서가 있는 Hailbytes VPN

차례

시작하기

Firezone GUI로 Hailbytes VPN을 배포하기 위한 단계별 지침은 여기에서 제공됩니다. 

Administer: 서버 인스턴스 설정은 이 부분과 직접적인 관련이 있습니다.

사용자 가이드: Firezone을 사용하고 일반적인 문제를 해결하는 방법을 알려줄 수 있는 유용한 문서입니다. 서버가 성공적으로 배포된 후 이 섹션을 참조하십시오.

일반 구성 가이드

분할 터널링: VPN을 사용하여 특정 IP 범위로만 트래픽을 보냅니다.

화이트리스트: 화이트리스트를 사용하기 위해 VPN 서버의 고정 IP 주소를 설정합니다.

역방향 터널: 역방향 터널을 사용하여 여러 피어 간에 터널을 만듭니다.

지원 받기

Hailbytes VPN 설치, 사용자 지정 또는 활용에 도움이 필요한 경우 기꺼이 도와드리겠습니다.

인증

사용자가 장치 구성 파일을 생성하거나 다운로드하기 전에 인증을 요구하도록 Firezone을 구성할 수 있습니다. 사용자는 VPN 연결을 활성 상태로 유지하기 위해 주기적으로 재인증해야 할 수도 있습니다.

Firezone의 기본 로그인 방법은 로컬 이메일과 암호이지만 모든 표준화된 OpenID Connect(OIDC) 자격 증명 공급자와 통합될 수도 있습니다. 이제 사용자는 Okta, Google, Azure AD 또는 프라이빗 ID 공급자 자격 증명을 사용하여 Firezone에 로그인할 수 있습니다.

 

일반 OIDC 공급자 통합

OIDC 공급자를 사용하여 SSO를 허용하기 위해 Firezone에 필요한 구성 매개변수는 아래 예에 나와 있습니다. /etc/firezone/firezone.rb에서 구성 파일을 찾을 수 있습니다. firezone-ctl reconfigure 및 firezone-ctl restart를 실행하여 애플리케이션을 업데이트하고 변경 사항을 적용합니다.

 

# Google과 Okta를 SSO ID 공급자로 사용하는 예입니다.

# 동일한 Firezone 인스턴스에 여러 OIDC 구성을 추가할 수 있습니다.

 

# Firezone은 시도 중 오류가 감지되면 사용자의 VPN을 비활성화할 수 있습니다.

# 그들의 access_token을 갱신합니다. 이것은 Google, Okta 및

# Azure SSO는 사용자의 VPN이 제거된 경우 자동으로 연결을 끊는 데 사용됩니다.

# OIDC 공급자로부터. OIDC 공급자가

# 예기치 않게 중단될 수 있으므로 액세스 토큰을 새로 고치는 데 문제가 있습니다.

# 사용자의 VPN 세션.

default['firezone']['authentication']['disable_vpn_on_oidc_error'] = 거짓

 

default['firezone']['인증']['oidc'] = {

  Google: {

    discovery_document_uri: "https://accounts.google.com/.well-known/openid-configuration",

    client_id: “ ",

    client_secret: “ ",

    redirect_uri: "https://instance-id.yourfirezone.com/auth/oidc/google/callback/",

    response_type: "코드",

    범위: "openid 이메일 프로필",

    레이블: "구글"

  },

  옥타: {

    discovery_document_uri: “https:// /.잘 알려진/openid-구성”,

    client_id: “ ",

    client_secret: “ ",

    redirect_uri: "https://instance-id.yourfirezone.com/auth/oidc/okta/callback/",

    response_type: "코드",

    범위: "openid 이메일 프로필 offline_access",

    레이블: "옥타"

  }

}



통합에는 다음 구성 설정이 필요합니다.

  1. discovery_document_uri: OpenID Connect 공급자 구성 URI 이 OIDC 공급자에 대한 후속 요청을 구성하는 데 사용되는 JSON 문서를 반환합니다.
  2. client_id: 애플리케이션의 클라이언트 ID입니다.
  3. client_secret: 애플리케이션의 클라이언트 암호입니다.
  4. redirect_uri: OIDC 공급자에게 인증 후 리디렉션할 위치를 지시합니다. Firezone EXTERNAL_URL + /auth/oidc/여야 합니다. /callback/(예: https://instance-id.yourfirezone.com/auth/oidc/google/callback/).
  5. response_type: 코드로 설정합니다.
  6. 범위: OIDC 범위 귀하의 OIDC 제공자로부터 얻을 수 있습니다. 공급자에 따라 openid email profile 또는 openid email profile offline_access로 설정해야 합니다.
  7. 레이블: Firezone 로그인 화면에 표시되는 버튼 레이블 텍스트입니다.

예쁜 URL

각 OIDC 공급자에 대해 구성된 공급자의 로그인 URL로 리디렉션하기 위해 해당하는 예쁜 URL이 생성됩니다. 위의 예시 OIDC 구성에서 URL은 다음과 같습니다.

  • https://instance-id.yourfirezone.com/auth/oidc/google
  • https://instance-id.yourfirezone.com/auth/oidc/okta

인기 있는 ID 공급자를 사용한 Firezone 설정 지침

문서가 있는 공급자:

  • 구글
  • Okta
  • Azure Active Directory
  • 원로그인
  • 로컬 인증

 

ID 공급자에 일반 OIDC 커넥터가 있고 위에 나열되지 않은 경우 해당 설명서로 이동하여 필요한 구성 설정을 검색하는 방법에 대한 정보를 확인하십시오.

정기적인 재인증 유지

설정/보안의 설정은 주기적인 재인증을 요구하도록 변경할 수 있습니다. 이것은 사용자가 VPN 세션을 계속하기 위해 정기적으로 Firezone에 들어가야 하는 요구 사항을 적용하는 데 사용할 수 있습니다.

세션 길이는 XNUMX시간에서 XNUMX일 사이로 구성할 수 있습니다. 이를 안 함으로 설정하면 언제든지 VPN 세션을 활성화할 수 있습니다. 이것이 표준입니다.

재인증

사용자는 만료된 VPN 세션(배포 중에 지정된 URL)을 재인증하기 위해 VPN 세션을 종료하고 Firezone 포털에 로그인해야 합니다.

여기에 있는 정확한 클라이언트 지침에 따라 세션을 재인증할 수 있습니다.

 

VPN 연결 상태

사용자 페이지의 VPN 연결 테이블 열에는 사용자의 연결 상태가 표시됩니다. 연결 상태는 다음과 같습니다.

ENABLED – 연결이 활성화되었습니다.

DISABLED – 관리자 또는 OIDC 새로 고침 실패로 인해 연결이 비활성화되었습니다.

EXPIRED – 인증 만료로 인해 연결이 비활성화되었거나 사용자가 처음으로 로그인하지 않았습니다.

구글

일반 OIDC 커넥터를 통해 Firezone은 Google Workspace 및 Cloud ID로 싱글 사인온(SSO)을 지원합니다. 이 가이드는 통합에 필요한 아래 나열된 구성 매개변수를 얻는 방법을 보여줍니다.

  1. discovery_document_uri: OpenID Connect 공급자 구성 URI 이 OIDC 공급자에 대한 후속 요청을 구성하는 데 사용되는 JSON 문서를 반환합니다.
  2. client_id: 애플리케이션의 클라이언트 ID입니다.
  3. client_secret: 애플리케이션의 클라이언트 암호입니다.
  4. redirect_uri: OIDC 공급자에게 인증 후 리디렉션할 위치를 지시합니다. Firezone EXTERNAL_URL + /auth/oidc/여야 합니다. /callback/(예: https://instance-id.yourfirezone.com/auth/oidc/google/callback/).
  5. response_type: 코드로 설정합니다.
  6. 범위: OIDC 범위 귀하의 OIDC 제공자로부터 얻을 수 있습니다. 반환된 클레임에서 Firezone에 사용자 이메일을 제공하려면 openid 이메일 프로필로 설정해야 합니다.
  7. 레이블: Firezone 로그인 화면에 표시되는 버튼 레이블 텍스트입니다.

구성 설정 얻기

1. OAuth 구성 화면â € <

새 OAuth 클라이언트 ID를 처음 만드는 경우 동의 화면을 구성하라는 메시지가 표시됩니다.

*사용자 유형으로 내부를 선택하십시오. 이렇게 하면 Google Workspace 조직의 사용자에게 속한 계정만 기기 구성을 만들 수 있습니다. 유효한 Google 계정이 있는 사람이 장치 구성을 생성할 수 있도록 하려면 외부를 선택하지 마십시오.

 

앱 정보 화면에서:

  1. 앱 이름: 파이어존
  2. 앱 로고: Firezone 로고 (다른 이름으로 링크 저장).
  3. 애플리케이션 홈 페이지: Firezone 인스턴스의 URL입니다.
  4. 승인된 도메인: Firezone 인스턴스의 최상위 도메인입니다.

 

 

2. OAuth 클라이언트 ID 생성â € <

이 섹션은 에 대한 Google의 자체 문서를 기반으로 합니다. OAuth 2.0 설정.

Google 클라우드 콘솔 방문 자격 증명 페이지 페이지에서 + 자격 증명 만들기를 클릭하고 OAuth 클라이언트 ID를 선택합니다.

OAuth 클라이언트 ID 생성 화면에서:

  1. 애플리케이션 유형을 웹 애플리케이션으로 설정
  2. Firezone EXTERNAL_URL + /auth/oidc/google/callback/(예: https://instance-id.yourfirezone.com/auth/oidc/google/callback/)을 승인된 리디렉션 URI에 대한 항목으로 추가합니다.

 

OAuth 클라이언트 ID를 생성하면 클라이언트 ID와 클라이언트 시크릿이 제공됩니다. 이들은 다음 단계에서 리디렉션 URI와 함께 사용됩니다.

Firezone 통합

편집 /etc/firezone/firezone.rb 아래 옵션을 포함하려면:

 

# Google을 SSO ID 공급자로 사용

default['firezone']['인증']['oidc'] = {

  Google: {

    discovery_document_uri: "https://accounts.google.com/.well-known/openid-configuration",

    client_id: “ ",

    client_secret: “ ",

    redirect_uri: "https://instance-id.yourfirezone.com/auth/oidc/google/callback/",

    response_type: "코드",

    범위: "openid 이메일 프로필",

    레이블: "구글"

  }

}

 

firezone-ctl reconfigure 및 firezone-ctl restart를 실행하여 애플리케이션을 업데이트합니다. 이제 루트 Firezone URL에 Google로 로그인 버튼이 표시됩니다.

Okta

Firezone은 일반 OIDC 커넥터를 사용하여 Okta로 SSO(Single Sign-On)를 용이하게 합니다. 이 튜토리얼에서는 통합에 필요한 아래 나열된 구성 매개변수를 얻는 방법을 보여줍니다.

  1. discovery_document_uri: OpenID Connect 공급자 구성 URI 이 OIDC 공급자에 대한 후속 요청을 구성하는 데 사용되는 JSON 문서를 반환합니다.
  2. client_id: 애플리케이션의 클라이언트 ID입니다.
  3. client_secret: 애플리케이션의 클라이언트 암호입니다.
  4. redirect_uri: OIDC 공급자에게 인증 후 리디렉션할 위치를 지시합니다. Firezone EXTERNAL_URL + /auth/oidc/여야 합니다. /callback/(예: https://instance-id.yourfirezone.com/auth/oidc/okta/callback/).
  5. response_type: 코드로 설정합니다.
  6. 범위: OIDC 범위 귀하의 OIDC 제공자로부터 얻을 수 있습니다. 반환된 클레임에서 Firezone에 사용자 이메일을 제공하려면 openid email profile offline_access로 설정해야 합니다.
  7. 레이블: Firezone 로그인 화면에 표시되는 버튼 레이블 텍스트입니다.

 

Okta 앱 통합

가이드의 이 섹션은 Okta의 문서.

Admin Console에서 애플리케이션 > 애플리케이션으로 이동하고 앱 통합 만들기를 클릭합니다. 로그인 방법을 OICD – OpenID Connect로 설정하고 애플리케이션 유형을 웹 애플리케이션으로 설정합니다.

다음 설정을 구성합니다.

  1. 앱 이름: 파이어존
  2. 앱 로고: Firezone 로고 (다른 이름으로 링크 저장).
  3. 부여 유형: 새로 고침 토큰 상자를 선택합니다. 이렇게 하면 사용자가 제거되면 Firezone이 ID 공급자와 동기화되고 VPN 액세스가 종료됩니다.
  4. 로그인 리디렉션 URI: 인증된 리디렉션 URI에 대한 항목으로 Firezone EXTERNAL_URL + /auth/oidc/okta/callback/(예: https://instance-id.yourfirezone.com/auth/oidc/okta/callback/)을 추가합니다. .
  5. 할당: Firezone 인스턴스에 대한 액세스를 제공하려는 그룹으로 제한합니다.

설정이 저장되면 클라이언트 ID, 클라이언트 암호 및 Okta 도메인이 제공됩니다. 이 3개의 값은 2단계에서 Firezone을 구성하는 데 사용됩니다.

Firezone 통합

편집 /etc/firezone/firezone.rb 아래 옵션을 포함합니다. 당신의 discovery_document_url 될거야 /.잘 알려진/openid-구성 당신의 끝에 추가 okta_domain.

 

# Okta를 SSO ID 공급자로 사용

default['firezone']['인증']['oidc'] = {

  옥타: {

    discovery_document_uri: “https:// /.잘 알려진/openid-구성”,

    client_id: “ ",

    client_secret: “ ",

    redirect_uri: "https://instance-id.yourfirezone.com/auth/oidc/okta/callback/",

    response_type: "코드",

    범위: "openid 이메일 프로필 offline_access",

    레이블: "옥타"

  }

}

 

firezone-ctl reconfigure 및 firezone-ctl restart를 실행하여 애플리케이션을 업데이트합니다. 이제 루트 Firezone URL에 Okta로 로그인 버튼이 표시되어야 합니다.

 

특정 사용자에 대한 액세스 제한

Firezone 앱에 액세스할 수 있는 사용자는 Okta에서 제한할 수 있습니다. 이를 수행하려면 Okta Admin Console의 Firezone 앱 통합의 할당 페이지로 이동하십시오.

Azure Active Directory

일반 OIDC 커넥터를 통해 Firezone은 Azure Active Directory에서 SSO(Single Sign-On)를 활성화합니다. 이 설명서는 통합에 필요한 아래 나열된 구성 매개변수를 얻는 방법을 보여줍니다.

  1. discovery_document_uri: OpenID Connect 공급자 구성 URI 이 OIDC 공급자에 대한 후속 요청을 구성하는 데 사용되는 JSON 문서를 반환합니다.
  2. client_id: 애플리케이션의 클라이언트 ID입니다.
  3. client_secret: 애플리케이션의 클라이언트 암호입니다.
  4. redirect_uri: OIDC 공급자에게 인증 후 리디렉션할 위치를 지시합니다. Firezone EXTERNAL_URL + /auth/oidc/여야 합니다. /callback/(예: https://instance-id.yourfirezone.com/auth/oidc/azure/callback/).
  5. response_type: 코드로 설정합니다.
  6. 범위: OIDC 범위 귀하의 OIDC 제공자로부터 얻을 수 있습니다. 반환된 클레임에서 Firezone에 사용자 이메일을 제공하려면 openid email profile offline_access로 설정해야 합니다.
  7. 레이블: Firezone 로그인 화면에 표시되는 버튼 레이블 텍스트입니다.

구성 설정 가져오기

이 가이드는 Azure Active Directory 문서.

 

Azure Portal의 Azure Active Directory 페이지로 이동합니다. 관리 메뉴 옵션을 선택하고 신규 등록을 선택한 다음 아래 정보를 제공하여 등록하십시오.

  1. 이름: 파이어존
  2. 지원되는 계정 유형: (기본 디렉터리만 – 단일 테넌트)
  3. 리디렉션 URI: Firezone EXTERNAL_URL + /auth/oidc/azure/callback/(예: https://instance-id.yourfirezone.com/auth/oidc/azure/callback/)이어야 합니다. 후행 슬래시를 포함해야 합니다. 이것이 redirect_uri 값이 됩니다.

 

등록 후 애플리케이션의 상세 보기를 열고 애플리케이션 (클라이언트) ID. 이것이 client_id 값이 됩니다. 다음으로 엔드포인트 메뉴를 열어 OpenID Connect 메타데이터 문서. 이는 discovery_document_uri 값이 됩니다.

 

관리 메뉴에서 인증서 및 비밀 옵션을 클릭하여 새 클라이언트 비밀을 만듭니다. 클라이언트 암호를 복사합니다. 클라이언트 암호 값은 이것입니다.

 

마지막으로 관리 메뉴에서 API 권한 링크를 선택하고 권한 추가, 선택 Microsoft Graph, 추가 이메일, openid, 오프라인_액세스윤곽 필요한 권한에.

Firezone 통합

편집 /etc/firezone/firezone.rb 아래 옵션을 포함하려면:

 

# Azure Active Directory를 SSO ID 공급자로 사용

default['firezone']['인증']['oidc'] = {

  하늘빛: {

    discovery_document_uri: “https://login.microsoftonline.com/ /v2.0/.well-known/openid-configuration”,

    client_id: “ ",

    client_secret: “ ",

    redirect_uri: "https://instance-id.yourfirezone.com/auth/oidc/azure/callback/",

    response_type: "코드",

    범위: "openid 이메일 프로필 offline_access",

    레이블: "Azure"

  }

}

 

firezone-ctl reconfigure 및 firezone-ctl restart를 실행하여 애플리케이션을 업데이트합니다. 이제 루트 Firezone URL에 Azure로 로그인 버튼이 표시됩니다.

방법: 특정 구성원에 대한 액세스 제한

Azure AD를 사용하여 관리자는 회사 내부의 특정 사용자 그룹에 대한 앱 액세스를 제한할 수 있습니다. 이를 수행하는 방법에 대한 자세한 내용은 Microsoft 설명서에서 찾을 수 있습니다.

관리

  • 구성
  • 설치 관리
  • 업그레이드
  • 문제 해결
  • 보안 고려 사항
  • SQL 쿼리 실행

구성

Chef Omnibus는 Firezone에서 릴리스 패키징, 프로세스 감독, 로그 관리 등의 작업을 관리하는 데 사용됩니다.

Ruby 코드는 /etc/firezone/firezone.rb에 있는 기본 구성 파일을 구성합니다. 이 파일을 수정한 후 sudo firezone-ctl reconfigure를 다시 시작하면 Chef가 변경 사항을 인식하고 현재 운영 체제에 적용합니다.

구성 변수 및 해당 설명의 전체 목록은 구성 파일 참조를 참조하십시오.

설치 관리

Firezone 인스턴스는 다음을 통해 관리할 수 있습니다. Firezone-ctl 아래와 같이 명령합니다. 대부분의 하위 명령에는 sudo는.

 

root@demo:~# firezone-ctl

omnibus-ctl: 명령(하위 명령)

일반 명령:

  청결하게하다

    *모든* firezone 데이터를 삭제하고 처음부터 시작하십시오.

  생성 또는 재설정 관리자

    default['firezone']['admin_email']로 지정된 이메일을 사용하여 관리자의 비밀번호를 재설정하거나 해당 이메일이 존재하지 않는 경우 새 관리자를 생성합니다.

  도움

    이 도움말 메시지를 인쇄하십시오.

  재구성하다

    응용 프로그램을 재구성하십시오.

  재설정 네트워크

    nftables, WireGuard 인터페이스 및 라우팅 테이블을 Firezone 기본값으로 재설정합니다.

  쇼 구성

    재구성에 의해 생성되는 구성을 표시합니다.

  분해 네트워크

    WireGuard 인터페이스 및 firezone nftables 테이블을 제거합니다.

  강제 인증서 갱신

    인증서가 만료되지 않았더라도 지금 강제로 갱신하십시오.

  stop-cert-갱신

    인증서를 갱신하는 cronjob을 제거합니다.

  제거

    모든 프로세스를 종료하고 프로세스 감독자를 제거합니다(데이터는 보존됨).

  버전

    Firezone의 현재 버전 표시

서비스 관리 명령:

  우아하게 죽이기

    정상적인 중지를 시도한 다음 전체 프로세스 그룹을 SIGKILL합니다.

  앉다

    서비스에 HUP를 보냅니다.

  INT

    서비스에 INT를 보냅니다.

  죽이기

    서비스에 KILL을 보냅니다.

  일단

    다운된 경우 서비스를 시작합니다. 중지된 경우 다시 시작하지 마십시오.

  다시 시작

    실행 중인 경우 서비스를 중지한 다음 다시 시작하십시오.

  서비스 목록

    모든 서비스를 나열합니다(활성화된 서비스는 *와 함께 표시됨).

  스타트

    서비스가 다운된 경우 시작하고 중지된 경우 다시 시작합니다.

  지위

    모든 서비스의 상태를 표시합니다.

  중지

    서비스를 중지하고 다시 시작하지 마십시오.

  꼬리

    활성화된 모든 서비스의 서비스 로그를 확인합니다.

  기간

    서비스에 TERM을 보냅니다.

  usr1

    서비스에 USR1을 보냅니다.

  usr2

    서비스에 USR2을 보냅니다.

업그레이드

Firezone을 업그레이드하기 전에 모든 VPN 세션을 종료해야 합니다. 이때 웹 UI도 종료해야 합니다. 업그레이드 중에 문제가 발생하는 경우 유지 관리를 위해 XNUMX시간을 할애하는 것이 좋습니다.

 

Firezone을 강화하려면 다음 조치를 취하십시오.

  1. 단일 명령 설치를 사용하여 firezone 패키지를 업그레이드합니다. sudo -E bash -c “$(curl -fsSL https://github.com/firezone/firezone/raw/master/scripts/install.sh)”
  2. firezone-ctl reconfigure를 실행하여 새 변경 사항을 적용합니다.
  3. firezone-ctl restart를 실행하여 서비스를 다시 시작합니다.

문제가 발생하면 다음을 통해 알려주십시오. 지원 티켓 제출.

<0.5.0에서 >=0.5.0으로 업그레이드

0.5.0에는 해결해야 할 몇 가지 주요 변경 사항 및 구성 수정 사항이 있습니다. 아래에서 자세히 알아보세요.

번들 Nginx non_ssl_port(HTTP) 요청 제거

Nginx는 버전 0.5.0부터 강제 SSL 및 비SSL 포트 매개변수를 더 이상 지원하지 않습니다. Firezone이 작동하려면 SSL이 필요하므로 default['firezone']['nginx']['enabled'] = false로 설정하고 역방향 프록시를 포트 13000의 Phoenix 앱으로 지정하여 번들 Nginx 서비스를 제거하는 것이 좋습니다(기본적으로 ).

ACME 프로토콜 지원

0.5.0은 번들 Nginx 서비스로 SSL 인증서를 자동으로 갱신하기 위한 ACME 프로토콜 지원을 도입합니다. 사용하려면,

  • default['firezone']['external_url']에 서버의 공용 IP 주소로 확인되는 유효한 FQDN이 포함되어 있는지 확인하세요.
  • 포트 80/tcp에 연결할 수 있는지 확인
  • 구성 파일에서 default['firezone']['ssl']['acme']['enabled'] = true로 ACME 프로토콜 지원을 활성화합니다.

겹치는 이그레스 규칙 대상

Firezone 0.5.0에서는 목적지가 중복된 규칙을 추가할 수 있는 기능이 사라졌습니다. 마이그레이션 스크립트는 0.5.0으로 업그레이드하는 동안 이러한 상황을 자동으로 인식하고 대상에 다른 규칙이 포함된 규칙만 유지합니다. 이것이 괜찮다면 당신이 해야 할 일은 아무것도 없습니다.

그렇지 않으면 업그레이드하기 전에 이러한 상황을 없애기 위해 규칙 세트를 변경하는 것이 좋습니다.

Okta 및 Google SSO 사전 구성

Firezone 0.5.0은 새롭고 보다 유연한 OIDC 기반 구성을 위해 이전 스타일의 Okta 및 Google SSO 구성에 대한 지원을 제거합니다. 

default['firezone']['authentication']['okta'] 또는 default['firezone']['authentication']['google'] 키 아래에 구성이 있는 경우 이를 OIDC로 마이그레이션해야 합니다. 아래 가이드를 사용하여 기반 구성.

기존 Google OAuth 구성

/etc/firezone/firezone.rb에 있는 구성 파일에서 이전 Google OAuth 구성이 포함된 이 줄을 제거합니다.

 

default['firezone']['인증']['google']['활성화']

default['firezone']['authentication']['google']['client_id']

default['firezone']['authentication']['google']['client_secret']

default['firezone']['authentication']['google']['redirect_uri']

 

그런 다음 여기의 절차에 따라 Google을 OIDC 공급자로 구성합니다.

(링크 안내 제공)<<<<<<<<<<<<<<<<

 

기존 Google OAuth 구성 

다음 위치에 있는 구성 파일에서 이전 Okta OAuth 구성이 포함된 이 줄을 제거하십시오. /etc/firezone/firezone.rb

 

default['firezone']['인증']['okta']['활성화']

default['firezone']['authentication']['okta']['client_id']

default['firezone']['authentication']['okta']['client_secret']

기본값['firezone']['인증']['okta']['사이트']

 

그런 다음 여기의 절차에 따라 Okta를 OIDC 공급자로 구성합니다.

0.3.x에서 >= 0.3.16으로 업그레이드

현재 설정 및 버전에 따라 아래 지침을 따르십시오.

이미 OIDC 통합이 있는 경우:

일부 OIDC 공급자의 경우 >= 0.3.16으로 업그레이드하려면 오프라인 액세스 범위에 대한 새로 고침 토큰을 받아야 합니다. 이렇게 함으로써 Firezone이 ID 공급자와 함께 업데이트되고 사용자가 삭제된 후 VPN 연결이 차단되는지 확인합니다. Firezone의 이전 버전에는 이 기능이 없었습니다. 경우에 따라 ID 공급자에서 삭제된 사용자가 여전히 VPN에 연결되어 있을 수 있습니다.

오프라인 액세스 범위를 지원하는 OIDC 공급자에 대한 OIDC 구성의 범위 매개변수에 오프라인 액세스를 포함해야 합니다. /etc/firezone/firezone.rb에 있는 Firezone 구성 파일에 변경 사항을 적용하려면 Firezone-ctl 재구성을 실행해야 합니다.

OIDC 공급자가 인증한 사용자의 경우 Firezone이 새로 고침 토큰을 성공적으로 검색할 수 있는 경우 웹 UI의 사용자 세부 정보 페이지에 OIDC 연결 제목이 표시됩니다.

이것이 작동하지 않으면 기존 OAuth 앱을 삭제하고 OIDC 설정 단계를 반복하여 새로운 앱 통합 생성 .

기존 OAuth 통합이 있습니다.

0.3.11 이전에는 Firezone이 사전 구성된 OAuth2 공급자를 사용했습니다. 

지시를 따르다 여기에서 지금 확인해 보세요. OIDC로 마이그레이션합니다.

ID 공급자를 통합하지 않았습니다.

조치가 필요하지 않습니다. 

지침을 따를 수 있습니다. 여기에서 지금 확인해 보세요. OIDC 공급자를 통해 SSO를 활성화합니다.

0.3.1에서 >= 0.3.2로 업그레이드

대신 default['firezone']['external url'] 구성 옵션 default['firezone']['fqdn']을 대체했습니다. 

일반 대중이 액세스할 수 있는 Firezone 온라인 포털의 URL로 설정합니다. 정의되지 않은 경우 기본값은 https://와 서버의 FQDN입니다.

구성 파일은 /etc/firezone/firezone.rb에 있습니다. 구성 변수 및 해당 설명의 전체 목록은 구성 파일 참조를 참조하십시오.

0.2.x에서 0.3.x로 업그레이드

Firezone은 더 이상 버전 0.3.0부터 Firezone 서버에 장치 개인 키를 보관하지 않습니다. 

Firezone 웹 UI에서는 이러한 구성을 다시 다운로드하거나 볼 수 없지만 기존 장치는 그대로 계속 작동해야 합니다.

0.1.x에서 0.2.x로 업그레이드

Firezone 0.1.x에서 업그레이드하는 경우 수동으로 해결해야 하는 몇 가지 구성 파일 변경 사항이 있습니다. 

/etc/firezone/firezone.rb 파일을 수정하려면 아래 명령을 루트로 실행하십시오.

 

CP /etc/firezone/firezone.rb /etc/firezone/firezone.rb.bak

sed -i "s/\['활성화'\]/\['활성화'\]/" /etc/firezone/firezone.rb

echo “default['firezone']['connectivity_checks']['enabled'] = true” >> /etc/firezone/firezone.rb

echo "default['firezone']['connectivity_checks']['interval'] = 3_600” >> /etc/firezone/firezone.rb

firezone-ctl 재구성

firezone-ctl 재시작

문제해결

Firezone 로그를 확인하는 것은 발생할 수 있는 모든 문제에 대한 현명한 첫 번째 단계입니다.

sudo firezone-ctl tail을 실행하여 Firezone 로그를 봅니다.

연결 문제 디버깅

Firezone의 대부분의 연결 문제는 호환되지 않는 iptables 또는 nftables 규칙으로 인해 발생합니다. 유효한 규칙이 Firezone 규칙과 충돌하지 않는지 확인해야 합니다.

터널이 활성화되면 인터넷 연결이 끊어짐

WireGuard 터널을 활성화할 때마다 인터넷 연결이 저하되는 경우 FORWARD 체인이 WireGuard 클라이언트에서 Firezone을 통과하려는 위치로 패킷을 허용하는지 확인하십시오.

 

기본 라우팅 정책이 허용인지 확인하여 ufw를 사용하는 경우 이를 달성할 수 있습니다.

 

ubuntu@fz:~$ sudo ufw 기본 허용 라우팅됨

기본 라우팅 정책이 '허용'으로 변경됨

(따라서 규칙을 업데이트해야 합니다)

 

A ufw 일반적인 Firezone 서버의 상태는 다음과 같습니다.

 

ubuntu@fz:~$ sudo ufw 상태 상세 정보

상태 : 활성

로깅: 켜짐(낮음)

기본값: 거부(수신), 허용(발신), 허용(라우팅)

새 프로필: 건너뛰기

 

작업 시작

— —— —-

22/tcp 어디에서나 허용

80/tcp 어디에서나 허용

443/tcp 어디서나 허용

51820/udp 어디서나 허용

22/tcp(v6) 어디서나 허용(v6)

80/tcp(v6) 어디서나 허용(v6)

443/tcp(v6) 어디서나 허용(v6)

51820/udp(v6) 어디서나 허용(v6)

보안 고려 사항

아래에 설명된 대로 매우 민감하고 미션 크리티컬한 프로덕션 배포를 위해 웹 인터페이스에 대한 액세스를 제한하는 것이 좋습니다.

서비스 및 포트

 

예배

기본 포트

수신 주소

상품 설명

Nginx에

80, 443

모든

Firezone을 관리하고 인증을 용이하게 하기 위한 공개 HTTP(S) 포트.

와이어 가드

51820

모든

VPN 세션에 사용되는 공용 WireGuard 포트. (UDP)

Postgresql

15432

127.0.0.1

번들 PostgreSQL 서버에 사용되는 로컬 전용 포트입니다.

피닉스

13000

127.0.0.1

업스트림 Elixir 앱 서버에서 사용하는 로컬 전용 포트입니다.

프로덕션 배포

Firezone의 공개적으로 노출된 웹 UI(기본적으로 포트 443/tcp 및 80/tcp)에 대한 액세스를 제한하는 것에 대해 생각하고 대신 WireGuard 터널을 사용하여 단일 관리자가 담당하는 프로덕션 및 공개 배포용 Firezone을 관리하는 것이 좋습니다. 장치 구성을 생성하고 최종 사용자에게 배포하는 것입니다.

 

예를 들어 관리자가 장치 구성을 만들고 로컬 WireGuard 주소 10.3.2.2로 터널을 만든 경우 다음 ufw 구성을 통해 관리자는 기본 10.3.2.1을 사용하여 서버의 wg-firezone 인터페이스에서 Firezone 웹 UI에 액세스할 수 있습니다. 터널 주소:

 

root@demo:~# ufw 상태 상세 정보

상태 : 활성

로깅: 켜짐(낮음)

기본값: 거부(수신), 허용(발신), 허용(라우팅)

새 프로필: 건너뛰기

 

작업 시작

— —— —-

22/tcp 어디에서나 허용

51820/udp 어디서나 허용

10.3.2.2에서 어디에서나 허용

22/tcp(v6) 어디서나 허용(v6)

51820/udp(v6) 어디서나 허용(v6)

이것은 만 남을 것입니다 22/TCP 서버 관리를 위해 SSH 액세스를 위해 노출(선택 사항) 51820/udp WireGuard 터널을 설정하기 위해 노출됩니다.

SQL 쿼리 실행

Firezone은 PostgreSQL 서버와 매칭을 번들로 제공합니다. psql 다음과 같이 로컬 셸에서 사용할 수 있는 유틸리티:

 

/opt/firezone/embedded/bin/psql \

  -U 파이어존 \

  -d 파이어존 \

  -h 로컬 호스트 \

  -p 15432 \

  -c "SQL_STATEMENT"

 

이는 디버깅 목적에 도움이 될 수 있습니다.

 

일반적인 작업 :

 

  • 모든 사용자 나열
  • 모든 장치 나열
  • 사용자 역할 변경
  • 데이터베이스 백업



모든 사용자 나열:

 

/opt/firezone/embedded/bin/psql \

  -U 파이어존 \

  -d 파이어존 \

  -h 로컬 호스트 \

  -p 15432 \

  -c "사용자로부터 * 선택;"



모든 장치 나열:

 

/opt/firezone/embedded/bin/psql \

  -U 파이어존 \

  -d 파이어존 \

  -h 로컬 호스트 \

  -p 15432 \

  -c "장치에서 * 선택;"



사용자 역할 변경:

 

역할을 'admin' 또는 'unprivileged'로 설정합니다.

 

/opt/firezone/embedded/bin/psql \

  -U 파이어존 \

  -d 파이어존 \

  -h 로컬 호스트 \

  -p 15432 \

  -c "UPDATE users SET 역할 = 'admin' WHERE 이메일 = 'user@example.com';"



데이터베이스 백업:

 

또한 데이터베이스를 정기적으로 백업하는 데 사용할 수 있는 pg 덤프 프로그램이 포함되어 있습니다. 다음 코드를 실행하여 공통 SQL 쿼리 형식으로 데이터베이스 복사본을 덤프합니다(/path/to/backup.sql을 SQL 파일을 생성해야 하는 위치로 대체).

 

/opt/firezone/embedded/bin/pg_dump \

  -U 파이어존 \

  -d 파이어존 \

  -h 로컬 호스트 \

  -p 15432 > /path/to/backup.sql

사용 설명서

  • 사용자 추가
  • 장치 추가
  • 이그레스 규칙
  • 클라이언트 지침
  • 분할 터널 VPN
  • 리버스 터널 
  • NAT 게이트웨이

사용자 추가

Firezone이 성공적으로 배포된 후에는 네트워크에 대한 액세스를 제공할 사용자를 추가해야 합니다. 이를 위해 웹 UI가 사용됩니다.

 

웹 UI


/users 아래의 "사용자 추가" 버튼을 선택하면 사용자를 추가할 수 있습니다. 귀하는 사용자에게 이메일 주소와 비밀번호를 제공해야 합니다. 조직의 사용자에게 자동으로 액세스를 허용하기 위해 Firezone은 ID 공급자와 인터페이스하고 동기화할 수도 있습니다. 자세한 내용은 인증. < 인증 링크 추가

장치 추가

개인 키만 볼 수 있도록 사용자가 자신의 장치 구성을 생성하도록 요청하는 것이 좋습니다. 사용자는 다음 지침에 따라 자신의 장치 구성을 생성할 수 있습니다. 클라이언트 지침 페이지.

 

관리 기기 구성 생성 중

모든 사용자 장치 구성은 Firezone 관리자가 만들 수 있습니다. /users에 있는 사용자 프로필 페이지에서 "장치 추가" 옵션을 선택하여 이를 수행합니다.

 

[스크린샷 삽입]

 

장치 프로필을 생성한 후 사용자에게 WireGuard 구성 파일을 이메일로 보낼 수 있습니다.

 

사용자와 장치가 연결됩니다. 사용자 추가 방법에 대한 자세한 내용은 다음을 참조하십시오. 사용자 추가.

이그레스 규칙

커널의 넷필터 시스템을 사용하여 Firezone은 송신 필터링 기능을 활성화하여 DROP 또는 ACCEPT 패킷을 지정합니다. 모든 트래픽은 정상적으로 허용됩니다.

 

IPv4 및 IPv6 CIDR과 IP 주소는 각각 Allowlist 및 Denylist를 통해 지원됩니다. 규칙을 추가할 때 해당 사용자의 모든 장치에 규칙을 적용하는 규칙의 범위를 사용자에게 지정할 수 있습니다.

클라이언트 지침

설치 및 구성

기본 WireGuard 클라이언트를 사용하여 VPN 연결을 설정하려면 이 가이드를 참조하십시오.

 

1. 기본 WireGuard 클라이언트 설치

 

여기에 있는 공식 WireGuard 클라이언트는 Firezone과 호환됩니다.

 

맥 OS

 

Windows

 

iOS

 

Android

 

위에 언급되지 않은 OS 시스템의 경우 공식 WireGuard 웹사이트(https://www.wireguard.com/install/)를 방문하십시오.

 

2. 장치 구성 파일 다운로드

 

Firezone 관리자 또는 자신이 Firezone 포털을 사용하여 장치 구성 파일을 생성할 수 있습니다.

 

장치 구성 파일을 자체 생성하려면 Firezone 관리자가 제공한 URL을 방문하십시오. 귀하의 회사는 이에 대한 고유한 URL을 갖게 됩니다. 이 경우 https://instance-id.yourfirezone.com입니다.

 

Firezone Okta SSO에 로그인

 

[스크린샷 삽입]

 

3. 클라이언트 구성 추가

 

.conf 파일을 열어 WireGuard 클라이언트로 가져옵니다. 활성화 스위치를 켜면 VPN 세션을 시작할 수 있습니다.

 

[스크린샷 삽입]

세션 재인증

네트워크 관리자가 VPN 연결을 활성 상태로 유지하기 위해 반복 인증을 요구한 경우 아래 지침을 따르십시오. 



당신이 필요합니다 :

 

Firezone 포털의 URL: 네트워크 관리자에게 연결을 요청하십시오.

네트워크 관리자는 로그인과 암호를 제공할 수 있어야 합니다. Firezone 사이트는 고용주가 사용하는 단일 로그인 서비스(예: Google 또는 Okta)를 사용하여 로그인하라는 메시지를 표시합니다.

 

1. VPN 연결을 끕니다.

 

[스크린샷 삽입]

 

2. 재인증 

Firezone 포털의 URL로 이동하고 네트워크 관리자가 제공한 자격 증명을 사용하여 로그인합니다. 이미 로그인한 경우 다시 로그인하기 전에 재인증 버튼을 클릭하십시오.

 

[스크린샷 삽입]

 

3단계: VPN 세션 시작

[스크린샷 삽입]

Linux용 네트워크 관리자

Linux 장치에서 Network Manager CLI를 사용하여 WireGuard 구성 프로필을 가져오려면 다음 지침(nmcli)을 따르십시오.

주의사항

프로파일에 IPv6 지원이 활성화된 경우 Network Manager GUI를 사용하여 구성 파일을 가져오려고 하면 다음 오류와 함께 실패할 수 있습니다.

ipv6.method: "자동" 방법은 WireGuard에서 지원되지 않습니다.

1. WireGuard 도구 설치 

WireGuard 사용자 공간 유틸리티를 설치해야 합니다. 이는 Linux 배포판용 wireguard 또는 wireguard-tools라는 패키지입니다.

우분투/데비안:

sudo apt 설치 와이어가드

페도라를 사용하려면:

sudo dnf 설치 wireguard 도구

아치 리눅스 :

sudo pacman -S 와이어가드 도구

위에 언급되지 않은 배포판은 https://www.wireguard.com/install/의 공식 WireGuard 웹사이트를 방문하십시오.

2. 구성 다운로드 

Firezone 관리자 또는 자가 생성자는 Firezone 포털을 사용하여 장치 구성 파일을 생성할 수 있습니다.

장치 구성 파일을 자체 생성하려면 Firezone 관리자가 제공한 URL을 방문하십시오. 귀하의 회사는 이에 대한 고유한 URL을 갖게 됩니다. 이 경우 https://instance-id.yourfirezone.com입니다.

[스크린샷 삽입]

3. 설정 가져 오기

nmcli를 사용하여 제공된 구성 파일을 가져옵니다.

sudo nmcli 연결 가져오기 유형 wireguard 파일 /path/to/configuration.conf

주의사항

구성 파일의 이름은 WireGuard 연결/인터페이스에 해당합니다. 가져온 후 필요한 경우 연결 이름을 변경할 수 있습니다.

nmcli 연결 수정 [이전 이름] connection.id [새 이름]

4. 연결 또는 연결 해제

명령줄을 통해 다음과 같이 VPN에 연결합니다.

nmcli 연결 [vpn 이름]

연결을 끊으려면 :

nmcli 연결 중지 [vpn 이름]

GUI를 사용하는 경우 적용 가능한 Network Manager 애플릿을 사용하여 연결을 관리할 수도 있습니다.

자동 연결

자동 연결 옵션에 대해 "예"를 선택하면 VPN 연결이 자동으로 연결되도록 구성할 수 있습니다.

 

nmcli 연결 수정 [vpn 이름] 연결. <<<<<<<<<<<<<<<<<<<<<<

 

자동 연결 예

 

자동 연결을 비활성화하려면 다시 no로 설정하십시오.

 

nmcli 연결 수정 [vpn 이름] 연결.

 

자동 연결 아니요

다단계 인증을 사용 가능하게 만들기

MFA를 활성화하려면 Firezone 포털의 /user account/register mfa 페이지로 이동합니다. 생성된 QR 코드를 인증 앱을 사용하여 스캔한 다음 XNUMX자리 코드를 입력하십시오.

인증 앱을 분실한 경우 관리자에게 문의하여 계정의 액세스 정보를 재설정하십시오.

분할 터널 VPN

이 튜토리얼은 특정 IP 범위에 대한 트래픽만 VPN 서버를 통해 전달되도록 Firezone으로 WireGuard의 분할 터널링 기능을 설정하는 과정을 안내합니다.

 

1. 허용 IP 구성 

클라이언트가 네트워크 트래픽을 라우팅할 IP 범위는 /settings/default 페이지에 있는 허용된 IP 필드에 명시되어 있습니다. Firezone에서 생성된 새로 생성된 WireGuard 터널 구성만 이 필드에 대한 변경 사항의 영향을 받습니다.

 

[스크린샷 삽입]



기본값은 클라이언트에서 VPN 서버로 모든 네트워크 트래픽을 라우팅하는 0.0.0.0/0, ::/0입니다.

 

이 필드의 값 예는 다음과 같습니다.

 

0.0.0.0/0, ::/0 – 모든 네트워크 트래픽이 VPN 서버로 라우팅됩니다.

192.0.2.3/32 – 단일 IP 주소에 대한 트래픽만 VPN 서버로 라우팅됩니다.

3.5.140.0/22 ​​– 3.5.140.1 – 3.5.143.254 범위의 IP에 대한 트래픽만 VPN 서버로 라우팅됩니다. 이 예에서는 ap-northeast-2 AWS 리전에 대한 CIDR 범위가 사용되었습니다.



주의사항

Firezone은 패킷을 라우팅할 위치를 결정할 때 가장 정확한 경로와 연결된 출구 인터페이스를 먼저 선택합니다.

 

2. WireGuard 구성 재생성

새로운 분할 터널 구성으로 기존 사용자 장치를 업데이트하려면 사용자가 구성 파일을 재생성하고 기본 WireGuard 클라이언트에 추가해야 합니다.

 

지침은 기기 추가. <<<<<<<<<<< 링크 추가

리버스 터널

이 설명서는 Firezone을 릴레이로 사용하여 두 장치를 연결하는 방법을 보여줍니다. 일반적인 사용 사례 중 하나는 관리자가 NAT 또는 방화벽으로 보호되는 서버, 컨테이너 또는 시스템에 액세스할 수 있도록 하는 것입니다.

 

노드 간 

이 그림은 장치 A와 B가 터널을 구성하는 간단한 시나리오를 보여줍니다.

 

[Firezone 건축 사진 삽입]

 

/users/[user_id]/new_device로 이동하여 장치 A와 장치 B를 생성하여 시작합니다. 각 장치의 설정에서 다음 매개변수가 아래 나열된 값으로 설정되어 있는지 확인하십시오. 장치 구성을 만들 때 장치 설정을 지정할 수 있습니다(장치 추가 참조). 기존 장치의 설정을 업데이트해야 하는 경우 새 장치 구성을 생성하여 업데이트할 수 있습니다.

 

모든 장치에는 PersistentKeepalive를 구성할 수 있는 /settings/defaults 페이지가 있습니다.

 

장치 A

 

허용 된 IP = 10.3.2.2/32

  장치 B의 IP 또는 IP 범위입니다.

영구Keepalive = 25

  장치가 NAT 뒤에 있으면 장치가 터널을 활성 상태로 유지하고 WireGuard 인터페이스에서 패킷을 계속 수신할 수 있습니다. 일반적으로 25의 값이면 충분하지만 환경에 따라 이 값을 줄여야 할 수도 있습니다.



B기기

 

허용 된 IP = 10.3.2.3/32

이것은 장치 A의 IP 또는 IP 범위입니다.

영구Keepalive = 25

관리 사례 - 일대다 노드

이 예는 장치 A가 장치 B~D와 양방향으로 통신할 수 있는 상황을 보여줍니다. 이 설정은 다양한 네트워크에서 수많은 리소스(서버, 컨테이너 또는 머신)에 액세스하는 엔지니어 또는 관리자를 나타낼 수 있습니다.

 

[구조도]<<<<<<<<<<<<<<<<<<<<<<<

 

각 장치의 설정에서 다음 설정이 해당 값으로 지정되었는지 확인하십시오. 장치 구성을 생성할 때 장치 설정을 지정할 수 있습니다(장치 추가 참조). 기존 장치의 설정을 업데이트해야 하는 경우 새 장치 구성을 만들 수 있습니다.

 

장치 A(관리자 노드)

 

AllowedIP = 10.3.2.3/32, 10.3.2.4/32, 10.3.2.5/32 

    이것은 장치 B에서 D까지의 IP입니다. 장치 B에서 D까지의 IP는 설정하기 위해 선택한 모든 IP 범위에 포함되어야 합니다.

영구Keepalive = 25 

    이렇게 하면 장치가 터널을 유지하고 NAT에 의해 보호되는 경우에도 WireGuard 인터페이스에서 패킷을 계속 수신할 수 있습니다. 대부분의 경우 25의 값이 적절하지만 주변 환경에 따라 이 수치를 낮춰야 할 수도 있습니다.

 

장치 B

 

  • AllowedIPs = 10.3.2.2/32: 장치 A의 IP 또는 IP 범위입니다.
  • 영구Keepalive = 25

장치 C

 

  • AllowedIPs = 10.3.2.2/32: 장치 A의 IP 또는 IP 범위입니다.
  • 영구Keepalive = 25

장치 D

 

  • AllowedIPs = 10.3.2.2/32: 장치 A의 IP 또는 IP 범위입니다.
  • 영구Keepalive = 25

NAT 게이트웨이

Firezone을 NAT 게이트웨이로 활용하면 팀의 모든 트래픽이 나가는 단일 고정 이그레스 IP를 제공할 수 있습니다. 이러한 상황은 빈번한 사용과 관련이 있습니다.

 

컨설팅 계약: 고객이 각 직원의 고유한 장치 IP가 아닌 단일 정적 IP 주소를 화이트리스트에 추가하도록 요청하십시오.

보안 또는 개인 정보 보호를 위해 프록시를 사용하거나 소스 IP를 마스킹합니다.

 

자체 호스팅 웹 애플리케이션에 대한 액세스를 Firezone을 실행하는 단일 화이트리스트 정적 IP로 제한하는 간단한 예가 이 게시물에서 시연됩니다. 이 그림에서 Firezone과 보호된 리소스는 서로 다른 VPC 영역에 있습니다.

 

이 솔루션은 액세스 목록이 확장됨에 따라 많은 시간이 소요될 수 있는 수많은 최종 사용자의 IP 화이트리스트를 관리하는 대신 자주 사용됩니다.

AWS 예

우리의 목표는 EC2 인스턴스에 Firezone 서버를 설정하여 VPN 트래픽을 제한된 리소스로 리디렉션하는 것입니다. 이 경우 Firezone은 네트워크 프록시 또는 NAT 게이트웨이 역할을 하여 연결된 각 장치에 고유한 퍼블릭 이그레스 IP를 제공합니다.

 

1. Firezone 서버 설치

이 경우 tc2.micro라는 EC2 인스턴스에는 Firezone 인스턴스가 설치되어 있습니다. Firezone 배포에 대한 자세한 내용은 배포 가이드를 참조하세요. AWS와 관련하여 다음을 확인하십시오.

 

Firezone EC2 인스턴스의 보안 그룹은 보호된 리소스의 IP 주소에 대한 아웃바운드 트래픽을 허용합니다.

Firezone 인스턴스는 탄력적 IP와 함께 제공됩니다. Firezone 인스턴스를 통해 외부 목적지로 전달되는 트래픽은 이 주소를 소스 IP 주소로 갖게 됩니다. 문제의 IP 주소는 52.202.88.54입니다.

 

[스크린샷 삽입]<<<<<<<<<<<<<<<<<<<<<<<

 

2. 보호 중인 리소스에 대한 액세스 제한

이 경우 자체 호스팅 웹 애플리케이션이 보호된 리소스 역할을 합니다. 웹 앱은 IP 주소 52.202.88.54에서 오는 요청으로만 액세스할 수 있습니다. 리소스에 따라 다양한 포트 및 트래픽 유형에서 인바운드 트래픽을 허용해야 할 수 있습니다. 이것은 이 설명서에서 다루지 않습니다.

 

[스크린샷 삽입]<<<<<<<<<<<<<<<<<<<<<<<

 

1단계에서 정의한 고정 IP(이 경우 52.202.88.54)의 트래픽을 허용해야 한다고 보호 자원을 담당하는 타사에 알려주십시오.

 

3. VPN 서버를 사용하여 트래픽을 보호된 리소스로 전달

 

기본적으로 모든 사용자 트래픽은 VPN 서버를 통과하고 1단계에서 구성된 고정 IP(이 경우 52.202.88.54)에서 나옵니다. 그러나 분할 터널링이 활성화된 경우 보호된 리소스의 대상 IP가 허용된 IP에 나열되도록 설정이 필요할 수 있습니다.

여기에 표제 텍스트를 추가하십시오

다음은 에서 사용할 수 있는 구성 옵션의 전체 목록입니다. /etc/firezone/firezone.rb.



선택권

설명

기본값

default['firezone']['external_url']

이 Firezone 인스턴스의 웹 포털에 액세스하는 데 사용되는 URL입니다.

“https://#{노드['fqdn'] || 노드['호스트 이름']}”

default['firezone']['config_directory']

Firezone 구성을 위한 최상위 디렉터리입니다.

/etc/firezone'

default['firezone']['install_directory']

Firezone을 설치할 최상위 디렉토리입니다.

/opt/파이어존'

default['firezone']['app_directory']

Firezone 웹 애플리케이션을 설치하기 위한 최상위 디렉토리입니다.

“#{노드['firezone']['install_directory']}/embedded/service/firezone”

default['firezone']['log_directory']

Firezone 로그의 최상위 디렉터리입니다.

/var/log/firezone'

default['firezone']['var_directory']

Firezone 런타임 파일의 최상위 디렉터리입니다.

/var/opt/firezone'

default['firezone']['사용자']

대부분의 서비스와 파일이 속하게 될 권한이 없는 Linux 사용자의 이름입니다.

파이어존'

default['firezone']['그룹']

대부분의 서비스와 파일이 속하게 될 Linux 그룹의 이름입니다.

파이어존'

default['firezone']['admin_email']

초기 Firezone 사용자의 이메일 주소입니다.

“firezone@localhost”

default['firezone']['max_devices_per_user']

사용자가 가질 수 있는 최대 장치 수입니다.

10

default['firezone']['allow_unprivileged_device_management']

관리자가 아닌 사용자가 장치를 만들고 삭제할 수 있습니다.

TRUE

default['firezone']['allow_unprivileged_device_configuration']

관리자가 아닌 사용자가 장치 구성을 수정하도록 허용합니다. 비활성화되면 권한이 없는 사용자가 이름과 설명을 제외한 모든 장치 필드를 변경하지 못하도록 합니다.

TRUE

default['firezone']['egress_interface']

터널링된 트래픽이 나가는 인터페이스 이름입니다. nil이면 기본 경로 인터페이스가 사용됩니다.

default['firezone']['fips_enabled']

OpenSSL FIPs 모드를 활성화 또는 비활성화합니다.

default['firezone']['로깅']['활성화']

Firezone에서 로깅을 활성화 또는 비활성화합니다. 로깅을 완전히 비활성화하려면 false로 설정합니다.

TRUE

default['엔터프라이즈']['이름']

Chef '엔터프라이즈' 요리책에서 사용하는 이름입니다.

파이어존'

default['firezone']['install_path']

Chef '엔터프라이즈' 쿡북에서 사용하는 설치 경로입니다. 위의 install_directory와 동일하게 설정해야 합니다.

노드['firezone']['install_directory']

default['firezone']['sysvinit_id']

/etc/inittab에서 사용되는 식별자입니다. 1-4자의 고유한 시퀀스여야 합니다.

저녁을 먹다'

default['firezone']['인증']['로컬']['활성화']

로컬 이메일/암호 인증을 활성화하거나 비활성화합니다.

TRUE

default['firezone']['인증']['auto_create_oidc_users']

OIDC에서 처음으로 로그인하는 사용자를 자동으로 생성합니다. 기존 사용자만 OIDC를 통해 로그인할 수 있도록 하려면 비활성화합니다.

TRUE

default['firezone']['인증']['disable_vpn_on_oidc_error']

OIDC 토큰을 새로 고치는 중 오류가 감지되면 사용자의 VPN을 비활성화합니다.

그릇된

default['firezone']['인증']['oidc']

{“provider” => [config…]} 형식의 OpenID Connect 구성 – 참조 OpenIDConnect 설명서 구성 예제용.

{}

default['firezone']['nginx']['활성화']

번들 nginx 서버를 활성화 또는 비활성화합니다.

TRUE

default['firezone']['nginx']['ssl_port']

HTTPS 청취 포트.

443

default['firezone']['nginx']['디렉토리']

Firezone 관련 nginx 가상 호스트 구성을 저장할 디렉터리입니다.

“#{노드['firezone']['var_directory']}/nginx/etc”

default['firezone']['nginx']['log_directory']

Firezone 관련 nginx 로그 파일을 저장할 디렉터리입니다.

“#{노드['firezone']['log_directory']}/nginx”

default['firezone']['nginx']['log_rotation']['file_maxbytes']

Nginx 로그 파일을 회전할 파일 크기입니다.

104857600

default['firezone']['nginx']['log_rotation']['num_to_keep']

폐기하기 전에 보관할 Firezone nginx 로그 파일의 수입니다.

10

default['firezone']['nginx']['log_x_forwarded_for']

Firezone nginx x-forwarded-for 헤더를 기록할지 여부입니다.

TRUE

default['firezone']['nginx']['hsts_header']['활성화']

사용 또는 사용 중지 HSTS.

TRUE

default['firezone']['nginx']['hsts_header']['include_subdomains']

HSTS 헤더에 대해 includeSubDomains를 활성화하거나 비활성화합니다.

TRUE

default['firezone']['nginx']['hsts_header']['max_age']

HSTS 헤더의 최대 수명입니다.

31536000

default['firezone']['nginx']['redirect_to_canonical']

위에 지정된 표준 FQDN으로 URL을 리디렉션할지 여부

그릇된

default['firezone']['nginx']['cache']['활성화']

Firezone nginx 캐시를 활성화 또는 비활성화합니다.

그릇된

default['firezone']['nginx']['캐시']['디렉토리']

Firezone nginx 캐시용 디렉터리입니다.

“#{노드['firezone']['var_directory']}/nginx/cache”

default['firezone']['nginx']['사용자']

Firezone nginx 사용자입니다.

노드['firezone']['사용자']

default['firezone']['nginx']['그룹']

Firezone nginx 그룹.

노드['firezone']['그룹']

default['firezone']['nginx']['dir']

최상위 nginx 구성 디렉토리.

노드['파이어존']['nginx']['디렉토리']

default['firezone']['nginx']['log_dir']

최상위 nginx 로그 디렉토리.

노드['firezone']['nginx']['log_directory']

default['firezone']['nginx']['pid']

nginx pid 파일의 위치입니다.

“#{노드['파이어존']['nginx']['디렉토리']}/nginx.pid”

default['firezone']['nginx']['daemon_disable']

대신 모니터링할 수 있도록 nginx 데몬 모드를 비활성화합니다.

TRUE

default['firezone']['nginx']['gzip']

nginx gzip 압축을 켜거나 끕니다.

의 위에'

default['firezone']['nginx']['gzip_static']

정적 파일에 대해 nginx gzip 압축을 켜거나 끕니다.

끄다'

default['firezone']['nginx']['gzip_http_version']

정적 파일 제공에 사용할 HTTP 버전입니다.

1.0 '

default['firezone']['nginx']['gzip_comp_level']

nginx gzip 압축 수준.

2 '

default['firezone']['nginx']['gzip_proxied']

요청 및 응답에 따라 프록시 요청에 대한 응답의 gzipping을 활성화하거나 비활성화합니다.

어느'

default['firezone']['nginx']['gzip_vary']

"Vary: Accept-Encoding" 응답 헤더 삽입을 활성화하거나 비활성화합니다.

끄다'

default['firezone']['nginx']['gzip_buffers']

응답을 압축하는 데 사용되는 버퍼의 수와 크기를 설정합니다. nil이면 nginx 기본값이 사용됩니다.

default['firezone']['nginx']['gzip_types']

gzip 압축을 활성화할 MIME 유형입니다.

['text/plain', 'text/css','application/x-javascript', 'text/xml', 'application/xml', 'application/rss+xml', 'application/atom+xml', ' 텍스트/자바스크립트', '애플리케이션/자바스크립트', '애플리케이션/json']

default['firezone']['nginx']['gzip_min_length']

파일 gzip 압축을 활성화하기 위한 최소 파일 길이입니다.

1000

default['firezone']['nginx']['gzip_disable']

gzip 압축을 비활성화할 사용자 에이전트 매처.

MSIE [1-6]\.'

default['firezone']['nginx']['keepalive']

업스트림 서버에 연결하기 위해 캐시를 활성화합니다.

의 위에'

default['firezone']['nginx']['keepalive_timeout']

업스트림 서버에 대한 keepalive 연결의 시간 초과(초)입니다.

65

default['firezone']['nginx']['worker_processes']

nginx 작업자 프로세스 수입니다.

node['cpu'] && node['cpu']['total'] ? 노드['cpu']['전체'] : 1

default['firezone']['nginx']['worker_connections']

작업자 프로세스에서 열 수 있는 최대 동시 연결 수입니다.

1024

default['firezone']['nginx']['worker_rlimit_nofile']

작업자 프로세스의 최대 열린 파일 수에 대한 제한을 변경합니다. 없는 경우 nginx 기본값을 사용합니다.

default['firezone']['nginx']['multi_accept']

작업자가 한 번에 하나의 연결을 수락해야 하는지 아니면 여러 개를 수락해야 하는지 여부입니다.

TRUE

default['firezone']['nginx']['이벤트']

nginx 이벤트 컨텍스트 내에서 사용할 연결 처리 방법을 지정합니다.

epoll'

default['firezone']['nginx']['server_tokens']

오류 페이지 및 "서버" 응답 헤더 필드에서 nginx 버전 방출을 활성화하거나 비활성화합니다.

default['firezone']['nginx']['server_names_hash_bucket_size']

서버 이름 해시 테이블의 버킷 크기를 설정합니다.

64

default['firezone']['nginx']['sendfile']

nginx의 sendfile() 사용을 활성화 또는 비활성화합니다.

의 위에'

default['firezone']['nginx']['access_log_options']

nginx 액세스 로그 옵션을 설정합니다.

default['firezone']['nginx']['error_log_options']

nginx 오류 로그 옵션을 설정합니다.

default['firezone']['nginx']['disable_access_log']

nginx 액세스 로그를 비활성화합니다.

그릇된

default['firezone']['nginx']['types_hash_max_size']

nginx는 해시 최대 크기를 입력합니다.

2048

default['firezone']['nginx']['types_hash_bucket_size']

nginx는 해시 버킷 크기를 입력합니다.

64

default['firezone']['nginx']['proxy_read_timeout']

nginx 프록시 읽기 시간이 초과되었습니다. nginx 기본값을 사용하려면 nil로 설정하십시오.

default['firezone']['nginx']['client_body_buffer_size']

nginx 클라이언트 본문 버퍼 크기. nginx 기본값을 사용하려면 nil로 설정하십시오.

default['firezone']['nginx']['client_max_body_size']

nginx 클라이언트 최대 본문 크기.

250m'

default['firezone']['nginx']['default']['모듈']

추가 nginx 모듈을 지정합니다.

[]

default['firezone']['nginx']['enable_rate_limiting']

nginx 속도 제한을 활성화 또는 비활성화합니다.

TRUE

default['firezone']['nginx']['rate_limiting_zone_name']

Nginx 속도 제한 영역 이름입니다.

파이어존'

default['firezone']['nginx']['rate_limiting_backoff']

Nginx 속도 제한 백오프.

10m'

default['firezone']['nginx']['rate_limit']

Nginx 속도 제한.

10r/s'

default['firezone']['nginx']['ipv6']

nginx가 IPv6 외에도 IPv4에 대한 HTTP 요청을 수신하도록 허용합니다.

TRUE

default['firezone']['postgresql']['활성화']

번들 PostgreSQL을 활성화 또는 비활성화합니다. 자체 PostgreSQL 인스턴스를 사용하려면 false로 설정하고 아래 데이터베이스 옵션을 입력하십시오.

TRUE

default['firezone']['postgresql']['사용자 이름']

PostgreSQL의 사용자 이름입니다.

노드['firezone']['사용자']

default['firezone']['postgresql']['data_directory']

PostgreSQL 데이터 디렉토리.

“#{node['firezone']['var_directory']}/postgresql/13.3/data”

default['firezone']['postgresql']['log_directory']

PostgreSQL 로그 디렉토리.

“#{node['firezone']['log_directory']}/postgresql”

default['firezone']['postgresql']['log_rotation']['file_maxbytes']

Postgresql 로그 파일이 회전되기 전의 최대 크기입니다.

104857600

default['firezone']['postgresql']['log_rotation']['num_to_keep']

보관할 PostgreSQL 로그 파일 수입니다.

10

default['firezone']['postgresql']['checkpoint_completion_target']

Postgresql 체크포인트 완료 대상.

0.5

default['firezone']['postgresql']['checkpoint_segments']

PostgreSQL 체크포인트 세그먼트 수.

3

default['firezone']['postgresql']['checkpoint_timeout']

PostgreSQL 체크포인트 시간 초과.

5 분'

default['firezone']['postgresql']['checkpoint_warning']

Postgresql 체크포인트 경고 시간(초).

30년대'

default['firezone']['postgresql']['effective_cache_size']

PostgreSQL 유효 캐시 크기.

128MB'

default['firezone']['postgresql']['listen_address']

Postgresql 수신 주소.

127.0.0.1 '

default['firezone']['postgresql']['max_connections']

PostgreSQL 최대 연결.

350

default['firezone']['postgresql']['md5_auth_cidr_addresses']

md5 인증을 허용하는 Postgresql CIDR.

['127.0.0.1/32', '::1/128']

default['firezone']['postgresql']['포트']

PostgreSQL 수신 포트.

15432

default['firezone']['postgresql']['shared_buffers']

PostgreSQL 공유 버퍼 크기.

“#{(node['memory']['total'].to_i / 4) / 1024}MB”

default['firezone']['postgresql']['shmmax']

Postgresql shmmax(바이트).

17179869184

default['firezone']['postgresql']['shmall']

Postgresql shmall(바이트).

4194304

default['firezone']['postgresql']['work_mem']

Postgresql 작업 메모리 크기.

8MB'

default['firezone']['데이터베이스']['사용자']

Firezone이 DB에 연결하는 데 사용할 사용자 이름을 지정합니다.

node['firezone']['postgresql']['사용자 이름']

default['firezone']['데이터베이스']['비밀번호']

외부 DB를 사용하는 경우 Firezone이 DB에 연결하는 데 사용할 비밀번호를 지정합니다.

나를 바꿔'

default['firezone']['데이터베이스']['이름']

Firezone이 사용할 데이터베이스입니다. 존재하지 않는 경우 생성됩니다.

파이어존'

default['firezone']['데이터베이스']['호스트']

Firezone이 연결할 데이터베이스 호스트입니다.

노드['firezone']['postgresql']['listen_address']

default['firezone']['데이터베이스']['포트']

Firezone이 연결할 데이터베이스 포트입니다.

노드['firezone']['postgresql']['포트']

default['firezone']['데이터베이스']['풀']

Firezone이 사용할 데이터베이스 풀 크기입니다.

[10, 기타 n프로세서].max

default['firezone']['데이터베이스']['ssl']

SSL을 통해 데이터베이스에 연결할지 여부입니다.

그릇된

default['firezone']['database']['ssl_opts']

SSL을 통해 연결할 때 :ssl_opts 옵션으로 보낼 옵션의 해시입니다. 보다 Ecto.Adapters.Postgres 문서.

{}

default['firezone']['데이터베이스']['매개변수']

데이터베이스에 연결할 때 :parameters 옵션으로 보낼 매개변수의 해시입니다. 보다 Ecto.Adapters.Postgres 문서.

{}

default['firezone']['데이터베이스']['확장 프로그램']

활성화할 데이터베이스 확장입니다.

{ 'plpgsql' => 참, 'pg_trgm' => 참 }

default['firezone']['피닉스']['활성화']

Firezone 웹 애플리케이션을 활성화 또는 비활성화합니다.

TRUE

default['firezone']['피닉스']['listen_address']

Firezone 웹 애플리케이션 수신 주소입니다. 이것은 nginx가 프록시하는 업스트림 수신 주소입니다.

127.0.0.1 '

default['firezone']['피닉스']['포트']

Firezone 웹 애플리케이션 수신 포트. 이것은 nginx가 프록시하는 업스트림 포트가 됩니다.

13000

default['firezone']['phoenix']['log_directory']

Firezone 웹 애플리케이션 로그 디렉토리.

“#{node['firezone']['log_directory']}/피닉스”

default['firezone']['phoenix']['log_rotation']['file_maxbytes']

Firezone 웹 애플리케이션 로그 파일 크기.

104857600

default['firezone']['phoenix']['log_rotation']['num_to_keep']

보관할 Firezone 웹 애플리케이션 로그 파일의 수입니다.

10

default['firezone']['phoenix']['crash_detection']['활성화']

충돌이 감지되면 Firezone 웹 애플리케이션을 종료하도록 활성화 또는 비활성화합니다.

TRUE

default['firezone']['phoenix']['external_trusted_proxies']

IP 및/또는 CIDR의 배열로 형식이 지정된 신뢰할 수 있는 역방향 프록시 목록입니다.

[]

default['firezone']['phoenix']['private_clients']

IP 및/또는 CIDR 배열 형식의 사설 네트워크 HTTP 클라이언트 목록입니다.

[]

default['firezone']['wireguard']['활성화']

번들로 제공되는 WireGuard 관리를 활성화 또는 비활성화합니다.

TRUE

default['firezone']['wireguard']['log_directory']

번들로 제공되는 WireGuard 관리를 위한 로그 디렉토리.

“#{node['firezone']['log_directory']}/wireguard”

default['firezone']['wireguard']['log_rotation']['file_maxbytes']

WireGuard 로그 파일 최대 크기.

104857600

default['firezone']['wireguard']['log_rotation']['num_to_keep']

유지할 WireGuard 로그 파일의 수입니다.

10

default['firezone']['wireguard']['interface_name']

WireGuard 인터페이스 이름. 이 매개변수를 변경하면 VPN 연결이 일시적으로 끊어질 수 있습니다.

wg-파이어존'

default['firezone']['wireguard']['포트']

WireGuard 청취 포트.

51820

default['firezone']['wireguard']['mtu']

이 서버 및 장치 구성에 대한 WireGuard 인터페이스 MTU입니다.

1280

default['firezone']['wireguard']['endpoint']

장치 구성을 생성하는 데 사용할 WireGuard 끝점입니다. nil이면 기본적으로 서버의 공용 IP 주소입니다.

default['firezone']['wireguard']['dns']

생성된 장치 구성에 사용할 WireGuard DNS입니다.

1.1.1.1, 1.0.0.1′

default['firezone']['wireguard']['allowed_ips']

WireGuard AllowedIP는 생성된 장치 구성에 사용할 수 있습니다.

0.0.0.0/0, ::/0′

default['firezone']['wireguard']['persistent_keepalive']

생성된 장치 구성에 대한 기본 PersistentKeepalive 설정입니다. 값 0은 비활성화합니다.

0

default['firezone']['wireguard']['ipv4']['활성화']

WireGuard 네트워크에 대해 IPv4를 활성화 또는 비활성화합니다.

TRUE

default['firezone']['wireguard']['ipv4']['마스커레이드']

IPv4 터널에서 나가는 패킷에 대해 위장을 활성화 또는 비활성화합니다.

TRUE

default['firezone']['wireguard']['ipv4']['네트워크']

WireGuard 네트워크 IPv4 주소 풀.

10.3.2.0/24 분

default['firezone']['wireguard']['ipv4']['주소']

WireGuard 인터페이스 IPv4 주소. WireGuard 주소 풀 내에 있어야 합니다.

10.3.2.1 '

default['firezone']['wireguard']['ipv6']['활성화']

WireGuard 네트워크에 대해 IPv6를 활성화 또는 비활성화합니다.

TRUE

default['firezone']['wireguard']['ipv6']['마스커레이드']

IPv6 터널에서 나가는 패킷에 대해 위장을 활성화 또는 비활성화합니다.

TRUE

default['firezone']['wireguard']['ipv6']['네트워크']

WireGuard 네트워크 IPv6 주소 풀.

fd00::3:2:0/120′

default['firezone']['wireguard']['ipv6']['주소']

WireGuard 인터페이스 IPv6 주소. IPv6 주소 풀 내에 있어야 합니다.

fd00::3:2:1'

default['firezone']['runit']['svlogd_bin']

Runit svlogd 빈 위치.

“#{node['firezone']['install_directory']}/embedded/bin/svlogd”

default['firezone']['ssl']['디렉토리']

생성된 인증서를 저장하기 위한 SSL 디렉터리입니다.

/var/opt/firezone/ssl'

default['firezone']['ssl']['email_address']

자체 서명된 인증서 및 ACME 프로토콜 갱신 알림에 사용할 이메일 주소입니다.

you@example.com'

default['firezone']['ssl']['acme']['활성화']

자동 SSL 인증서 프로비저닝을 위해 ACME를 활성화합니다. Nginx가 포트 80에서 수신 대기하지 않도록 하려면 이 기능을 비활성화합니다. 여기에서 지금 확인해 보세요. 자세한 내용은

그릇된

default['firezone']['ssl']['acme']['서버']

인증서 발급/갱신에 사용할 ACME 서버입니다. 무엇이든 될 수 있습니다 유효한 acme.sh 서버

암호화

default['firezone']['ssl']['acme']['keylength']

SSL 인증서의 키 유형 및 길이를 지정합니다. 보다 여기에서 지금 확인해 보세요.

EC-256

default['firezone']['ssl']['인증서']

FQDN의 인증서 파일 경로입니다. 지정된 경우 위의 ACME 설정을 재정의합니다. ACME와 이것이 모두 nil이면 자체 서명된 인증서가 생성됩니다.

default['firezone']['ssl']['certificate_key']

인증서 파일의 경로입니다.

default['firezone']['ssl']['ssl_dhparam']

nginx SSL dh_param.

default['firezone']['ssl']['country_name']

자체 서명된 인증서의 국가 이름입니다.

우리를'

default['firezone']['ssl']['state_name']

자체 서명된 인증서의 상태 이름입니다.

CA '

default['firezone']['ssl']['locality_name']

자체 서명된 인증서의 지역 이름입니다.

샌프란시스코'

default['firezone']['ssl']['company_name']

회사명 자체 서명 인증서.

내 회사'

default['firezone']['ssl']['organizational_unit_name']

자체 서명된 인증서의 조직 단위 이름입니다.

운영'

default['firezone']['ssl']['ciphers']

nginx에서 사용할 SSL 암호입니다.

ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA’

default['firezone']['ssl']['fips_ciphers']

FIP 모드용 SSL 암호.

FIPS@STRENGTH:!aNULL:!eNULL'

default['firezone']['ssl']['프로토콜']

사용할 TLS 프로토콜.

TLSv1 TLSv1.1 TLSv1.2'

default['firezone']['ssl']['session_cache']

SSL 세션 캐시.

공유:SSL:4m'

default['firezone']['ssl']['session_timeout']

SSL 세션 시간이 초과되었습니다.

5m'

default['firezone']['robots_allow']

nginx 로봇이 허용합니다.

/'

default['firezone']['robots_disallow']

nginx 로봇은 허용하지 않습니다.

default['firezone']['outbound_email']['from']

발신 이메일 주소.

default['firezone']['outbound_email']['공급자']

아웃바운드 이메일 서비스 제공업체.

default['firezone']['outbound_email']['configs']

아웃바운드 이메일 공급자 구성.

omnibus/cookbooks/firezone/attributes/default.rb 참조

default['firezone']['telemetry']['활성화']

익명화된 제품 원격 분석을 활성화하거나 비활성화합니다.

TRUE

default['firezone']['connectivity_checks']['활성화']

Firezone 연결 확인 서비스를 활성화 또는 비활성화합니다.

TRUE

default['firezone']['connectivity_checks']['간격']

연결 확인 사이의 간격(초)입니다.

3_600



________________________________________________________________

 

파일 및 디렉토리 위치

 

여기에서 일반적인 Firezone 설치와 관련된 파일 및 디렉토리 목록을 찾을 수 있습니다. 이는 구성 파일의 변경 사항에 따라 변경될 수 있습니다.



통로

설명

/var/opt/firezone

Firezone 번들 서비스에 대한 데이터 및 생성된 구성이 포함된 최상위 디렉터리입니다.

/opt/firezone

Firezone에 필요한 빌드된 라이브러리, 바이너리 및 런타임 파일이 포함된 최상위 디렉터리입니다.

/usr/bin/firezone-ctl

Firezone 설치를 관리하기 위한 firezone-ctl 유틸리티입니다.

/etc/systemd/system/firezone-runsvdir-start.service

Firezone runsvdir 감독자 프로세스를 시작하기 위한 systemd 단위 파일.

/etc/firezone

Firezone 구성 파일.



__________________________________________________________

 

방화벽 템플릿

 

이 페이지는 문서에서 비어 있었습니다.

 

_____________________________________________________________

 

Nftables 방화벽 템플릿

 

다음 nftables 방화벽 템플릿을 사용하여 Firezone을 실행하는 서버를 보호할 수 있습니다. 템플릿은 몇 가지 가정을 합니다. 사용 사례에 맞게 규칙을 조정해야 할 수도 있습니다.

  • WireGuard 인터페이스의 이름은 wg-firezone입니다. 이것이 올바르지 않으면 기본['firezone']['wireguard']['interface_name'] 구성 옵션과 일치하도록 DEV_WIREGUARD 변수를 변경하십시오.
  • WireGuard가 수신하는 포트는 51820입니다. 기본 포트를 사용하지 않는 경우 WIREGUARD_PORT 변수를 변경합니다.
  • 다음 인바운드 트래픽만 서버에 허용됩니다.
    • SSH(TCP 포트 22)
    • HTTP(TCP 포트 80)
    • HTTPS(TCP 포트 443)
    • WireGuard(UDP 포트 WIREGUARD_PORT)
    • UDP traceroute(UDP 포트 33434-33524, 속도는 500/초로 제한됨)
    • ICMP 및 ICMPv6(ping/ping 응답 속도가 2000/초로 제한됨)
  • 다음 아웃바운드 트래픽만 서버에서 허용됩니다.
    • DNS(UDP 및 TCP 포트 53)
    • HTTP(TCP 포트 80)
    • NTP(UDP 포트 123)
    • HTTPS(TCP 포트 443)
    • SMTP 제출(TCP 포트 587)
    • UDP traceroute(UDP 포트 33434-33524, 속도는 500/초로 제한됨)
  • 일치하지 않는 트래픽이 기록됩니다. 로깅에 사용되는 규칙은 트래픽을 삭제하는 규칙과 분리되며 속도가 제한됩니다. 관련 로깅 규칙을 제거해도 트래픽에는 영향을 미치지 않습니다.

Firezone 관리 규칙â € <

Firezone은 자체 nftables 규칙을 구성하여 웹 인터페이스에 구성된 대상에 대한 트래픽을 허용/거부하고 클라이언트 트래픽에 대한 아웃바운드 NAT를 처리합니다.

이미 실행 중인 서버(부팅 시 아님)에 아래 방화벽 템플릿을 적용하면 Firezone 규칙이 지워집니다. 이는 보안에 영향을 미칠 수 있습니다.

이 문제를 해결하려면 phoenix 서비스를 다시 시작하십시오.

firezone-ctl 재시작 피닉스

기본 방화벽 템플릿â € <

#!/usr/sbin/nft -f

 

## 모든 기존 규칙 지우기/플러시

플러시 규칙 세트

 

################################ 변수 ################# ################

## 인터넷/WAN 인터페이스 이름

DEV_WAN = eth0 정의

 

## WireGuard 인터페이스 이름

DEV_WIREGUARD 정의 = wg-firezone

 

## WireGuard 청취 포트

정의 WIREGUARD_PORT = 51820

############################ 변수 끝 ################## ############

 

# 메인 inet 패밀리 필터링 테이블

테이블 inet 필터 {

 

 # 전달된 트래픽에 대한 규칙

 # 이 체인은 Firezone 포워드 체인 전에 처리됩니다.

 체인 포워드 {

   유형 필터 후크 정방향 우선 순위 필터 – 5; 정책 수락

 }

 

 # 입력 트래픽 규칙

 체인 입력 {

   유형 필터 후크 입력 우선 순위 필터; 정책 삭제

 

   ## 루프백 인터페이스에 대한 인바운드 트래픽 허용

   만약에 \

     수용하다 \

     본문 "루프백 인터페이스에서 들어오는 모든 트래픽 허용"

 

   ## 설정 및 관련 연결 허용

   ct 주 설립,관련 \

     수용하다 \

     본문 "설정/관련 연결 허용"

 

   ## 인바운드 WireGuard 트래픽 허용

   iif $DEV_WAN UDP 포트 $WIREGUARD_PORT \

     카운터 \

     수용하다 \

     본문 "인바운드 WireGuard 트래픽 허용"

 

   ## 새로운 TCP non-SYN 패킷 기록 및 삭제

   tcp 플래그 != syn ct state new \

     제한 비율 100/분 버스트 150 패킷 \

     로그 접두사 “IN – 새로운 !SYN: “ \

     본문 "SYN TCP 플래그가 설정되지 않은 새 연결에 대한 속도 제한 로깅"

   tcp 플래그 != syn ct state new \

     카운터 \

     떨어지다 \

     본문 "SYN TCP 플래그가 설정되지 않은 새 연결 삭제"

 

   ## 유효하지 않은 fin/syn 플래그가 설정된 TCP 패킷을 기록하고 삭제합니다.

   tcp 플래그 & (fin|syn) == (fin|syn) \

     제한 비율 100/분 버스트 150 패킷 \

     로그 접두사 “IN – TCP 핀|SIN: “ \

     본문 "유효하지 않은 fin/syn 플래그가 설정된 TCP 패킷에 대한 속도 제한 로깅"

   tcp 플래그 & (fin|syn) == (fin|syn) \

     카운터 \

     떨어지다 \

     본문 "유효하지 않은 fin/syn 플래그가 설정된 TCP 패킷 삭제"

 

   ## 유효하지 않은 syn/rst 플래그가 설정된 TCP 패킷을 기록하고 삭제합니다.

   tcp 플래그 & (syn|rst) == (syn|rst) \

     제한 비율 100/분 버스트 150 패킷 \

     로그 접두사 “입력 – TCP SYN|RST: “ \

     본문 "유효하지 않은 syn/rst 플래그가 설정된 TCP 패킷에 대한 속도 제한 로깅"

   tcp 플래그 & (syn|rst) == (syn|rst) \

     카운터 \

     떨어지다 \

     본문 "유효하지 않은 syn/rst 플래그가 설정된 TCP 패킷 삭제"

 

   ## 유효하지 않은 TCP 플래그 기록 및 삭제

   tcp 플래그 & (fin|syn|rst|psh|ack|urg) < (fin) \

     제한 비율 100/분 버스트 150 패킷 \

     로그 접두사 "에 – 핀:" \

     본문 "잘못된 TCP 플래그(fin|syn|rst|psh|ack|urg) < (fin)에 대한 속도 제한 로깅"

   tcp 플래그 & (fin|syn|rst|psh|ack|urg) < (fin) \

     카운터 \

     떨어지다 \

     본문 "플래그가 있는 TCP 패킷 삭제(fin|syn|rst|psh|ack|urg) < (fin)"

 

   ## 유효하지 않은 TCP 플래그 기록 및 삭제

   tcp 플래그 & (fin|syn|rst|psh|ack|urg) == (fin|psh|urg) \

     제한 비율 100/분 버스트 150 패킷 \

     로그 접두사 "IN – FIN|PSH|URG:" \

     본문 "잘못된 TCP 플래그에 대한 속도 제한 로깅 (fin|syn|rst|psh|ack|urg) == (fin|psh|urg)"

   tcp 플래그 & (fin|syn|rst|psh|ack|urg) == (fin|psh|urg) \

     카운터 \

     떨어지다 \

     본문 "플래그가 있는 TCP 패킷 삭제 (fin|syn|rst|psh|ack|urg) == (fin|psh|urg)"

 

   ## 연결 상태가 잘못된 트래픽 삭제

   ct 상태 유효하지 않음 \

     제한 비율 100/분 버스트 150 패킷 \

     로그 플래그 모든 접두사 "IN – 유효하지 않음: " \

     본문 "연결 상태가 잘못된 트래픽에 대한 속도 제한 로깅"

   ct 상태 유효하지 않음 \

     카운터 \

     떨어지다 \

     본문 "잘못된 연결 상태의 트래픽 삭제"

 

   ## IPv4 ping/ping 응답을 허용하지만 속도는 2000PPS로 제한

   ip 프로토콜 icmp icmp 유형 { 에코 응답, 에코 요청 } \

     제한 비율 2000/두번째 \

     카운터 \

     수용하다 \

     본문 "4 PPS로 제한된 인바운드 IPv2000 에코(ping) 허용"

 

   ## 다른 모든 인바운드 IPv4 ICMP 허용

   ip 프로토콜 ICMP \

     카운터 \

     수용하다 \

     본문 "다른 모든 IPv4 ICMP 허용"

 

   ## IPv6 ping/ping 응답을 허용하지만 속도는 2000PPS로 제한

   icmpv6 유형 { 에코 응답, 에코 요청 } \

     제한 비율 2000/두번째 \

     카운터 \

     수용하다 \

     본문 "6 PPS로 제한된 인바운드 IPv2000 에코(ping) 허용"

 

   ## 다른 모든 인바운드 IPv6 ICMP 허용

   메타 l4proto { icmpv6 } \

     카운터 \

     수용하다 \

     본문 "다른 모든 IPv6 ICMP 허용"

 

   ## 인바운드 traceroute UDP 포트를 허용하지만 500PPS로 제한

   UDP 포트 33434-33524\

     제한 비율 500/두번째 \

     카운터 \

     수용하다 \

     본문 "500PPS로 제한된 인바운드 UDP 추적 경로 허용"

 

   ## 인바운드 SSH 허용

   TCP 포트 SSH ct 상태 새 \

     카운터 \

     수용하다 \

     본문 "인바운드 SSH 연결 허용"

 

   ## 인바운드 HTTP 및 HTTPS 허용

   tcp dport { http, https } ct 상태 새 \

     카운터 \

     수용하다 \

     본문 "인바운드 HTTP 및 HTTPS 연결 허용"

 

   ## 일치하지 않는 모든 트래픽을 기록하지만 속도 제한은 분당 최대 60개의 메시지로 기록됩니다.

   ## 일치하지 않는 트래픽에는 기본 정책이 적용됩니다.

   제한 비율 60/분 버스트 100 패킷 \

     로그 접두사 “IN – 삭제: “ \

     본문 "일치하지 않는 모든 트래픽 기록"

 

   ## 일치하지 않는 트래픽 계산

   카운터 \

     본문 "일치하지 않는 모든 트래픽 계산"

 }

 

 # 출력 트래픽 규칙

 체인 출력 {

   유형 필터 후크 출력 우선 순위 필터; 정책 삭제

 

   ## 루프백 인터페이스에 대한 아웃바운드 트래픽 허용

   오이프 로 \

     수용하다 \

     본문 "루프백 인터페이스로의 모든 트래픽 허용"

 

   ## 설정 및 관련 연결 허용

   ct 주 설립,관련 \

     카운터 \

     수용하다 \

     본문 "설정/관련 연결 허용"

 

   ## 잘못된 상태의 연결을 끊기 전에 아웃바운드 WireGuard 트래픽 허용

   OIF $DEV_WAN UDP 스포츠 $WIREGUARD_PORT \

     카운터 \

     수용하다 \

     본문 "WireGuard 아웃바운드 트래픽 허용"

 

   ## 연결 상태가 잘못된 트래픽 삭제

   ct 상태 유효하지 않음 \

     제한 비율 100/분 버스트 150 패킷 \

     로그 플래그 모든 접두사 "OUT – 유효하지 않음: " \

     본문 "연결 상태가 잘못된 트래픽에 대한 속도 제한 로깅"

   ct 상태 유효하지 않음 \

     카운터 \

     떨어지다 \

     본문 "잘못된 연결 상태의 트래픽 삭제"

 

   ## 다른 모든 아웃바운드 IPv4 ICMP 허용

   ip 프로토콜 ICMP \

     카운터 \

     수용하다 \

     본문 "모든 IPv4 ICMP 유형 허용"

 

   ## 다른 모든 아웃바운드 IPv6 ICMP 허용

   메타 l4proto { icmpv6 } \

     카운터 \

     수용하다 \

     본문 "모든 IPv6 ICMP 유형 허용"

 

   ## 아웃바운드 traceroute UDP 포트를 허용하지만 500PPS로 제한

   UDP 포트 33434-33524\

     제한 비율 500/두번째 \

     카운터 \

     수용하다 \

     본문 "500PPS로 제한된 아웃바운드 UDP 추적 경로 허용"

 

   ## 아웃바운드 HTTP 및 HTTPS 연결 허용

   tcp dport { http, https } ct 상태 새 \

     카운터 \

     수용하다 \

     본문 "아웃바운드 HTTP 및 HTTPS 연결 허용"

 

   ## 아웃바운드 SMTP 제출 허용

   tcp dport 제출 ct state new \

     카운터 \

     수용하다 \

     본문 "아웃바운드 SMTP 제출 허용"

 

   ## 아웃바운드 DNS 요청 허용

   UDP 포트 53 \

     카운터 \

     수용하다 \

     본문 "아웃바운드 UDP DNS 요청 허용"

   TCP 포트 53 \

     카운터 \

     수용하다 \

     본문 "아웃바운드 TCP DNS 요청 허용"

 

   ## 아웃바운드 NTP 요청 허용

   UDP 포트 123 \

     카운터 \

     수용하다 \

     본문 "아웃바운드 NTP 요청 허용"

 

   ## 일치하지 않는 모든 트래픽을 기록하지만 속도 제한은 분당 최대 60개의 메시지로 기록됩니다.

   ## 일치하지 않는 트래픽에는 기본 정책이 적용됩니다.

   제한 비율 60/분 버스트 100 패킷 \

     로그 접두사 "아웃 – 드롭: " \

     본문 "일치하지 않는 모든 트래픽 기록"

 

   ## 일치하지 않는 트래픽 계산

   카운터 \

     본문 "일치하지 않는 모든 트래픽 계산"

 }

 

}

 

# 메인 NAT 필터링 테이블

테이블 inet nat {

 

 # NAT 트래픽 사전 라우팅 규칙

 체인 프리라우팅 {

   유형 nat hook prerouting 우선 순위 dstnat; 정책 수락

 }

 

 # NAT 트래픽 라우팅 후 규칙

 # 이 테이블은 Firezone 포스트 라우팅 체인 전에 처리됩니다.

 체인 포스트라우팅 {

   유형 nat 후크 postrouting 우선순위 srcnat – 5; 정책 수락

 }

 

}

용법â € <

실행 중인 Linux 배포판의 관련 위치에 방화벽을 저장해야 합니다. Debian/Ubuntu의 경우 /etc/nftables.conf이고 RHEL의 경우 /etc/sysconfig/nftables.conf입니다.

부팅 시 시작되도록 nftables.service를 구성해야 합니다(아직 설정하지 않은 경우).

systemctl 활성화 nftables.service

방화벽 템플릿을 변경하는 경우 check 명령을 실행하여 구문을 확인할 수 있습니다.

nft -f /path/to/nftables.conf -c

서버에서 실행 중인 릴리스에 따라 특정 nftables 기능을 사용하지 못할 수 있으므로 방화벽이 예상대로 작동하는지 확인하십시오.



_______________________________________________________________



텔레 메 트리

 

이 문서는 Firezone이 자체 호스팅 인스턴스에서 수집하는 원격 분석과 이를 비활성화하는 방법에 대한 개요를 제공합니다.

Firezone이 원격 분석을 수집하는 이유â € <

화재 지역 의존 로드맵의 우선 순위를 정하고 모든 사람을 위해 Firezone을 개선하는 데 필요한 엔지니어링 리소스를 최적화하기 위해 원격 측정에 대해 설명합니다.

우리가 수집하는 원격 측정은 다음 질문에 답하는 것을 목표로 합니다.

  • 얼마나 많은 사람들이 Firezone을 설치, 사용 및 사용 중지합니까?
  • 어떤 기능이 가장 가치 있고 어떤 기능이 전혀 사용되지 않습니까?
  • 가장 개선이 필요한 기능은 무엇입니까?
  • 고장이 났을 때 왜 고장이 났으며 앞으로 고장이 나지 않도록 하려면 어떻게 해야 합니까?

원격 분석을 수집하는 방법â € <

Firezone에서 원격 측정이 수집되는 세 가지 주요 위치는 다음과 같습니다.

  1. 패키지 원격 분석. 설치, 제거 및 업그레이드와 같은 이벤트를 포함합니다.
  2. firezone-ctl 명령의 CLI 원격 측정.
  3. 웹 포털과 연결된 제품 원격 측정입니다.

이 세 가지 상황 각각에서 위 섹션의 질문에 답하는 데 필요한 최소한의 데이터를 수집합니다.

관리자 이메일은 제품 업데이트를 명시적으로 선택한 경우에만 수집됩니다. 그렇지 않으면 개인 식별 정보는 모은.

Firezone은 Firezone 팀에서만 액세스할 수 있는 비공개 Kubernetes 클러스터에서 실행되는 PostHog의 자체 호스팅 인스턴스에 원격 측정을 저장합니다. 다음은 Firezone 인스턴스에서 원격 측정 서버로 전송되는 원격 측정 이벤트의 예입니다.

{

   "ID": “0182272d-0b88-0000-d419-7b9a413713f1”,

   "타임스탬프": “2022-07-22T18:30:39.748000+00:00”,

   "이벤트": "fz_http_started",

   "distinct_id": “1ec2e794-1c3e-43fc-a78f-1db6d1a37f54”,

   "속성"{

       “$geoip_city_name”: "애쉬번",

       "$geoip_continent_code": "나",

       "$geoip_continent_name": "북아메리카",

       "$geoip_country_code": "우리를",

       "$geoip_country_name": "미국",

       “$geoip_위도”: 39.0469,

       “$geoip_경도”: -77.4903,

       "$geoip_postal_code": "20149",

       "$geoip_subdivision_1_code": "VA",

       “$geoip_subdivision_1_이름”: "여자 이름",

       "$geoip_time_zone": “미국/뉴욕”,

       "$ip": "52.200.241.107",

       "$plugins_deferred": [],

       "$plugins_failed": [],

       "$plugins_succeeded"[

           “지오아이피(3)”

       ],

       "distinct_id": “1zc2e794-1c3e-43fc-a78f-1db6d1a37f54”,

       "fqdn": “awsdemo.firezone.dev”,

       "커널_버전": "리눅스 5.13.0",

       "버전": "0.4.6"

   },

   "elements_chain": ""

}

원격 분석을 비활성화하는 방법â € <

주의사항

Firezone 개발팀 의존 모든 사람을 위해 Firezone을 개선하기 위한 제품 분석에 관한 것입니다. 원격 측정을 활성화한 상태로 두는 것은 Firezone의 개발에 기여할 수 있는 가장 가치 있는 단일 기여입니다. 즉, 일부 사용자의 개인 정보 보호 또는 보안 요구 사항이 더 높으며 원격 측정을 모두 비활성화하는 것을 선호한다는 것을 알고 있습니다. 그것이 당신이라면 계속 읽으십시오.

원격 분석은 기본적으로 활성화되어 있습니다. 제품 원격 측정을 완전히 비활성화하려면 /etc/firezone/firezone.rb에서 다음 구성 옵션을 false로 설정하고 sudo firezone-ctl reconfigure를 실행하여 변경 사항을 적용합니다.

기본['파이어존']['원격 측정']['활성화'] = 그릇된

그러면 모든 제품 원격 분석이 완전히 비활성화됩니다.