PromleeBlog
sitemap
aboutMe

posting thumbnail
정보보안기사 - 1.1 리눅스 디렉토리 구조(FHS)와 /etc 파일
Linux Directory Structure FHS and etc File Analysis - InfoSec Engineer 1.1

📅

🚀

들어가기 전에 🔗

안녕하세요.
오늘부터
정보보안기사
자격증 취득을 위한 시스템 보안 파트 강의를 시작합니다.
시스템 보안은 필기와 실기(필답형/작업형) 모두에서 비중이 매우 큰 과목입니다.
단순 암기보다는 직접 명령어를 입력하고 파일의 내용을 확인하며 구조를 익히는 것이 중요합니다.

이번 시간에는 먼저 실습을 위한
리눅스 환경
을 구축하고, 리눅스 운영체제의 뼈대인
FHS
와 계정 정보를 담고 있는 핵심 파일들을 명령어로 직접 조회하고 분석해 보겠습니다.

🚀

[실습] 리눅스 환경 구축 🔗

실습을 위해 별도의 장비를 구매할 필요 없이, 가상화 기술을 이용해 현재 PC에 리눅스를 설치합니다.

1. Windows 사용자 (WSL2) 🔗

윈도우 10/11 사용자라면
WSL
(Windows Subsystem for Linux)을 사용하는 것이 가장 효율적입니다.
  1. PowerShell 실행
    시작 메뉴에서 PowerShell을 검색하고
    관리자 권한
    으로 실행합니다.
  2. 설치 명령어 입력
    아래 명령어를 입력합니다.
PowerShell (Administrator)
wsl --install
  1. 설정 완료
    재부팅 후 자동으로 열리는 Ubuntu 터미널에서 계정명(username)과 비밀번호(password)를 설정하면 설치가 완료됩니다.

2. Mac 사용자 (UTM) 🔗

Apple Silicon(M1/M2/M3) 사용자는
UTM
가상머신을 추천합니다.
  1. UTM 설치
    UTM 공식 홈페이지에서 설치합니다.
    UTM 다운로드 링크
    최신 dmg 파일을 다운받습니다.
    최신 dmg 파일을 다운받습니다.
  2. Ubuntu Server ISO 다운로드
    Ubuntu 홈페이지에서
    ARM64
    아키텍처용 Server 이미지를 다운로드합니다.
    Ubuntu Server 다운로드 링크
  3. 설치 진행
    UTM 실행 후 '새 가상머신 만들기' -> 'Virtualize' -> 'Linux'를 선택하고 다운로드한 ISO를 마운트하여 설치합니다.
    UTM에서 새 가상머신을 만듭니다.
    UTM에서 새 가상머신을 만듭니다.
    다른 옵션들은 기본값으로 두고, 가상머신 구성이 완료되면 실행 후 리눅스를 부팅합니다.
  4. 설정 완료
    터미널에서 계정명(username)과 비밀번호(password)를 설정하면 설치가 완료됩니다.
    나머지 네트워크 설정 등은 기본값으로 두어도 무방합니다.
🖐️
설치를 하다가 Failed unmounting cdrom.mount 오류가 발생하면, UTM을 종료한 후 이미지를 언마운트 후 다시 실행하여 가상머신을 재부팅하면 해결됩니다.
이미지 언마운트
이미지 언마운트

3. 꿀팀 - ssh로 접속하기 (선택 사항) 🔗

이건 특히 UTM 사용자에게 유용한 팁입니다.
가상머신을 실행한 후 우분투에서 ifconfig 명령어로 IP 주소를 확인합니다.
Terminal
ifconfig
우분투에 ssh 서버가 기본 설치되어 있지 않다면 다음 명령어로 설치합니다.
Terminal
sudo apt update
sudo apt install openssh-server
호스트 PC에서 터미널(또는 PowerShell)을 열고 다음 명령어로 SSH 접속합니다.
Terminal
ssh username@IP주소
이제 호스트 PC에서 편리하게 리눅스 환경을 사용할 수 있습니다.

🚀

리눅스 파일 시스템 계층 구조 (FHS) 🔗

리눅스는 파일과 디렉토리를
FHS
(Filesystem Hierarchy Standard)라는 표준에 따라 관리합니다.
터미널을 열고 최상위 디렉토리(/)를 조회해 봅시다.

실습: 루트 디렉토리 조회 🔗

Terminal
ls -F /
ls -F /
ls -F /
출력된 디렉토리 중 보안기사 시험에 자주 출제되는 핵심 디렉토리의 역할은 다음과 같습니다.
리눅스 트리 구조
리눅스 트리 구조

🚀

/etc/passwd 파일 상세 분석 🔗

