반응형
1. UNIX 구성
- 커널(Kernel)
- 항상 메모리에 상주하여 하드웨어 자원을 제어하면서 다양한 기능을 제공
- 시스템 호출(System Calls)
- 커널 내에 서브루틴 형태로 존재하며, 사용자 프로그램이 커널에 접근하는 인터페이스 제공
- 입출력 시스템 호출, 프로세스 간 통신 시스템 호출, 프로세스 관리 시스템 호출 등으로 분류
- 셸(Shell)
- 운영체제와 사용자가 대화하기 위한 기반을 제공하는 프로그램
- 본 셸(sh), C 셸(csh), 콘 셸(ksh), 배시 셸(bash) 종류가 다양함

- 파일 시스템(FIle System)
- UNIX 파일시스템의 디렉터리는 계층화된 트리 구조를 가지며, 최상위 디렉터리는 루트라고 함
- 리눅스는 minix, ext2, ext3(Journaling) 와 같은 다양한 파일 시스템 지원
- 저널링(Journaling) : 데이터를 디스크에 쓰기 전, 로그에 데이터를 남겨 안정적인 복구기능을 제공하는 기술
- i-node
- 각 파일에 대한 정보를 기억하는 약 120byte의 고정된 크기의 고정체
- 각 파일에 대한 디스크 블록의 주소를 저장하고, 소유권, 그룹, 최근 수정된 시간 등과 같은 파일 정보를 포함
- 단, i-node에는 파일명이 없으며 파일명은 디렉터리를 통해 관리
- 특수 파일의 i-node는 주변 장치를 식별할 수 있는 정보를 포함
- ls -l 명령에 의해 출력되는 결과는 해당 파일의 i-node를 참조
- Super Block
- 파일 시스템의 정보를 유지하는 자료구조로, 좀 더 효과적인 파일시스템의 관리를 가능케함
- 사용하지 않는 i-node를 할당받기 위해 i-node 리스트를 순차적으로 하나씩 비교하는 건 비효율적
- 파일 시스템의 요약정보와 사용하고 있지 않은 i-node와 디스크 블록의 위치정보를 가짐
- 주요 디렉터리
- /etc : 시스템의 환경 설정 및 주요 설정 파일을 담음
- /dev : 프린터나 터미널 같은 물리적인 장치를 다루기 위한 특수 파일을 담음
- /usr/bin : 기본적으로 실행 가능한 파일을 담음 (echo, my, copy, pwd 등)
- /usr/include : C언어 라이브러리 헤더 파일을 닫음
- /usr/lib : 기본 프로그램 모듈을 담음
- /usr/sbin : 시스템 관리 명령어를 담음
- /home : 사용자의 홈 디렉터리가 저장됨
- /tmp : 프로그램 실행 및 설치시 생성되는 임시 파일을 담음
- /var : 시스템 로그를 담음


2. 리눅스 디렉터리 및 파일 확인(ls)
- ls 명령어 문법
| 문법 | 옵션 |
| -l | list 형태로 디렉터리 및 파일 정보를 자세히 출력 |
| -a | 숨김 파일을 포함하여 디렉터리 내에 있는 모든 디렉터리 및 파일 정보 출력 |
| -R | 하위 디렉터리에 있는 내용까지 출력 |
| -F | 어떤 종류의 파일인지 출력 (디렉티러 /, 실행 파일 *, 심볼릭링크 @) |
| -i | i-node 번호 출력 |
| 예문 | ls -al *.c // .c로 끝나는 모든 디렉터리 및 파일 출력 |
- ls 명령어 실행


