i3wm 타일링 윈도우 매니저로 생산성 극대화
i3wm과의 만남: 생산성을 위한 선택 i3 윈도우 매니저(i3wm)는 효율성과 생산성에 초점을 맞춘 타일링 윈도우 매니저로, 2009년 독일의 개발자 Michael Stapelberg가 기존 wmii 윈도우 매니저의 한계를 극복하고자 처음 개발했으며 “improved tiling wm"의 약자로 i3라는 이름이 붙었다. C 언어로 작성된 i3는 약 10,000줄의 간결한 코드로 구성되어 가벼우면서도 강력한 기능을 제공하며, 특히 마우스를 거의 사용하지 않고 키보드만으로 모든 작업을 수행하는 워크플로우를 선호하는 개발자, 시스템 관리자, 그리고 파워 유저들 사이에서 큰 인기를 얻고 있고, Arch Linux, Gentoo, NixOS 사용자들 사이에서 특히 높은 채택률을 보인다. ...
zram 메모리 압축으로 RAM 한계 극복
zram의 개념과 원리 zram(이전 명칭: compcache)은 리눅스 커널에서 제공하는 메모리 압축 기술로, RAM의 일부를 압축하여 가상 블록 장치로 사용하는 메커니즘이며, 이 기술은 2009년 Nitin Gupta에 의해 처음 개발되었고 리눅스 커널 3.14부터 정식으로 통합되어 현재까지 널리 사용되고 있다. zram의 핵심 아이디어는 디스크 기반 스왑 대신 압축된 RAM을 스왑 공간으로 활용함으로써 디스크 I/O의 부하 없이 메모리 사용량을 효과적으로 줄이는 것이며, 특히 메모리가 제한된 환경에서 시스템 성능을 크게 향상시킬 수 있다. zram 장치는 데이터를 메모리에 저장하기 전에 실시간으로 압축하고 데이터 접근 시 실시간으로 압축을 해제하며, 이 과정에서 CPU 리소스를 일부 소모하지만 디스크 I/O를 완전히 피할 수 있어 전체적인 시스템 성능 향상에 크게 기여한다. 일반적으로 zram은 LZO(Lempel-Ziv-Oberhumer), LZ4, ZSTD(Zstandard)와 같은 고속 압축 알고리즘을 사용하여 2:1에서 4:1 정도의 압축률을 달성하며, 압축 알고리즘은 시스템 요구사항에 따라 선택할 수 있고 Ubuntu 24.04에서는 기본적으로 속도와 압축률의 균형이 우수한 LZ4 알고리즘을 사용한다. ...
NAT 네트워크 주소 변환
NAT의 등장 배경과 역사 NAT(Network Address Translation)는 네트워크 통신에서 사설 IP 주소와 공인 IP 주소를 상호 변환하는 핵심 기술로, 1990년대 중반 IPv4 주소 고갈 문제에 대응하기 위해 등장했으며, 1994년 IETF의 RFC 1631 문서를 통해 처음 표준화되었고 이후 1999년 RFC 2663으로 개정되면서 현재의 형태를 갖추게 되었다. 인터넷 초기 설계에서는 모든 장치가 고유한 공인 IP 주소를 가질 것으로 예상했으나, 1980년대 말부터 급속한 인터넷 확산으로 32비트 IPv4 주소 공간(약 43억 개)이 빠르게 소진되기 시작했으며, 이에 대한 단기적 해결책으로 NAT 기술이 개발되어 현재까지 전 세계 네트워크 인프라의 근간을 이루는 필수 기술로 자리잡았다. NAT는 가정용 공유기부터 대규모 기업 네트워크, 클라우드 인프라, 모바일 통신 네트워크에 이르기까지 광범위하게 활용되고 있으며, IPv6 전환이 진행 중인 현재에도 레거시 시스템 지원과 보안 목적으로 여전히 중요한 역할을 수행하고 있다. ...
ARP 스푸핑 이론과 실습
ARP 스푸핑이란? ARP 스푸핑(ARP Spoofing)은 1982년 IETF의 RFC 826 문서를 통해 표준화된 ARP(Address Resolution Protocol) 프로토콜의 구조적 취약점을 악용하는 네트워크 공격 기법으로, 공격자가 거짓된 ARP 메시지를 네트워크에 전송하여 피해자의 ARP 캐시 테이블을 조작하고 정상적인 통신 흐름을 가로채거나 변조하는 중간자 공격(Man-in-the-Middle, MITM)의 일종이며, 이 공격은 ARP 프로토콜이 설계 당시 보안보다는 효율성을 우선시하여 인증이나 무결성 검증 메커니즘을 포함하지 않았기 때문에 가능하다. 교육적 목적과 윤리적 사용 이 글은 네트워크 보안 전문가, 시스템 관리자, 보안 연구자가 ARP 스푸핑의 원리를 이해하고 적절한 방어 대책을 수립하기 위한 교육적 목적으로 작성되었다. 모든 실습은 반드시 자신이 소유하거나 명시적인 허가를 받은 네트워크 환경에서만 수행해야 하며, 무단으로 타인의 네트워크에 침투하거나 공격하는 행위는 정보통신망법, 개인정보보호법 등 관련 법률에 따라 처벌받을 수 있다. ...
우분투에서 MAC 주소 변경하기
MAC 주소 변경의 필요성 MAC 주소(Media Access Control address)는 네트워크 장치를 식별하는 고유한 물리적 주소로, 네트워크 인터페이스 카드(NIC) 제조 시 하드웨어에 영구적으로 할당되며 일반적으로 변경되지 않는 것으로 설계되었다. 그러나 보안, 프라이버시 보호, 네트워크 접근 제어 우회, 테스트 환경 구축 등의 이유로 MAC 주소를 일시적으로 또는 영구적으로 변경해야 하는 상황이 발생할 수 있으며, 특히 공용 와이파이를 사용하거나 네트워크 추적을 방지하고자 할 때 유용하다. Ubuntu를 포함한 대부분의 리눅스 배포판에서는 소프트웨어적으로 MAC 주소를 변경할 수 있는 기능을 제공하며, 이 글에서는 Ubuntu에서 MAC 주소를 안전하고 효과적으로 변경하는 방법을 알아본다. ...
리버스 셸의 이해
리버스 쉘이란? 리버스 쉘(Reverse Shell)은 일반적인 원격 접속의 연결 방향을 역전시킨 공격 기법으로, 침해당한 대상 시스템(Target)이 공격자(Attacker)의 시스템으로 직접 연결을 시도하여 공격자가 대상 시스템의 쉘(Shell)에 접근할 수 있도록 하는 원격 명령 실행 메커니즘이며, 이 기법은 현대 네트워크 보안 아키텍처에서 일반적으로 구축된 방화벽(Firewall)과 NAT(Network Address Translation) 환경의 근본적인 제약사항인 “인바운드 연결 차단, 아웃바운드 연결 허용” 정책을 우회하여 공격자가 제한된 네트워크 내부의 시스템에 접근할 수 있게 한다. 교육적 목적과 윤리적 사용 이 글은 정보 보안 전문가, 시스템 관리자, 침투 테스터가 리버스 쉘의 작동 원리와 방어 기법을 이해하여 조직의 보안 태세를 강화하기 위한 교육적 목적으로 작성되었다. 모든 기술적 내용은 반드시 명시적인 권한을 부여받은 시스템에서만 테스트해야 하며, 무단으로 타인의 시스템을 침해하거나 공격하는 행위는 형법 제314조(업무방해죄), 정보통신망법 제48조(정보통신망 침해행위 금지) 등 관련 법률에 따라 처벌받을 수 있다. ...
미니PC Kubernetes #9: Prometheus 모니터링
개요 이전 글에서는 Helm 차트 기반 프로젝트 템플릿과 ArgoCD ApplicationSet을 활용하여 내부 개발자 플랫폼(IDP)을 구축했다. 이번 글에서는 홈랩 쿠버네티스 클러스터를 모니터링하기 위해 Prometheus와 Grafana를 설치하여 메트릭을 수집하고 시각화하며, Loki를 설치하여 로그를 중앙에서 수집하고 분석할 수 있는 통합 모니터링 환경을 구성하는 방법을 알아본다. 모니터링의 필요성 홈랩 쿠버네티스 클러스터를 운영하다 보면 노드와 파드의 상태, CPU와 메모리 같은 리소스 사용량, 애플리케이션의 정상 작동 여부, 문제 발생 시 원인 파악을 위한 로그 데이터 등을 주기적으로 확인해야 하며, 이런 정보를 시각적으로 모니터링하기 위해 다음과 같은 도구들을 사용한다. ...
미니PC Kubernetes #8: IDP 구축 (2)
개요 이전 글에서는 CI/CD 파이프라인의 기반이 되는 Harbor 컨테이너 레지스트리, Argo Events, Argo Workflows를 설치했다. 이번 글에서는 이 구성 요소들을 ArgoCD와 통합하고 Helm 차트 기반의 프로젝트 템플릿을 설계하여 YAML 파일 하나로 완전한 CI/CD 파이프라인을 갖춘 프로젝트를 배포할 수 있는 내부 개발 플랫폼(Internal Developer Platform, IDP)을 구축하는 방법을 다룬다. 내부 개발 플랫폼이란 내부 개발 플랫폼(IDP)이란? 내부 개발 플랫폼(Internal Developer Platform)은 개발자가 인프라와 배포 파이프라인을 직접 구성하지 않고도 애플리케이션을 배포하고 운영할 수 있도록 추상화된 셀프서비스 인터페이스를 제공하는 시스템이다. 플랫폼 엔지니어링의 핵심 결과물로, 개발자 경험을 향상시키고 표준화된 배포 프로세스를 통해 운영 부담을 줄이는 것을 목표로 한다. ...
미니PC Kubernetes #7: IDP 구축 (1)
개요 이전 글에서는 HashiCorp Vault를 설치하여 안전한 시크릿 관리 시스템을 구축했다. 이번 글에서는 CI/CD 파이프라인을 구성하기 위해 필요한 세 가지 핵심 컴포넌트인 Harbor 컨테이너 레지스트리, Argo Events, Argo Workflows를 설치하고 기본 구성을 완료하는 방법을 다룬다. CI/CD 시스템 구성 요소 홈랩 환경에서 완전한 CI/CD 파이프라인을 구축하기 위해서는 다음과 같은 핵심 구성 요소가 필요하다: 컨테이너 레지스트리: 빌드된 컨테이너 이미지를 저장하고 배포하는 중앙 저장소로, Docker Hub와 같은 퍼블릭 레지스트리에 의존하지 않고 자체적으로 이미지를 관리할 수 있게 한다. 이벤트 처리 시스템: Git 저장소의 코드 변경, 웹훅 수신 등 다양한 이벤트를 감지하고 이에 반응하여 후속 작업을 트리거하는 역할을 담당한다. 워크플로우 엔진: 코드 빌드, 테스트 실행, 컨테이너 이미지 생성 등 실제 CI/CD 작업을 정의하고 실행하는 엔진이다. GitOps 배포 시스템: Git 저장소에 정의된 원하는 상태를 클러스터에 자동으로 동기화하는 시스템으로, 이전 시리즈에서 설치한 ArgoCD가 이 역할을 담당한다. 이번 글에서는 컨테이너 레지스트리, 이벤트 처리 시스템, 워크플로우 엔진을 각각 Harbor, Argo Events, Argo Workflows로 구현하고, 다음 글에서 이들을 ArgoCD와 통합하여 완전한 CI/CD 파이프라인을 완성한다. ...
미니PC Kubernetes #6: Vault 시크릿 관리
개요 이전 글에서는 DDNS와 포트포워딩을 구성하여 홈랩 쿠버네티스 클러스터의 서비스를 외부 인터넷에서 접근할 수 있도록 했다. 이번 글에서는 쿠버네티스 클러스터에서 비밀번호, API 키, 인증서 같은 민감한 정보를 안전하게 관리하기 위해 HashiCorp Vault를 설치하고 구성하는 방법을 알아본다. 기본 쿠버네티스 시크릿의 한계 GitOps 방식으로 홈랩 환경을 구성하면서 시크릿 관리가 가장 큰 난제였으며, 기본 쿠버네티스 Secret을 사용해보니 여러 가지 한계점이 명확하게 드러났다. 첫째, GitOps와의 통합 문제가 있다. Git 저장소에 시크릿을 그대로 저장할 수 없고, base64로 인코딩해도 단순한 디코딩으로 원본 값을 복원할 수 있어 보안에 취약하다. Sealed Secrets나 SOPS 같은 도구도 검토했으나, 단순 암호화를 넘어선 종합적인 시크릿 관리 솔루션이 필요했다. ...