시스템에 등록된 모든 사용자 계정 정보가 담긴 파일입니다.
cat 명령어를 이용해 직접 내용을 확인해 보겠습니다.

실습: passwd 파일 확인 🔗

Terminal
cat /etc/passwd | head -n 5
출력 결과의 한 줄을 분석하면 다음과 같습니다.
/etc/passwd 예시
root:x:0:0:root:/root:/bin/bash

필드별 분석 (시험 포인트) 🔗

  1. 사용자명 (Login Name)
    : 로그인 ID입니다.
  2. 패스워드 (x)
    : 실제 패스워드는 /etc/shadow에 암호화되어 저장되므로 x로 표시됩니다.
  3. UID (User ID)
    : 사용자 식별 번호입니다.
    • 0
      :
      root
      (관리자) 권한.
    • 1~999
      : 시스템 계정.
    • 1000~
      : 일반 사용자.
  4. GID (Group ID)
    : 사용자가 속한 기본 그룹의 ID입니다.
  5. 설명 (Comment)
    : 사용자에 대한 부가 정보입니다.
  6. 홈 디렉토리
    : 로그인 시 위치할 디렉토리 경로입니다.
  7. 로그인 쉘 (Shell)
    : 사용할 쉘 프로그램입니다.
    • /bin/bash: 정상적인 쉘.
    • /sbin/nologin: 로그인이 불가능한 쉘 (보안상 시스템 계정에 설정).

[보안 핵심] UID 0 식별 🔗

정보보안기사 실무(작업형)에서 자주 나오는 항목입니다.
UID가 0인 계정은 이름과 상관없이 root 권한을 가집니다.
따라서 공격자가 생성한 백도어 계정을 찾으려면 다음 명령어를 사용해야 합니다.
Terminal
 # UID가 0인 계정을 모두 출력 (root 외에 다른 계정이 나오면 해킹 의심)
awk -F: '$3 == 0 {print $1}' /etc/passwd

🚀

/etc/shadow 파일과 암호화 🔗

사용자의 실제 패스워드가 암호화되어 저장된 파일입니다.
보안을 위해 관리자 권한(sudo)이 있어야만 읽을 수 있습니다.

실습: shadow 파일 확인 🔗

Terminal
sudo cat /etc/shadow | head -n 2
출력 결과는 다음과 같은 형식을 가집니다.
/etc/shadow 예시
root:$6$SALT...:19720:0:99999:7:::

필드별 분석 🔗

  1. 사용자명
    : 계정 ID입니다.
  2. 암호화된 패스워드
    : $ID$Salt$Hash 형식입니다.
    • $1
      : MD5 (취약)
    • $5
      : SHA-256
    • $6
      : SHA-512 (권장)
    • !!
      또는
      *
      : 패스워드가 잠겨있음(Lock)을 의미.
  3. 최종 변경일
    : 1970-01-01부터 패스워드 변경일까지의 일수(Days)입니다.
  4. 최소 사용 기간 (Min)
    : 변경 후 최소로 사용해야 하는 기간입니다.
  5. 최대 사용 기간 (Max)
    : 패스워드 변경 없이 사용할 수 있는 최대 기간입니다. (보안 설정 시 90일 권장)
  6. 경고 기간 (Warn)
    : 만료 전 경고 메시지를 보여주는 기간입니다.
  7. 비활성 기간 (Inactive)
    : 만료 후 계정이 잠기기 전까지의 유예 기간입니다.
  8. 만료일 (Expire)
    : 계정이 영구 정지되는 날짜입니다.

🚀

쉐도우 패스워드 정책 관리 🔗

리눅스 시스템은 보안을 위해 passwd 파일과 shadow 파일을 분리하여 관리하는
쉐도우 패스워드 정책
을 사용합니다.

관련 명령어 🔗

실습: 쉐도우 적용 여부 확인 🔗

Terminal
 # /etc/passwd의 두 번째 필드가 'x'인지 확인
grep root /etc/passwd
 # 출력: root:x:0:0... (x가 있으면 적용됨)

🚀

[심화] /etc/login.defs 파일 🔗

사용자 생성 시(useradd) 적용되는 패스워드 관련 기본 설정 파일입니다.
시험에서 설정값을 확인하거나 수정하는 문제가 출제됩니다.

실습: 기본 정책 확인 🔗

Terminal
 # 패스워드 관련 설정만 필터링하여 확인
grep PASS /etc/login.defs

🚀

결론 🔗

오늘 실습한 내용을 바탕으로 정보보안기사 시험 핵심 포인트를 요약합니다.
다음 시간에는
1.2 리눅스 권한 관리
를 다룹니다.
ls -al 명령어로 파일의 소유자와 권한(rwx)을 확인하고, chmod 명령어로 권한을 변경하는 방법을 실습하겠습니다.

참고 🔗