| 문자 | 파일 유형 |
| - | 일반 파일 |
| d | 디렉터리 파일 |
| l | 심볼릭 링크 파일 |
| b | 블록 장치 특수 파일 |
| c | 문자 장치 특수 파일 |
| p | 파이프, 프로세스 간 통신에 사용되는 특수 파일 |
| s | 소켓, 네트워크 통신에 사용되는 특수 파일 |
| 권한 | 파일 | 디렉터리 |
| 읽기 r(4) | 파일을 읽거나 복사할 수 있음 | ls 명령으로 디렉터리 목록을 볼 수 있음 |
| 쓰기 w(2) | 파일을 수정, 이동, 삭제할 수 있음 | 파일을 생성, 삭제할 수 있음 |
| 실행 x(1) | 파일을 실행할 수 있음 | 파일을 디렉터리로 이동하거나 복사할 수 있음 |
| 파일의 경우 666, 디렉터리의 경우 777을 기본 값으로 취함, 단 umask로 지정한 값만큼 기본 값에 뺌 | ||
3. UNIX 프로세스 응용
- PID 0인 swapper(sched)는 부팅 동안 운영체제에 의해서 생성됨, PID 0을 제외한 모든 프로세스는 부모 프로세스를 가짐
- 이 프로세스는 PID 1인 init과 PID 2인 pagedaemon을 만들기 위해 fork() 와 exec를 실행
- 해당 프로세스들은 그 중요성 때문에 커널 모드에서 영구적으로 실행되며 커널 프로세스라고 부름
- 시스템 내 모든 프로세스들은 init 프로세스의 자손이 됨
- 좀비 프로세서(Zombie Process)
- 실제로 진행되고 있지는 않지만 프로세스 테이블 차지함
- kill 명령으로 제거할 수 없음
- SIGCHLD 시그널을 보내 부모 프로세스가 자식 프로세스를 정리하거나 부모 프로세스 자체를 종료시킴
- 부모 프로세스가 종료되면 좀비 프로세스는 고아 프로세스가 되고 새로운 부모는 init이 됨
- init 프로세스는 자식 프로세스의 종료 정보를 주기적으로 확인 후 정리
4. UNIX 시스템 부팅
- 런 레벨(Run Level)
- init 프로세스는 /etc/inittab 파일에 정의된 런 레벨에 따라 시스템 운영 상태 구성
- 0 : PROM(Programmable Read-Only Memory) 모드 (리눅스는 시스템 종료 모드)
- S, s : 시스템 싱글 유저 모드, 로컬 파일시스템이 마운트 되지 않은 상태
- 1 : 시스템 싱글 유저 모드, 로컬 파일시스템이 마운트 된 상태 (관리자용)
- 2 : 멀티 유저 모드(NFS 클라이언트 모드)
- 3: 멀티 유저 모드(NFS 서버 모드, UNIX 기본 Run Level)
- 4 : 사용 안함
- 5 : 시스템 종료 모드 (리눅스는 X윈도우 환경의 멀티 유저 실행 모드)
- 6 : 시스템 리부팅
- shutdown 명령은 시스템을 안전하게 종료 및 런레벨 변경을 위해 사용
- 하드디스크 동기화는 시스템을 종료하는 중에 해야 할 가장 중요한 작업
5. UNIX 파일 시스템 관리(mount, unmount)
- 보조기억장치에 들어 있는 데이터와 파일시스템을 UNIX 시스템이 인식하도록 특정 디렉터리에 논리적으로 연결
- /etc/mtab 파일은 시스템에 마운트 된 파일시스템의 정보를 관리
- unmount는 이전에 마운트 된 파일시스템의 연결을 해제
| 문법 | 옵션 |
| -a | /etc/fstab 파일에 정의 된 모든 파일 시스템을 마운트 |
| 예문 | mount // 마운트 정보 출력 mount -a // /etc/fstab 파일을 기반으로 명시적으로 실행 mount /dev/cdrom /mnt/cdrom // /dev/cdrom 디바이스 파일을 /mnt/cdrom 에 마운트 unmount -a // 마운트 된 모든 파일시스템 언마운트 unmount /mnt/cdrom // //mnt/cdrom 디렉터리 언마운트 |

6. UNIX 프로세스 스케줄 관리(crontab)
- cron 데몬 프로세스는 UNIX 시스템에서 정기적인 작업을 지정시간에 처리하기 위해 사용
- /etc/default/cron 파일은 로그 기록 여부를 남기는 CRONLOG 변수가 설정됨, 기본 값은 YES
- 해당 프로세스를 사용하기 위헤선 다음 세 가지 구성요소가 필요
- 작업 목록을 정의한 crontab 파일
- crontab 파일을 제어하는 crontab 명령어
- crontab 파일을 읽어서 작업을 처리하는 cron 데몬 프로세스

| 구분 |
정의 | |
| 필드1 | 분 | 0~59 까지 정의 |
| 필드2 | 시 | 0~23 까지 정의 |
| 필드3 | 일 | 1~31 까지 정의 |
| 필드4 | 월 | 1~12 까지 정의 |
| 필드5 | 요일 | 0~6 까지 정의 |
| 필드6 | 작업 | 실행할 작업을 절대 경로로 정의 및 필요한 옵션 및 인수 나열 |
| 예시 | /20 * * * 1-5 /work/batch.sh // 매월 매일 월~금 20분마다 batch.sh 명령 실행 #/20 * * * 1-5 /work/batch.sh // 주석 되어있으므로 실행X |
|
| 문법 | 옵션 |
| -e | crontab 파일 편집 |
| -l | crontab 파일 출력 |
| -r | crontab 파일 삭제 |
| 예문 | mount -u admin -e // admin 계정으로 crontab 파일 편집 mount -e // 자신의 cronta 파일 편집 |
7. UNIX 사용자 패스워드 파일(passwd, shadow)
- /etc/passwd
- 시스템 관리자는 사용자 계정을 만들 때마다 사용자의 정보를 해당 파일에 저장
- pwunconv 명령어를 실행하면 두 번째 필드에 패스워드가 저장되고, pwconv 명령어를 실행하면 원래 상태로 롤백

