Commit Graph

294 Commits

Author SHA1 Message Date
kappa
2763e33675 history: SafeLine RWX PVC ext4 호환성 인시던트 복구 기록 (2026-05-17) 2026-05-17 16:33:53 +09:00
kaffa
bc01809643 incus-kr2: K3s/reboot 동반 작업 전 iommu=pt 사전 체크 항목 추가 2026-05-14 16:57:09 +09:00
kaffa
f0de7a3c37 infra-hosts: frontmatter updated 누적 보존 (iommu=pt 기록 복원) 2026-05-14 12:28:12 +09:00
kaffa
821c5a6278 infra-hosts: K3s 4노드 v1.34.5 → v1.34.7+k3s1 patch 업그레이드 (2026-05-14) 2026-05-14 12:27:10 +09:00
heimdall
81e270a90f longhorn: snapshot-purge 임시 cron 회수 (1.11.2 fix 적용 후 의미 소멸) 2026-05-09 20:37:13 +09:00
heimdall
02a9b9dfd8 longhorn: 1.11.1 → 1.11.2 (snapshot warning #12856 fix) 2026-05-07 08:10:59 +09:00
kaffa
0a45e0536c AMD-Vi (IOMMU) Completion-Wait timeout 메커니즘 정본 신설
incus-kr2 freeze 사건 분석으로 확정된 IOMMU 부분 hang 메커니즘과
운영 규칙(`iommu=pt` 선제 적용)을 별도 reference 문서로 분리.
호스트 사연(history)과 메커니즘(reference)을 분리해 다른 AMD Ryzen
호스트 도입 시 재사용 가능한 정본으로 정리.

- infra/compute/amd-vi-iommu.md 신규 (메커니즘 + 차단 + 운영 규칙)
- compute _index.md, hosts/incus-kr2.md, history 문서에 링크
2026-05-05 11:47:31 +09:00
kaffa
35f1e16f09 incus-kr2 freeze 원인 = AMD-Vi (IOMMU) Completion-Wait timeout
호스트 약 2주 간격 freeze 재발 패턴 분석 결과 AMD Ryzen 6900HX의
IOMMU Completion-Wait queue stall이 근본 원인. GRUB cmdline에
`iommu=pt` 추가하여 IOMMU passthrough 모드로 차단.

- infra/compute/hosts/incus-kr2.md 신규 (호스트 정본)
- history/2026-05-04-amd-iommu-freeze.md 신규 (사건 기록)
- _index.md / infra-hosts.md 갱신
2026-05-05 07:18:28 +09:00
kaffa
e068f18955 dev: Karpathy LLM 코딩 4원칙 참고 문서 추가 2026-05-04 09:22:49 +09:00
heimdall
46419eb8a1 longhorn: snapshot-purge cron 워크어라운드 (v1.11.1 stuck snapshot) 2026-05-02 15:22:51 +09:00
kaffa
1b1c968826 infra/network/beryl-ax: zram swap (zstd) 섹션 추가
휴대용 라우터의 빠듯한 RAM(491MB, swap 없음) 대비 CPU가 95% idle인
환경적 특성에 맞춰 zram 압축 swap을 도입. lzo 기본을 zstd로
전환해 압축률 ~1.5배 향상. 설치/검증/UCI 영구화 절차 정리.
2026-05-02 08:06:22 +09:00
kaffa
ebac715db5 infra/network: Beryl AX (GL-MT3000) 휴대용 라우터 문서 추가
GL.iNet 4.8.1 기본 설정에서 fw3 tailscale0 zone에 masq 옵션이
누락되어 LAN→tailnet forward 시 SNAT가 안 되는 문제와, dnsmasq
ts.net split-forward 미설정으로 MagicDNS 동작 안 하는 문제를
정리. 영구 UCI 설정과 Mac 측 /etc/resolver/ts.net + search domain
보정까지 포함.
2026-05-01 19:37:20 +09:00
heimdall
3afb3c884d outline: history 갱신 — pgpool DML 라우팅도 동일 버그, haproxy-pg override 영구 유지 2026-04-29 15:44:44 +09:00
heimdall
23a91899e5 outline: 0.82.0 -> 1.7.0 메이저 업그레이드 (OIDC SameSite 쿠키 수정) 2026-04-29 15:30:25 +09:00
kaffa
b9300e6798 domain-boundaries: ironclad 자체 cycle 추가
ironclad 트래픽 흐름을 명시:
- CF + BunnyCDN 병행 entry (zone proxied 패턴별 분기)
- OpenWrt 라우터 (192.168.9.1) → MetalLB → K3s APISIX + SafeLine
- 1차 limit-req + 2차 chaitin-waf in-line gRPC
- 로그: VL → CrowdSec acquisition → 자작 4종 + hub 시나리오
- enforce layer: CF/BunnyCDN bouncer 모두 폐기 후 재구축 미정
  · CF bouncer: netbis-cf-firewall과 동일 패턴으로 kappa account용 추가 운영 후보
  · BunnyCDN bouncer: BlockedIps API 또는 Shield Access List(Advanced) — Ticket 388529 답변 후 결정

자산 매핑 표를 netbis/ironclad/bridge로 분리해 명시
추적 시 주의 항목 보강
2026-04-27 07:44:24 +09:00
kaffa
e68977a9d3 infra: 도메인 경계 정본 신규 (netbis vs ironclad cross-domain)
- infra/domain-boundaries.md 신규 — 두 영역 자산/계정/책임 분리 + cyclic 데이터 흐름 + 자산 매핑 + 추적 시 주의사항
- infra/_index.md에 도메인 경계 절 추가
- 기존 정본들(services/netbis, infra/security/crowdsec-safeline, services/bunnycdn-security 등)이 흩어져 갖던 cross-domain 정보의 단일 진입점

핵심 사실:
- netbis CF account != kappa CF account (별개)
- NPM 6대 origin은 netbis 자산, vl/CrowdSec/netbis-cf-firewall은 ironclad 인프라
- zlambda는 양 영역 다리 (Tailscale + Linode public IP 보유)
- netbis-cf-firewall은 ironclad 컨테이너 동거하지만 netbis CF API token으로 push
2026-04-27 07:38:47 +09:00
kaffa
d25dc3e52f obsidian 정합성 정정 — bouncer 단일화 잔존 stale 정리
- infra/compute/infra-hosts.md: jp1 default 20→19, cs-cf-worker-bouncer 컨테이너 라인에서 제거
- services/bunnycdn-security.md: Edge Script 64811 / bloom filter / 국가차단 / Turnstile inouter-bunny 폐기 반영. 현재 layer (Bunny Shield + Rate Limit + 대역폭 한도) 중심 재작성
- infra/network/apisix.md: Edge Script 64811 attach 라인 폐기 표시
- infra/security/cloudflare.md: Workers 인벤토리 + Worker 라우트 + CF proxy 패턴 + cfb-manager 절 모두 폐기 반영
- infra/security/crowdsec-safeline.md: cs-cf-worker-bouncer 운영 중 문장 폐기 표시
- ops-agents/overview.md: Syn 영역 정의에서 폐기 자산 명시
- history/_index.md: 누락된 2026-04-25-netbis-npm-vector-msg-rewrite, 2026-04-26-bouncer-consolidation 등록 + frontmatter updated
2026-04-26 10:33:48 +09:00
kaffa
560dde3f88 cloudflare: Turnstile 위젯 6개 + Edge Script 64811 정리 추기
- Turnstile 4개 (cs-cf-worker-bouncer-widget): 삭제
- Turnstile inouter (legacy orphan): 삭제
- Turnstile inouter-bunny-middleware: 삭제 (BunnyCDN 미들웨어 64811과 함께)
- Edge Script 64811: DELETE /compute/script/64811 HTTP 204
  - 4개 풀존 (iron-jp/iron-kr/iron-kr-waf/iron-git) MiddlewareScriptId null 자동 정리 확인
- 보류: Turnstile crowdsec-captcha (8 도메인 사용처 추적 미완)
- bouncer 단일화 history에 Syn 회신 + Turnstile/Edge Script 추가 정리 결과 추기
2026-04-26 10:27:02 +09:00
heimdall
53172c06e8 bouncer 단일화: netbis-cf-firewall만 유지, 나머지 3종(cs-cf-worker/apisix-waf/bunny-cdn) 폐기 2026-04-26 09:55:55 +09:00
heimdall
f733dd574a netbis: NPM Vector _msg 재합성 (proxy_v2 → nginx combined) — child-nginx-logs unparsed 84% 해결 2026-04-25 15:17:01 +09:00
kaffa
46cb3236d3 deprecate anomaly-detect (오탐 다수로 인스턴스까지 제거)
원인: Grok-4-fast agentic 분석기가 더미 IP(1.1.1.1, 1.2.3.4 시퀀스),
Cloudflare 엣지 IP(172.70.x), 자체 Linode IDC 대역(45.79.x)을
path-enumeration으로 오탐 ban. 같은 기간 hub 시나리오는 진짜 스캐너
1건(India SoloRDP)을 정확히 잡음.

작업:
- infra/platform/anomaly-detect.md → deprecated stub
- history/2026-04-25-anomaly-detect-removal.md 신규 (폐기 사유, 재가동 조건 정리)
- crowdsec-safeline.md acquisition 다이어그램에서 anomaly-detect 분기 제거
- infra/compute/infra-hosts.md hp2 default 5→4 갱신
- infra/platform/_index.md, history/_index.md 인덱스 갱신
- infra/security/vault.md apps 목록에서 항목 제거 (apps/anomaly-detect 경로는 비어있음, 유지)

보존:
- Vault secret/ai/openrouter (다른 서비스 공용 가능성)
- Gitea kaffa/anomaly-detect repo (재구축 reference)
2026-04-25 15:00:13 +09:00
kaffa
ffdabc994b crowdsec: profile current state, distributed DDoS scenario notes, bouncer action mapping
- profile.yaml is ban-only — captcha/throttle decision은 emit 안 됨
- Hub 분산 DDoS 시나리오 (http-ddos-by-ASN/cn) 도입 시 profile 분기 필수
- cs-cf-worker-bouncer: default_action captcha (Turnstile)
- netbis-cf-firewall: default_action managed_challenge (6 zone)
- 두 bouncer 모두 LAPI decision type 무관하게 캡챠 페이지로 응답
2026-04-25 12:59:49 +09:00
kaffa
e5c6b4deab netbis CF firewall bouncer 재구축 (origin filter) + VL acquisition 통합 + sigmatch v2.4
- crowdsec-safeline.md: VL → CrowdSec acquisition 3개(apisix/traefik/npm) → 1개 통합
  (victorialogs-nginx.yaml, query OR 결합). Netbis NPM CrowdSec 연동 활성.
  netbis-cf-firewall 재구축 섹션 추가.
- services/netbis.md: bouncer 폐기 → 재구축 정정. firewall_bouncer_token 정보 갱신.
  Worker bouncer는 트래픽 비례 비용으로 재구축 안 함 명시.
- history/2026-04-25-netbis-cf-firewall-rebuild.md: 오늘 작업 종합 (sigmatch v2.4
  MP 제거, VL 통합, CrowdSec 연동, CF Firewall bouncer 재구축, origin filter로
  10k 한도 회피).

origin filter [crowdsec, cscli] 적용으로 2026-04-23 폐기 사유였던 CF IP List
10k 한도 회피. Worker bouncer는 origin filter로 회피 불가 (트래픽 비례 비용)
이라 재구축 안 함.
2026-04-25 12:43:47 +09:00
kaffa
ae6237de21 netbis-sigmatch v2.4: A4 Matrix Profile 트리거 제거
18h DRY 가동 결과 99 distinct IP 차단 누적. attack_contributor 2,668건 중
97.5%가 MP only 시그널 발동. MP threshold p99 (1% 오탐) × 매 5분 사이클 평가
= 누적 폭주. attack_contributor의 단순 volume top이 webhook + heavy normal
user 항상 잡음.

LIVE였으면 베팅 콜백 4~5개 차단 + KR 활발 유저 + IPv6 모바일 240/4 가짜 IP
99개 차단 = 서비스 사고.

matrix_profile.py 모듈은 보존 (관찰/연구용). loop.py에서 호출만 제거.

폐기 사유: MP의 self-similar 시계열 가정이 daily seasonality 있는 트래픽과
안 맞음 + 단일 시그널이 contributor 단계로 무차별 차단 증폭
2026-04-25 10:17:24 +09:00
kaffa
e0787b38f3 netbis-sigmatch v2.3 Phase 11.5: CF rule 한도 초과 방지 (max_rules=2000 기본) 2026-04-24 15:04:11 +09:00
kaffa
d32121bfda netbis-sigmatch v2.3: CF Access Rules LIVE 연동 (Phase 11) 2026-04-24 14:58:28 +09:00
kaffa
beecbb3be4 netbis-sigmatch v2.2: Matrix Profile discord (stumpy) trigger 추가 2026-04-24 13:17:03 +09:00
kaffa
baa81a1955 netbis-sigmatch v2.1: CUSUM Page-Hinkley + global src IP entropy drop trigger 추가 2026-04-24 12:45:03 +09:00
kappa
2e9244377e sigmatch v2 재설계: 집계 기반 공격 모드 + 개별 극단 시그니처 + 롤링 baseline 자동 갱신 2026-04-24 12:21:46 +09:00
kaffa
027e3c2a45 sigmatch: Phase 5 완료 — state DB + 2트랙 탐지 (클러스터+단발) + 오탐방지 설계 명시 2026-04-24 10:13:05 +09:00
kaffa
61275e6e81 netbis: sigmatch 프로젝트 정본 추가 (VL 기반 자동 시그니처 + CF 차단, 개발 단계) 2026-04-24 08:55:26 +09:00
kaffa
102da9c2fe cloudflare: Pseudo IPv4 (Class E 240/4) 정리 — Netbis 관찰 기반
- infra/security/cloudflare.md: Pseudo IPv4 섹션 신규 (동작 원리·모드·함의·오해 주의)
- services/netbis.md: client_ip 의미에서 부정확한 '254.x 범위' → '240.0.0.0/4' 정정, CF docs 링크
- history: 2026-04-24 CF Pseudo IPv4 정체 규명 (CGNAT 오진 교훈 포함)
2026-04-24 08:11:44 +09:00
heimdall
2a8cf22e43 netbis: NPM client_ip 실 IP 추출 정비 (nginx real_ip_header + Vector VRL) 2026-04-23 16:06:37 +09:00
heimdall
461ee81839 netbis: NPM 6대 Vector→zlambda→VL 로그 수집 파이프라인 구축 2026-04-23 15:23:37 +09:00
heimdall
bf33c043f9 netbis: CF 바운서 전량 제거 (netbis-cf + netbis-cf-firewall) 2026-04-23 13:52:59 +09:00
heimdall
29c17065b2 netbis: crowdsec-cloudflare-bouncer (firewall rule) 추가 — worker bouncer와 병행 2026-04-23 13:27:23 +09:00
heimdall
738a60b093 longhorn: 1.8.2 -> 1.11.1 업그레이드 (2026-04-23) 2026-04-23 09:06:21 +09:00
kaffa
3dfceb81b7 ironclad production cutover (2026-04-21): apex → Worker 전환
products/ironclad-website.md: 배포 표에 라우팅 방식 컬럼 추가.
production만 zone route 방식(custom_domain 대신 zone_name + /*)을 써서
기존 APISIX A record를 건드리지 않고 Cloudflare 엣지에서 Worker가
매칭 요청을 가로채는 구조. 전제 조건(crowdsec bouncer wildcard가
apex를 가로채지 않도록 *.ironclad.it.com/* 수정) 명시.

history/2026-04-21: 3차에 걸친 cutover 경로(DNS 충돌 → route 전환 →
crowdsec wildcard dot 누락 수정) + 현재 prod 상태 + 후속 정리 항목.
2026-04-21 17:13:33 +09:00
kaffa
71aae4e374 products/ironclad-website: Next.js 16 + Claude Design 전환 반영
기존 Astro+Stitch 계획을 실제 구현(Next.js 16 App Router, opennextjs-cloudflare,
독자 Worker 3환경) 기준으로 갱신. 보안서비스 페이지 섹션별 콘텐츠 규칙 정리.
anvil-hosting(hosting.inouter.com)은 폐기된 실험으로 명시.

history/2026-04-21: Claude Design 도입 + /ko/security 본체 교체 경위 기록.
2026-04-21 15:48:53 +09:00
kaffa
08313cd4d4 infra/platform/ollama: add GPU and VRAM details
GTX 1080 Ti(11GB VRAM, CUDA 12.4) GPU 가속 확인. gemma4:e4b 로드 시
10GB 점유(89%), 동시 로드 한계·GPU 공유 제약·36 tok/s 실측치 추가.
infra-hosts.md §GPU 링크.
2026-04-21 12:29:11 +09:00
kaffa
6a54e8bbc3 add infra/platform/ollama.md
kr1 호스트의 Ollama 런타임 정본 기록. Tailscale 11434 엔드포인트,
qwen3:4b / gemma4:e4b 모델, 2026-04-21 tool-calling 검증 내역 포함.
2026-04-21 11:48:37 +09:00
heimdall
b0cef67afd history: 2026-04-21 outline APISIX route + SafeLine WAF
outline.inouter.com 을 Traefik 에서 APISIX 경유로 전환하고
chaitin-waf plugin 부착. CRD (ApisixTls + ApisixRoute,
ingressClassName=apisix) 로 관리. 정상 pass, SQLi 403 reject 검증.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 10:13:06 +09:00
kaffa
0fbce86cfc outline: route via APISIX (port 9443, ApisixRoute CRD), not Traefik
Switched Bunny iron-kr-nowaf origin from :443 (Traefik) to :9443 (APISIX,
no SafeLine plugin) since APISIX plugins are per-route. Used existing
:9443 path (juiceshop already there) instead of opening a new OpenWrt
port. Outline route managed via ApisixTls + ApisixRoute CRDs because
admin-API direct PUTs get swept by apisix-ingress-controller as orphans.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 10:08:16 +09:00
kaffa
a20c68e3a1 outline: split to iron-kr-nowaf pull zone, restore iron-kr WAF rules
Created new Bunny pull zone iron-kr-nowaf (ID 5720695) without Shield to
host outline.inouter.com exclusively. Uploaded *.inouter.com wildcard cert
from cert-manager since Bunny LE auto-provision kept returning invalid.
Restored 7 CRS rules (942100,932230/235/260/370/380,933160) on iron-kr
Shield so vault/n8n/telegram-webhook/jarvis regain protection.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 09:32:11 +09:00
kaffa
782fff8fe9 k3s: document kr2 kubelet memory reserve as intentional OOM mitigation
Ties the existing /etc/rancher/k3s/config.yaml kubelet-arg (system-reserved=8Gi,
eviction-hard<2Gi) to the 2026-04-19 OOM freeze incident so it won't be
flagged as mystery asymmetry in future audits. Closes item 6 of 2026-04-20
K3s improvements.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 07:44:09 +09:00
heimdall
f8c4274124 history: 2026-04-20 K3s 개선 6건 실행 리포트
Default SC 통일, safeline 볼륨 replica 3 통일, vector healthcheck
disable, hp1 rebalance 자연 진행 (3→10 replica), iSCSI 재시작은
helm-upgrade 주기 영향 추정·관찰 유지, kr2 system-reserved 10Gi
비대칭은 기록 완료·통일 실행은 호스트 접근 후 후속.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 20:54:18 +09:00
heimdall
0d1bf40cfe history: 2026-04-20 K3s 상세 점검 리포트
Outline 업로드가 BunnyCDN Shield 403 으로 상세 본문 차단되어
요청자(kappa) 열람 경로를 Obsidian history 로 대체. Outline
parent 요약 문서 ID: c1ec3f2c-0fa8-49f8-9d0b-3d619a0e4715.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 19:11:06 +09:00
kaffa
5d0632cb68 backup: install Velero v1.18 (chart 12.0.0) + daily-full schedule to R2 velero-backup 2026-04-20 10:12:21 +09:00
kaffa
a2884a60d8 backup: add k8s VolumeSnapshot API (snapshot-controller v8.5.0) as Velero prereq; fix democratic-csi restart loop 2026-04-20 09:06:48 +09:00
kaffa
7d58e159af metallb: raise controller mem limit 64Mi→256Mi (OOM fix) 2026-04-20 08:20:39 +09:00