Journey to Security/Linux OS 39

UEFI 펌웨어 구조와 부팅 원리

OS 설치를 진행하다 보면 펌웨어 환경의 차이를 이해해야 하는 순간이 온다.파티션이 인식되지 않거나, 부트로더가 로드되지 않거나, Secure Boot 오류로 커스텀 커널이 실행되지 않는 문제 대부분은 UEFI 펌웨어의 동작 원리를 알아야 해결된다.UEFI가 무엇이고, 기존 BIOS와 무엇이 다르며, ESP 파티션을 중심으로 부팅이 어떻게 진행되는지 알아보자.1. UEFI란?EFI(Extensible Firmware Interface)는 컴퓨터의 하드웨어와 운영체제를 연결하는 소프트웨어 인터페이스다.수십 년간 사용되던 BIOS(Basic Input/Output System)를 대체하기 위해 개발된 현대적 펌웨어 표준이며, 현재는 인텔뿐 아니라 여러 기업이 참여해 표준화한 UEFI(Unified EFI)라..

Linux CPU 과점유 대응: top, /proc, strace로 위장 프로세스 추적하기

리눅스 서버의 CPU 사용률이 갑자기 늘어나면 가장 먼저 top 명령어로 어떤 프로세스가 CPU를 잡아먹고 있는지 찾아봐야 한다. 그리고 그 프로세스가 정상적인 연산 부하인지, I/O 병목인지, 정상 프로세스로 위장한 악성코드인지를 구분하려면 ps, /proc, strace, lsof로 이어지는 교차검증이 필요하다. CPU 과점유 원인은 크게 세 가지로 나뉘고, 그 판별 흐름은 다음과 같다. top 실행 결과, %CPU의 us/sy 비율, /proc/[PID]/exe가 가리키는 실제 실행 파일, strace -c의 syscall 분포가 각각 다른 결론을 뒷받침하는 근거가 된다.1. 실습 환경 준비1️⃣ 실습 환경 사양이 실습은 의도적으로 CPU를 포화시키므로, 관찰과 조작을 위한 여유분을 확보한 스펙이 ..

리눅스 싱글모드 - GRUB2 보안 설정과 다계층 방어의 중요성

1. 싱글 유저 모드(Single User Mode)란?리눅스의 싱글 유저 모드는 시스템이 최소한의 서비스만 올린 채 root 권한으로 부팅되는 복구용 모드다.네트워크 서비스, 인증 데몬 등이 시작되기 전에 root 셸이 열리기 때문에, 원래 목적은 관리자가 비밀번호를 분실했을 때 시스템을 복구하는 용도다.문제는 이 복구 경로가 공격자에게도 동일하게 열려 있다는 점이다.물리적 접근만 가능하면 인증 없이 root 비밀번호를 변경할 수 있으므로, KISA 주요정보통신기반시설 보안 가이드 등 주요 보안 진단 항목에 "싱글모드 부팅 시 인증 요구" 항목이 포함되어 있다. 2. 공격 시나리오: rd.break를 이용한 root 비밀번호 초기화1️⃣ rd.break란?rd.break는 리눅스 커널 파라미터로, in..

리눅스 rescue mode에서 chroot /sysroot 동작 원리

리눅스 서버가 정상적으로 부팅되지 않을 때 관리자는 응급 복구 모드(Rescue Mode)에 진입해 시스템을 복구한다.이 때 chroot /sysroot 명령어를 사용해 현재 프로세스가 인식하는 루트 파일 시스템을 교체해야 한다.initramfs 부팅 단계의 구조와 함께 /sysroot 디렉터리와 chroot 명령어의 동작 원리를 알아보자. 1. /sysroot/sysroot는 리눅스 부팅 초기 단계에서 사용되는 마운트 포인트로, initramfs 환경이 실제 디스크의 루트 파일 시스템(/)을 임시로 마운트하기 위한 위치다.1️⃣ 정상 부팅 과정에서의 /sysroot부팅이 시작되면 커널은 initramfs 환경을 메모리에 로드하고, 이 환경에서 실제 디스크의 루트 파일 시스템을 /sysroot에 마운트한..

awk - 필드 단위 텍스트 처리 도구

1. awk란?awk는 유닉스/리눅스 환경에서 텍스트 데이터를 처리하기 위한 프로그래밍 언어이자 명령어 도구이다.이름은 세 명의 개발자 Aho, Weinberger, Kernighan의 이니셜에서 유래했다.awk는 입력을 한 줄(레코드)씩 읽어 들이고, 각 줄을 필드 단위로 분리한 뒤, 지정된 패턴에 매칭되는 줄에 대해 액션을 수행하는 구조로 동작한다. grep이 검색에 특화되어 있고, sed가 치환에 특화되어 있다면, awk는 필드 단위 데이터 가공에 특화되어 있다.로그 분석, 시스템 모니터링 스크립트, 텍스트 리포트 생성 등 실무에서 가장 빈번하게 사용되는 도구 중 하나이다.먼저 awk가 입력 데이터를 어떻게 해석하는지 구조를 살펴보자. awk는 입력을 레코드(줄) 단위로 읽고, 각 레코드를 필드 단..