- etc/shadow
- 계정별 암호화된 패스워드와 관리정책인 패스워드 에이징을 저장한 파일
- 관리자(root)만 열람 가능함

8. UNIX 권한 상승(SetUID, SetGID)
- RUID : 프로세스를 실행시킨 사용자의 UID
- RGID : 프로세스를 실행시킨 사용자의 GID
- EUID : 접근 권한을 판단하기 위해 프로세스를 실행 동안에만 부여되는 UID
- EGID : 접근 권한을 판단하기 위해 프로세스를 실행 동안에만 부여되는 GID
- 최초로 실행했을 때는 RUID와 EUID, RGID와 EGID가 각각 같은 값을 가짐
- SETUID 비트를 가진 프로그램 실행 시 일치하지 않게 됨, 즉 프로그램은 관리자 권한을 얻읃
- SETUID 비트가 설정된 파일은 여러 공격에 이용되므로 설정된 파일을 목록화하여 관리하는 작업 필요
- find / -perm 7000 : suid, sgid, sticky bit 비트가 모두 설정된 파일 검색
- SETGID 비트가 설정된 파일은 사용자의 권한이 아닌 프로그램 소유주의 권한이 됨
| 파일 종류(4bit) | 특수권한(3bit) | user, group, other(3bit) | ||||
| -, d, c, s, b, s, l, p | 4 | 2 | 1 | 4 | 2 | 1 |
| suid(s) | sgid(s) | sticky-bit(t) | r | w | x | |
| 예시 | chmod 1644 파일이름 // 특수 권한 sticky bit 추가 (파일 생성만 가능, 파일 삭제 및 변경이 소유자만 가능) -r-Sr-sr-x // user 자리에 있는 S 기호는 SetUID (대문자는 파일 실행 권한이 없음) group 자리에 있는 s 기호는 SetGID (소문자는 파일 실행 권한까지 있음) |
|||||
9. inted 데몬(슈퍼 서버)
- UNIX 시스템에는 다양한 종류의 서버 프로그램이 실행되고 있음
- inted 데몬은 개별 서버를 하나로 통합하여 서비스 요청이 올 때마다 관련 실행 모듈을 실행해줌
- inted에 의해 불린 후에는 서비스 종료 후에 종료됨
- tcp에 의해 /etc/hosts.allow, /etc/hosts.deny 파일로 접근 제어
- /etc/inted.conf 파일에서 서비스 설정이 가능

