Deep Learning/NLP

🚫 n8n을 인트라넷 전용으로 만들기 (인터넷 차단하기)

jinmc 2025. 9. 25. 17:23
반응형

회사 내부에서 n8n을 쓰다 보면 “혹시 n8n에서 인터넷으로 데이터가 빠져나가면 어떡하지?” 하는 걱정이 생깁니다.
저희도 똑같은 고민을 했고, 결국 n8n은 인트라넷만 쓰고, 인터넷은 절대 못 쓰게 만드는 방법을 찾았습니다.
아래처럼 하면 됩니다. ✨


1. 준비

  • n8n은 Docker + docker-compose로 돌리고 있다고 가정합니다.
  • 서버는 회사 내부망에 연결돼 있습니다.

※ 여기서는 예시로 192.168.100.0/24 대역을 사용합니다. 👉 실제 적용 시에는 각자 회사 내부망 대역에 맞춰 수정하세요.


2. 방화벽 규칙 세팅 (진짜 핵심)

리눅스 서버에서 아래 명령어를 실행합니다.
(관리자 권한 필요 → sudo su 하거나 각 줄마다 sudo 붙이기)

 
# (1) DOCKER-USER 체인을 싹 비웁니다. iptables -F DOCKER-USER # (2) 기존 연결은 그대로 허용 iptables -A DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # (3) 도커 컨테이너 → 회사 내부망(예: 192.168.100.0/24)만 허용 iptables -A DOCKER-USER -i br+ -d 192.168.100.0/24 -j ACCEPT iptables -A DOCKER-USER -i docker0 -d 192.168.100.0/24 -j ACCEPT # (4) 나머지 전부 차단 (즉, 인터넷은 막힘) iptables -A DOCKER-USER -i br+ -j DROP iptables -A DOCKER-USER -i docker0 -j DROP

👉 이렇게 하면 n8n 컨테이너는 인트라넷만 통신 가능, 인터넷은 완전히 차단됩니다.


3. 확인하기

① 내부망 테스트 (통과해야 함)

 
docker exec -it n8n ping -c 3 192.168.100.10 # 내부 서버 IP (각자 환경에 맞게 수정)

② 외부망 테스트 (막혀야 함)

 
docker exec -it n8n sh -lc 'wget -qO- --timeout=5 http://1.1.1.1; echo "exit code=$?"'

👉 download timed out 같은 메시지가 나오면 성공입니다.
즉, 인터넷은 막혔다는 뜻!


4. 영구 저장하기

재부팅해도 규칙이 유지되도록 하려면:

 
apt-get update apt-get install -y netfilter-persistent netfilter-persistent save

5. 추가 보안 설정 (n8n 환경변수)

docker-compose.yml 안에 아래 환경변수를 추가하면 더 안전합니다.

 
environment: - N8N_DIAGNOSTICS_ENABLED=false # 텔레메트리 끄기 - N8N_VERSION_NOTIFICATIONS_ENABLED=false - N8N_TEMPLATES_ENABLED=false - N8N_COMMUNITY_PACKAGES_ENABLED=false # 커스텀 노드 설치 금지 - NODES_EXCLUDE=["n8n-nodes-base.httpRequest","n8n-nodes-base.smtp","n8n-nodes-base.slack","n8n-nodes-base.executeCommand","n8n-nodes-base.code"] - N8N_SECURE_COOKIE=false # (테스트용, 운영은 HTTPS 권장)

6. 결론

이렇게 세팅하면:

  • ✅ n8n은 회사 내부 시스템만 접근 가능
  • 외부 인터넷으로는 절대 못 나감 (데이터 유출 방지)
  • 👮 추가로 n8n 자체의 위험한 노드나 커스텀 노드도 막을 수 있음

✨ 한 줄 요약

“DOCKER-USER 체인에 인트라넷만 허용하고 나머지 DROP” → 이걸로 n8n은 내부 전용 서비스가 된다!

반응형