리눅스 시스템 기초 — 통합 로드맵

이 시리즈는 Linux 구조 → 파일·권한 → 프로세스·서비스 → 시스템 보안 → 로그 분석 → 보안관제(SOC) 순서로 이어지는 250편 학습 과정이다. 각 영역은 입문편(개념 요약)과 심화편(영역 내 번호가 붙은 글)으로 구성된다.

영역시리즈 순서편수첫 글
01. Linux 기본 구조 이해1 ~ 1515Linux 기본 구조 이해
02. 파일 · 권한 · 사용자 관리16 ~ 7560Linux 파일과 디렉터리 관리
03. 서비스 · 프로세스 관리76 ~ 13762Linux 프로세스 이해
04. Linux 시스템 보안 기초138 ~ 1925501. Linux 시스템 보안의 기본 개념
05. Linux 로그 경로 정리193 ~ 2505801. Linux 로그란 무엇인가

입문편 번호표

입문편 본문의 "N편"은 아래 입문 번호를 뜻한다. 심화편의 "N편"은 각 영역 글 제목 앞 번호(영역 내 번호)를 뜻한다.

입문 번호글영역
1Linux 기본 구조 이해01
2Linux Kernel의 역할01
3Shell과 Bash 이해01
4User Space와 Kernel Space01
5Linux 시스템 호출(System Call)01
6Linux 파일 시스템 구조01
7Linux 디렉터리 구조 (입문)01
8Linux 부팅 과정01
9Linux 환경변수 이해01
10Linux 시스템 정보 확인01
11Linux 파일과 디렉터리 관리02
12절대경로와 상대경로 (입문)02
13Linux 파일 종류 (입문)02
14inode와 파일 시스템01
15Linux 파일 권한 이해02
16chmod와 권한 관리02
17chown과 파일 소유권02
18Linux 사용자와 그룹02
19sudo와 su (입문)02
20최소 권한 원칙02
21grep으로 로그와 문자열 검색05
22find로 파일 검색02
23head와 tail05
24sort와 uniq05
25cut과 awk05
26sed 활용05
27파이프라인과 리다이렉션01
28Linux Shell Script 기초01
29명령어 조합을 이용한 시스템 분석04
30Linux 명령어를 활용한 보안 점검04
31Linux 프로세스 이해03
32ps로 프로세스 분석03
33top으로 시스템 리소스 확인03
34Linux Signal과 kill03
35Parent / Child Process03
36systemd 구조 이해03
37systemctl 서비스 관리03
38cron 작업 스케줄링03
39CPU · Memory 관리03
40Disk 사용량 관리03
41Linux 네트워크 구조01
42IP / TCP / UDP / Port01
43Socket 이해03
44ss와 ip 명령어03
45SSH 구조 이해04
46Firewalld 이해04
47SELinux 이해04
48Linux 로그와 journalctl05
49SSH Brute Force 로그 분석05
50보안관제 실습 - 로그에서 공격 흔적 찾기05

Linux System Architecture — 리눅스 시스템 기초 #1

리눅스 시스템 기초 1 / 50
실습 환경: VMware · Rocky Linux 9 (서버, 10.0.0.200) · Kali Linux (공격자, 10.0.0.128) · Ubuntu (IDS, 10.0.0.222)
이 시리즈는 Linux 기초 → 시스템 관리 → 보안 → 로그 분석 → 보안 이벤트 분석 → SOC 순서로 정리한다.

1. 들어가며

보안관제에서 가장 자주 마주치는 대상 중 하나가 Linux 서버다. 웹 서버, DB 서버, 로그 수집 서버, IDS 센서까지 대부분 Linux 위에서 동작한다. SIEM에 경보가 올라오면 결국 "그 서버 안에서 실제로 무슨 일이 있었는가" 를 확인해야 하는데, 이때 필요한 것이 Linux 시스템 구조에 대한 이해다.

명령어만 외워서는 부족하다고 느낀 계기가 있다. ps로 프로세스 목록을 봐도 어떤 것이 정상이고 어떤 것이 이상한지 판단하려면, 프로세스가 어떻게 만들어지고(부모-자식 관계), 어디서 실행되며(/usr/bin인가 /tmp인가), 어떤 권한으로 동작하는지 알아야 했다. 로그도 마찬가지다. 로그를 누가, 어디에, 왜 남기는지 모르면 로그가 없는 것이 정상인지 지워진 것인지 구분할 수 없다.