| 속성 | 정의 |
| 1 | 서비스 이름을 정의함, /etc/services에 정의되어 있어야함 |
| 2 | 소켓 유형을 설정함, TCP면 stream, UDP면 dgram |
| 3 | /etc/protocls 에 정의된 프로토콜 종류와 번호, 임의로 정해지는 것이 아닌 표준 |
| 4 | 서비스 처리를 즉시할 것 인지를 설정함, nowait과 wait으로 구분 |
| 5 | 데몬을 어떤 사용자의 권한으로 수행할 것 인지를 설정함 |
| 6 | 해당 서비스를 수행하기 위해 어떤 프로그램을 실행한지 설정함, 절대 경로로 적음 |
| 7 | 인자(hosts.allow, hosts.deny), 리눅스는 inted 데몬보다 xinted를 더 많이 사용 |
10. standalone 데몬
- xinted와는 다르게 독립적으로 실행되는 서비스 데몬
- 항상 메모리에 독립 데몬으로 상주
- tcp와는 무관하지만 자체 설정 파일에 의해 접근 제어를 할 수 있음
11. TCPWrapper(접근 통제)
- 외부에서 들어오는 클라이언트의 IP 주소를 확인하며 접근 통제 기능을 제공
- inted 데몬은 TCPWrapper의 데몬인 tcpd 데몬에 연결을 넘겨줌
- tcpd 데몬은 접속을 요구한 클러이언트가 적절한 접근 권한이 있는지를 확인하고, 해당 데몬에 연결을 넘겨줌, 로깅도 실행함
- standalone 데몬처럼 inted 데몬이 통제할 수 없는 경우의 TCPWrapper는 모든 프로토콜에 대한 접근 제어를 할 수는 없음
- hosts.allow, host.deny 파일에 정의된 호스트 정보를 기준으로 함, allow의 우선 순위가 더 높음
- 설정의 오류 확인을 위해 /usr/sfw/sbin/tcpdchk를 실행
| hosts.allow | hosts.deny | 설명 |
| ALL: 192.168.1.1 | ALL:ALL | 192.168.1.1 IP 주소는 모든 서비스가 이용 가능 |
| in.telnetd: 192.168.1.0/255.255.255.0 in.ftpd: 192.168.1., |
ALL:ALL | 192.168.1.0/24 주소는 telnet과 ftp 서비스 이용 가능 |
| in.telnetd: .aaa.co.kr | ALL:ALL | aaa.co.kr 도메인에 속한 모든 호스트는 telnet 서비스 이용 가능 |
| ALL: LOCAL | ALL:ALL | 같은 네트워크에 있는 모든 호스트는 모든 서비스 이용 가능 |
| ALL EXCEPT in.telnetd: ALL | ALL:ALL | 모든 호스트는 telent 서비스 제외하고 모든 서비스 이용 가능 |
| in.telnetd : 192.168.1. EXCEPT 192.168.1.5 | ALL:ALL | 192.168.1.5 IP를 제외한 192.168.1.0/24 주소는 telnet 이용 가능 |
12. PAM(Pluggable Authentication Modules, 장착형 인증 모듈)
- 사용자 인증의 핵심이며, 각 응용 프로그램에 대한 사용자 권한, 접근 자원 등을 선택할 수 있는 라이브러리
- 시스템 관리자는 다양한 인증 서비스를 선택할 수 있고, 기존 응용 프로그램을 수정할 필요 없이 새로운 인증 서비스 모듈 추가
- /etc/pam.d 에서 설정
- auth required lib/security/pam_securetty.so →root 계정 로그인 가능 장치를 제한 (예)
- 인증 절차
- 각 프로그램(login, telnet, ftp) 등 인증이 필요한 부분에 PAM 라이브러리 호출
- PAM 라이브러리가 호출되면 해당 프로그램의 PAM 설정 파일을 참조하여 모듈 수행 및 응용 프로그램에 반환
- 응용 프로그램은 그 반환된 결과로 인증여부 결정

13. UNIX/LINUX 서버 취약점 분석 및 평가
- root 계정 원격 접속 제한(가상 터미널 root 로그인 허가 확인)
- cat /etc/pam.d → auth required lib/security/pam_securetty.so
- cat /etc/securetty → pts/0 ~ pts/x
- root 이외의 UID '0' 금지
- 침입자에 의한 무차별 대입 공격 및 패스워드 추측 공격 발생 시 암호 입력 실패 횟수를 적정
- cat /etc/shadow→ 여부 확인
- 계정 잠금 임계값 설정
- 침입자에 의한 무차별 대입 공격 및 패스워드 추측 공격 발생 시 암호 입력 실패 횟수를 적정
- cat /etc/pam.d/system-auth →auth required /lib/security/pam_tally.so deny=5
- 패스워드 파일 보호
- 패스워드 파일을 평문으로 저장하면 정보 유출 피해 발생할 수 있으므로 암호화하여 저장
- cat /etc/shadow→ 여부 확인
- cat /etc/passwd→ 두번째 필드가 "x" 인지 확인
- 패스워드 최소 길이, 최대 및 최소 사용기간 설정
- cat /etc/login.defs→ 사용자 계정의 설정과 관련된 기본 값을 정의한 파일
- $HOME/.rhosts, hosts.equiv 시용 금지
- 'r'command (인증 없이 관리자의 원격접속을 가능하게 하는 명령어들로, rsh, rlogin, rexec 등이 있음) 사용 자제
- 사용이 불가피할 때는 $HOME/.rhosts 및 /etc/hosts.equiv 에서 소유자를 root 및 해당 계정으로 변경
- 파일 권한도 600 이하로 변경하고 '+'를 제거
- ls -al $HOME/.rhosts→ rw-------
- ls -al /etc/hosts.equiv→ rw-------
반응형
'IT Dictionary > 정보보안산업기사' 카테고리의 다른 글
| 악성 소프트웨어 및 보안 위협 공격 종류 (1) | 2025.12.25 |
|---|---|
| 윈도우 및 리눅스 로그 관리 (0) | 2025.12.23 |
| 윈도우 서버 보안(Windows Server Security) (0) | 2025.12.14 |
| 보안 운영체제(Secure OS) (0) | 2025.12.04 |
| 접근통제 보안위협 및 대응책 (0) | 2025.12.02 |