
🍯 T-Pot - 올인원 멀티 허니팟 플랫폼 🐝

T-Pot은 올인원, 선택적으로 분산 가능한, 멀티아키텍처(amd64, arm64) 허니팟 플랫폼으로, 20개 이상의 허니팟과 Elastic Stack을 사용한 수많은 시각화 옵션, 애니메이션 실시간 공격 지도, 그리고 사기 경험을 더욱 향상시키는 다양한 보안 도구를 지원합니다.
ssh 필요)curl 설치: $ sudo [apt, dnf, zypper] install curl (아직 설치되지 않은 경우)$HOME에서 루트가 아닌 사용자로 설치 프로그램 실행:```
env bash -c "$(curl -sL https://github.com/telekom-security/tpotce/raw/master/install.sh)"* 지침을 따르고, 메시지를 읽고, 가능한 포트 충돌을 확인한 후 재부팅하세요.
<!-- TOC -->
- [T-Pot - 올인원 멀티 허니팟 플랫폼](#t-pot---the-all-in-one-multi-honeypot-platform)
- [TL;DR](#tldr)
- [면책 조항](#disclaimer)
- [기술 개념](#technical-concept)
- [허니팟 및 도구](#honeypots-and-tools)
- [기술 아키텍처](#technical-architecture)
- [서비스](#services)
- [사용자 유형](#user-types)
- [시스템 요구 사항](#system-requirements)
- [VM에서 실행](#running-in-a-vm)
- [하드웨어에서 실행](#running-on-hardware)
- [클라우드에서 실행](#running-in-a-cloud)
- [필요한 포트](#required-ports)
- [LLM 기반 허니팟](#llm-based-honeypots)
- [Ollama](#ollama)
- [ChatGPT](#chatgpt)
- [시스템 배치](#system-placement)
- [설치](#installation)
- [배포판 선택](#choose-your-distro)
- [Raspberry Pi 4 (8GB) 지원](#raspberry-pi-4-8gb-support)
- [T-Pot 다운로드 및 설치](#get-and-install-t-pot)
- [macOS 및 Windows](#macos--windows)
- [Red Hat Enterprise Linux](#red-hat-enterprise-linux)
- [설치 유형](#installation-types)
- [표준 / 하이브](#standard--hive)
- [분산](#distributed)
- [T-Pot 제거](#uninstall-t-pot)
- [첫 시작](#first-start)
- [독립형 첫 시작](#standalone-first-start)
- [분산 배포](#distributed-deployment)
- [계획 및 인증서](#planning-and-certificates)
- [센서 배포](#deploying-sensors)
- [센서 제거](#removing-sensors)
- [커뮤니티 데이터 제출](#community-data-submission)
- [옵트인 HPFEEDS 데이터 제출](#opt-in-hpfeeds-data-submission)
- [원격 액세스 및 도구](#remote-access-and-tools)
- [SSH](#ssh)
- [T-Pot 랜딩 페이지](#t-pot-landing-page)
- [Kibana 대시보드](#kibana-dashboard)
- [공격 지도](#attack-map)
- [Cyberchef](#cyberchef)
- [Elasticvue](#elasticvue)
- [Spiderfoot](#spiderfoot)
- [구성](#configuration)
- [T-Pot 구성 파일](#t-pot-config-file)
- [T-Pot 허니팟 및 서비스 사용자 정의](#customize-t-pot-honeypots-and-services)
- [유지 관리](#maintenance)
- [일반 업데이트](#general-updates)
- [업데이트 스크립트](#update-script)
- [일일 재부팅](#daily-reboot)
- [알려진 문제](#known-issues)
- [Docker 이미지 다운로드 실패](#docker-images-fail-to-download)
- [T-Pot 네트워킹 실패](#t-pot-networking-fails)
- [T-Pot 시작](#start-t-pot)
- [T-Pot 중지](#stop-t-pot)
- [T-Pot 데이터 폴더](#t-pot-data-folder)
- [로그 지속성](#log-persistence)
- [공장 초기화](#factory-reset)
- [컨테이너 및 이미지 표시](#show-containers-and-images)
- [Blackhole](#blackhole)
- [Nginx (T-Pot 웹 UI)에 사용자 추가](#add-users-to-nginx-t-pot-webui)
- [Kibana 객체 가져오기 및 내보내기](#import-and-export-kibana-objects)
- [내보내기](#export)
- [가져오기](#import)
- [문제 해결](#troubleshooting)
- [로그](#logs)
- [RAM 및 저장소](#ram-and-storage)
- [연락처](#contact)
- [이슈](#issues)
- [토론](#discussions)
- [라이선스](#licenses)
- [크레딧](#credits)
- [다음의 개발자 및 개발 커뮤니티](#the-developers-and-development-communities-of)
- [**다음 회사 및 조직**](#the-following-companies-and-organizations)
- [**그리고 물론 커뮤니티에 참여해 주신 ***여러분***!**](#and-of-course-you-for-joining-the-community)
- [사용 후기](#testimonials)
- [감사합니다 💖](#thank-you-)
<!-- TOC -->
<br><br>
# 면책 조항
- T-Pot을 설치하고 실행하는 것은 당신의 책임입니다. 시스템 손상 가능성을 완전히 배제할 수 없으므로 신중하게 배포 방식을 선택하세요.
- 빠른 도움을 위해 [Issues](https://github.com/telekom-security/tpotce/issues) 및 [Discussions](https://github.com/telekom-security/tpotce/discussions)를 참조하세요.
- 이 소프트웨어는 최선의 노력을 다해 설계 및 제공됩니다. 커뮤니티 및 오픈 소스 프로젝트로서 많은 다른 오픈 소스 소프트웨어를 사용하며 버그나 문제가 있을 수 있습니다. 책임감 있게 보고해 주세요.
- 허니팟은 설계상 민감한 데이터를 호스팅해서는 안 됩니다. 어떤 것도 추가하지 않도록 하세요.
- 기본적으로 데이터는 [Sicherheitstacho](https://www.sicherheitstacho.eu/start/main)로 전송됩니다. 구성 파일(`~/tpotce/docker-compose.yml`)에서 [제거](#community-data-submission)하여 `ewsposter` 섹션을 비활성화할 수 있습니다. 하지만 이 경우 공유가 정말 중요합니다!
<br><br>
# 기술 개념
T-Pot의 주요 구성 요소가 `tpotinit` Docker 이미지로 이동되어, 이제 T-Pot은 여러 Linux 배포판은 물론 macOS 및 Windows(단, 모두 Docker Desktop의 기능 세트로 제한됨)를 지원합니다. T-Pot은 [docker](https://www.docker.com/) 및 [docker compose](https://docs.docker.com/compose/)를 사용하여 가능한 한 많은 허니팟과 도구를 동시에 실행하고 호스트 하드웨어를 최대한 활용하는 것을 목표로 합니다.
<br><br>
## 허니팟 및 도구
- T-Pot은 다음 허니팟용 Docker 이미지를 제공합니다:<br>
[adbhoney](https://github.com/huuck/ADBHoney),
[beelzebub](https://github.com/beelzebub-labs/beelzebub),
[ciscoasa](https://github.com/Cymmetria/ciscoasa_honeypot),
[citrixhoneypot](https://github.com/MalwareTech/CitrixHoneypot),
[conpot](http://conpot.org/),
[cowrie](https://github.com/cowrie/cowrie),
[ddospot](https://github.com/aelth/ddospot),
[dicompot](https://github.com/nsmfoo/dicompot),
[dionaea](https://github.com/DinoTools/dionaea),
[elasticpot](https://gitlab.com/bontchev/elasticpot),
[endlessh](https://github.com/skeeto/endlessh),
[galah](https://github.com/0x4D31/galah),
[go-pot](https://github.com/ryanolee/go-pot),
[glutton](https://github.com/mushorg/glutton),
[h0neytr4p](https://github.com/pbssubhash/h0neytr4p),
[hellpot](https://github.com/yunginnanet/HellPot),
[heralding](https://github.com/johnnykv/heralding),
[honeyaml](https://github.com/mmta/honeyaml),
[honeypots](https://github.com/qeeqbox/honeypots),
[honeytrap](https://github.com/armedpot/honeytrap/),
[ipphoney](https://gitlab.com/bontchev/ipphoney),
[log4pot](https://github.com/thomaspatzke/Log4Pot),
[mailoney](https://github.com/phin3has/mailoney),
[medpot](https://github.com/schmalle/medpot),
[miniprint](https://github.com/sa7mon/miniprint),
[redishoneypot](https://github.com/cypwnpwnsocute/RedisHoneyPot),
[rdphoneypot](https://gitlab.com/bontchev/rdphoneypot),
[sentrypeer](https://github.com/SentryPeer/SentryPeer),
[snare](http://mushmush.org/),
[tanner](http://mushmush.org/),
[wordpot](https://github.com/gbrindisi/wordpot)
다음 도구와 함께:
* [Autoheal](https://github.com/willfarrell/docker-autoheal) 상태 점검에 실패한 컨테이너를 자동으로 다시 시작하는 도구입니다.
* [Cyberchef](https://gchq.github.io/CyberChef/) 암호화, 인코딩, 압축 및 데이터 분석을 위한 웹 앱입니다.
* [Elastic Stack](https://www.elastic.co/videos) T-Pot이 수집한 모든 이벤트를 아름답게 시각화합니다.
* [Elasticvue](https://github.com/cars10/elasticvue/) Elasticsearch 클러스터를 탐색하고 상호 작용하기 위한 웹 프론트엔드입니다.
* [Fatt](https://github.com/0x4D31/fatt) pcap 파일 및 실시간 네트워크 트래픽에서 네트워크 메타데이터 및 지문을 추출하는 pyshark 기반 스크립트입니다.
* [T-Pot-Attack-Map](https://github.com/telekom-security/t-pot-attack-map) T-Pot을 위한 아름답게 애니메이션 처리된 공격 지도입니다.
* [P0f](https://lcamtuf.coredump.cx/p0f3/) 순수 수동 트래픽 지문 추출을 위한 도구입니다.
* [Spiderfoot](https://github.com/smicallef/spiderfoot) 오픈 소스 인텔리전스 자동화 도구입니다.
* [Suricata](https://suricata.io/) 네트워크 보안 모니터링 엔진입니다.
... 최상의 즉시 사용 가능한 경험과 사용하기 쉬운 멀티 허니팟 시스템을 제공합니다.
<br><br>
## 기술 아키텍처

소스 코드 및 구성 파일은 T-Pot GitHub 저장소에 완전히 저장됩니다. Docker 이미지는 T-Pot 환경에 맞게 빌드 및 사전 구성됩니다.
개별 Dockerfile 및 구성은 [docker 폴더](https://github.com/telekom-security/tpotce/tree/master/docker)에 있습니다.
<br><br>
## 서비스
T-Pot은 기본적으로 다섯 그룹으로 나뉘는 여러 서비스를 제공합니다:
1. OS에서 제공하는 시스템 서비스
* 안전한 원격 액세스를 위한 SSH.
2. Elastic Stack
* 이벤트 저장을 위한 Elasticsearch.
* 이벤트를 수집, 수신 및 Elasticsearch로 전송하는 Logstash.
* 아름답게 렌더링된 대시보드에 이벤트를 표시하는 Kibana.
3. 도구
* NGINX는 Kibana, CyberChef, Elasticvue, GeoIP AttackMap, Spiderfoot에 대한 안전한 원격 액세스(리버스 프록시)를 제공하며 T-Pot 센서가 이벤트 데이터를 T-Pot 하이브에 안전하게 전송할 수 있도록 합니다.
* CyberChef는 암호화, 인코딩, 압축 및 데이터 분석을 위한 웹 앱입니다.
* Elasticvue는 Elasticsearch 클러스터를 탐색하고 상호 작용하기 위한 웹 프론트엔드입니다.
* T-Pot Attack Map은 T-Pot을 위한 아름답게 애니메이션 처리된 공격 지도입니다.
* Spiderfoot은 오픈 소스 인텔리전스 자동화 도구입니다.
4. 허니팟
* 선택한 `docker-compose.yml`에 기반한 23개 사용 가능한 허니팟 중 선택.
5. 네트워크 보안 모니터링 (NSM)
* Fatt는 pcap 파일 및 실시간 네트워크 트래픽에서 네트워크 메타데이터 및 지문을 추출하는 pyshark 기반 스크립트입니다.
* P0f는 순수 수동 트래픽 지문 추출을 위한 도구입니다.
* Suricata는 네트워크 보안 모니터링 엔진입니다.
<br><br>
## 사용자 유형
T-Pot 설치 및 사용 중에는 두 가지 유형의 계정을 사용하게 됩니다. 다양한 계정 유형의 차이점을 반드시 숙지하세요. 인증 오류의 가장 흔한 원인이기 때문입니다.
| 서비스 | 계정 유형 | 사용자 이름 / 그룹 | 설명 |
|:-----------------|:-------------|:-----------------|:-------------------------------------------------------------------|
| SSH | OS | `<OS_USERNAME>` | OS 설치 중 선택한 사용자입니다. |
| Nginx | BasicAuth | `<WEB_USER>` | T-Pot 설치 중 선택한 `<web_user>`입니다. |
| CyberChef | BasicAuth | `<WEB_USER>` | T-Pot 설치 중 선택한 `<web_user>`입니다. |
| Elasticvue | BasicAuth | `<WEB_USER>` | T-Pot 설치 중 선택한 `<web_user>`입니다. |
| Geoip Attack Map | BasicAuth | `<WEB_USER>` | T-Pot 설치 중 선택한 `<web_user>`입니다. |
| Spiderfoot | BasicAuth | `<WEB_USER>` | T-Pot 설치 중 선택한 `<web_user>`입니다. |
| T-Pot | OS | `tpot` | `tpot` 이 사용자/그룹은 항상 T-Pot 서비스에 의해 예약됩니다. |
| T-Pot Logs | BasicAuth | `<LS_WEB_USER>` | `LS_WEB_USER`는 자동으로 관리됩니다. |
<br><br>
# 시스템 요구 사항
지원되는 [Linux 배포판 이미지](#choose-your-distro), 하이브/센서, [실제 하드웨어](#running-on-hardware), [가상 머신](#running-in-a-vm) 또는 기타 환경에 따라 T-Pot을 성공적으로 설치하기 위해 OS, RAM, 저장소 및 네트워크에 대해 충족해야 할 다양한 요구 사항이 있습니다 (언제든지 `~/tpotce/docker-compose.yml` 및 `~/tpotce/.env`를 필요에 맞게 조정하여 이러한 요구 사항을 극복할 수 있습니다).
<br><br>
| T-Pot 유형 | RAM | 저장소 | 설명 |
|:-----------|:-----|:----------|:-------------------------------------------------------------------------------------------------|
| 하이브 | 16GB | 256GB SSD | 경험상, 허니팟, 센서 및 데이터가 많을수록 더 많은 RAM과 저장소가 필요합니다. |
| 센서 | 8GB | 128GB SSD | 허니팟 로그는 30일 동안 유지되므로(~tpotce/data) 저장소는 공격량에 따라 달라집니다. |
T-Pot은 다음을 필요로 합니다...
- DHCP 또는 정적으로 할당된 IPv4 주소
- 작동하는, 프록시되지 않은 인터넷 연결
... 설치 및 운영을 위해.
<br><br>
*프록시 지원이나 기타 비표준 기능이 필요한 경우, [지원되는 Linux 배포판 이미지](#choose-your-distro)의 문서 및/또는 [Docker 문서](https://docs.docker.com/)를 확인하세요.*
<br><br>
## VM에서 실행
지원되는 [Linux 배포판 이미지](#choose-your-distro)는 모두 VM에서 실행되므로 T-Pot이 잘 실행됩니다. 다음이 테스트되었거나 작동이 보고되었습니다:
* [UTM (Intel & Apple Silicon)](https://mac.getutm.app/)
* [VirtualBox](https://www.virtualbox.org/)
* [VMWare Fusion](https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion) 및 [VMWare Workstation](https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion)
* KVM도 작동하는 것으로 보고되었습니다.
***일부 구성/설정 팁:***
- Intel 버전은 안정적으로 실행되지만, Apple Silicon(arm64) 지원에는 알려진 문제가 있으며 UTM에서 OS 초기 설치 시 `Display`를 `Console Only`로 전환한 후 다시 `Full Graphics`로 전환해야 할 수 있습니다.
- 구성 중 fatt, suricata 및 p0f가 제대로 작동하도록 네트워크 인터페이스에 대해 무차별 모드를 활성화해야 할 수 있습니다.
- T-Pot의 기본 NIC로 wifi 카드를 사용하려는 경우, 모든 네트워크 인터페이스 드라이버가 모든 무선 카드를 지원하지는 않는다는 점에 유의하세요. 예를 들어 VirtualBox에서는 NIC의 *"MT SERVER"* 모델을 선택해야 합니다.
<br><br>
## 하드웨어에서 실행
T-Pot은 [지원되는 Linux 배포판 이미지](#choose-your-distro)의 하드웨어 지원에 의해서만 제한됩니다. 전용 하드웨어에 투자하기 전에 HCL(하드웨어 호환성 목록)을 확인하고 지원되는 배포판을 T-Pot으로 테스트하는 것이 좋습니다.
<br><br>
## 클라우드에서 실행
T-Pot은 다음에서 테스트되었으며 실행되는 것으로 알려져 있습니다...
* Telekom OTC (설치 후 방법 사용)
... 다른 것들도 작동할 수 있지만, 테스트되지 않았습니다.
일부 사용자는 Azure 및 GCP와 같은 다른 클라우드 및 호스터에서 작동하는 설치를 보고했습니다. 하드웨어 요구 사항이 다를 수 있습니다. 확실하지 않은 경우 [이슈](https://github.com/telekom-security/tpotce/issues) 및 [토론](https://github.com/telekom-security/tpotce/discussions)을 조사하고 몇 가지 기능 테스트를 실행해야 합니다. T-Pot 24.04.0부터는 클라우드 기반 설치를 방해하는 것으로 알려진 설정을 제거했습니다.
<br><br>
## 필요한 포트
OS가 일반적으로 필요로 하는 포트(예: DHCP 임대, DNS 등) 외에도 T-Pot은 인바운드/아웃바운드 연결을 위해 다음 포트가 필요합니다. 시각적 표현은 [T-Pot 아키텍처](#technical-architecture)를 참조하세요. 또한 일부 포트가 중복되어 표시될 수 있지만, 이는 다른 에디션에서 사용되므로 괜찮습니다.| 포트 | 프로토콜 | 방향 | 설명 |
|:---|:---|:---|:---|
| 80, 443 | tcp | outgoing | T-Pot 관리: 설치, 업데이트, 로그 (예: OS, GitHub, DockerHub, Sicherheitstacho 등) |
| 11434 | tcp | outgoing | LLM 기반 허니팟: Ollama 설치에 접근 |
| 64294 | tcp | incoming | T-Pot 관리: 센서 데이터 전송 (NGINX 리버스 프록시를 통해 127.0.0.1:64305로) |
| 64295 | tcp | incoming | T-Pot 관리: SSH 접근 |
| 64297 | tcp | incoming | T-Pot 관리: NGINX 리버스 프록시 접근 |
| 5555 | tcp | incoming | 허니팟: ADBHoney |
| 22 | tcp | incoming | 허니팟: Beelzebub (LLM 필요) |
| 5000 | udp | incoming | 허니팟: CiscoASA |
| 8443 | tcp | incoming | 허니팟: CiscoASA |
| 443 | tcp | incoming | 허니팟: CitrixHoneypot |
| 80, 102, 502, 1025, 2404, 10001, 44818, 47808, 50100 | tcp | incoming | 허니팟: Conpot |
| 161, 623 | udp | incoming | 허니팟: Conpot |
| 22, 23 | tcp | incoming | 허니팟: Cowrie |
| 19, 53, 123, 1900 | udp | incoming | 허니팟: Ddospot |
| 11112 | tcp | incoming | 허니팟: Dicompot |
| 21, 42, 135, 443, 445, 1433, 1723, 1883, 3306, 8081 | tcp | incoming | 허니팟: Dionaea |
| 69 | udp | incoming | 허니팟: Dionaea |
| 9200 | tcp | incoming | 허니팟: Elasticpot |
| 22 | tcp | incoming | 허니팟: Endlessh |
| 80, 443, 8080, 8443 | tcp | incoming | 허니팟: Galah (LLM 필요) |
| 8080 | tcp | incoming | 허니팟: Go-pot |
| 80, 443 | tcp | incoming | 허니팟: H0neytr4p |
| 21, 22, 23, 25, 80, 110, 143, 443, 993, 995, 1080, 5432, 5900 | tcp | incoming | 허니팟: Heralding |
| 3000 | tcp | incoming | 허니팟: Honeyaml |
| 21, 22, 23, 25, 80, 110, 143, 389, 443, 445, 631, 1080, 1433, 1521, 3306, 3389, 5060, 5432, 5900, 6379, 6667, 8080, 9100, 9200, 11211 | tcp | incoming | 허니팟: qHoneypots |
| 53, 123, 161, 5060 | udp | incoming | 허니팟: qHoneypots |
| 631 | tcp | incoming | 허니팟: IPPHoney |
| 80, 443, 8080, 9200, 25565 | tcp | incoming | 허니팟: Log4Pot |
| 25 | tcp | incoming | 허니팟: Mailoney |
| 2575 | tcp | incoming | 허니팟: Medpot |
| 9100 | tcp | incoming | 허니팟: Miniprint |
| 6379 | tcp | incoming | 허니팟: Redishoneypot |
| 3389 | tcp | incoming | 허니팟: RDPHoneypot |
| 5060 | tcp/udp | incoming | 허니팟: SentryPeer |
| 80 | tcp | incoming | 허니팟: Snare (Tanner) |
| 8090 | tcp | incoming | 허니팟: Wordpot |
SaaS 서비스의 포트 및 가용성은 사용자의 지리적 위치에 따라 다를 수 있습니다.
일부 허니팟이 완전한 기능을 발휘하려면(예: Cowrie 또는 Log4Pot) 공격자의 악성코드를 다운로드하기 위해 나가는 연결도 필요합니다. 자세한 내용은 각 허니팟의 문서를 참조하고, [링크](#technical-concept)를 따라 해당 리포지토리를 방문하세요.
## LLM 기반 허니팟
LLM 기반 허니팟이 속임수/허니팟 분야의 게임 체인지의 **시작**을 의미한다고 생각합니다. 결과적으로 **T-Pot 24.04.1** 릴리스부터 **Beelzebub**과 **Galah**라는 두 가지 LLM 기반 허니팟이 도입되었습니다. 이 허니팟들은 [T-Pot 설정 파일](#t-pot-config-file)에서 구성해야 하는 **Ollama** 설치가 필요합니다. **ChatGPT** 지원을 위해 이 파일에서 설정을 조정할 수도 있지만, 이러한 조정을 수용하려면 docker compose 파일(`~/tpotce/compose/llm.yml`)에도 변경이 필요합니다.<br><br>
[허니팟 및 도구](#honeypots-and-tools) 섹션의 링크를 따라 **Beelzebub**과 **Galah**에 대해 자세히 알아보세요.
### Ollama
🚨 **CPU 기반 사용은 권장되지 않습니다**, 테스트 용도로도 권장되지 않습니다.<br><br>
**Ollama**를 설정하고 실행하려면 [Ollama GitHub 리포지토리](https://github.com/ollama/ollama)의 지침을 참조하세요. 입문 또는 테스트 목적으로는 **Nvidia RTX 4060 Ti 16GB** 또는 이에 상응하는 하드웨어(AMD의 ROCm도 Ollama에서 지원됨)를 사용하여 **openchat** 및 **Llama3**와 같은 모델로 결과를 얻을 수 있습니다. LLM 기반 시스템의 일반적인 규칙으로, 더 좋고 더 많은 하드웨어를 사용할수록, 특히 작업이 여러 GPU와 더 큰 모델에 오프로드될 때 결과가 더 빠르고 정확해집니다.
### ChatGPT
이 허니팟에 대한 ChatGPT 지원은 T-Pot과 관련하여 테스트되지 않은 상태로 유지됩니다.
<br><br>
# 시스템 배치
인터넷에 노출시키기 전에 T-Pot과 허니팟의 작동 방식을 숙지하는 것이 좋습니다. 빠른 시작을 위해 가상 머신에서 T-Pot 설치를 실행하세요.
<br><br>
작동 방식을 익힌 후에는 침입자가 있을 것으로 의심되는 네트워크(예: 인터넷)를 선택해야 합니다. 그렇지 않으면 T-Pot이 공격을 거의 감지하지 못합니다(증명하고 싶지 않다면)! 초보자의 경우, 모든 TCP 및 UDP 트래픽이 T-Pot의 네트워크 인터페이스로 전달되는 비필터링 영역에 T-Pot을 배치하는 것이 좋습니다. T-Pot의 관리 포트에 대한 프로빙을 피하려면 T-Pot을 방화벽 뒤에 두고, 1-64000 포트 범위의 모든 TCP/UDP 트래픽을 T-Pot으로 전달하면서, 64000 이상의 포트는 신뢰할 수 있는 IP에서만 접근을 허용하거나 사용 사례에 관련된 [포트](#required-ports)만 노출하세요. 알 수 없는 포트에서의 악성코드 트래픽을 포착하려면 전달하는 포트를 제한하지 마세요. glutton과 honeytrap은 다른 허니팟 데몬이 사용하지 않는 모든 TCP 포트를 동적으로 바인딩하므로, 설정이 노출된 위험을 더 잘 보여줍니다.
<br><br>
# 설치
[지원되는 Linux 배포판 이미지](#choose-your-distro) 중 하나를 [다운로드](#choose-your-distro)하고, [TL;DR](#tldr) 지침을 따르거나 T-Pot 리포지토리를 `git clone`한 후 설치 프로그램 `~/tpotce/install.sh`를 실행하세요. 현재 실행 중이고 지원되는 Linux 시스템 위에서 T-Pot을 실행하는 것도 가능하지만, 실행 중인 서비스와의 포트 충돌을 피하기 위해 깨끗한 설치를 권장합니다. T-Pot 설치 프로그램은 [여기](#required-ports)에 설명된 대로 인터넷에 직접 접근해야 합니다.
<br><br>
## 배포판 선택
**다음 단계를 따르세요:**
1. 아래 목록에서 지원되는 Linux 배포판을 다운로드하세요. (참고: Red Hat Enterprise Linux >= 8은 지원되지만, 구독 기반 특성상 아래 목록에서 생략되었습니다. 자세한 내용은 [Red Hat Enterprise Linux](#red-hat-enterprise-linux)를 참조하세요.)
2. 설치 중에 필수 패키지만 설치하는 **minimum**, **netinstall** 또는 **server** 버전을 선택하세요.
3. **절대** Gnome이나 KDE와 같은 그래픽 데스크탑 환경을 설치하지 마세요. T-Pot은 포트 충돌로 인해 작동하지 않습니다.
4. SSH를 설치하여 원격으로 머신에 연결할 수 있도록 하세요.
| 배포판 이름 | x64 | arm64 |
|:---|:---|:---|
| [Alma Linux OS 9.x Minimal ISO](https://almalinux.org) | [다운로드](https://repo.almalinux.org/almalinux/9/isos/x86_64/AlmaLinux-9.8-x86_64-minimal.iso) | [다운로드](https://repo.almalinux.org/almalinux/9/isos/aarch64/AlmaLinux-9.8-aarch64-minimal.iso) |
| [Debian 13 Network Install](https://www.debian.org/CD/netinst/index.en.html) | [다운로드](https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-13.5.0-amd64-netinst.iso) | [다운로드](https://cdimage.debian.org/debian-cd/current/arm64/iso-cd/debian-13.5.0-arm64-netinst.iso) |
| [Fedora Server 42 Network Install](https://fedoraproject.org/server/download) | [다운로드](https://download.fedoraproject.org/pub/fedora/linux/releases/42/Server/x86_64/iso/Fedora-Server-netinst-x86_64-42-1.1.iso) | [다운로드](https://download.fedoraproject.org/pub/fedora/linux/releases/42/Server/aarch64/iso/Fedora-Server-netinst-aarch64-42-1.1.iso) |
| [OpenSuse Tumbleweed Network Image](https://get.opensuse.org/tumbleweed/#download) | [다운로드](https://download.opensuse.org/tumbleweed/iso/openSUSE-Tumbleweed-NET-x86_64-Current.iso) | [다운로드](https://download.opensuse.org/ports/aarch64/tumbleweed/iso/openSUSE-Tumbleweed-NET-aarch64-Current.iso) |
| [Rocky Linux OS 9.x Minimal ISO](https://rockylinux.org/download) | [다운로드](https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.8-x86_64-minimal.iso) | [다운로드](https://download.rockylinux.org/pub/rocky/9/isos/aarch64/Rocky-9.8-aarch64-minimal.iso) |
| [Ubuntu 24.04.x Live Server](https://ubuntu.com/download/server) | [다운로드](https://releases.ubuntu.com/24.04/ubuntu-24.04.3-live-server-amd64.iso) | [다운로드](https://cdimage.ubuntu.com/releases/24.04/release/ubuntu-24.04.3-live-server-arm64.iso) |
<br>
## Raspberry Pi 4 (8GB) 지원
| 배포판 이름 | arm64 |
|:---|:---|
| [Raspberry Pi OS (**64Bit, Lite**)](https://www.raspberrypi.com) | [다운로드](https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2024-03-15/2024-03-15-raspios-bookworm-arm64-lite.img.xz) |
<br><br>
## T-Pot 다운로드 및 설치
1. GitHub 리포지토리를 클론: `$ git clone https://github.com/telekom-security/tpotce` 또는 [TL;DR](#tldr)을 따르고 이 섹션을 건너뛰세요.
2. **tpotce/** 폴더로 이동: `$ cd tpotce`
3. 루트가 아닌 사용자로 설치 프로그램 실행: `$ ./install.sh`:
* ⚠️ ***선택한 Linux 배포판에 따라 설치 프로그램은 다음을 수행합니다:***
* SSH 포트를 `tcp/64295`로 변경
* 허니팟과의 포트 충돌을 피하기 위해 DNS Stub Listener 비활성화
* SELinux를 모니터 모드로 설정
* public 존의 방화벽 대상을 ACCEPT로 설정
* Docker의 리포지토리 추가 및 Docker 설치
* 권장 패키지 설치
* 문제를 일으키는 것으로 알려진 패키지 제거
* 현재 사용자를 docker 그룹에 추가 (`sudo` 없이 docker 상호작용 허용)
* 형식화된 컨테이너 및 이미지 개요를 위한 `dps`, `dpsw` 및 `dim` 별칭 추가
* `la`, `ll` 및 `ls` 별칭 추가 (`exa`용, 개선된 `ls` 명령어)
* `mi` 별칭 추가 (`micro`용, `vi` 및/또는 `nano`의 훌륭한 대안)
* 호스트의 열린 포트 표시 (T-Pot [필수](https://github.com/telekom-security/tpotce#required-ports) 포트와 비교)
* T-Pot이 자동으로 시작 및 중지될 수 있도록 `tpot.service`를 `/etc/systemd/system`에 추가 및 활성화
4. 설치 프로그램 지침을 따르세요. 사용자(`sudo` 또는 `root`) 비밀번호를 최소 한 번 입력해야 합니다.
5. 설치 프로그램 메시지에서 오류 및 포트 충돌을 일으킬 수 있는 열린 포트를 확인하세요.
6. 재부팅: `$ sudo reboot`
<br><br>## macOS 및 Windows
macOS 또는 Windows에서 T-Pot 인스턴스를 실행할 수 있다는 것은 개발, 테스트 또는 단순한 재미를 위해 유용할 때가 있습니다. Docker Desktop이 다소 제한적이기 때문에 모든 허니팟 유형이나 T-Pot 기능이 지원되지는 않습니다. 또한 기본적으로 macOS와 Windows 방화벽이 원격 액세스를 차단하므로 테스트는 호스트로 제한된다는 점을 기억하세요. 프로덕션 환경에서는 [Linux](#choose-your-distro)에서 T-Pot을 실행하는 것이 좋습니다.<br>
시작하려면 다음 단계를 따르세요:
1. [macOS](https://docs.docker.com/desktop/setup/install/mac-install/) 또는 [Windows](https://docs.docker.com/desktop/setup/install/windows-install/)용 Docker Desktop을 설치합니다.
2. GitHub 저장소를 클론합니다: `git clone https://github.com/telekom-security/tpotce` (Windows에서는 코드가 `CRLF` 대신 `LF`로 체크아웃되었는지 확인하세요!)
3. 다음으로 이동합니다: `cd ~/tpotce`
4. 복사합니다: `cp compose/mac_win.yml ./docker-compose.yml`
5. `~/tpotce/genuser.sh` (macOS) 또는 `~/tpotce/genuserwin.ps1` (Windows)를 실행하여 `WEB_USER`를 생성합니다.
6. `.env` 파일을 수정하여 `TPOT_OSTYPE=linux`를 `mac` 또는 `win`으로 변경합니다: ```
# OSType (linux, mac, win)
# Most docker features are available on linux
TPOT_OSTYPE=mac
docker compose up 또는 백그라운드에서 실행하려면 docker compose up -d를 입력합니다.CTRL-C (포그라운드에서 실행 중인 경우) 및/또는 docker compose down -v로 T-Pot을 완전히 중지합니다.Red Hat Enterprise Linux (RHEL)는 다소 특별한 경우입니다:
grc는 Python 2에 의존하며, 이는 RHEL 7 이후 제거되었습니다. T-Pot의 RHEL 설치에서 제외됩니다.T-Pot Standard / Hive를 사용하면 모든 서비스, 도구, 허니팟 등이 단일 호스트에 설치되며, 이 호스트는 Hive 엔드포인트 역할도 합니다. 시스템 요구 사항을 충족하는지 확인하십시오. 사용 사례에 맞게 ~/tpotce/docker-compose.yml을 조정하거나 ~/tpotce/compose/customizer.py를 사용하여 자신만의 구성을 만들어 T-Pot 환경을 맞춤 설정할 수 있습니다.
설치가 완료되면 첫 시작으로 진행할 수 있습니다.
T-Pot의 분산 버전은 최소 두 대의 호스트가 필요합니다.
T-Pot 제거는 지원되는 Linux 배포판에서만 가능합니다.
T-Pot을 제거하려면 ~/tpotce/uninstall.sh를 실행하고 제거 프로그램 지침을 따르십시오. 최소 한 번은 비밀번호를 입력해야 합니다.
제거가 완료되면 머신을 재부팅하십시오 sudo reboot
T-Pot 설치 프로그램이 성공적으로 완료되면 시스템을 재부팅해야 합니다(sudo reboot). 재부팅 후 시스템 설치 중 설정한 사용자로 시스템에 로그인할 수 있습니다. 로그인은 사용자 유형에 따릅니다:
<OS_USERNAME>]SSH를 통해 명령줄에 액세스하려면 ssh -l <OS_USERNAME> -p 64295 <your.ip>를 사용하여 로그인할 수 있습니다:
<OS_USERNAME>]브라우저에서 T-Pot WebUI 및 도구에 액세스할 수도 있습니다: https://<your.ip>:64297
<WEB_USER>]로그인하여 dps를 통해 모든 서비스와 허니팟이 올바르게 시작되는지 확인하는 것 외에는 할 일이 많지 않습니다. dim을 사용하여 설치된 Docker 이미지와 CREATED 기간을 확인한 다음, Kibana 및/또는 Geoip Attack Map에 로그인하여 공격을 모니터링할 수 있습니다.
분산 배포는 계획이 필요합니다. T-Pot Init는 일반적으로 간단한 설정에 적합한 Hive 호스트의 IP에 대한 자체 서명 인증서만 생성하기 때문입니다. logstash는 연결 시 유효한 인증서를 확인하기 때문에, Hive가 여러 IP(예: RFC 1918 및 공용 NAT IP) 및 도메인 이름에서 접근 가능한 분산 설정의 경우 인증서의 일반 이름과 SAN(Subject Alternative Name)이 필요하므로 인증서를 검증할 수 없어 연결 오류가 발생합니다.
센서를 배포하기 전에 도메인 이름과 IP를 적절히 계획하여 인증서 문제를 방지하십시오. 자세한 내용은 이슈 #1543을 참조하십시오.
예제를 IP/도메인 설정에 맞게 조정하고 명령을 따라 Hive의 인증서를 변경하십시오:```
sudo systemctl stop tpot
sudo openssl req
-nodes
-x509
-sha512
-newkey rsa:8192
-keyout "$HOME/tpotce/data/nginx/cert/nginx.key"
-out "$HOME/tpotce/data/nginx/cert/nginx.crt"
-days 3650
-subj '/C=AU/ST=Some-State/O=Internet Widgits Pty Ltd'
-addext "subjectAltName = IP:192.168.1.200, IP:1.2.3.4, DNS:my.primary.domain, DNS:my.secondary.domain"
sudo chmod 774 $HOME/tpotce/data/nginx/cert/* sudo chown tpot:tpot $HOME/tpotce/data/nginx/cert/*
sudo systemctl start tpot
T-Pot 구성 파일(`.env`)에서는 `LS_SSL_VERIFICATION=none`으로 설정하여 **Sensor**에서 **Hive**로의 logstash 연결에 대한 SSL 검증을 비활성화할 수 있습니다. 보안상의 이유로 이는 실험실 또는 테스트 환경에서만 권장됩니다.<br><br>
**Hive**에 대해 CA(예: Let's Encrypt)가 서명한 유효한 인증서를 사용하기로 선택한 경우, logstash 및 따라서 **Sensor**는 **Hive**에 연결하여 로그를 전송하는 데 문제가 없어야 합니다.
### Sensor 배포
설치 프로그램의 지시에 따라 **Sensor**를 재부팅한 후에는 **Hive**에 로그인하여 `cd ~/tpotce` 폴더로 이동하여 분산 배포를 계속할 수 있습니다. 실제 배포를 계속하기 전에 [계획 및 인증서](#planning-and-certificates)를 이해했는지 확인하십시오.
아직 수행하지 않은 경우 **Sensor**에 안전하게 로그인하고 `Ansible`이 센서에서 플레이북을 실행할 수 있도록 SSH 키를 생성하십시오:
1. `ssh-keygen`을 실행하고 지침을 따르고 암호를 비워 둡니다: ```
Generating public/private rsa key pair.
Enter file in which to save the key (/home/<your_user>/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/<your_user>/.ssh/id_rsa
Your public key has been saved in /home/<your_user>/.ssh/id_rsa.pub
키를 Sensor에 배포하려면 다음을 실행합니다: ssh-copy-id -p 64295 <Sensor_SSH_USER>@<Sensor_IP>): ```
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/<your_user>/.ssh/id_rsa.pub"
The authenticity of host '[<Sensor_IP>]:64295 ([<Sensor_IP>]:64295)' can't be stablished.
ED25519 key fingerprint is SHA256:naIDxFiw/skPJadTcgmWZQtgt+CdfRbUCoZn5RmkOnQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
<your_user>@172.20.254.124's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '64295' '<your_user>@<Sensor_IP>'" and check to make sure that only the key(s) you wanted were added.
제안된 대로 지침에 따라 연결을 테스트합니다: ssh -p '64295' '<your_user>@<Sensor_IP>'
키가 성공적으로 배포되면 ./deploy.sh를 실행하고 지침을 따릅니다.
Sensor의 $HOME/tpotce/.env 설정에서 TPOT_HIVE_USER 환경 변수를 식별합니다 (base64로 인코딩된 문자열입니다). 그런 다음 Hive의 $HOME/tpotce/.env 설정에서 LS_WEB_USER 환경 변수에서 동일한 문자열을 찾습니다. 해당 문자열을 제거하고 T-Pot을 재시작합니다.
이제 Sensor 머신을 안전하게 삭제할 수 있습니다.
T-Pot은 허니팟에 관심이 있는 모든 사람이 쉽게 접근할 수 있도록 제공됩니다. 기본적으로 수집된 데이터는 커뮤니티 백엔드로 제출됩니다. 이 커뮤니티 백엔드는 데이터를 사용하여 Sicherheitstacho를 공급합니다.
다음 단계에 따라 ~/tpotce/docker-compose.yml에서 # Ewsposter service를 제거하여 데이터 제출을 거부할 수 있습니다:
systemctl stop tpot~/tpotce/docker-compose.yml 열기: micro ~/tpotce/docker-compose.ymlCTRL+Q):```ewsposter: container_name: ewsposter restart: always depends_on: tpotinit: condition: service_healthy networks: - ewsposter_local environment: - EWS_HPFEEDS_ENABLE=false - EWS_HPFEEDS_HOST=host - EWS_HPFEEDS_PORT=port - EWS_HPFEEDS_CHANNELS=channels - EWS_HPFEEDS_IDENT=user - EWS_HPFEEDS_SECRET=secret - EWS_HPFEEDS_TLSCERT=false - EWS_HPFEEDS_FORMAT=json image: ${TPOT_REPO}/ewsposter:${TPOT_VERSION} pull_policy: ${TPOT_PULL_POLICY} volumes: - ${TPOT_DATA_PATH}:/data - ${TPOT_DATA_PATH}/ews/conf/ews.ip:/opt/ewsposter/ews.ip
4. Start T-Pot services: `systemctl start tpot`
데이터 제출을 비활성화하지 않는 것이 권장됩니다. 이는 커뮤니티 접근 방식의 주요 목적이며, 모두가 알다시피 **공유는 사랑입니다** 😍
<br><br>
## Opt-In HPFEEDS 데이터 제출
옵트인을 통해 T-Pot 데이터를 타사 HPFEEDS 브로커와 공유할 수 있습니다.
1. [여기](#community-data-submission)의 지침에 따라 T-Pot 서비스를 중지하고 `~/tpotce/docker-compose.yml` 파일을 엽니다.
2. `ewsposter` 섹션까지 아래로 스크롤하여 HPFEEDS 설정을 필요에 맞게 조정합니다.
3. CA 인증서를 추가해야 하는 경우 `~/tpotce/data/ews/conf`에 추가하고 `EWS_HPFEEDS_TLSCERT=/data/ews/conf/<your_ca.crt>`를 설정합니다.
4. Start T-Pot services: `systemctl start tpot`.
<br><br>
# 원격 접속 및 도구
SSH(**`tcp/64295`** 포트)를 통해 호스트/T-Pot에 원격으로 접속할 수 있으며, T-Pot에는 연구 작업을 훨씬 더 쉽게 만들어 주는 여러 서비스와 도구가 함께 제공됩니다.
<br><br>
## SSH
[사용자 유형](#user-types)에 따라 SSH를 통해 명령줄에 로그인할 수 있습니다: `ssh -l <OS_USERNAME> -p 64295 <your.ip>`:
- 사용자: **[`<OS_USERNAME>`]**
- 비밀번호: **[password]**
<br><br>
## T-Pot 랜딩 페이지
[사용자 유형](#user-types)에 따라 브라우저에서 `https://<your.ip>:64297`을 통해 T-Pot 랜딩 페이지를 열 수 있습니다:
- 사용자: **[`<WEB_USER>`]**
- 비밀번호: **[password]**

<br><br>
## Kibana 대시보드
T-Pot 랜딩 페이지에서 `Kibana`를 클릭하면 Kibana로 이동합니다. T-Pot이 지원하는 허니팟에 맞춰진 다양한 대시보드와 시각화 중에서 선택할 수 있습니다.

<br><br>
## Attack Map
T-Pot 랜딩 페이지에서 `Attack Map`을 클릭하면 Attack Map으로 이동합니다. Attack Map은 웹 소켓을 사용하므로 `<WEB_USER>` 자격 증명을 다시 입력해야 할 수 있습니다.

<br><br>
## Cyberchef
T-Pot 랜딩 페이지에서 `Cyberchef`를 클릭하면 Cyberchef로 이동합니다.

<br><br>
## Elasticvue
T-Pot 랜딩 페이지에서 `Elasticvue`를 클릭하면 Elasticvue로 이동합니다.

<br><br>
## Spiderfoot
T-Pot 랜딩 페이지에서 `Spiderfoot`을 클릭하면 Spiderfoot으로 이동합니다.

<br><br>
# 설정
## T-Pot 설정 파일
T-Pot은 도커 서비스(허니팟 및 도구)뿐만 아니라 도커 컴포즈 환경을 위한 변수를 제공하는 설정 파일을 제공합니다. 설정 파일은 `~/tpoce/.env`에 숨겨져 있습니다. 기본 설정을 담고 있는 예제 파일(`env.example`)도 있습니다.<br>
첫 번째 시작 전에 `~/tpotce/genuser.sh`를 실행하거나 [여기](#add-users-to-nginx-t-pot-webui)에 설명된 대로 `WEB_USER`를 수동으로 설정하십시오.
## T-Pot 허니팟 및 서비스 사용자 지정
`~/tpotce/compose`에서 T-Pot Standard / Hive 설치를 조정하는 데 필요한 모든 것을 찾을 수 있습니다:```
customizer.py
llm.yml
mac_win.yml
mini.yml
mobile.yml
sensor.yml
standard.yml
tarpit.yml
tpot_services.yml
.yml 파일들은 docker compose 파일로, 각각은 서로 다른 허니팟 및 도구 세트를 나타내며, tpot_services.yml은 customizer.py가 맞춤형 docker compose 파일을 생성하기 위한 템플릿입니다.
컴포즈 파일을 활성화하려면 다음 단계를 따르세요:
systemctl stop tpot을 사용하여 T-Pot을 중지합니다.cp ~/tpotce/compose/<dockercompose.yml> ~/tpotce/docker-compose.yml.systemctl start tpot을 사용하여 T-Pot을 시작합니다.맞춤형 docker compose 파일을 생성하려면:
cd ~/tpotce/compose로 이동합니다.python3 customizer.py를 실행합니다.docker-compose.yml을 생성하는 과정을 안내합니다. 일부 허니팟 및 서비스가 동일한 포트를 사용하므로, 포트 충돌이 있는지 확인하고 충돌하는 서비스에 대해 알려줍니다. 그런 다음 docker-compose-custom.yml을 조정하거나 스크립트를 다시 실행하여 수동으로 해결할 수 있습니다.systemctl stop tpot을 사용하여 T-Pot을 중지합니다.cp docker-compose-custom.yml ~/tpotce 및 cd ~/tpotce.docker-compose -f docker-compose-custom.yml up을 실행하여 모든 것이 작동하는지 확인합니다. 오류가 발생하면 Docker Compose 사양을 참조하여 해결하십시오. 대부분 docker compose 파일을 편집하여 조정할 수 있는 포트 충돌일 가능성이 높습니다.CTRL-C를 눌러 컨테이너를 중지하고 docker-compose -f docker-compose-custom.yml down -v를 실행합니다.mv ~/tpotce/docker-compose-custom.yml ~/tpotce/docker-compose.yml.T-Pot은 낮은 유지 관리가 필요하도록 설계되었습니다. 거의 모든 것이 docker 이미지를 통해 제공되므로 기본적으로 실행만 하면 별다른 할 일이 없습니다. 보안 위험을 줄이기 위해 정기적으로 docker 이미지를 업그레이드할 것입니다. 그러나 이 섹션을 주의 깊게 읽어야 합니다.
업데이트가 실패할 경우, 이슈나 토론을 열면 앞으로 개선에 도움이 되지만, 제공되는 해결책은 항상 새로 설치하는 것입니다. 데이터 손실에 대한 지원은 제공할 수 없습니다!
T-Pot의 보안은 지원되는 Linux 배포판 이미지에 제공되는 업데이트에 달려 있습니다. OS 문서를 검토하고 OS가 정기적으로 업데이트를 설치하는지 확인하십시오. 기본적으로 (~/tpotce/.env) TPOT_PULL_POLICY=always는 T-Pot이 시작될 때마다 docker가 새 docker 이미지를 확인하고 컨테이너를 생성하기 전에 다운로드하도록 합니다.
T-Pot 릴리스는 GitHub를 통해 제공되며 ~/tpotce/update.sh를 사용하여 가져올 수 있습니다.
T-Pot 구성 파일에 중요한 변경을 가한 경우 먼저 백업을 생성하십시오!
업데이트는 예상치 못한 결과를 초래할 수 있습니다. 머신이나 작업에 가장 중요한 파일을 백업하십시오!
업데이트 스크립트는 다음을 수행합니다...
~/tpotce 폴더의 전체 백업을 생성합니다.~/tpotce의 모든 파일을 업데이트하여 T-Pot 마스터 브랜치와 동기화합니다.~/tpotce/data/ews/conf에서 사용자 정의 ews.cfg와 T-Pot 구성(~/tpotce/.env)을 복원합니다.기본적으로 T-Pot은 일부 정리 작업을 포함한 일일 재부팅을 추가합니다. sudo crontab -e로 이 줄을 조정할 수 있습니다.```
#Ansible: T-Pot Daily Reboot
42 2 * * * bash -c 'systemctl stop tpot.service && docker container prune -f; docker image prune -f; docker volume prune -f; /usr/sbin/shutdown -r +1 "T-Pot Daily Reboot"'
## 알려진 문제
다음 문제들이 알려져 있으며, 설명된 단계를 따라 해결하시면 됩니다.
<br><br>
### Docker 이미지 다운로드 실패
얼마 전 Docker는 다운로드 [속도 제한](https://docs.docker.com/docker-hub/download-rate-limit/#:~:text=Docker%20Hub%20limits%20the%20number,pulls%20per%206%20hour%20period.)을 도입했습니다. 단일 또는 공유 IP를 통해 Docker 이미지를 자주 다운로드하는 경우, 해당 IP 주소가 Docker 다운로드 속도 제한을 소진했을 수 있습니다. Docker 계정에 로그인하여 속도 제한을 연장하세요.```
sudo su -
docker login
T-Pot은 단일 NIC가 있는 시스템에서만 실행되도록 설계되었습니다. T-Pot은 기본 경로가 있는 인터페이스를 가져오려고 시도하지만, 이것이 항상 성공한다고 보장되지는 않습니다. 되도록 단일 NIC만 있는 시스템에서 T-Pot을 사용하십시오.
T-Pot 서비스는 각 재부팅 시 자동으로 시작 및 중지됩니다 (설치 중 sudo crontab -l에서 설정된 대로 매일 한 번 재부팅됩니다).
T-Pot 서비스를 수동으로 시작하려면 systemctl start tpot을 사용하여 시작하고 dpsw를 통해 컨테이너 시작을 관찰할 수 있습니다.
T-Pot 서비스는 각 재부팅 시 자동으로 시작 및 중지됩니다 (설치 중 sudo crontab -l에서 설정된 대로 매일 한 번 재부팅됩니다).
T-Pot 서비스를 수동으로 중지하려면 systemctl stop tpot을 사용하여 중지하고 dpsw를 통해 컨테이너 종료를 관찰할 수 있습니다.
허니팟, 도구 및 T-Pot 관련 서비스의 모든 영구 로그 파일은 ~/tpotce/data에 저장됩니다. 여기에는 Elastic Stack으로 전송되지 않는 수집된 아티팩트가 포함됩니다.
모든 로그 데이터는 T-Pot 데이터 폴더에 저장되며, T-Pot 구성 파일 ~/tpotce/.env의 TPOT_PERSISTENCE_CYCLES=<1-999>에 설정된 주기 수만큼 유지됩니다. 기본값은 30입니다.
Elasticsearch 인덱스는 tpot 인덱스 수명 주기 정책에 의해 처리되며, 이 정책은 Kibana에서 직접 조정할 수 있습니다 ("관리형 시스템 정책 포함" 확인).
기본적으로 tpot 인덱스 수명 주기 정책은 인덱스를 30일 동안 유지합니다. 이는 스토리지와 속도 사이의 좋은 균형을 제공합니다. 그러나 필요에 따라 정책을 조정할 수 있습니다.
T-Pot 데이터 폴더에 저장된 모든 로그 데이터 (물론 Elasticsearch 인덱스 제외)는 clean.sh를 실행하여 삭제할 수 있습니다.
때로는 복구가 불가능할 정도로 문제가 발생할 수 있으며, T-Pot을 공장 기본값으로 재설정하는 것이 그 어느 때보다 쉬워졌습니다 (cd ~/tpotce를 입력해야 합니다).
systemctl stop tpot을 사용하여 T-Pot을 중지합니다.~/tpotce/data 폴더를 안전한 장소로 이동/백업합니다 (선택 사항이며, 만일의 경우를 대비한 것입니다).sudo rm -rf ~/tpotce/data를 사용하여 ~/tpotce/data 폴더를 삭제합니다.5. 이제 `~/tpotce/install.sh`를 실행할 수 있습니다.
<br><br>
## 컨테이너 및 이미지 보기
`dps` 또는 `dpsw [interval]`을 실행하여 T-Pot 관련 모든 컨테이너를 표시할 수 있습니다. `interval (s)`은 주기적으로 `dps`를 다시 실행합니다. `dim`을 사용하여 `CREATED` 열을 포함한 로컬에서 사용 가능한 Docker 이미지를 표시합니다.
<br><br>
## 블랙홀(Blackhole)
블랙홀은 공개적으로 알려진 스캐너의 영구적인 방문 없이 T-Pot을 일종의 스텔스 모드로 실행하여 노출 가능성을 줄입니다. 물론 이것은 항상 고양이와 쥐 게임이지만, 블랙홀 기능은 Suricata를 통해 이벤트를 계속 캐치하면서 [알려진 대량 스캐너](https://raw.githubusercontent.com/stamparm/maltrail/master/trails/static/mass_scanner.txt)의 모든 요청을 null 라우팅합니다.
<br>
이 기능은 `~/tpotce/.env`에서 `TPOT_BLACKHOLE=DISABLED`로 설정한 다음 `systemctl stop tpot`을 실행하고 `systemctl start tpot` 또는 `sudo reboot`을 실행하여 활성화됩니다.
<br>
이 기능을 활성화하면 공격자의 가시성이 크게 줄어들고 결과적으로 활동이 줄어듭니다. 그러나 이미 언급했듯이 완전히 스텔스 상태가 된다는 보장도 없으며 일부 허니팟 서비스의 지문 감지를 방지하지도 않습니다.
<br><br>
## Nginx(T-Pot WebUI)에 사용자 추가
Nginx(T-Pot WebUI)를 사용하면 [사용자 유형](#user-types)에 따라 원하는 만큼 `<WEB_USER>` 계정을 추가할 수 있습니다.<br>
새 사용자를 **추가**하려면 `~/tpotce/genuser.sh`를 실행하세요.<br>
사용자를 **제거**하려면 `~/tpotce/.env`를 열고 `WEB_USER`를 찾은 다음 해당 base64 문자열을 제거하세요(디코딩: `echo <base64_string> | base64 -d` 또는 CyberChef를 열고 "From Base64" 레시피 로드).<br>
변경 사항을 적용하려면 `systemctl stop tpot` 및 `systemctl start tpot` 또는 `sudo reboot`을 사용하여 T-Pot을 다시 시작해야 합니다.
<br><br>
## Kibana 개체 가져오기 및 내보내기
일부 T-Pot 업데이트에서는 Kibana 개체를 업데이트해야 합니다. 새로운 허니팟을 지원하거나 기존 대시보드 또는 시각화를 개선하기 위해서입니다. 조정 내용을 잃지 않도록 먼저 ***내보내기***를 하십시오.
### 내보내기
1. Kibana로 이동
2. "Stack Management" 클릭
3. "Saved Objects" 클릭
4. "<no.>개 개체 내보내기" 클릭
5. "모두 내보내기" 클릭
그러면 모든 개체가 포함된 NDJSON 파일이 내보내집니다. 모든 참조가 포함되도록 항상 전체 내보내기를 실행하십시오.
### 가져오기
1. [NDJSON 파일 다운로드](https://raw.githubusercontent.com/telekom-security/tpotce/refs/heads/master/docker/tpotinit/dist/etc/objects/kibana_export.ndjson.zip)하고 압축을 푸십시오.
2. Kibana로 이동
3. "Stack Management" 클릭
4. "Saved Objects" 클릭
5. "가져오기"를 클릭하고 Kibana 개체를 개인적으로 변경하지 않은 경우 기본값을 그대로 두십시오(기존 개체 확인 및 충돌 자동 덮어쓰기).
6. NDJSON 파일 찾아보기
묻는 메시지가 나타나면: "이미 존재하는 개체가 있으면 자동으로 덮어쓰시겠습니까?"라고 묻는 경우 "예, 모두 덮어쓰기"라고 답하십시오.
<br><br>
# 문제 해결
일반적으로 T-Pot은 지원에 대한 어떠한 약속 없이 ***있는 그대로*** 제공됩니다. 이슈와 토론을 열 수 있지만, 커뮤니티가 도울 수 있도록 기본적인 필요한 정보를 포함할 준비를 하십시오.
<br><br>
## 로그
* 컨테이너가 올바르게 실행 중인지 확인: `dps`
* 로컬에서 사용 가능한 Docker 이미지와 사용 기간 확인: `dim`
* 시스템 리소스가 고갈되지 않았는지 확인: `htop`, `docker stats`
* 포트 충돌이 있는지 확인:```
systemctl stop tpot
grc netstat -tulpen
mi ~/tpotce/docker-compose.yml
docker-compose -f ~/tpotce/docker-compose.yml up
CTRL+C
docker-compose -f ~/tpotce/docker-compose.yml down -v
docker logs -f <container_name>tpotinit 로그 확인: cat ~/tpotce/data/tpotinit.log
Elastic Stack은 RAM을 많이 필요로 하며, 특히 logstash와 elasticsearch가 그렇습니다. Elastic Stack을 사용할 수 없거나, 로그를 수신하지 못하거나, 계속 충돌하는 경우 RAM 또는 저장소 문제일 가능성이 높습니다.
T-Pot이 서비스/컨테이너를 계속 재시작하는 동안 docker logs -f <container_name> (둘 중 하나: logstash 또는 elasticsearch)를 실행하고 RAM 관련 경고나 실패가 있는지 확인하세요.
저장소 오류는 htop을 통해 더 쉽게 식별할 수 있습니다.
T-Pot은 있는 그대로 제공되는 오픈 소스이며, 지원에 대한 어떠한 약속도 없습니다 (면책 조항 참조).
보안 연구자이시고 책임감 있게 문제를 보고하려면 당사의 CERT에 연락해 주십시오.
문제(오류)는 GitHub Issues에 보고해 주십시오. 단, 먼저 문제 해결을 수행하십시오. 오류 해결에 필요한 정보를 제공하지 않는 이슈는 닫히거나 토론으로 전환될 수 있습니다.
먼저 검색 기능을 사용하십시오. 유사한 문제가 이미 해결되었거나 논의되었을 수 있으며, 해결책은 검색만 하면 됩니다.
일반적인 질문, 아이디어, 시연 등은 GitHub Discussions에서 다룰 수 있습니다.
검색 기능을 사용하십시오. 유사한 토론이 이미 열려 있을 수 있으며, 답변은 검색만 하면 됩니다.
T-Pot이 구축된 소프트웨어는 다음 라이선스를 사용합니다.
GPLv2:
conpot,
galah,
dionaea,
honeytrap,
suricata
GPLv3:
adbhoney,
elasticpot,
ewsposter,
log4pot,
fatt,
heralding,
ipphoney,
miniprint,
redishoneypot,
rdphoneypot,
sentrypeer,
snare,
tanner
Apache 2 License:
cyberchef,
dicompot,
elasticsearch,
go-pot,
h0neytr4p,
logstash,
kibana,
MIT license:
,
,
,
,
,
,
,
,
Unlicense:
Other:
,
,
,
,
AGPL-3.0:
:
오픈 소스와 저희가 속해 있음을 자랑스럽게 생각하는 개발 커뮤니티 없이는 T-Pot이 가능하지 않았을 것입니다! 감사의 말씀을 다음 개인 및 조직을 포함하되 이에 국한되지 않고 전합니다.
지금까지 받은 가장 훌륭한 피드백 중 하나는 Conpot 개발자 중 한 분이 남겨주셨습니다:
"[...] T-Pot을 적극 추천합니다. 정확히 말하면 스위스 군용 칼은 아니지만... 오히려 스위스 군용 칼을 장비한 스위스 군인에 가깝습니다. 탱크 안에서 말이죠. 스위스 탱크요. [...]"
그리고 @robcowart (ElastiFlow 제작자)의 말:
"#TPot은 가장 잘 구성된 턴키 허니팟 솔루션 중 하나입니다. 악의적인 행위자의 행동과 조직에 대한 위협을 분석하고 이해하려는 모든 사람에게 필수입니다."
systemctl start tpot을 사용하여 T-Pot을 시작합니다.