이 글에서는 다음 질문에 답하는 것을 목표로 한다.

질문다루는 절
Linux는 어떤 구조로 동작하는가?3
Kernel은 어떤 역할을 하는가?4
Shell은 무엇이고, 명령어는 어떻게 실행되는가?5
User Space와 Kernel Space는 무엇인가?3, 4
Linux 파일 시스템은 어떻게 구성되어 있는가?6
보안관제에서는 Linux의 어떤 부분을 확인하는가?7, 8, 9

2. Linux란?

Linux는 엄밀히 말하면 운영체제의 핵심인 커널(Kernel) 의 이름이다. 1991년 리누스 토르발스(Linus Torvalds)가 처음 공개했고, 현재도 오픈소스로 개발되고 있다.

우리가 "Linux를 설치한다"고 할 때 설치하는 것은 배포판(Distribution) 이다. 배포판은 Linux 커널에 Shell, 기본 명령어(GNU 도구), 패키지 관리자, 서비스 관리자(systemd) 등을 묶어 하나의 운영체제로 만든 것이다.

계열대표 배포판패키지 관리인증 로그 위치주 사용처
RHEL 계열RHEL, Rocky Linux, AlmaLinuxdnf (rpm)/var/log/secure기업·공공 서버
Debian 계열Debian, Ubuntuapt (deb)/var/log/auth.log클라우드, 개발 서버, 보안 도구
보안 특화Kali Linuxapt/var/log/auth.log모의해킹, 공격 재현

관제 입장에서 배포판 차이는 생각보다 중요하다. 같은 SSH 로그인 실패라도 Rocky Linux는 /var/log/secure, Ubuntu는 /var/log/auth.log에 기록된다. 로그 수집 설정(rsyslog, Filebeat)의 경로를 잘못 잡으면 이벤트 자체가 SIEM에 들어오지 않는다.


3. Linux의 전체 구조

Linux는 여러 계층으로 나뉘어 있고, 위 계층이 아래 계층에 요청을 보내는 방식으로 동작한다.

Linux 시스템 계층 구조와 관제 포인트

계층역할예시보안관제 관점
User명령을 내리는 주체관리자, 서비스 계정, 공격자누가 실행했는가 (계정, UID)
Application실제 기능을 제공하는 프로그램sshd, httpd, mariadb, cron공격의 진입점 (취약 서비스, 웹셸)
Shell사용자의 명령을 해석해 실행bash, sh침투 후 공격자가 가장 먼저 얻으려는 것
System Call사용자 공간 → 커널 요청 창구openat, read, execve, connectauditd가 기록하는 대상
Kernel자원 관리의 최종 권한자프로세스·메모리·파일·네트워크·장치 관리커널 취약점, 루트킷
Hardware물리 자원CPU, RAM, Disk, NICCPU 급증(채굴), 디스크 풀(로그 유실)

User Space와 Kernel Space

이 구조에서 가장 중요한 개념은 사용자 공간(User Space)과 커널 공간(Kernel Space)의 분리 다.

구분User SpaceKernel Space
실행 주체일반 프로그램, Shell, 서비스Linux Kernel
하드웨어 접근직접 불가직접 가능
오류의 영향해당 프로세스만 종료시스템 전체 장애 가능
다른 공간으로의 요청System Call 로만 가능—

일반 프로그램은 하드웨어에 직접 접근할 수 없고, 반드시 System Call 을 통해 커널에 요청해야 한다. 예를 들어 cat /etc/passwd 한 줄은 내부적으로 다음 요청으로 이루어진다.

cat → openat("/etc/passwd")  : 커널이 권한 확인 후 파일 열기
    → read(...)              : 커널이 디스크에서 데이터 읽기
    → write(stdout, ...)     : 커널이 터미널에 출력

보안 측면에서 이 구조가 의미 있는 이유는, 모든 행위가 결국 System Call을 거치기 때문에 커널 단에서 감시하면 우회하기 어렵다 는 점이다. auditd나 EDR이 System Call을 기록하는 이유가 여기에 있다. strace로 직접 확인할 수 있다.

sudo dnf install -y strace
strace -e trace=openat,read,write cat /etc/hostname

