Skip to Content

보안

어플라이언스는 사용자가 운영하는 하드웨어와 네트워크에서 실행됩니다. IronFlock은 소프트웨어와 그 기본 설정을 제공하지만, 어플라이언스가 얼마나 잘 보호되는지는 선택한 모드, 주변 네트워크, 그리고 어플라이언스가 실행되는 호스트에도 달려 있습니다. 이 페이지는 그 부분을 위한 체크리스트입니다.

모드별 보호 범위

어플라이언스는 HTTPS 및 인증서에서 설명하는 세 가지 모드 중 하나로 실행됩니다. 모드에 따라 암호화되고 검증되는 대상이 다릅니다:

일반 HTTP (기본값)자체 발급 CA를 사용하는 HTTPS회사 인증서를 사용하는 HTTPS
브라우저에서 어플라이언스로암호화되지 않음HTTPSHTTPS
로그인 쿠키Secure 속성 없음Secure 속성 있음Secure 속성 있음
디바이스 연결 (포트 18080)암호화되지 않음암호화되지 않음443에서 HTTPS
디바이스용 앱 이미지 및 에이전트 업데이트암호화되지 않음암호화되지 않음443에서 HTTPS
디바이스의 원격 접근 터널암호화됨, 서버 미검증암호화됨, 서버 미검증암호화 및 검증됨
패스키 및 보안 키어플라이언스 자체에서만사용 가능사용 가능

어플라이언스가 다른 시스템과 네트워크를 공유하는 곳에서는 회사 인증서를 사용하는 HTTPS를 사용하십시오. 연결된 디바이스가 통신 상대를 검증하는 모드는 이것뿐입니다. 나머지 두 모드는 어플라이언스, 그 디바이스, 그리고 운영자만 도달할 수 있는 네트워크 세그먼트에 적합합니다.

암호화되지 않는 트래픽

HTTPS를 사용하더라도 일부 트래픽은 암호화되지 않습니다. 이를 고려하여 네트워크를 계획하십시오:

  • 포트 18080의 디바이스 연결은 모든 모드에서 모든 네트워크 인터페이스에 게시됩니다. 어플라이언스 자체의 디바이스 에이전트와 어플라이언스에서 실행되는 앱이 여기에 연결하며, 일반 모드와 자체 발급 CA 모드에서는 연결된 모든 디바이스도 여기에 연결합니다.
  • 어플라이언스로 향하는 원격 접근 터널(포트 7000)은 일반 모드와 자체 발급 CA 모드에서도 암호화되지만, 디바이스는 어플라이언스의 인증서를 확인할 수 없습니다. 네트워크 경로에 접근할 수 있는 사람이 어플라이언스의 터널 서버를 사칭할 수 있습니다. 이 방식으로 연결하면 디바이스 에이전트가 경고를 로그에 남깁니다.
  • 데이터베이스 연결과 같은 어플라이언스 내부 서비스 간 연결은 암호화되지 않습니다. 이 연결은 호스트 밖으로 나가지 않습니다.
  • 어플라이언스는 저장 데이터를 암호화하지 않습니다. 어플라이언스가 민감한 데이터를 저장하거나 사업장 밖으로 반출될 수 있다면, 호스트 운영체제나 디스크의 암호화 기능을 사용하십시오.

