간단 요점 유니온 A | B: A 또는 B 중 하나. 교차 A & B: A와 B를 모두 만족(속성 합집합). 예제 1) 간단 리터럴 유니온 type Status = 'idle' | 'loading' | 'success' | 'error'; function setStatus(s: Status) { if (s === 'loading') { // ... } } 예제 2) 판별 유니온(객체) type Product =... Continue Reading →
Grafana + Alloy loki
Grafana/Loki + Alloy 가이드 Grafana Loki와 Alloy를 사용해 로그를 관리하는 방법을 소개한다. Grafana Grafana란 Grafana는 오픈소스 기반의 데이터 시각화 및 모니터링 플랫폼이다. 다양한 데이터 소스로부터 메트릭, 로그, 트레이스 데이터를 수집하여 아름답고 직관적인 대시보드를 통해 시각화할 수 있다. 실시간 모니터링, 알림 설정, 데이터 분석 등의 기능을 제공하며, DevOps, SRE, 시스템 관리자들에게 필수적인 도구로 자리잡고 있다. 주요... Continue Reading →
Grafana 모니터링 생태계 가이드
Grafana Grafana란 Grafana는 오픈소스 기반의 데이터 시각화 및 모니터링 플랫폼이다. 다양한 데이터 소스로부터 메트릭, 로그, 트레이스 데이터를 수집하여 아름답고 직관적인 대시보드를 통해 시각화할 수 있다. 실시간 모니터링, 알림 설정, 데이터 분석 등의 기능을 제공하며, DevOps, SRE, 시스템 관리자들에게 필수적인 도구로 자리잡고 있다. 주요 기능: 다양한 데이터 소스 지원 (Prometheus, InfluxDB, Elasticsearch, MySQL, PostgreSQL 등) 풍부한... Continue Reading →
Windows + Docker Engine
윈도우즈 운영체제 환경에서 Docker를 사용할 수 있는 환경 구축 방법을 소개한다. Docker Desktop Docker Desktop이라는 어플리케이션을 설치하면 복잡한 단계가 필요 없다. Docker 홈페이지 Windows WSL Ubuntu 및 Docker Engine 설치 Docker Desktop이 있음에도 불구하고 개별적으로 Docker Engine을 설치해야 하는 이유는 라이센스다. Docker Engine과 Docker Desktop은 라이센스가 다르다. Docker Engine은 Apache License, Version 2.0로 상업용으로 사용하는데... Continue Reading →
Double CSRF Protection
토큰 + 쿠키 사용하는 방법 토큰만 사용할 경우 특정 웹페이지 접근 토큰 발행 요청 이 경우 토큰이 유효한지 서버에서 정보를 갖고 있어야 함 쿠키만 사용할 경우 토큰하고 차이 크게 없음 저장하는 위치가 쿠키일 뿐 토큰은 페이지 떠나면 사라지지만 쿠키는 안 사라짐 CORS 활성 상태면 뚫림 두 개를 사용한 방법 서버에서 토큰이 유효한지 정보 갖고 있을... Continue Reading →
JWT와 Refresh Token 운영 방법 상세 정리
1. JWT 인증 구조의 기본 개념 JWT(Json Web Token)는 서버와 클라이언트 간 인증 정보를 안전하게 주고받기 위한 토큰 기반 인증 방식입니다. 주로 Access Token과 Refresh Token 두 가지 토큰을 조합해 사용합니다. 2. Access Token과 Refresh Token의 차이와 역할 Access Token 용도: API 요청 시 인증 및 권한 확인에 사용 만료 시간: 짧게 설정(예: 15분~1시간) 저장... Continue Reading →
모든 설정 정상인데 fail2ban 동작이 제대로 되지 않는 경우
fail2ban backend 및 systemd journal 연동 정리 1. fail2ban backend 동작 방식 backend=systemd: systemd의 journal에서 로그를 읽음 backend=auto: 환경에 따라 자동으로 backend 선택 (예: pyinotify, gamin, polling, systemd 등) 2. 실제 적용된 backend 확인 방법 명령어 예시 fail2ban-server -d | grep backend # 또는 (Windows에서는) fail2ban-server -d | findstr backend 각 jail별로 어떤 backend가 적용됐는지... Continue Reading →
Next.js + NestJS/SpringBoot JWT 로그인 시스템 설계 및 보안
Next.js + NestJS/SpringBoot JWT 로그인 시스템 설계 및 보안 1. 시스템 구조 프론트엔드: Next.js (NextAuth, Passport 등 사용) 백엔드: NestJS 또는 SpringBoot 인증 방식: Google OAuth 등 소셜 로그인 → JWT 발급 → 쿠키/헤더로 백엔드에 전달 [Next.js + NextAuth/Passport] | |--(로그인)--> [JWT 발급, 쿠키 저장] | |--(API 요청, JWT 포함)--> | [Backend (NestJS/SpringBoot)] | |--(JWT... Continue Reading →
fail2ban으로 80포트 DoS 공격 완화 및 SSH 무차별 접속 시도 차단하기
웹 서버와 SSH는 외부 공격에 자주 노출됩니다. 특히 80포트(HTTP) DoS 공격과 SSH 무차별 로그인 시도는 서버 보안의 큰 위협입니다. 이 포스팅에서는 fail2ban을 이용해 두 가지 공격을 효과적으로 차단하는 방법을 소개합니다. 1. fail2ban 설치 sudo apt update sudo apt install fail2ban -y 2. SSH 무차별 접속 시도 차단 설정 fail2ban은 기본적으로 SSH 보호(jail)가 활성화되어 있습니다. 설정을... Continue Reading →
과도한 트래픽으로 인한 요금 발생 방지 및 Nginx 트래픽 한도 초과 차단 방법
1. Nginx에서 과도한 트래픽 방지 기본 설정 (1) 요청 속도 제한 http { limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; server { location / { limit_req zone=one burst=20 nodelay; } } } (2) 동시 접속자 수 제한 http { limit_conn_zone $binary_remote_addr zone=addr:10m; server { location / { limit_conn addr 10; } } } (3) 업로드/다운로드 크기 제한 server... Continue Reading →
