Post

[정보보안기사 실기] 시스템보안: 시스템 기본 개념

정보보안기사 실기 1과목 시스템보안 파트 대비 이론 정리입니다.

윈도우 시스템

TBA.

Unix/Linux 시스템 기본

시스템 기본

사용자 정보
passwd 파일 (경로: /etc/passwd)
콜론(:)을 구분자로 7개의 필드로 구성
[사용자계정명]:[사용자PW]:[uid]:[gid]:[설명]:[home dir]:[login shell]
1) 사용자PW
사용자 pw에 설정된 ‘x’의 의미는 비밀번호를 설정하지 않았다는 의미가 아니라 shadow 패스워드 정책을 사용한다는 의미(별도의 /etc/shadow 파일에 암호화된 패스워드 저장)
2) UID
UID는 같을 수 있움(서로 다른 계정명을 사용하는 같은 사용자로 판단)
root 계정은 UID=0 고정
따라서, UID를 0으로 조작하는 공격이 발생하지 않도록 주기적으로 부적절하게 UID=0인 일반 사용자 계정이 있는지 점검이 필요
3) GID
모든 사용자는 하나의 primary group에 필수적으로 속핳며 필요시 하나 이상의 secondary group에 속할 수 있다.
primary group: 사용자에게 그룹 권한 부여와 함께 사용자의 자원 생성시 자원의 소유그룹을 결정
secondary group: 추가 그룹 권한 필요시 다른 그룹에 소속될 수 있음

1
2
id z3rotig4r  
> uid=1000(z3rotig4r) gid=1000(z3rotig4r) groups=1000(z3rotig4r),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),116(netdev),999(docker)

4) 설명
사용자 관련 기타 정보(예: 이름)가 설정
5) home directory
사용자가 로그인 성공 후 위치할 홈 디렉터리가 설정
6) login shell
사용자가 로그인 성공 후 동작할 셸 프로그램이 설정
기본: bash shell
로그인 완료 후 실행파일이 동작하게 할 수도 있기 때문에, 사용자 로그인 시 악성 셸이 실행되도록 설정하는 공격이 발생하지 않도록 주기적으로 점검 필요

그룹 정보
group 파일 (경로: /etc/group)
콜론(:)을 구분자로 4개의 필드로 구성
[그룹명]:[그룹PW]:[그룹ID]:[그룹에 소속된 사용자]
cf. root 그룹은 GID=0으로 예약
id 명령어를 통해 현재 사용자 계정 관련 또는 지정한 계정에 대한 계정 정보 획득

cf. 사용자 패스워드 변경: passwd 명령어
슈퍼유저(root)는 자신을 포함한 모든 사용자의 pw 변경 가능
일반 사용자는 자신의 pw만 변경 가능

입출력 재지정(I/O Redirection) 기능
프로그램을 실행하면 커널에 의해 프로세스가 생성되고 해당 프로세스는 기본 입출력을 위한 아래 3개의 파일(통신 채널)을 오픈
1) 표준 입력(STDIN, FD:0)
키보드로부터 입력받기 위한 파일(통신 채널) 2) 표준 출력(STDOUT, FD:1)
수행 중에 발생한 정상 메시지를 모니터(터미널 화면)로 출력하기 위한 파일(통신 채널)
3) 표준 에러(STDERR, FD:2)
수행 중에 발생한 에러 메시지를 모니터(터미널 화면)로 출력하기 위한 파일(통신 채널)

=> 재지정 기능은 따로 파일로 입출력을 재지정하는 기능을 의미
example

1
2
3
command (0)<file_name # 입력  
command (1/2)>file_name # 출력(숫자 지정 안 하면 stdout이 default)  
command 1>>file_name # append 모드  

Pipe 또는 Pipeline 기능
프로세스 간 통신을 위한 기법
선행 프로세스의 표준출력을 후행 프로세스의 표준입력으로 전달해주는 기능

1
ps -ef | grep httpd  

Meta Character(특수 문자)
~: home directory
.: 현재 directory
..: 상위 directory
$: 셸 변수
&: 백그라운드 모드로 실행
*, ?, ;, |, <, > 등

파일시스템

디스크는 각각 논리적인 파티션으로 구성되며, 파티션별로 고유한 파일시스템을 생성
구성: Boot Block + Super Block + i-node list + Data Block
1) Boot Block: OS 부팅하거나 초기화하기 위한 bootstrap 코드를 담고 있는 블록
2) Super Block: 파일시스템을 관리하기 위한 정보를 담고 있는 블록
3) i-node list: inode number, 파일타입, 접근권한, link count, 소유자, 소유그룹, 파일크기, MAC Time, Block index(data block에 저장된 파일 데이터에 대한 인덱스 정보)
i-node 구조체 리스트로 구성되어 있으며, i-node에는 파일명이 없고 파일명은 디렉터리를 통해 관리됨.
침해 사고 발생하면 시스템 파일에 대한 무결성 확인을 위한 타임라인 분석 수행. 이때, 파일시스템에 있는 inode 구조체의 MAC Time을 점검

1
2
3
4
5
6
7
8
9
stat /etc/passwd
%   File: /etc/passwd
%   Size: 1589            Blocks: 8          IO Block: 4096   regular file
% Device: 830h/2096d      Inode: 375369      Links: 1
% Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
% Access: 2026-03-23 21:45:28.954848901 +0900
% Modify: 2025-09-09 16:53:06.850917621 +0900
% Change: 2025-09-09 16:53:06.850917621 +0900
%  Birth: 2025-09-09 16:53:06.850917621 +0900

4) Data Block: 실제 파일의 내용이 저장되는 블록으로 고정 크기 블록들로 구성

링크파일
하드 링크: 기존 파일과 동일한 inode number를 가지는 파일을 생성해 접근하는 방식
심볼릭 링크: 동일 파일시스템 내에서만 링크할 수 있고 디렉터리는 링크할 수 없는 하드 링크의 단점을 보완한 방식으로, 원본 파일에 대한 파일의 경로를 파일 내용으로 하는 새로운 파일을 생성해 접근하는 방식(파일 경로 기반으로 링크)

1
This post is licensed under CC BY 4.0 by the author.