보안 강화 체크리스트

  • 네트워크에 맞는 모드를 선택하십시오(모드별 보호 범위 참조).
  • 어플라이언스 포트에 도달할 수 있는 대상을 제한하십시오. 설치 프로그램은 방화벽에서 아무것도 열지 않으며, Docker는 호스트 방화벽의 일반적인 입력 규칙(ufw, firewalld)을 거치지 않고 어플라이언스의 포트를 게시합니다. DOCKER-USER 체인이나 네트워크 방화벽에서 필터링하십시오. 설치 프로그램은 /opt/ironflock/docker-user-firewall.sh.example에 템플릿을 남겨 둡니다. 디바이스 포트(18080, 15001, 15002, 7000, 30000–30049)는 디바이스 네트워크에서만 허용하십시오 — 어플라이언스에 연결하는 디바이스를 참조하십시오.
  • 호스트 운영체제를 최신 상태로 유지하고, 호스트에 계정을 가진 사람을 제한하십시오. 호스트의 root 권한을 가진 사람은 어플라이언스의 모든 시크릿을 읽을 수 있습니다.
  • 호스트에 대한 관리 접근에는 비밀번호 대신 SSH 키를 사용하십시오.
  • 시간 동기화를 구성하십시오 — 시간 동기화 (NTP)를 참조하십시오.
  • 첫 로그인 후 admin 비밀번호를 변경하고 admin 계정에 이중 인증을 설정하십시오.
  • 모든 계정에 이중 인증이 설정되면 모든 사용자에게 이중 인증을 의무화하십시오(계정 및 접근 참조).
  • 인스턴스를 소유한 ironflock.com 계정을 이중 인증으로 보호하십시오. 이 계정은 클라우드에서 어플라이언스에 대한 관리자 접근 권한을 가집니다.
  • 신뢰할 수 있는 앱만 설치하십시오. 앱은 어플라이언스와 디바이스에서 어플라이언스의 구성 파일을 포함하여 호스트에 대한 광범위한 접근 권한을 가지고 실행됩니다.
  • 어플라이언스를 최신 상태로 유지하십시오(업데이트 참조).

계정 및 접근

  • admin 계정: 모든 어플라이언스는 설치 시 고유한 admin 비밀번호를 받으며, 설치 프로그램은 이를 한 번만 표시합니다. 분실한 경우 로컬 운영에 설명된 대로 새 비밀번호를 설정하십시오 — 이렇게 하면 모든 admin 세션도 로그아웃됩니다.
  • 새 사용자는 어플라이언스의 프로젝트에서 받은 초대가 있어야만 가입할 수 있습니다. 초대가 없으면 소셜 로그인을 통한 가입도 거부됩니다.
  • 이중 인증: 사용자는 인증 앱(TOTP), 패스키 또는 보안 키, 복구 코드를 설정할 수 있습니다. 패스키와 보안 키에는 HTTPS가 필요합니다. 정책은 설치 프로그램 옵션 --2fa로 설정하며, 업데이트 후에도 유지됩니다:
    • available — 사용자가 이중 인증을 설정할 수 있지만, 입력을 요구받지는 않습니다.
    • effective (기본값) — 이중 인증을 설정한 사용자는 이를 사용해야 합니다.
    • required — 모든 사용자가 이중 인증을 사용해야 합니다. 먼저 모든 계정에 이중 인증이 설정되어 있는지 확인하십시오. 설정하지 않은 사용자는 더 이상 로그인할 수 없습니다.
  • 세션은 24시간 동안 유지됩니다.
  • ironflock.com에서의 접근: Instance Key를 생성한 ironflock.com 계정은 어플라이언스의 admin 계정에 연결됩니다. 초대한 사용자는 각자의 ironflock.com 계정을 연결합니다 — 계정 연결을 참조하십시오. 사용자는 언제든지 이 연결을 해제할 수 있습니다.

호스트의 시크릿

설치 프로그램은 설치 시 어플라이언스의 시크릿을 한 번 생성하고, 업데이트 후에도 유지합니다. 시크릿은 /opt/ironflock/ 아래에 있습니다:

파일내용접근 권한
.env모든 서비스의 비밀번호와 키, 초기 admin 비밀번호, 프록시 및 SMTP 자격 증명root만 (0600)
license.env라이선스 키와 Instance Keyroot와 IronFlock 서비스 (0640)
certs/HTTPS 인증서와 키, 자체 발급 CA의 경우 CA의 키도 포함개인 키는 root만 (0600)
registry-token-certs/앱 이미지 가져오기 토큰에 서명하는 키레지스트리 서비스만 (0600)

설치 프로그램은 라이선스 키로 Docker를 IronFlock 레지스트리에 로그인시키므로, root의 Docker 구성에도 라이선스 키가 저장됩니다.

이 파일들을 백업에 포함하고, 백업도 어플라이언스 자체와 마찬가지로 보호하십시오.

직접 교체할 수 있는 항목:

  • admin 비밀번호: 프로필에서 변경하거나, 로컬 운영의 재설정 명령을 사용합니다.
  • HTTPS 인증서: certs/의 파일을 교체합니다. 어플라이언스가 새 인증서를 자동으로 적용합니다.
  • 라이선스 키: admin 프로필의 라이선스 섹션에서 변경합니다.
  • SMTP 및 프록시 자격 증명: .env에서 변경한 후 sudo systemctl restart ironflock.service로 재시작합니다.

