Home Assistant를 설치하고 스마트 플러그, 온도 조절기 및 카메라를 연결했으며, 이제 세계 어디에서나 스마트폰으로 이를 제어하고 싶습니다. 그러나 보호 없이 인터넷에 열린 접근은 귀하의 스마트 홈을 해커의 쉬운 표적이 되게 만듭니다. 이 기사에서는 프록시를 통해 Home Assistant에 원격 접근을 올바르게 설정하고 가정 네트워크를 안전하게 보호하는 방법을 살펴보겠습니다.
왜 Home Assistant에 직접 접근하는 것이 위험한가
Home Assistant는 오픈 소스 스마트 홈 자동화 플랫폼입니다. 전 세계 수백만 사용자가 이를 통해 조명, 기후, 자물쇠, 카메라 및 수십 가지 다른 장치를 제어합니다. 그러나 이러한 인기는 Home Assistant를 악의적인 공격자에게 매력적인 목표로 만듭니다.
포트 8123(기본 Home Assistant 포트)를 라우터를 통해 인터넷에 직접 노출하면, 자동 스캐너에게 "환영합니다"라는 표지판을 걸어놓는 것과 같습니다. 이러한 스캐너는 모든 IP 주소 범위를 스캔하고 알려진 서비스의 열린 포트를 찾습니다. Shodan(인터넷 장치 검색 엔진)의 데이터에 따르면, 열린 접근으로 수십만 개의 Home Assistant 인스턴스가 지속적으로 노출되고 있습니다.
공격자가 귀하의 Home Assistant를 발견한 후 발생하는 일은 다음과 같습니다:
- 비밀번호 무차별 대입 공격 — 자동 스크립트가 수천 개의 로그인/비밀번호 조합을 시도합니다. 약한 비밀번호를 사용하고 있다면, 해킹은 몇 분의 문제가 됩니다.
- 취약점 악용 — 이전 버전의 Home Assistant에서 주기적으로 심각한 취약점이 발견되어 비밀번호 없이 접근할 수 있는 경우가 있습니다.
- 카메라를 통한 감시 — HA에 접근하면 공격자는 모든 연결된 카메라의 실시간 스트리밍을 볼 수 있습니다.
- 자물쇠 및 경보 시스템 제어 — 스마트 자물쇠를 연결한 경우, 해커는 귀하의 집의 문을 원격으로 열 수 있습니다.
- 자동화 데이터 도용 — HA의 기록을 통해 귀하가 집에 있는 시간, 떠나는 시간, 수면 모드 및 기타 개인 정보를 알 수 있습니다.
⚠️ 실제 사례
2023년, 보안 연구원들은 Home Assistant의 CVE-2023-27482 취약점을 발견하여 인증 없이 접근할 수 있게 했습니다. 인터넷에 열린 모든 인스턴스는 패치가 출시되기 전까지 취약했습니다. 프록시 레이어 또는 VPN을 사용하는 사람들은 자동으로 보호되었습니다.
프록시가 스마트 홈을 보호하는 방법: 작동 원리
Home Assistant의 프록시는 인터넷과 귀하의 서버 사이의 중개자 역할을 합니다. 귀하의 Home Assistant가 네트워크에서 직접 보이지 않도록 하고, 외부에서는 프록시 서버만 보이게 하며, 그 서버가 추가 검사를 적용하여 요청을 내부로 전달합니다.
작동 방식은 다음과 같습니다:
귀하의 스마트폰 (인터넷)
↓
프록시 서버
(필터링, 암호화, 인증)
↓
가정 네트워크 (비공개)
↓
Home Assistant (192.168.1.X:8123)
이 추가 레이어가 제공하는 이점은 다음과 같습니다:
- 실제 IP 숨기기 — 스캐너는 귀하의 집 주소가 아닌 프록시의 IP를 봅니다. 프록시가 해킹되더라도, 가정 네트워크에 직접 접근할 수 없습니다.
- SSL/TLS 암호화 — 프록시는 HTTPS 연결을 종료하고 올바른 인증서를 발급하여 트래픽을 가로채는 것으로부터 보호합니다.
- 추가 인증 — Home Assistant 앞에 Basic Auth 또는 프록시 레벨에서 2단계 인증을 설정할 수 있습니다.
- 요청 제한 — 하나의 IP에서의 요청 수를 제한하여 Home Assistant에 도달하기 전에 무차별 대입 공격을 차단합니다.
- 지리적 차단 — 특정 국가 또는 IP 범위에서만 접근을 허용할 수 있습니다.
- 로그 기록 — 모든 접근 시도가 기록되어 의심스러운 활동을 식별하는 데 도움이 됩니다.
이 시나리오에서 사용되는 두 가지 유형의 프록시 간의 차이를 이해하는 것이 중요합니다: 역방향 프록시는 귀하의 서버 또는 라우터에 설치되어 들어오는 연결을 수락하고, 외부 프록시는 귀하의 트래픽이 터널링되는 클라우드의 중개 서버입니다. 두 접근 방식 모두 장단점이 있으며, 각각을 살펴보겠습니다.
Home Assistant에 적합한 프록시 유형
해결책을 선택하기 전에 Home Assistant의 작업과 예를 들어 중재자 또는 SMM 전문가의 작업이 본질적으로 다르다는 것을 이해하는 것이 중요합니다. 스마트 홈에는 차단 우회를 위한 익명 프록시가 아니라 원격 제어를 위한 안전한 터널이 필요합니다. 옵션을 살펴보겠습니다:
| 해결책 유형 | 작동 방식 | 장점 | 단점 | 복잡성 |
|---|---|---|---|---|
| 역방향 프록시 (Nginx/Caddy) | 외부에서 HTTPS 요청을 수신하고 내부의 HA로 전달합니다. | 무료, 완전한 제어, SSL | 공개 IP 또는 DDNS가 필요하며, 포트 443을 열어야 합니다. | 중간 |
| Cloudflare 터널 | HA에서 Cloudflare 서버로의 터널, 포트가 필요하지 않습니다. | 무료, 공개 IP 필요 없음, DDoS 보호 | 트래픽이 Cloudflare를 통해 흐르며, 도메인이 필요합니다. | 낮음 |
| VPS + 프록시 | VPS를 임대하고 그를 통해 트래픽을 터널링합니다. | 자신의 IP, 최대한의 제어 | 유료, 설정이 필요합니다. | 높음 |
| Nabu Casa (공식) | HA 개발팀의 클라우드 서비스 | 매우 간단하며, Alexa/Google 지원 | 유료 구독 ~$6.50/월 | 매우 낮음 |
| 주거용 프록시 | 실제 가정 IP를 통해 나가는 트래픽을 라우팅합니다. | 실제 IP, 서비스에 의해 차단되지 않음 | 나가는 트래픽에 적합하며, 들어오는 트래픽에는 적합하지 않음 | 낮음 |
대부분의 Home Assistant 사용자에게 최적의 선택은 Cloudflare 터널 (무료, 공개 IP 필요 없음) 또는 Nginx/Caddy의 역방향 프록시 (공개 IP 또는 동적 DNS가 있는 경우)입니다. Nabu Casa는 설정을 전혀 원하지 않는 사람에게 적합합니다. 각 옵션을 자세히 살펴보겠습니다.
역방향 프록시 (Nginx, Caddy): 단계별 설정
역방향 프록시는 Home Assistant에 안전한 접근을 설정하는 가장 전통적이고 유연한 방법입니다. HA와 동일한 장치(예: Raspberry Pi 또는 Home Assistant OS) 또는 가정 네트워크의 별도 서버에 설치할 수 있습니다.
옵션 1: Caddy (초보자에게 추천)
Caddy는 Let's Encrypt를 통해 SSL 인증서를 자동으로 받고 업데이트하는 현대적인 웹 서버입니다. 수동으로 certbot을 설정할 필요가 없습니다.
단계 1: 필요한 것
- 도메인 이름 (DuckDNS 또는 No-IP에서 무료로 사용할 수 있음)
- 라우터에서 Home Assistant의 IP로 포트 443을 포워딩
- 설치된 Home Assistant (어떤 버전이든)
단계 2: Home Assistant OS에서 Caddy를 애드온으로 설치
Home Assistant OS(HAOS)를 사용하는 경우, 설정 → 애드온 → 애드온 스토어로 이동하여 Caddy 2 애드온을 찾습니다. 설치 후 구성으로 이동합니다.
단계 3: Caddyfile 기본 구성
your-domain.duckdns.org {
reverse_proxy localhost:8123
# 추가 보호: HA 앞에 Basic Auth
# basicauth {
# admin $2a$14$비밀번호_해시
# }
# 요청 제한: 초당 10회 이하
rate_limit {
zone static_zone {
key {remote_host}
events 10
window 1s
}
}
# 보안 헤더
header {
X-Frame-Options DENY
X-Content-Type-Options nosniff
Referrer-Policy no-referrer
}
}
단계 4: 프록시 뒤에서 작동하도록 Home Assistant 설정
configuration.yaml 파일을 열고 다음 줄을 추가합니다. 이는 필수이며, 그렇지 않으면 HA가 프록시의 요청을 거부합니다:
http:
use_x_forwarded_for: true
trusted_proxies:
- 127.0.0.1
- ::1
저장 후 Home Assistant를 재시작합니다. 이제 https://your-domain.duckdns.org 주소로 접근하면 연결이 암호화되고 귀하의 라우터의 실제 IP가 도메인 뒤에 숨겨집니다.
옵션 2: Cloudflare 터널 (공개 IP 없음)
공개 IP가 없는 경우(대부분의 가정용 ISP는 NAT 뒤에 회색 IP를 제공합니다), Cloudflare 터널은 이상적인 솔루션입니다. Home Assistant가 설치된 장치에 작은 에이전트 cloudflared를 설치하면, 자동으로 Cloudflare 서버까지 암호화된 터널을 생성합니다. 라우터에서 열린 포트가 필요하지 않습니다!
단계별 설정:
- cloudflare.com에 등록하고 도메인을 추가합니다 (또는 무료 서브도메인을 사용합니다).
- Cloudflare 대시보드에서 Zero Trust → Networks → Tunnels로 이동합니다.
- Create a tunnel을 클릭하고 터널에 이름을 지정합니다 (예: home-assistant).
- 설치 명령을 복사하고 HA가 설치된 장치에서 실행합니다 (또는 HAOS 스토어에서 Cloudflared 애드온을 설치합니다).
- Public Hostname 섹션에서 다음을 지정합니다:
— Subdomain:ha
— Domain: 귀하의 도메인
— Service:http://localhost:8123 configuration.yaml에 Cloudflare의 신뢰할 수 있는 프록시를 추가합니다 (IP 범위는 cloudflare.com/ips에서 찾을 수 있습니다).- 선택 사항: Zero Trust Access를 활성화하여 HA에 로그인하기 전에 이메일 또는 Google 계정을 통한 추가 인증을 설정합니다.
💡 팁
Cloudflare 터널은 개인 사용을 위해 완전히 무료입니다. 유일한 제한은 트래픽이 Cloudflare 서버를 통과한다는 것입니다. 스마트 홈을 관리하는 데는 전혀 문제가 없으며, DDoS 및 봇으로부터의 보호가 함께 제공됩니다.
외부 프록시 서버: 필요할 때와 연결하는 방법
외부 프록시 서버는 귀하의 트래픽이 라우팅되는 클라우드의 중개 노드입니다. Home Assistant의 맥락에서, 이는 역방향 프록시로 커버되지 않는 몇 가지 특정 시나리오에서 사용됩니다.
시나리오 1: 기업 네트워크에서 Home Assistant 접근
많은 기업 네트워크는 비표준 포트와 VPN 연결을 차단합니다. 직장에서 대부분의 연결이 차단된 컴퓨터에서 스마트 홈을 제어하고 싶다면, 주거용 프록시를 통한 트래픽은 일반 HTTPS 트래픽처럼 보이며 기업 방화벽에서 의심을 일으키지 않습니다.
시나리오 2: 지리적 제한이 있는 서비스와의 통합
Home Assistant는 수천 개의 외부 서비스와 통합할 수 있습니다: 날씨 API, 스마트 스피커, 스트리밍 플랫폼. 이들 중 일부는 특정 국가에서만 사용할 수 있습니다. 예를 들어, Amazon Alexa 또는 Google Assistant와의 통합은 서버가 미국 또는 유럽에서 접근 가능해야 합니다. 이 경우 HA의 나가는 트래픽을 필요한 지역의 데이터 센터 프록시를 통해 라우팅할 수 있습니다.
시나리오 3: HA의 나가는 요청 익명화
Home Assistant는 외부 API에 정기적으로 요청을 보냅니다: 날씨를 확인하고, 트래픽 데이터를 받고, 클라우드 서비스와 동기화합니다. 이러한 모든 요청은 귀하의 가정 IP에서 나가며, 외부 서비스에 귀하의 위치를 노출합니다. HA의 시스템 설정에서 나가는 프록시를 설정하면 실제 IP를 숨길 수 있습니다.
Home Assistant에서 나가는 프록시를 설정하는 방법:
Home Assistant OS에서 설정 → 시스템 → 네트워크로 이동합니다. 여기에서 모든 나가는 연결을 위한 HTTP/HTTPS 프록시를 지정할 수 있습니다. 프록시 데이터를 다음 형식으로 입력합니다:
HTTP Proxy: http://사용자:비밀번호@프록시서버:포트 HTTPS Proxy: http://사용자:비밀번호@프록시서버:포트
대안으로, HA를 Docker에서 실행하는 경우, HTTP_PROXY 및 HTTPS_PROXY 환경 변수를 docker-compose.yml 파일에 설정할 수 있습니다:
version: '3'
services:
homeassistant:
image: ghcr.io/home-assistant/home-assistant:stable
environment:
- HTTP_PROXY=http://user:pass@proxy-server:port
- HTTPS_PROXY=http://user:pass@proxy-server:port
- NO_PROXY=localhost,127.0.0.1,192.168.0.0/16
volumes:
- ./config:/config
network_mode: host
restart: unless-stopped
NO_PROXY 변수를 주의하세요 — 이는 로컬 주소를 프록시에서 제외하여 HA가 가정 네트워크의 장치와 직접 통신할 수 있도록 합니다.
Nabu Casa vs 독립 프록시: 무엇을 선택할까
Nabu Casa는 Home Assistant 팀의 공식 클라우드 서비스입니다. DNS, SSL, 열린 포트 설정 없이 원격 접근 문제를 한 번의 클릭으로 해결합니다: 단순히 구독하고 https://귀하의-id.ui.nabu.casa 형태의 URL을 받습니다.
| 기준 | Nabu Casa | Cloudflare 터널 | Nginx/Caddy |
|---|---|---|---|
| 비용 | ~$6.50/월 | 무료 | 무료 |
| 설정 난이도 | ⭐ 매우 간단 | ⭐⭐ 간단 | ⭐⭐⭐ 중간 |
| 공개 IP 필요 | 아니요 | 아니요 | 예 (또는 DDNS) |
| 자신의 도메인 | 아니요 | 예 | 예 |
| Alexa / Google Home | ✅ 내장됨 | 수동 설정 | 수동 설정 |
| 개인정보 보호 | 트래픽이 Nabu Casa 서버를 통과함 | 트래픽이 Cloudflare를 통과함 | 완전한 제어 |
| HA 개발자 지원 | ✅ 예 | 아니요 | 아니요 |
결론: 만약 당신이 처음 시작하고 싶고 최소한의 문제를 원한다면 — Nabu Casa를 선택하세요. 공개 IP 없이 무료 솔루션을 원한다면 — Cloudflare 터널을 선택하세요. 완전한 제어와 자신의 도메인 이름이 중요하다면 — Nginx 또는 Caddy를 설정하세요.
보안 체크리스트: Home Assistant 보호를 위한 10가지 규칙
프록시는 중요한 요소이지만 유일한 보호 요소는 아닙니다. 다음은 귀하의 스마트 홈에 대한 대부분의 공격 벡터를 차단할 수 있는 전체 체크리스트입니다:
✅ Home Assistant 보안 체크리스트
- 프록시 레이어를 설정하세요 (Caddy, Nginx 또는 Cloudflare 터널) — 절대 포트 8123을 직접 열지 마세요.
- HTTPS를 활성화하세요 — 암호화된 연결만 허용합니다. Caddy는 이를 자동으로 수행합니다.
- 복잡한 비밀번호를 사용하세요 — 최소 16자, 숫자 및 특수 문자 포함. 비밀번호 관리자를 사용하는 것이 좋습니다.
- Home Assistant에서 2단계 인증을 활성화하세요: 설정 → 사용자 → 2FA 활성화 (Google Authenticator 또는 Authy를 통한 TOTP).
- 초기 설정 후 UI를 통한 계정 생성 비활성화 (온보딩).
- 프록시에서 요청 제한을 설정하세요 — 하나의 IP에서 분당 5-10회 이하의 로그인 시도.
- fail2ban 또는 유사한 프로그램을 활성화하세요 — 여러 번의 로그인 실패 후 IP를 자동으로 차단합니다.
- Home Assistant를 정기적으로 업데이트하세요 — 대부분의 심각한 취약점은 발견 후 24-48시간 이내에 패치됩니다.
- 스마트 홈 장치를 별도의 VLAN 또는 게스트 Wi-Fi 네트워크로 격리하세요 — 하나의 장치가 해킹되더라도 나머지 네트워크는 안전하게 유지됩니다.
- 불필요한 통합 및 애드온을 비활성화하세요 — 활성화된 각 구성 요소는 공격 표면을 확장합니다.
추가: Home Assistant를 위한 fail2ban 설정
Linux 시스템(예: Debian에서 Home Assistant Supervised)을 사용하는 경우, 공격자의 IP를 자동으로 차단하기 위해 fail2ban을 설치하세요:
# fail2ban 설치 sudo apt install fail2ban # /etc/fail2ban/filter.d/hass.conf 파일 생성 [Definition] failregex = ^%(__prefix_line)s.*Login attempt or request with invalid authentication from <HOST>.*$ ignoreregex = # /etc/fail2ban/jail.d/hass.conf에 규칙 생성 [hass] enabled = true filter = hass logpath = /config/home-assistant.log maxretry = 5 bantime = 3600 findtime = 600
이 규칙은 10분 내에 5번의 로그인 실패 후 IP를 1시간 차단합니다. 매개변수를 강화할 수 있습니다: bantime을 86400(24시간)으로 늘리거나 maxretry를 3으로 줄일 수 있습니다.
의심스러운 활동 모니터링
Home Assistant에는 내장된 인증 로그가 있습니다. 정기적으로 설정 → 시스템 → 로그를 통해 확인하세요. Login attempt 및 invalid authentication와 관련된 줄을 찾으세요. 낯선 IP에서의 시도가 보이면, 귀하의 HA가 스캐너에게 발견되었다는 신호입니다.
또한, 로그인 실패 시 Telegram으로 자동 알림을 설정할 수 있습니다. Home Assistant에서 자동화를 생성하세요:
alias: 로그인 실패 알림
trigger:
- platform: event
event_type: system_log_event
event_data:
level: WARNING
condition:
- condition: template
value_template: "{{ 'Login attempt' in trigger.event.data.message }}"
action:
- service: notify.telegram
data:
message: "⚠️ Home Assistant 로그인 시도: {{ trigger.event.data.message }}"
결론
Home Assistant에 대한 안전한 원격 접근은 선택 사항이 아니라, 인터넷에서 스마트 홈을 관리하고자 하는 모든 사람에게 필수 조건입니다. 보호 레이어 없이 열린 포트는 "해킹될 것인가"가 아니라 "언제 해킹될 것인가"의 문제입니다. 프록시 레이어(역방향 프록시 또는 터널)는 상황을 완전히 변화시킵니다: 공격자는 귀하의 실제 서버와 가정 네트워크가 아닌 프록시만 볼 수 있습니다.
솔루션 선택에 대한 간략한 요약:
- 초보자, 간단하고 빠르게 원함 → Nabu Casa 또는 Cloudflare 터널
- 공개 IP가 있고 제어를 원함 → Caddy 또는 Nginx를 역방향 프록시로 사용
- 공개 IP가 없고 무료를 원함 → Cloudflare 터널 + DuckDNS
- 최대의 개인정보 보호 → VPS + WireGuard 터널 + 역방향 프록시
프록시는 방어의 첫 번째 라인이라는 것을 잊지 마세요. 2단계 인증, 정기 업데이트 및 로그 모니터링으로 이를 보완하세요. 스마트 홈은 보안 문제에서도 스마트해야 합니다.
들어오는 트래픽 보호 외에도 Home Assistant의 외부 API 요청을 숨기거나 지리적 제한이 있는 통합에 접근해야 하는 경우, 주거용 프록시를 고려하는 것이 좋습니다 — 이들은 클라우드 서비스와 API 제공업체에 의해 차단되지 않는 실제 가정 IP 주소를 제공합니다.
```