4. Kernel

커널은 하드웨어와 프로그램 사이에서 자원을 나눠주고 통제하는 관리자 다.

역할하는 일확인 방법관제 시 의미
Process 관리프로세스 생성·스케줄링·종료, PID 부여ps, /proc/<PID>부모-자식 관계로 비정상 실행 추적
Memory 관리프로세스별 메모리 할당과 격리free -h, top파일 없이 메모리에서만 동작하는 악성코드
File System 관리파일 읽기/쓰기, 권한 검사ls -l, stat권한 우회, 파일 변조 흔적
Network 관리소켓 생성, 패킷 송수신ss, ipC2 통신, 리버스 쉘 연결
Device 관리드라이버를 통한 장치 제어lsblk, /dev외부 저장장치 연결

커널 버전은 uname -r로 확인한다. 커널 버전을 확인하는 이유는 커널 취약점(권한 상승)의 영향 대상인지 판단하기 위해서다. 예를 들어 Dirty Pipe(CVE-2022-0847)는 특정 커널 버전 범위에서만 동작한다. 침해사고 분석에서 "이 서버가 해당 취약점에 영향받는 버전인가"를 판단하는 기초 정보가 된다.


5. Shell

5-1. Shell이란

Shell은 사용자가 입력한 명령을 해석해서 실행하는 명령어 해석기(Command Interpreter) 다. 커널을 감싸는 껍데기(shell)라는 의미에서 이름이 붙었다. Rocky Linux와 Ubuntu 모두 기본 Shell은 Bash(Bourne Again SHell) 다.

echo $SHELL       # 현재 로그인 Shell
cat /etc/shells   # 시스템에서 사용 가능한 Shell 목록

5-2. 명령어 실행 과정

ls -l /tmp를 입력하면 Bash 내부에서 다음 순서로 처리된다.

명령어 실행 과정 — fork와 execve

핵심은 5~6단계다. Bash는 자신을 복제(fork())해 자식 프로세스를 만들고, 그 자식을 실제 프로그램으로 바꾼다(execve()). 그래서 모든 프로세스에는 부모 프로세스(PPID)가 있다. 이 부모-자식 관계는 관제에서 매우 중요한 판단 근거가 된다.

type cd       # cd is a shell builtin → Bash 내장, 새 프로세스를 만들지 않음
type -a ls    # alias와 실제 경로(/usr/bin/ls) 확인
echo $PATH    # 실행 파일을 찾는 경로 순서
echo $?       # 직전 명령의 종료 코드 (0 = 성공)

5-3. Shell과 Kernel의 관계

Shell은 커널이 아니다. Shell도 사용자 공간에서 동작하는 하나의 프로그램 이며, 실행이 필요할 때 fork(), execve() 같은 System Call로 커널에 요청할 뿐이다.

5-4. 보안관제에서 Shell을 보는 이유

관찰 포인트의미
httpd, nginx, mysqld 아래에 sh/bash가 자식 프로세스로 존재웹 서버는 보통 쉘을 띄우지 않는다 → 웹셸·원격 명령 실행(RCE) 의심
$PATH 앞부분에 /tmp 같은 쓰기 가능한 경로가짜 ls, sudo를 먼저 실행시키는 PATH 하이재킹
~/.bash_history가 비어 있거나 /dev/null로 링크됨흔적 삭제 시도 가능성
서비스 계정의 로그인 Shell이 /bin/bash원래 /sbin/nologin이어야 할 계정이 로그인 가능한 상태

6. Linux 파일 시스템

Linux는 거의 모든 것을 파일로 다룬다. 일반 파일뿐 아니라 장치(/dev/sda), 프로세스 정보(/proc/1234)도 파일 형태로 접근한다. 디렉터리는 /(루트) 하나에서 시작하는 트리 구조다.

Linux 디렉터리 구조와 보안관제 핵심 경로

디렉터리역할
/boot커널 이미지, GRUB 설정
/dev장치 파일
/etc시스템·서비스 설정
/home일반 사용자 홈 디렉터리
/opt추가 설치 소프트웨어
/proc실행 중인 프로세스·커널 정보 (가상 파일 시스템)
/rootroot 계정 홈 디렉터리
/run부팅 이후 실행 상태 정보 (재부팅 시 초기화)
/tmp임시 파일 (모든 사용자 쓰기 가능)
/usr프로그램, 라이브러리
/var로그, 캐시, 웹 문서 등 변하는 데이터