내부 서비스 시크릿에 대해서는 IronFlock 팀에 문의하십시오.

아웃바운드 연결 및 텔레메트리

어플라이언스가 연결하는 대상은 방화벽 구성에 나와 있으며, 이 연결은 모두 암호화됩니다.

  • 라이선스 검증 시에는 라이선스 키, 하드웨어 지문, 그리고 온라인 App Store에 대한 어플라이언스 연결의 접근 토큰이 전송됩니다.
  • AI 어시스턴트는 자체 게이트웨이를 구성하지 않는 한 IronFlock의 LLM 게이트웨이를 통해 프롬프트를 전송합니다.
  • 텔레메트리 없음. 어플라이언스는 사용 분석 데이터를 전송하지 않습니다. 어플라이언스 UI와 서비스 모두 IronFlock이나 제3자에게 사용 현황을 보고하지 않습니다.
  • 사용자의 브라우저에서: 지도 타일은 Mapbox에서 로드되며, 음성 입력에는 음성 인식 서비스 Deepgram이 사용됩니다. 이 연결은 어플라이언스가 아니라 브라우저가 만듭니다.

업데이트

  • 어플라이언스 업데이트는 admin이 시작합니다(유지 관리 참조). 어플라이언스는 업데이트를 HTTPS로 다운로드하며, 업데이트가 실패하면 자동으로 롤백합니다.
  • 디바이스 에이전트 업데이트는 서명되어 있습니다. 모든 에이전트는 업데이트를 적용하기 전에 서명을 확인하고, 새 버전이 시작되지 않으면 롤백합니다 — 디바이스 에이전트 업데이트를 참조하십시오.
  • Docker를 포함한 호스트 운영체제는 사용자의 책임입니다.

백업 및 복원

어플라이언스에는 내장 백업 기능이 없습니다. 백업하려면 sudo systemctl stop ironflock.service로 어플라이언스를 중지하고 다음을 복사하십시오:

  • .env, license.env, certs/, registry-token-certs/를 포함한 /opt/ironflock/ 폴더
  • 데이터베이스, 파일, local App Store, 사용자 파일이 저장된 어플라이언스의 Docker 볼륨(docker volume ls)

.env는 같은 시점의 볼륨과 함께 보관하십시오. 볼륨의 암호화된 데이터는 해당 .env에 있는 키로만 읽을 수 있습니다.

폐기

  1. 어플라이언스가 아직 온라인 상태일 때 라이선스를 이전하거나 해제하십시오 — 새 하드웨어로 라이선스 이전을 참조하십시오.

  2. 소프트웨어를 제거하십시오:

    sudo systemctl disable --now ironflock.service sudo docker compose -f /opt/ironflock/docker-compose.yml \ --env-file /opt/ironflock/.env down -v sudo rm -rf /opt/ironflock

    설치 프로그램은 라이선스 키로 Docker를 IronFlock 레지스트리에 로그인시켰으므로, 그 로그인도 제거하십시오:

    sudo docker logout instance-registry.ironflock.com
  3. 하드웨어가 사업장 밖으로 반출되는 경우 디스크를 완전히 지우십시오 — 위 명령은 파일을 삭제하지만 덮어쓰지는 않습니다.

보안을 약화시키는 설정

일부 설정은 문제 해결 전용입니다. 프로덕션 환경에서는 설정하지 마십시오:

  • TUNNEL_TLS_INSECURE_SKIP_VERIFY 및 CLOUD_TUNNEL_TLS_INSECURE_SKIP_VERIFY — 원격 접근 터널의 인증서 확인을 끕니다.
  • AGENT_UPDATE_ALLOW_UNSIGNED — 디바이스 에이전트가 서명되지 않은 업데이트를 적용할 수 있게 합니다.
  • TUNNEL_AUTHZ_ENFORCE=false — 디바이스가 자신의 ID를 증명하지 않고도 터널을 열 수 있게 합니다.
  • SMTP_CONNECTION_URI의 ?tls.rejectUnauthorized=false — 메일 서버의 모든 인증서를 수락합니다.
  • --2fa available — 이중 인증을 전혀 요구하지 않습니다.
Last updated on