1. 유닉스/리눅스 특징
- 대화식 운영체제 : 사용장와 운영체제간의 상호 작용은 명령어 해석기(shell)을 통해 이뤄짐
- 멀티태스킹 : 여러 개의 명령어를 동시에 처리
- 멀티 유저 : 동시에 어려 사용자가 하나의 컴퓨터를 사용 == > 보안 중요!
- 호환성 및 이식성 : HW구조에 독립적으로 응용 프로그램을 작성할 수 있는 환경
- 다양한 기능의 유틸리티와 개발 환경 제공
[+] 리눅스 구조
- 커널 (Kernel) : 메모리에 상주하여 HW 자원 제어 및 관리 (cpu, mem, 프로세스 스케줄링, 기억장치, 파일 관리, 시스템 호출 등)
- 시스템 호출: 사용자 프로그램이 커널에 접근하는 인터페이스를 제공
- 쉘 (Shell): 명령어 해독기 역할을 수행한다.
[+] 유닉스 파일 시스템 (UFS)
- 파일 시스템 (File System): 계층적 파일시스템으로 구성되어있다. (유/리 계열)
- Boot Block : 부핑 프로그램
- Super Block : 파일 시스템 크기, 블록 수, 빈 블록
- i-node : 파일에 대한 정보를 기억하는 구조체 (약 120byte 고정된 크기)
*** 필드 구성은 파일 대한 정보(소유자,파일크기,블록 주소, 변경정보,생성시간)
> 파일의 이름과 내용은 저장되지 않는다!!!!
- Data Block : 사용자 데이터
[+] 파일 시스템 종류
- 유닉스 Veritas File System(VxFS)와 Network File System(NFS)
> VxFS : 높은 신뢰성과 성능을 가진 파일 시스템==>HP-UX
> NFS : 다른 컴퓨터와 파일을 공유하기 위한 분산 파일 시스템
- 리눅스 Ext2, Ext3, Ext4
> Ext3 : 저널링(journaling) 기능 지원
** 저널링이란?? 시스템 충돌이나 정전과 같은 이벤트로 인해 발생할 수 있는 파일시스템 손상을 신속하게 복구하는 기능
** 삭제 파일 복구가 용이하지 않는 등 개선해야 될 점이 많음
> Ext4 : Ext3의 단점을 보완한 시스템으로 가장 많이 사용중
** 시스템 점검 속도 향상, 파일복구 용이, 16TB까지 단일 파일 크기를 지원 (가장 많이 사용)
- 이 외에도 XFS, JFS, Btrfs와 같은 다른 파일 시스템도 사용 가능
- 또한, 리눅스는 윈도우즈와 호환성을 가지기 위해 FAT32, NTFS와 같은 외부 파일 시스템도 지원
[+] 파일 시스템 관리
- 디스크를 파티션(논리적)으로 분할 후 FS생성하고 특정 디렉터리에 마운트하여 사용
- mount란?? 보조기억장치에 장착 및 설치된 FS을 UNIX/LINUX에 인식하도록 특정 디렉터리에 연결(논리적)
2. 프로세스
- PID가 0인 프로세스를 제외한 모든 프로세스는 부모 프로세스를 갖음
- > ps aux 또는 pstree 또는.. 등등 존재
[+] 프로세스 종류
- swapper (PID 0)
- 부팅 시간 동안 운영체제에 의해서 생성 (커널 프로세스)
- init(systemd)와 pagedaemon 프로세스를 만들기 위해서 fork/exec를 두 번 실행
- fork: 새로운 프로세스를 생성하기 위해 복사본 프로세스 생성
- exec: 프로세스 이미지가 전이 되어 PID는 동일하지만 다른 프로세스로 덮어짐
- init or systemd (PID 1)
- 부팅의 마지막단계에서 Lun Level에 따른 시스템 초기화 작업을 진행한다.
- 자식프로세스가 존재하는 상태에서 부모 프로세스가 종료되게 되면 자식프로세스의 부모 프로세스는 init 프로세스가 된다.
- pagedaemon (PID 2)
- swapper와 함께 커널에서 영구적으로 실행되는 프로세스이다. (커널 프로세스)
- 고아 프로세스
- 부모 프로세스가 자식 프로세스보다 먼저 종료되었을때 발생한다.
- 좀비 프로세스
- 프로세스가 종료되었지만 부모 프로세스가 확인하지 못한 경우 프로세스는 소멸되었지만 프로세스 관리 정보가 남아 있는 경우
- 확인 방법: ps -l 명령어를 입력하면 상태정보가 Z로 표시되게 되고 파일명 뒤에 <defunct>가 표기
- 좀비 프로세스가 많아져서 더 이상 프로세스를 생성하지 못하는 시스템 가용성에 문제 발생 가능
- 좀비 프로세스 종료 방법
#top -b -n 1 | grep zombie
#ps -ef | grep defunct
2. 파일 속성 및 권한
[+] 파일/ 디렉터리 접근 권한
권한(RWX) | 파일 | 디렉터리 |
읽기(4) | 읽기 / 복사 | 목록 확인 (ls명령어 실행 권한 필요) |
쓰기(w:2) | 수정/이동/삭제(디렉터리 쓰기 권한 필요) | 파일을 생성/삭제 (mkdir,rm,rmdir,touch 등) |
실행(x:1) | 파일 실행 (쉘 스크립트 또는 실행 파일의 경우) |
파일을 이동하거나 복사 가능 (cd명령 사용 가능 |
[+] chmod 명령어
- 권한 변경
chmod [옵션] [권한] [파일명]
- 옵션: -R (하위 디렉토리 및 파일 모두에 적용)
- 권한: u(소유자), g(그룹), o(기타 사용자), a(모든 사용자) +, - (추가, 제거), r(읽기 권한), w(쓰기 권한), x(실행 권한)
- 파일명: 권한을 변경할 파일명 또는 디렉토리명
[+] ls 명령어
- 파일 또는 디렉토리의 권한 확인
ls -l [파일명]
- 옵션: -l (상세 정보 표시)
- 파일명: 권한을 확인할 파일명 또는 디렉토리명
[+] chown 명령어
- 파일 소유자 및 그룹을 변경
chown [옵션] [소유자:그룹] [파일명]
- 옵션: -R (하위 디렉토리 및 파일 모두에 적용)
- 소유자: 변경할 파일의 소유자
- 그룹: 변경할 파일의 그룹
- 파일명: 소유자 및 그룹을 변경할 파일명 또는 디렉토리명
[+] umask 명령어
- 파일 및 폴더 생성시 기본 권한 설정
- 기본값은 보통 022 또는 002로 설정
- 022는 파일 소유자에게는 모든 권한을 허용하고, 그룹과 기타 사용자에게는 쓰기 권한을 제외한 모든 권한 제한
- 002는 파일 소유자와 그룹에게는 모든 권한 허용하고, 기타 사용자 쓰기 권한 제외한 모든 권한 제한
3. 계정 정보
- /etc/passwd : 기본적으로 사용자의 정보
- /etc/shadow : 기본적으로 패스워드 정보
A : 사용자, B: 패스워드, C: UID, D: GID, E:사용자 기타 정보 ,F: 홈디렉터리, G: 명령어 처리 셀 종류
4. 특수 파일
권한(3bit) | 8진수 | 설명 | 찾기 | 삭제 |
SetUID(s) | 4000 | 일시적 소유자 권한으로 실행 | #find / -perm 4000 -print | #chmod -s <file_name> |
SetGID(s) | 2000 | 일시적 그룹 권한으로 실행 | #find / -perm 2000 -print | |
sticky-bit(t) | 1000 | 임시 디렉터리(/tmp) | #find / -perm 1000 -print |
** 취약점 : SUID(Set User-ID)와 SGID(Set Group-ID)가 설정된 파일(특히, root 소유의 파일인 경우) 특정 명령어를 실행하여
root 권한 획득 및 정상 서비스 장애를 발생시킬 수 있으며, 로컬 공격에 많이 이용되므로 보안상 철저한 관리 필요
** 주기적 검사 : #find / -user root -type f \( -perm -04000 -o -perm -02000 \) -xdev -exec ls -al {} \;
주통기반 자료 참고
■ 보안설정 방법
◆ OS별 점검 파일 위치 및 점검 방법
- SunOS, Linux, AIX, HP-UX
OS별 주요 파일에 대한 SUID/SGID 설정 여부 확인
#ls -alL [check_file] | awk '{print $1}' | grep -i 's'
※ 주요 파일에 불필요한 SUID/SGID 가 설정된 경우 아래의 보안설정 방법에 따라 SUID/SGID를 제거
■ SunOS, Linux, AIX, HP-UX
1. 제거 방법
#chmod -s <file_name>
2. 주기적인 감사 방법
#find / -user root -type f \( -perm -04000 -o -perm -02000 \) -xdev -exec ls -al {} \;
==> 해당내용은 시험에 자주 출제
3. 반드시 사용이 필요한 경우 특정 그룹에서만 사용하도록 제한하는 방법
일반 사용자의 Setuid 사용을 제한함 (임의의 그룹만 가능)
#/usr/bin/chgrp <group_name> <setuid_file_name>
#/usr/bin/chmod 4750 <setuid_file_name>
5. 로그 파일
로그 | 설명 | 명령어 |
wtmp | 로그인/로그아웃 정보 | last |
utmp | 현 사용자 정보 | w, who, whodo, user, finger |
btmp | 로그인 실패 정보 기록 | lastb |
lastlog | 각 사용자의 최근 로그인 정보 (마지막 로그인) | lastlog,finger |
pacct | 사용자가 로그인~아웃까지 입력한 명령어 | lastcomm,acctcom |
secure | 원격 접속 정보 | |
syslog | 모든 로그 |
6. 부팅단계 (Run Level)
- 시스템의 운영 상태 정의, 시스템 부팅시 시작되거나 중지되는 서비스 결정
- Runlevel 0 : 시스템 정지 (종료)
- Runlevel 1 : 단일 사용자 모드, 유지 보수 모드, 루트 사용자 만 로그인하여 시스템 유지 관리 작업 수행
- Runlevel 2 : 다중 사용자 모드(네트워크 X), 일반적으로 파일 및 프린트 서버에 적합
- Runlevel 3 : 다중 사용자 모드(네트워크 O, CLI), GUI 필요하지 않은 서버에 적합
- Runlevel 4 : 정의되지 않았으며, 종종 사용되지 않거나 미래의 사용을 위해 예약
- Runlevel 5 : 다중 사용자 모드로, 그래픽 사용자 인터페이스 (GUI)가 포함 된 시스템에 적합
- Runlevel 6 : 시스템 재부팅 (리부팅)
'소소한 IT이야기 > 정보보안기사 필기' 카테고리의 다른 글
[시스템 보안] 버퍼 오버 플로우 ---002 (2) | 2023.03.05 |
---|---|
[보안기사]필기 기출 문제 정리 (feat. 18회차) (3) | 2023.02.26 |
[보안기사]필기 기출 문제 정리 (feat. 17회차) (0) | 2023.02.26 |