Rocky Linux 9, Ubuntu 22.04 이후는 /bin, /sbin, /lib가 /usr 하위로 합쳐진 심볼릭 링크다. ls -l /로 확인할 수 있다.

보안관제 관점에서 중요한 5개 경로

① /etc — 시스템 설정 (지속성의 무대)

파일확인 포인트
/etc/passwdroot 외에 UID 0 계정이 있는지
/etc/shadowroot만 읽을 수 있는 권한인지
/etc/sudoers, /etc/sudoers.d/NOPASSWD: ALL 같은 과도한 권한
/etc/ssh/sshd_configPermitRootLogin yes 여부
/etc/crontab, /etc/cron.d/모르는 스크립트의 주기 실행
/etc/systemd/system/의심스러운 서비스 추가

공격자는 침투 후 다시 들어올 수 있는 장치(지속성, Persistence) 를 만들려 하는데, 그 대부분이 /etc 설정 변경으로 이루어진다.

② /var/log — 시스템 및 서비스 로그 (증거)

로그배포판내용
/var/log/secureRocky/RHELSSH 로그인, sudo, 인증
/var/log/auth.logUbuntu/Debian위와 동일
/var/log/messages / syslogRHEL / Ubuntu시스템 전반
/var/log/audit/audit.log공통 (auditd)System Call 감사, SELinux 거부
/var/log/httpd/웹 서버웹 요청 (웹 공격 흔적)
/var/log/wtmp, /var/log/btmp공통 (바이너리)로그인 성공 / 실패 (last, lastb)

로그 파일 크기가 갑자기 0이 되거나 특정 시간대만 비어 있다면 그 자체가 침해 흔적일 수 있다.

③ /home — 사용자 데이터 (행위 흔적)

  • ~/.bash_history: 입력한 명령 이력
  • ~/.ssh/authorized_keys: 비밀번호 없이 접속 가능한 공개키 목록 → 공격자가 자신의 키를 추가하는 대표적인 백도어
  • ~/.bashrc, ~/.bash_profile: 로그인 시 자동 실행 → 악성 명령 삽입 가능

④ /tmp — 임시 파일 (공격자의 작업 공간)

모든 사용자가 쓸 수 있기 때문에, 권한이 낮은 계정(예: 웹 서버의 apache)으로 침투한 공격자가 도구를 내려받고 실행하는 장소로 자주 쓰인다. /var/tmp, /dev/shm도 같은 이유로 함께 확인한다.

ls -la /tmp /var/tmp /dev/shm
ls -ld /tmp    # drwxrwxrwt → 마지막 t = Sticky Bit (다른 사용자의 파일 삭제 불가)

⑤ /proc — 프로세스 및 Kernel 정보 (실시간 상태)

/proc은 디스크가 아니라 커널이 메모리 상태를 파일처럼 보여주는 가상 파일 시스템 이다. 프로세스마다 /proc/<PID>/ 디렉터리가 있다.

ls -l /proc/$$/exe                          # 현재 쉘의 실제 실행 파일
cat /proc/$$/cmdline | tr '\0' ' '; echo    # 실행 명령줄
ls -l /proc/$$/fd                           # 열고 있는 파일·소켓

실무에서 자주 쓰는 방법은 실행 파일이 삭제된 채 동작 중인 프로세스 를 찾는 것이다. 공격자가 악성 파일을 실행한 뒤 파일을 지워도, 프로세스는 계속 살아 있고 /proc에는 (deleted) 표시가 남는다.

