Skip to content
이 페이지는 AI로 번역되어 부정확한 내용이 있을 수 있습니다. GitHub에서 개선에 참여해 주세요.

보안 모델 및 개인정보 약속 ​

Gately는 네트워크 경계에서 동작하며 DNS 제공자 키, 인증서 개인 키, 각종 자격 증명을 다룹니다. 따라서 보안과 투명성이 최우선 설계 목표입니다.

개인정보 약속 ​

  • 기본적으로 외부 연결 없음: 프로젝트 서버에 연결하지 않고, 기기 정보를 보고하지 않으며, 원격 설정을 내려보내지 않습니다.
  • 외부 주소를 확인하고 수정 가능: 공인 IP 조회, STUN 서버 등의 주소가 모두 UI에 표시되며 수정하거나 끌 수 있습니다.
  • 서드파티 로그인의 자율성: GitHub, Google, QQ, OIDC 로그인은 직접 발급받은 OAuth 앱을 사용하며 어떤 중계도 거치지 않습니다.
  • 직접 하는 업그레이드: 프로그램이 백그라운드에서 스스로 내려받거나 교체하지 않습니다. Linux 바이너리 설치의 온라인 업그레이드는 관리자가 클릭한 뒤에만 실행되며 SHA-256을 대조하고 이전 버전을 보관합니다. 업그레이드 시점은 사용자가 정합니다.

데이터 보호 ​

  • 설정은 권한 0600의 일반 JSON이라 감사하고 롤백할 수 있습니다.
  • 민감한 필드는 API 출력에서 마스킹됩니다.
  • cloudflared의 토큰은 환경 변수로 전달되어 프로세스 목록에 나타나지 않습니다. frp와 Tailscale의 토큰과 키는 0600 권한으로 저장됩니다.

인증 및 접근 제어 ​

  • bcrypt 비밀번호 해시와 HMAC 서명 세션 토큰
  • 기본 비밀번호 gately.cn은 공개되어 있으므로 사용하는 동안 관리 UI 상단에 변경 안내가 계속 표시됩니다. 비밀번호를 잊었거나 2단계 인증기를 잃어버렸을 때는 서버에서 gately reset-password / gately reset-totp로만 재설정할 수 있습니다(설정 디렉터리 읽기·쓰기 권한과 yes 입력 확인 필요). 재설정하면 모든 세션이 무효화되고 감사 로그에 기록됩니다. 자세한 내용은 비밀번호와 2단계 인증 재설정을 참고하세요
  • 패스키(WebAuthn) 로그인: 공개 키만 저장하고 사용자 확인(지문, 얼굴 인식 또는 PIN)을 강제하며 서명 카운터로 복제를 막습니다. 도메인과 HTTPS(또는 localhost)로 접속해야 합니다
  • 2단계 인증(TOTP, RFC 6238 테스트 벡터로 검증)
  • 읽기 전용 계정: 상태와 설정을 볼 수 있지만 수정, 백업 다운로드, 비밀 값 읽기, 터미널 열기는 할 수 없습니다. 비밀번호를 재설정하거나 계정을 삭제하면 세션이 즉시 무효화됩니다
  • 로그인 실패 제한
  • 이 호스트의 리버스 프록시: 관리 UI를 이 호스트의 nginx, haproxy 또는 Gately 웹 서비스 뒤에 두면 이 호스트 주소에서 온 X-Real-IP / X-Forwarded-For만 신뢰합니다. 내부망 전용 접근, 로그인 제한, 감사 로그는 이를 바탕으로 실제 출처를 얻습니다. 「설정 → 접근 제어」에서 끄거나 추가 신뢰 프록시를 지정할 수 있습니다
  • 보안 진입 경로, 내부망 전용 접근, 관리 UI의 HTTPS
  • fnOS 통합 게이트웨이: fnOS 패키지를 fnOS 통합 게이트웨이로 접속하면 fnOS가 접근을 제어하며 fnOS 관리자만 열 수 있습니다. 「fnOS 로그인 상태로 자동 로그인」은 기본적으로 꺼져 있으며, 켜면 로그인한 fnOS 관리자가 Gately 관리자로 들어오고(2단계 인증 생략) 일반 fnOS 사용자는 여전히 로그인해야 합니다. 자세한 내용은 fnOS 네이티브 앱을 참고하세요.
  • 모듈 스위치: 「설정 → 기능 모듈」에서 끈 모듈은 서비스를 시작하지 않고 관리 API도 제공하지 않으므로 공격 표면이 줄어듭니다
  • 다중 토큰 API: 각 토큰은 생성할 때 선택한 모듈의 읽기/쓰기 권한만 가지며 만료 시간을 지정할 수 있고 최근 사용한 출처 IP가 기록됩니다. 계정, 2단계 인증, 토큰 관리, 백업, 복원, 재시작, 시스템 설정 엔드포인트는 로그인 세션만 허용합니다. 자세한 내용은 API 토큰 및 OpenAPI를 참고하세요.
  • 사이트 접근 제어: 인증 실패 시 자동 차단, GeoIP 국가 필터, 경로 규칙. 자세한 내용은 웹 서비스를 참고하세요.
  • 설정 백업은 암호화(scrypt + AES-GCM)를 지원합니다. 자세한 내용은 설정 백업을 참고하세요.

감사와 추적 ​

감사 로그는 로그인, 설정 변경, 민감한 접근을 기록합니다. 설정 기록은 각 설정 파일을 덮어쓰기 전의 버전을 보관하며 한 번에 되돌릴 수 있습니다. 자세한 내용은 감사 로그와 설정 기록을 참고하세요. 릴리스 산출물에는 cosign 서명, 빌드 출처 증명(provenance), SBOM이 함께 제공되며 검증 방법은 릴리스 검증을 참고하세요.

위험도가 높은 기능의 기본값 ​

로컬 셸 터미널은 기본적으로 꺼져 있습니다. SSH 터미널은 「처음 접속 시 신뢰」 정책으로 호스트 키 지문을 기록합니다.

보안 문제 신고 ​

취약점은 GitHub 저장소의 Security 페이지에서 비공개로 신고해 주세요. 공개 Issue에는 세부 내용을 올리지 마세요: https://github.com/wangwanjie/gately/security

더 많은 실천 방안은 보안 강화 가이드를 참고하세요.

Apache-2.0 라이선스로 공개되어 있습니다.