sed에서 사용하는 정규표현식 - BRE와 ERE

1. sed와 정규표현식sed(Stream Editor)는 텍스트 스트림을 한 줄씩 읽어 패턴 매칭과 변환을 수행하는 도구다.이때 패턴을 기술하는 언어가 바로 정규표현식(Regular Expression)이다.sed는 기본적으로 BRE(Basic Regular Expression)를 사용하며, -E 또는 -r 옵션을 주면 ERE(Extended Regular Expression)로 전환된다.# BRE (기본)sed 's/pattern/replacement/' file# ERE (확장)sed -E 's/pattern/replacement/' fileBRE와 ERE의 가장 큰 차이는 메타문자에 백슬래시가 들어가는지 여부에 있다.기능은 같지만 가독성에서 차이가 있을 수 있다. 2. BRE vs ERE 기능BR..

스트림 편집기 sed 명령/옵션 정리

1. sed란?sed(Stream EDitor)는 입력 스트림을 줄 단위로 읽어 지정한 명령을 실행하고 결과를 출력하는 텍스트 처리 도구다.파일을 직접 열지 않고 파이프라인에서 텍스트를 처리할 수 있어 쉘 스크립트와 시스템 자동화에서 자주 쓰인다.1️⃣ 기본 처리 사이클sed는 실행될 때마다 아래 순서를 반복한다.sed는 자동 출력(auto-print) 이 기본으로 켜져 있어서 아무 명령을 지정하지 않아도 입력이 그대로 출력된다.# 아무 명령 없이 sed만 써도 그대로 출력됨echo -e "hello\nhi" | sed ''hellohised ''는 빈 명령이지만 자동 출력 때문에 입력 스트림이 그대로 stdout으로 나온다.2️⃣ -n 옵션 : 자동 출력 비활성화-n은 이 자동 출력을 끄는 스위치다. ..

우분투 서버에 Claude Code 설치하기

0. 이 서버의 목적이번에 구축할 서버는 다음 두 가지를 목적으로 한다.첫째, SOAR(Security Orchestration, Automation and Response) 엔진을 직접 개발하고 실행할 전용 서버가 필요하다. 보안 이벤트를 자동으로 수집·분석·대응하는 파이프라인을 Python으로 짜고, 개발 도구로 Claude Code를 사용한다.별도로 구축한 방화벽 VM, 공격용 VM(Kali)과 동일한 네트워크에 붙여서 실제 보안 실습 시나리오와 연동하려는 목적이다. 둘째, 향후 AWS EC2로의 이전을 염두에 두고 구축한다.로컬 VM에서 충분히 검증한 뒤, 동일한 환경의 EC2 인스턴스에 그대로 올려서 클라우드 기반 SOAR 운영 실습까지 이어가는 것을 최종 목표로 한다.따라서 AWS 호환성을 기..

[방화벽] iptables LOG target- 패킷 모니터링

iptables로 트래픽을 차단하는 것만큼 중요한 것이 어떤 패킷이 들어오고 나가는지 기록하는 것이다.1. LOG 타깃의 동작 원리1️⃣ Non-terminating targetiptables의 타깃은 크게 두 종류로 나뉜다.Target예시동작Terminating targetACCEPT, DROP, REJECT패킷을 처리하고 체인 순회를 종료Non-terminating targetLOG, MARK, CONNMARK처리 없이 다음 룰로 계속 진행여기서 살펴볼 LOG는 non-terminating target이다.패킷을 커널 로그에 기록하고, 체인 순회를 그대로 이어간다.즉, LOG 룰에 매칭된 패킷은 반드시 그 뒤의 룰에서 최종 처리된다.2️⃣ LOG 단독으로는 패킷을 막을 수 없다아래 구성은 의도와 다르..

[방화벽] iptables Conntrack (2) INVALID 패킷 탐지

iptables의 상태 추적(stateful inspection) 기능은 단순히 포트를 열고 닫는 수준을 넘어, 패킷이 현재 TCP 연결 상태와 맞지 않을 때 이를 INVALID로 분류해 자동으로 차단한다.이번에는 hping3로 비정상 패킷을 직접 만들어 INVALID 동작을 검증하고, LOG 타깃을 활용해 실시간 패킷 로깅 체계를 구축하는 방법을 알아보자. 1. INVALID 패킷이란?iptables의 -m state 모듈은 각 패킷을 NEW, ESTABLISHED, RELATED, INVALID 중 하나의 상태로 분류한다.이 중 INVALID는 기존 연결 테이블에 존재하지 않는 세션에 대해 연결 종료/리셋 신호가 들어올 때 붙는 레이블이다.TCP 플래그와 연결 상태의 관계를 정리하면 다음과 같다. T..

1 2 3 4