sudo ls -l /proc/*/exe 2>/dev/null | grep deleted

7. 실제 Linux 실습

Rocky Linux 9 서버에 SSH로 접속해 "이 서버가 지금 어떤 상태인가"를 확인했다. 침해사고 분석에서 서버에 처음 접속했을 때 가장 먼저 실행하는 명령어들 과 거의 같다.

아래 출력은 Rocky Linux 9 기준의 출력 형식 예시 다. 버전 번호처럼 환경마다 달라지는 값은 x로 표시했고, 긴 출력은 설명에 필요한 항목만 남겼다.

7-1. uname -a — 커널 정보

uname -a
Linux rocky 5.14.0-xxx.el9_x.x86_64 #1 SMP PREEMPT_DYNAMIC ... x86_64 x86_64 x86_64 GNU/Linux
  • 무엇을 확인하는가: 커널 이름, 호스트명, 커널 버전, 아키텍처
  • 관제에서 왜 필요한가: 커널 버전으로 권한 상승 취약점의 영향 여부를 판단한다. 호스트명은 SIEM 이벤트의 host.name과 대조해 분석 대상 서버가 맞는지 확인하는 데 쓴다.

7-2. hostnamectl — 호스트·OS 정보

hostnamectl
 Static hostname: rocky
  Virtualization: vmware
Operating System: Rocky Linux 9.x (Blue Onyx)
          Kernel: Linux 5.14.0-xxx.el9_x.x86_64
    Architecture: x86-64
  • 무엇을 확인하는가: 호스트명, 가상화 여부, 배포판·버전, 커널을 한 번에
  • 관제에서 왜 필요한가: 배포판을 알아야 로그 경로(secure vs auth.log)와 명령어(dnf vs apt)를 정확히 고를 수 있다.

7-3. whoami / id — 현재 권한

whoami
id
roror
uid=1000(roror) gid=1000(roror) groups=1000(roror),10(wheel)
  • 무엇을 확인하는가: 현재 사용자, UID/GID, 소속 그룹
  • 관제에서 왜 필요한가: uid=0이면 root 권한이다. wheel(Rocky)·sudo(Ubuntu) 그룹이면 sudo로 root 권한을 얻을 수 있다. 탈취된 계정이 어디까지 갈 수 있는가 가 피해 범위를 결정한다.

7-4. pwd / ls -la — 위치와 숨김 파일

pwd
ls -la
  • 무엇을 확인하는가: 현재 작업 경로, 숨김 파일(.으로 시작)을 포함한 목록과 권한·소유자·수정 시각
  • 관제에서 왜 필요한가: pwd는 증거 파일을 다루기 전 작업 위치를 확인하는 습관이다. ls -la로 /tmp/.x 같은 숨김 파일, 실행 권한이 붙은 의심 파일, 소유자가 이상한 파일을 찾는다.

7-5. ps aux — 실행 중인 프로세스

ps aux | head -15
ps aux --sort=-%cpu | head -10   # CPU 사용률 상위
ps -ef --forest | less           # 부모-자식 관계를 트리로
USER   PID %CPU %MEM    VSZ   RSS TTY   STAT START  TIME COMMAND
root     1  0.0  0.3 ...        ?     Ss   09:00  0:01 /usr/lib/systemd/systemd ...
root   812  0.0  0.2 ...        ?     Ss   09:00  0:00 sshd: /usr/sbin/sshd -D ...
apache 945  0.0  0.5 ...        ?     S    09:00  0:00 /usr/sbin/httpd -DFOREGROUND
  • 무엇을 확인하는가: 실행 계정(USER), PID, 자원 사용률, 실행 명령(COMMAND)
  • 관제에서 왜 필요한가: apache 계정으로 실행된 bash, /tmp에서 실행된 프로그램, CPU를 과도하게 쓰는 프로세스(채굴 악성코드), nc -e·bash -i 같은 리버스 쉘 패턴을 찾는다.

7-6. ss -tulnp — 열린 포트와 연결

sudo ss -tulnp   # LISTEN 중인 포트와 프로세스
sudo ss -tanp    # 현재 TCP 연결 전체 (ESTAB 포함)
Netid State  Local Address:Port  Peer Address:Port  Process
tcp   LISTEN 0.0.0.0:22          0.0.0.0:*          users:(("sshd",pid=812,fd=3))
tcp   LISTEN 0.0.0.0:80          0.0.0.0:*          users:(("httpd",pid=945,fd=4))
옵션의미
-t / -uTCP / UDP
-lLISTEN 상태만
-n이름 변환 없이 숫자로 (IP, 포트)
-p소켓을 가진 프로세스 표시 (전체를 보려면 root 권한 필요)
  • 무엇을 확인하는가: 서버가 열어 둔 포트와 그 포트를 사용하는 프로세스
  • 관제에서 왜 필요한가: 업무와 무관한 LISTEN 포트는 백도어 가능성이 있다. 서버가 외부로 먼저 연결한 ESTAB 세션 중 모르는 IP가 있으면 리버스 쉘·C2 통신 을 의심한다.

실습 정리

순서명령어답하는 질문
1uname -a, hostnamectl어떤 시스템인가
2whoami, id어떤 권한인가
3pwd, ls -la어디에 무엇이 있는가
4ps aux무엇이 실행 중인가
5ss -tulnp누구와 통신하는가
6로그 (/var/log/secure, journalctl)과거에 무슨 일이 있었는가

8. 보안관제 관점

Q1. 보안관제 담당자가 Linux를 왜 알아야 하는가?

SIEM 경보는 "무엇이 의심된다"는 신호일 뿐이다. 경보가 실제 공격(정탐)인지 정상 행위(오탐)인지 판단하려면 원본 로그와 서버 상태를 확인해야 한다. 대부분의 서버가 Linux이므로 로그 위치, 프로세스 구조, 권한 체계를 모르면 판단 근거를 제시할 수 없다.

Q2. 공격자가 Linux 서버에 침투하면 어떤 흔적이 남는가?

공격 단계남는 흔적확인 위치
초기 침투SSH 로그인 실패 반복 후 성공, 비정상 웹 요청/var/log/secure, 웹 access_log
실행웹 서버 하위 쉘, /tmp 내 실행 파일ps, /tmp
권한 상승sudo 사용, SUID 파일 실행/var/log/secure, audit.log
지속성cron 등록, 서비스 추가, authorized_keys 추가/etc/cron*, /etc/systemd/system, ~/.ssh
외부 통신외부 IP로의 ESTAB 연결ss -tanp
흔적 삭제로그 크기 0, history 삭제/var/log, ~/.bash_history

Q3. 어떤 로그를 확인하는가?

인증 로그(secure/auth.log) → 시스템 로그(messages/syslog, journalctl) → 감사 로그(audit.log) → 애플리케이션 로그(웹·DB) 순으로 범위를 넓힌다. 로그인 기록은 last, lastb로 교차 확인한다.

sudo tail -n 20 /var/log/secure
sudo journalctl -u sshd --since "1 hour ago"
last -n 10          # 최근 로그인 성공
sudo lastb -n 10    # 최근 로그인 실패

Q4. 어떤 프로세스를 확인하는가?

  • 부모가 웹 서버·DB인 쉘 프로세스
  • /tmp, /dev/shm, /var/tmp에서 실행된 프로세스
  • 실행 파일이 삭제된(deleted) 프로세스
  • CPU를 비정상적으로 많이 쓰는 프로세스
  • 이름은 정상(kworker, sshd)처럼 보이지만 실행 경로가 이상한 프로세스

Q5. 어떤 네트워크 연결을 확인하는가?

  • 업무와 무관한 LISTEN 포트
  • 서버에서 외부로 먼저 나간 연결 (서버는 보통 연결을 "받는" 쪽이다)
  • 알려진 악성 IP·도메인(IOC)과의 연결
  • nc, bash, python 같은 프로세스가 소켓을 가진 경우

9. SOC 실무 연결

Linux 서버에서 보안 이벤트가 발생했을 때 보안관제 담당자는 로그 한 줄만 보고 판단하지 않는다. 로그인 기록, 실행 중인 프로세스, 네트워크 연결, 사용자 계정, 시스템 설정 을 함께 확인해 공격 여부를 판단한다. 이 과정을 네 단계로 정리하면 다음과 같다.

단계핵심 질문Linux에서 확인하는 것
Logs무엇이 기록되었나/var/log/secure, journalctl, audit.log
Indicators무엇이 의심스러운가출발지 IP, 시도 계정, 해시, 도메인 (IOC)
Root Cause실제로 무슨 일이 있었나로그인 성공 여부, 프로세스 트리, 네트워크 연결
Response어떻게 보존하고 막나증적 사본·해시, 차단, 계정 잠금, 보고

아래는 Kali(10.0.0.128)에서 Rocky Linux 서버(10.0.0.200)로 SSH 무차별 대입(Brute Force)이 들어온 상황을 가정한 흐름이다. 실제 공격 재현과 분석은 이 시리즈의 SSH Brute Force 편에서 다룬다.

Linux 서버 보안 이벤트 분석 흐름

단계별로 사용하는 명령어는 다음과 같다.

# [Logs → Indicators] 실패 로그와 출발지 IP 집계
sudo grep "Failed password" /var/log/secure | tail -5
sudo grep "Failed password" /var/log/secure \
  | grep -oE 'from [0-9.]+' | sort | uniq -c | sort -rn

# [Root Cause] 같은 IP에서 로그인에 성공한 기록이 있는가
sudo grep "Accepted" /var/log/secure | grep "10.0.0.128"

# [Root Cause] 로그인 이후 생성된 프로세스와 현재 연결
ps -ef --forest | less
sudo ss -tanp | grep 10.0.0.128

# [Response] 증적 보존 — 원본은 건드리지 않고 사본 + 해시
sudo mkdir -p /root/evidence
sudo cp -p /var/log/secure /root/evidence/secure_$(date +%F_%H%M)
sudo sh -c 'sha256sum /root/evidence/secure_*'

# [Response] 출발지 IP 차단 (firewalld, 런타임 적용)
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.128" drop'

판단 기준은 "실패 로그만 있는가, 같은 출발지에서 성공 로그도 있는가" 다. 실패만 있다면 공격 시도로 보고 차단·모니터링한다. 성공 기록이 있다면 침해 의심 사고로 등급을 올리고, 프로세스·네트워크·계정·설정 확인과 증적 수집을 반드시 수행한다.


10. 핵심 정리

  • Linux는 Hardware → Kernel → System Call → Shell → Application → User 계층으로 동작한다.
  • User Space와 Kernel Space는 분리되어 있고, 모든 요청은 System Call 을 거친다. 그래서 auditd·EDR은 System Call을 감시한다.
  • Shell은 커널이 아니라 명령을 해석해 fork() → execve() 로 실행하는 프로그램이다. 모든 프로세스에는 부모가 있다.
  • 웹 서버 아래에 쉘이 보이면 웹셸·RCE를 의심한다.
  • 배포판마다 로그 경로가 다르다. Rocky는 /var/log/secure, Ubuntu는 /var/log/auth.log.
  • 관제 핵심 경로: /etc(설정·지속성), /var/log(증거), /home(사용자 흔적), /tmp(공격자 작업 공간), /proc(실시간 상태).
  • 서버 상태 확인 순서: uname/hostnamectl → whoami/id → ps aux → ss -tulnp → 로그.
  • 분석 흐름은 Logs → Indicators → Root Cause → Response. 증적은 원본을 건드리지 않고 사본 + 해시 로 남긴다.

11. 다음 글 예고

이번 글에서는 Linux의 전체 구조를 한 번에 훑었다. 다음 글 「Linux Kernel의 역할」 에서는 커널의 프로세스·메모리·파일 시스템·네트워크·장치 관리를 하나씩 더 자세히 살펴보고, uname, lsmod, dmesg로 커널 상태를 확인하는 방법과 커널 취약점이 보안관제에서 어떤 의미를 갖는지 정리한다.

시리즈 로드맵 (50편, 최종)

Part범위주요 내용관제에서의 역할
1. Linux 기본 구조1 ~ 10편Kernel, Shell, User/Kernel Space, System Call, 파일 시스템·디렉터리, 부팅, 환경변수, 시스템 정보시스템이 어떻게 동작하는지 이해
2. 파일·명령어·권한11 ~ 20편파일·경로, 파일 종류, inode, 권한·chmod·SUID, chown, 사용자·그룹, sudo·su, 최소 권한누가 무엇을 할 수 있는지 판단
3. 명령어 활용21 ~ 30편grep, find, head·tail, sort·uniq, cut·awk, sed, 파이프라인, Shell Script, 시스템 분석, 보안 점검로그·파일에서 증거 추출
4. 프로세스·서비스·리소스31 ~ 40편프로세스, ps, top, Signal·kill, Parent/Child, systemd, systemctl, cron, CPU·Memory, Disk실행 중인 것과 지속성 탐지
5. 네트워크·보안·SOC41 ~ 50편네트워크 구조, TCP/UDP·Port, Socket, ss·ip, SSH, firewalld, SELinux, 로그·journalctl, SSH Brute Force 분석, 보안관제 실습통신·흔적 분석과 대응

전체 목차


참고 자료

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글