[정보보안기사 필기 정리] PART 04. 시스템 보안
SECTION 12. 보안 운영체제
1️⃣ 보안 운영체제
🌐 기본 개념
💠 보안 운영체제의 기술적 핵심은 정보영역의 분리, 역할기반 영역분리, 최소권한 유지, 커널 레벨의 강제적 접근통제(MAC) 등을 들 수 있다.
2️⃣ 보안 운영체제의 주요 제공 기능
🌐 보호 대상 : 메모리, 보조기억장치 상의 파일 또는 데이터의 집합, 메모리상에서 실행중인 프로그램, 파일들의 디렉터리, 하드웨어 장치
🌐 보호 방법
💠 물리적 분리 : 사용자 별로 별도의 장비 사용
💠 시간적 분리 : 프로세스가 동일 시간에 하나씩만 실행
💠 논리적 분리 : 각 프로세스에 논리적인 구역을 지정하는 방법
💠 암호적 분리 : 내부에서 사용되는 정보를 암호화
✔️ 아래로 내려올수록 구현 복잡도 증가
🌐 파일 시스템 보호
💠 파일 보호 기법 : 파일 이름의 명명(naming), 패스워드(password), 암호화(cryptography)
3️⃣ 보안 운영체제와 보안커널
🌐 보안 운영체제의 보안 기능
💠 사용자 식별 및 인증 : 각각의 사용자는 고유하게 식별될 수 있어야 한다.
💠 임의적(DAC)/강제적(MAC) 접근 통제
✔️ 임의적(DAC) : 신분기반 정책, 소속 그룹의 신분에 근거하여 객체에 대한 접근을 제한
✔️ 강제적(MAC) : 규칙기반 정책, 객체의 비밀등급과 주체가 갖는 권한에 근거하여 객체에 대한 접근을 제한
💠 객체 재사용(Object Reuse) 보호 : 할당되는 기억공간에 이전의 데이터가 삭제되지 않고 존재할 때 비밀데이터 노출 위험
💠 완전한 조정 : 임의적/강제적 접근통제가 효과적이기 위해서는 모든 접근을 통제해야한다.
💠 신뢰 경로 : 안전한 경로라고 불리는 안전한 통신을 원하는데 보안 운영체제는 이러한 안전한 경로 제공할 수 있어야한다.
💠 감사 및 감사 기록 축소 : 모든 보안 관련 사건은 감사기록부에 반드시 기록되어야 하고 감사기록부는 보호되어야 한다.
🌐 보안커널
💠 기본 개념 : 참조 모니터를 구현하고 집행한다.
💠 신뢰 컴퓨팅 기반 (TCB, Trusted Computing Base)
✔️ 하나의 컴퓨터 시스템 내의 모든 보호 메커니즘의 총체
✔️ 신뢰된 경로는 사용자, 프로그램 그리고 커널과의 통신채널
✔️ 보안경계는 시스템 구성요소 중 신뢰/비신뢰 구성요소의 경계, 물리적 실체가 아닌 운영시스템에 의해 사용되는 개념적인 부분
💠 보안커널 설계 시 고려사항
✔️ 참조모니터(Reference Monitor) : 모든 접근 통제를 담당하는 추상머신, 격리성, 완전성, 검증 가능성 규칙
✔️ 보안 커널데이터베이스(SKDB, Security Kernel Data Base)를 참조하여 객체에 대한 접근 허가 여부를 결정하여아 한다.
4️⃣ 신뢰 플랫폼 모듈 (TPM, Trusted Platform Module)
🌐 개요
💠 기본 개념 : 신뢰컴퓨팅을 위한 하드웨어/소프트웨어 방법에서 핵심이 되는 하드웨어 모듈
💠 특징
✔️ 신뢰 컴퓨팅의 가장 하단에 위치하는 TPM은 훼손 방지(tamper protected)가 필수적이기에 하드웨어 칩으로 구현 일반적, 소프트웨어로 구현하기도 함
✔️ 신뢰관련 연산으로 암호화키의 생성과 저장, 패스워드 저장, 무결성의 검증, 측정값의 저장, 디지털 인증서 관련 신뢰 연산 제공
🌐 기본 서비스
💠 인증된 부트 서비스 : 각 부분이 사용을 위해 승인된 버전임을 보장한다.
💠 인증 서비스 : TPM의 사설키를 사용하여 설정 정보에 서명함으로써 디지털 인증 만들 수 있다.
💠 암호화 서비스 : 데이터의 암호화를 지원한다.
🌐 TPM 함수
💠 구성요소
✔️ I/O , 암호화 보조 프로세서, 키 생성, HMAC 엔진, 무작위 숫자 발생기, SHA-1 엔진, 전원 탐지, Opt-In, 실행엔진, 비휘발성 메모리, 휘발성 메모리
SECTION 13. 클라이언트 보안
1️⃣ 악성 소프트웨어 (악성코드)
🌐 개요
💠 악성 소프트웨어의 기본 개념
구분 | 컴퓨터 바이러스 (무결성) | 트로이 목마 (기밀성) | 웜 (가용성) |
자기 복제 | 있음 | 없음 | 매우 강함 |
형태 | 파일이나 부트섹터 등 감염 대상 필요 | 유틸리티로 위장하거나 유틸리티 안에 코드 형태로 삽입 | 독자적으로 존재 |
전파 경로 | 사용자가 감염된 파일을 옮김 | 사용자가 내려 받음 | 네트워크를 통해 스스로 전파 |
주요 증상 | 해당 컴퓨터의 시스템 및 파일 손상 | pc 성능 저하, 좀비 pc | 네트워크 성능 저하 |
💠 악성 소프트웨어의 분류
✔️ 독립형과 기생형
◾ 호스트 프로그램이 필요한 악성 소프트웨어 : 바이러스, 논리폭탄, 백도어
◾ 호스트 프로그램이 필요하지않는 악성 소프트웨어 : 웜, 좀비프로그램
✔️ 자기 복제 여부
◾ 자기 복제 여부에 따라 바이러스성 - 비 바이러스성 악성코드로 분류
◾ 바이러스성 악성코드 : 웜, 바이러스
◾ 비-바이러스성 악성코드 : 트로이목마, 백도어
🌐 바이러스 (Virus) : 다른 프로그램을 변형시키도록하여 감염 시키는 프로그램
💠 세대별 분류
✔️ 제 1세대 원시형 바이러스 : 코드의 변형이나 변화 없이 고정된 크기
✔️ 제 2세대 암호화 바이러스 : 바이러스 프로그램의 일부 또는 대부분을 암호화 시켜서 저장
✔️ 제 3세대 은폐형 바이러스 : 감염된 파일의 길이가 증가하지 않은 것 처럼 보이게하며, 감염되기 전의 내용을 보여줘 사용자를 속임
✔️ 제 4세대 갑옷형 바이러스 : 여러단계의 암호화와 다양한 기법을 동원하여 바이러스 분석 어렵게하고 백신 개발 지연
✔️ 제 5세대 매크로 바이러스 : MS사 오피스 제품군 등 매크로기능이 있는 프로그램에서 활동
💠 매크로 바이러스
✔️ 플랫폼과 무관하게 사용, 문서를 감염시키고 코드의 실행부분은 감염시키지 않음,
💠 바이러스 방지책 : 예방
✔️ 탐지, 식별, 제거 능력 필요
✔️ 안티바이러스 필터링 방법
◾ signature scanning (misuse 오용) : 특정 바이러스만 가진 유일한 형태의 Signature를 찾아내는 방법
◾ behavioral virus scanning (anomaly 비정상) : 바이러스가 수행 중에 어떤 행동을 보이는지 추적하는 방법
💠 바이러스 예방
✔️ Windows Script Host, Active X, VBScript, JavaScript는 비활성화 한다.
🌐 웜(Worm)
💠 개요 : 자신을 복제하여 네트워크 연결을 통해 복제본 전송, 다른 시스템에 직접적인 영향을 미치지 않으며 기생하지 않는다.
💠 웜 확산 모델 : 3단계로 이루어 진다.
💠 웜의 실행 : 전파된 시스템에서 시스템의 접근 권한을 확보하고 자신을 실행시키기 위해 버퍼 오버플로우, 포맷 스트링, SQL 삽입, PHP 삽입 등 공격 가능한 시스템의 취약점을 이용한다.
💠 웜 대응책
✔️ 네트워크 기반 웜 방어 : 진입 모니터(Ingress monitors, 진입 필터링 소프트웨어의 일부), 진출 모니터(Egress monitors, 나가는 트래픽에서 스캐닝의 흔적이나 의심스런 행동 모니터링 웹 공격의 출처 잡아내도록 설계)
🌐 트로이 목마(Trojan horse)
💠 개요 : 자신의 실체를 드러내지 않으면서 다른 프로그램의 한 유형처럼 가장하여 활동하는 프로그램
✔️ 자기 복제를 하지 않으며 다른 파일을 감염시키거나 변경 시키지 않음
✔️ 시스템을 통제하는 권한 부여 받게된다 (원격조정, 패스워드 가로채기, 키보드 입력 가로채기, 시스템파일파괴형태)
💠 트로이 목마를 사용하는 다른 목적은 데이터 파괴 : Back Oriffice
💠 스파이 웨어(Spyware) : 트로이 목마의 한 종류이며, 민감한 정보를 수집하여 주기적으로 원격지의 특정한 서버에 보내는 프로그램
🌐 기타 악성 소프트웨어
이름 | 설명 |
논리폭탄 | 조건이 충족되면 트리거가 작동한다. |
백도어(트랩도어) | 기능에 허가받지 않은 접근을 허용하는 프로그램의 변형 |
스패머 프로그램 | 원하지 않는 대량의 전자우편물을 보내는데 사용 |
플러더(Flooders) | 네트워크 컴퓨터 시스템에 대량의 자료를 보내어 서비스 거부 공격을 감행하는데 사용하는 코드 |
2️⃣ 인터넷 활용 보안
🌐 하이퍼 텍스트 전송 프로토콜 (HTTP, Hypertext Transfer Protocol)
💠 영속성
✔️ 비영속적 연결 : 각 요구/응답에 대해 하나의 TCP 연결이 만들어진다.
◾ 클라이언트가 TCP 연결을 열고 요청 → 서버는 응답 보내고 연결 닫음 → 클라이언트는 end-of-file 표시가 나타날 때 까지 데이터를 읽고 그 후 연결을 닫음
✔️ 영속적 연결 : 서버는 응답을 전송한 후 차후의 요청을 위해 연결 열어놓은 상태로 유지
◾ 한번의 연결 이후에 요청/응답을 반복 가능
💠 HTTP 트랜잭션
✔️ 상태코드
구분 | 코드 | 표현 | 설명 |
클라이언트 오류 | 400 | Bad request | 요청 메시지의 문법 오류 |
401 | Unauthorized | 요청 메시지에 적합한 인증 부족 | |
403 | Forbidden | 클라이언트의 요청에 대해 접근을 차단하는 것을 나타냄 | |
404 | Not found | 클라이언트가 서버에 요청한 자료 존재하지 않음 | |
405 | Method not allowed | 요청에 이용한 메소드가 URL에 지원 불가 | |
406 | Not acceptable | 요청한 형식 거부 |
🌐 쿠키 (Cookie)
💠 개요 : 사용자가 인터넷 웹 사이트에 방문할 때 생기는 4KB이하의 파일, 사용자와 웹 사이트를 연결해 주는 정보가 담겨져 있다.
💠 쿠키를 이용한 통신
✔️ 1단계 : 웹 사이트에 사용자가 방문 시 웹사이트는 사용자의 컴퓨터에 쿠키를 만들어 저장
✔️ 2단계 : 사용자가 웹 서버에 접속할 때 사용자 컴퓨터에서 웹 서버로 전송하는 단계
💠 쿠키의 일반적 용도
✔️ 사이트 개인화, 장바구니 시스템, 웹사이트 이용방식 추적, 타깃 마켓팅
💠 쿠키의 구조
✔️ 유효기간, 패스, 도메인
💠 쿠키와 세션의 차이점
쿠키 | 세션 | |
저장위치 | 클라이언트(=접속자 PC) | 웹 서버 |
소멸시기 | 쿠키 저장 시 만료기간 설정 | 브라우저 종료 시 삭제 |
저장타입 | 파일 | 객체 |
속도 | 쿠키 > 세션 | |
보안 | 쿠키 < 세션 | |
저장정보 | 지워지거나 조작되어도 큰 지장이 없는 수준의 정보들 | 사용자나 다른 누군가에게 노출되면 안되는 중요한 정보들 |
💠 쿠키 보안 취약점
✔️ XSS 공격 , 스니핑 공격, 공용 PC에서 쿠키값 유출
💠 HTTP 쿠키 관련 보안 속성
✔️ http only 속성 : XSS 공격에 대응하기 위해 사용
✔️ secure 속성 : https 통신일 경우에만 쿠키 전송, http 통신일 경우에 전송하지 않는다 (기밀성)
💠 쿠키 관리를 통해 온라인 정보보호 정책 강화
✔️ 영속 쿠키 : 클라이언트에 파일 형태로 지속해서 존재하는 쿠키
✔️ 세션 쿠키 : 클라이언트 메모리상에 세션이 유지되는 동안 존재하는 쿠키로 세션이 종료되면 소멸
🌐 세션 : 개별 클라이언트 상태 정보를 서버에 저장하는 기술
🌐 웹 브라우저 보안
💠 웹 브라우저 보안 사용 가능한 영역 (4가지 형태)
✔️ 인터넷 : 다른 세가지 영역에 포함되지 않은 웹 사이트를 위한 영역 (디폴트 : 약간 높음)
✔️ 로컬 인트라넷 : 사용자의 컴퓨터와 네트워크(인트라넷)상에 있는 웹 사이트를 위한 영역 (디폴트 : 낮음)
✔️ 신뢰할 수 있는 사이트 : 사용자가 안전한 콘텐츠를 갖고 있다고 신뢰하는 페이지를 설정하는 웹사이트 영역 (디폴트 : 낮음(보통))
✔️ 제한된 사이트 : 어떤 이유에서든 사용자가 신뢰할 수 없거나 보안 페이지로 설정할 수 없는 웹사이트 영역 (디폴트 : 높음)
SECTION 14. 윈도우 서버 보안
1️⃣ 윈도우
🌐 윈도우 시스템의 구조
💠 개요 : 윈도우 운영체제의 구조는 링 기반으로 5개의 링으로 구분
💠 『 하드웨어 → 하드웨어를 제어하기 위한 HAL(Hardware Abstraction Layer) → 마이크로 커널 → 각종 관리자 』 커널 모드, 응용 프로그램은 사용자 모드로 구분
💠 HAL은 하드웨어와 개발된 소프트웨어 간에 원활한 통신이 가능하게 도와주는 번역자 역할
🌐 윈도우 파일 시스템
💠 FAT16 : 기본 테이블의 크기는 16비트 (하드디스크에 파일을 담는 최소 단위인 클러스터가 32kb이기 때문)
💠 FAT32 : 총 32비트 개의 클러스터를 가질 수 있다, 접근제어 설정 불가능
💠 NTFS : 접근제어가 적용, 결함관리로 인해 좋은 성능 및 보안 훌륭, 개별 폴더와 파일에 사용자 권한 설정가능
✔️ NTFS 디스크 구조
MBR (Master Boot Record) |
VBR | MFT (Master File Table) |
시스템 파일 | 파일 영역 |
◾ MBR : 파티션 생성 시 물리적 디스크의 첫번째 섹터에 위치하는 512-Byte 크기의 영역, 부트코드는 부팅가능 파티션 찾아 운영체제 기동
◾ VBR : 윈도우 부팅을 위한 기계어 코드와 MFT의 시작 주소 등 설정 정보 담고있고 파티션의 가장 마지막 섹터에 VBR 백업본 소유
◾ MFT : 볼륨/파일 시스템에 존재하는 모든 파일과 디렉터리 자료구조 , 다양한 속성 정보들로 구성
◾ 시스템 파일 : MFT를 비롯해 파일들을 복구하는데 사용할 디스크 정보 파일
◾ 파일 영역 : 각 파일에 대한 실제 데이터 저장
✔️ 디스크 파괴형 악성코드의 특징
◾ 디스크 파괴형 악성코드는 MBR, VBR 영역을 훼손
2️⃣ 윈도우 보안
🌐 윈도우 계정, 권한, 인증
💠 기본 사용자와 그룹
✔️ 윈도우 기본 사용자
계정 이름 | 설명 |
Administrator | 관리자 권한의 계정으로 사용자가 사용 가능한 계정 중 가장 강력한 권한 |
SYSTEM | 시스템에서 최고 권한을 가진 계정으로 로컬에서 관리자보다 상위 권한을 가진다. 원격 접속 불가능, 사용자가 이 계정을 사용해 시스템에 로그인 불가 |
Guest | 매우 제한적인 권한을 가진 계정, 기본 설정은 사용 불능 |
✔️윈도우 기본 그룹
그룹 이름 | 설명 |
Administrator | 도메인 자원이나 로컬 컴퓨터에 대한 모든 권한이 있다. |
Guests | 도메인 사용 권한이 제한된 그룹으로 시스템의 설정 변경 권한이 없다. |
Power Users | 디렉터리나 네트워크 공유, 공용 프로그램 그룹 생성, 컴퓨터의 시계 설정 권한이 있다. |
Users | 도메인과 로컬 컴퓨터를 일반적으로 사용하는 그룹, 개개인에 할당된 사용자 환경을 직접 만들 수 있지만, 설정할 수 있는 항목에 한계 존재, 시스템 서비스의 시작 및 종료 권한이 없으며 디렉터리 공유 설정 불가 |
✔️ 운영 체제별 관리자 계정 : Unix : root (0번), Windows : Administrator (500번), Netware : Supervisor
✔️ SID (Security Identifier) : 윈도우의 각 사용자나 그룹에 부여되는 고유한 식별번호
◾ S-1-5-domain-500 : Administrator
◾ S-1-5-domain-501 : Guest
🌐 윈도우 인증과 패스워드
💠 윈도우 인증의 구성요소
✔️ LSA(Local Security Authority) , SAM(Security Account Manager), SRM(Security Reference Monitor)
◾ LSA : 모든 계정의 로그인에 대한 검증을 하고 시스템 자원등에 대한 접근 검사, NT 보안의 중심 요소
◾ SAM : 사용자/그룹 계정 정보에 대한 데이터 베이스를 관리, 로그인 입력 정보와 SAM 데이터 베이스 정보 비교해 인증 여부 결정
%systemroot%/system32/config/sam에 위치
◾ SRM : SAM이 사용자 일치여부를 확인하여 알리면 사용자에게 SID를 부여, SID에 기반하여 파일 접근 허용 결정, 감사 메시지 생성
💠 SAM 파일 접근 통제 설정
✔️ Administrators 및 System 그룹 외에는 SAM 파일에 대한 접근 제한
🌐 공유 자료 관리
공유 폴더 | 사용자 공유 | 사용자가 직접 설정, 다른사람에게 보여짐 | |
관리적 공유 | 자동으로 생성, 관리자 권한이 있는 경우에만 접근 가능 (다른사람에게 안보임) | C$,D$,E$ : 드라이브에 대한 관리적 목적 공유 폴더 ADMIN$ : 윈도우 설치 폴더 접근 (IPC$ : 프로세스간 통신, 제거시 특정 서비스 실행 x, 널 세션 취약점) |
💠 네트워크 드라이브 : 내 컴퓨터의 드라이브 처럼 사용할 수 있는 기능
💠 파일과 폴더의 보안 권한 설정
✔️ 윈도우는 폴더에 6가지 기본 권한설정을 제공, 파일에는 5가지 권한을 제공
◾ 모든 권한 : 디렉터리에 대한 접근 권한과 소유권을 변경 가능, 서브 폴더와 파일 삭제 가능
◾ 수정 : 폴더를 삭제할 수 있으며, 읽기 및 실행과 쓰기가 동일한 권한을 갖는다.
◾ 읽기 및 실행 : 읽기를 수행할 수 있으며 디렉터리나 파일을 이동 가능
◾ 폴더 내용 보기 : 디렉터리의 파일이나 서브 디렉터리의 이름 보기 가능
◾ 읽기 : 디렉터리의 내용을 읽기만 가능
◾ 쓰기 : 해당 디렉터리의 서브 디렉터리와 파일 생성 가능, 소유권이나 접근 권한의 설정 내용 확인 가능
🌐 암호 기능 사용
💠 폴더 및 파일 암호화(EFS) : Encrypting File System은 윈도우 운영체제에서 개별 파일 또는 특정 폴더 안에 들어있는 모든 파일을 암호화 할 수 있는 기능 제공
✔️ 압축(o) → 암호화(x) , 암호화(o) → 압축(x) : 동시 적용 불가
✔️ 암호화된 폴더에 파일 복사 : 자동 암호화
✔️ 암호화가 지원되지 않는 파일 시스템(FAT32)에 복사 : 자동 복호화
💠 볼륨 암호화 (BitLocker)
✔️ 볼륨 단위의 데이터 암호화 기능, 시스템 파티션 부분은 암호화 되지 않는다.
🌐 레지스트리 활용
💠 개요 : 시스템의 거의 모든 정보를 담고 있다.
💠 레지스트리 편집기 실행
✔️ 레지스트리 편집기
◾ Master Key (직접 읽어 들여 구성되는 키) : HKLM(HKEY_LOCAL_MACHINE), HKU(HKEY_USERS)
◾ Derived Key (마스터키로부터 값을 가져와 재구성하는 키) : HKCU(HKEY_CURRENT_USER), HKCC(HKEY_CURRENT_CONFIG), HKCR(HKEY_CLASSES_ROOT)
✔️ 레지스트리 루트키
◾ HKEY_CLASSES_ROOT(HKCR) : 시스템에 등록된 파일 확장자와 맵핑 정보 등 저장
◾ HKEY_CURRENT_USER(HKCU) : 현재 시스템에 로그인하고 있는 사용자와 관련된 시스템 정보 저장
◾ HKEY_LOCAL_MACHINE(HKLM) : 하드웨어와 구동시키는데 필요한 드라이버나 설정 사항 정보
💠 레지스트리 공격
✔️ 부팅 시 악성코드 실행
◾ 시스템 재부팅시 악성코드 구동을 위해 사용되는 레지스트리는 HKLM, HKCU이다
◾ 개별사용자 지속용 : HKCU (CurrentVersion\Run)
◾ 개별사용자 일회용 : HKCU (CurrentVerison\RunOnce)
◾ 전체사용자 지속용 : HKLM (CurrentVersion\Run)
◾ 전체사용자 일회용 : HKLM (CurrentVersion\RunOnce)
🌐 윈도우 방화벽 : 인바운드/아웃바운드 규칙을 통해 설정 가능
SECTION 15. 유닉스/리눅스 서버 보안
1️⃣ 유닉스
🌐 UNIX의 구성
💠 커널 (Kernel) : 항상 메모리에 상주, 사용자에게 기능들을 제공한다. 가장 하위수준에서 하드웨어와 직접 관계
➰ 윈도우 (5개 구성) : H/W - HAL - 마이크로 커널 - 각종 관리자 - 응용프로그램
➰ 유닉스 (4개 구성) : H/W - 커널 - 셀 - 응용프로그램
✔️ 시스템 호출 : 사용자 프로그램이 커널에 접근하는 인터페이스를 제공
💠 셸 (shell) : 일반적인 운영체제에서 명령어 해석기 기능 담당
💠 파일 시스템
✔️ 디렉터리 구조, 파일시스템의 구조, i-node( 파일에 대한 정보를 기억하는 약 120byte의 고정된 크기의 구조체), 슈퍼블록(파일시스템의 정보를 유지하는 자료 구조)
2️⃣ UNIX 기본 사용법
🌐 파일 권한 관리
💠 접근권한변경 (chmod)
✔️ 접근 권한을 기호로 기술하는 방법
◾ 대상 : u(user), g(group), o(other), a(all)
◾ 연산자 : +(추가), -(제거), =(지정)
◾ 접근권한 : r(읽기), w(쓰기), x(실행)
✔️ 접근 권한을 숫자로 기술하는 방법
◾ 파일의 접근 권한을 세개의 8진수로 기술
◾ r(읽기)=4, w(쓰기)=2, x(실행)=1
💠 소유권 또는 그룹 변경 (chown, chgrp)
🌐 프로세스 응용
💠 첫번째 프로세스
✔️ PID=0 : swapper, PID=1 : init, PID=2 : pagedaemon
✔️ PID가 0인 프로세스를 제외한 모든 프로세스는 실행중에 부모프로세스를 갖게 된다.
✔️ 프로세스 종료 시 자신의 부모 프로세스에게 종료를 알리지만 부모 프로세스의 확인이 있을 때 까지 좀비 프로세스로 남는다.
3️⃣ UNIX 시스템 관리
🌐 시스템 시작과 종료
💠 부팅관련 용어 정의
✔️ 런 레벨 (Run Level) : init 명령어 다음에 런 레벨을 쓰면 해당 런 레벨로 이동 가능
💠 시스템 종료
✔️ shutdown 명령은 시스템을 안전하게 종료할 때, 런 레벨을 변경할 때 사용
🌐 파일시스템 관리
💠 파일시스템 연결 (mount) : 보조기억장치에 설치된 파일 시스템을 unix시스템이 인식하도록 디렉터리에 논리적으로 연결
💠 파일시스템 연결해제 (umount) : 이전에 마운트 된 파일 시스템의 연결을 해제, /etc/mtab파일은 시스템에 마운트 된 파일시스템의 정보 관리, mount 명령 실행 시 파일 시스템이 마운트 정보를 /etc/mtab 파일에 기록
🌐 프로세스 스케줄 관리
💠 정기적 스케줄 관리 (cron) : 분 시 일 월 요일 작업
✔️ 명령어 : crontab -e [login_name] / -e: crontab 파일을 편집한다, -l : crontab 파일을 출력한다, -r : crontab 파일을 삭제한다.
✔️ crontab 명령 접근 제어 : cron.allow (사용할 수 있는 사람) , cron.deny (사용하지 못하는 사람)
4️⃣ UNIX 서버 보안
🌐 시스템 보안
💠 사용자의 패스워드 관리
✔️ /etc/passwd 파일은 UNIX 시스템에 등록된 사용자 계정마다 정보가 담겨있는 파일, /etc/shadow 파일은 암호화된 패스워드 저장
✔️ passwd 파일
① user_account | ② :user_password | ③ :user_ID | ④ :group_ID | ⑤ :comment | ⑥ :home_directory | ⑦ :login_shell |
⑤ comment : 사용자 설명, 사용자 관련 기타 정보로 일반적으로 사용자 이름 설정
⑥ home_directory : 로그인이 성공한 후 사용자가 위치할 홈 디렉터리의 절대 경로
⑦ login_shell : 로그인 셸의 절대 경로
✔️ /etc/passwd 파일 공격 : 보통 3번 4번을 0으로 변경한다 (root)
✔️ shadow 파일
①user_account | ②:encrypted_password | ③:last_change | ④:minilife | ⑤:maxlife | ⑥:warn | ⑦:inactive | ⑧:expires |
①user_account : 사용자 계정을 인덱스로 하여 /etc/passwd 파일과 서로 연계
②:encrypted_password : 암호화된 패스워드 (일방향 해시 알고리즘 이용)
③:last_change : 마지막으로 패스워드를 변경한 날
④:minilife : 최소 변경일 수
⑤:maxlife : 최대 변경일 수
🌐 접근권한 마스크 (umask)
💠 시스템 관리자는 /etc/profile에 umask를 설정하여 전체 사용자에게 획일적인 umask 값을 적용할 수 있다.
✔️ default permission
① 파일(666) : rw-rw-rw-
② 디렉터리(777) : rwxrwxrwx
③ umask : 제거할 접근 권한 명시
① - ② =/= ③
ex) umask 022인 경우 , 파일(666): rw-rw-rw- | umak(022) : --- -w- -w- == 최종 : rw-r--r--(644)
🌐 권한 상승(SetUID, SetGID)
💠 계정이 누구인가를 식별하는 ID
✔️ RUID (Real User ID) : 프로세스를 실행시킨 사용자의 UID
✔️ RGID (Real Group ID) : 프로세스를 실행시킨 사용자의 GID
✔️ EUID (Effective User ID) : 프로세스가 실행중인 동안에만 부여되는 UID, 자원에 접근권한 판단하기 위한 UID
◾ SetUID가 설정이 안된 경우 RUID=EUID
◾ SetUID가 설정이 된 경우 RUID =/= EUID
◾ SetUID 비트가 설정된 파일은 백도어 및 버퍼 오버플로우 등 여러 공격에 이용 가능
💠 SetUID 설정 시 주의사항과 SetGID
◾ SetUID가 설정되어 있는 프로그램을 실행하는 경우 이 프로세스가 갖는 권한은 프로그램을 실행한 사용자의 권한이 아닌 프로그램의 소유주의 권한이 된다.
파일종류 (4bit) |
특수권한(3bit) | user(3bit) | group(3bit) | other(3bit) | ||||||||
-,d,c,b,s,l,p | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
suid | sgid | sticky-bit | r | w | x | r | w | x | r | w | x |
◾ 4755 : -rwxr-xr-x
s(소문자) - 실행권한(o)
◾ 4655 : -rwSr-xr-x
S(대문자) - 실행권한 (x)
🌐 디렉터리 접근권한 (sticky-bit)
구분 | 기호방식 | 8진수 방식 | 특수권한 설정 | 특수권한 파일검색 |
setuid(4) | s | 4000 | chmod 4777 a.out chmod u+s a.out |
#find / -perm 4000 -print |
setgid(2) | s | 2000 | chmod 2777 a.out chmod g+s a.out |
#find / -perm 2000 -print |
sticky-bit(1) | t | 1000 | chmod 1777 /testdir chmod o+t /testdir (Linux) chmod u+t /testdir (SunOS) |
#find / -perm 1000 -print |
◾ #find / -perm 7000 -print : suid, sgid, sticky 비트가 모두 설정된 파일 검색
◾ #find / -perm 6000 -print : suid, sgid 비트가 모두 설정된 파일 검색
🌐 네트워크 보안
💠 슈퍼 서버 [inetd 데몬]
user(3bit)
✔️ inetd 데몬은 N개의 개별 서버를 하나로 통합하여 클라이언트로부터 서비스 요청이 올 때 마다 해당 서비스와 관련된 실행 모듈 (FTP, Telnet, TFTP )을 실행해준다.
◾ stand-alone 방식 : 개별 서빕스 별로 서버 프로세스가 동작하는 방식, 속도 빠름
◾ inetd(xinetd) 방식 : 슈퍼 데몬(inetd데몬) 을 이용하여 개별 서비스를 동작시키는 방식 , 속도 느림
✔️ inetd.conf 파일 구조
서비스 | 소켓 타입 | 프로토콜 | 대기 설정 | 로그인 이름 | 서버 | 인자 |
telnet | stream | tcp6 | nowait | root | /usr/sbin/in.telnetd | in.telnetd |
◾ TCP 기반 : nowait 로 설정, UDP 기반 : wait로 설정
💠 접근 통제 (TCPWrapper)
💠 PAM (Pluggable Authentication Modules, 장착형 인증 모듈)
✔️ 사용자 인증의 핵심, 응용프로그램에 대한 인증형태, 사용자 권한, 접근 자원 등을 선택할 수 있는 라이브러리
5️⃣ Linux
🌐 리눅스 파일 시스템의 종류 및 특징
ext 2 | ext 3 | ext 4 |
장애 발생 시 파일 손상 o fsck 이용 |
속도 향상 저널링 기법 |
지연된 할당 향상된 보안 할당 기법 |
SECTION 17. 서버 보안 관리
1️⃣ 서버 관리자의 업무
🌐 보안 유지 관리
💠 로깅정보를 감시하고 분석, 정기적으로 백업 수행, 정기적으로 시스템 보안을 테스트
🌐 서버 관리자의 업무
💠 시스템 관리자 계정으로 작업하기 : root 계정으로 로그인
💠 사용자 계정 관리 /etc/passwd, /etc/shadow
✔️ 원격접근권한 제거 : /etc/passwd 파일에서 /bin/bash와 같은 셸 삭제
✔️ 계정 사용기간 설정 : /etc/shadow 파일에서 사용기간 또는 만료일 설정
💠 자원 관리
✔️ 프로세스 관리 : ps, kill, wait, su 등을 이용한 관리
✔️ 메모리 관리 : free
✔️ 메일, 디스크 등의 자원 관리 : quota 사용, du(디스크 사용량 재귀적으로 보여줌)
💠 네트워크 관리
2️⃣ 로그 설정과 관리
🌐 시스템 로그 분석
💠 로그에 대한 이해 : 윈도우는 이벤트라는 중앙집중화된 로그 수집 저장, 유닉스는 로그를 여러곳에 산발적으로 저장
💠 윈도우의 로그 분석과 설정
✔️ 윈도우에서 현재 로그인된 사용자를 확인하는 명령 : net session
✔️ 로그인 세션을 끊는 명령은 net session /delete
✔️ 이벤트 로그 파일 %Windows%\system32\config 폴더 아래에 있는 .evt 파일, 바이너리 형식
◾ 응용 프로그램 로그 : AppEvent.Evt
◾ 보안 로그 : SecEvent.Evt
◾ 시스템 로그 : SysEvent.Evt
💠 유닉스/리눅스의 로그 분석과 설정
로그 | 설명 | 로그 출력 |
utmp(x) | 현재 시스템에 로그인한 사용자의 상태 출력 | w, who, users, whodo, finger |
wtmp(x) | 사용자의 로그인, 로그아웃, 시스템 재부팅 정보 | last |
sulog(Unix/SunOS) | su 권한 변경에 대한 로그 | /var/adm/sulog |
acct/pacct | 로그인한 모든 사용자가 수행한 프로그램에 대한 정보를 저장 | acctcom, lastcomm |
.sh_history, .bash_history | 유닉스에서 실행명령에 대한 기록 | cat, more |
loginlog(Unix), btmp(Linux) | Unix : 5회이상 실패시 로그 기록 Linux : 실패한 모든 로그 기록 |
/var/adm/loginlog /var/log/btmp |
lastlog | 가장 최근에 성공한 로그인 기록 | Linux : lastlog Linux/Unix : finger |
xferlog | FTP 로그 파일, proftpd, vsftpd 데몬들의 서비스 내역 기록 파일 | |
Access_log, Error_log | HTTP log, 웹서비스에 의한 로그 | /usr/local/apache/logs |
💠 유닉스/리눅스 시스템 로그 설정 (/etc/syslog.conf)
✔️ 어떤 로그를 어디에 남길지 결정
3️⃣ 공개 해킹도구에 대한 이해와 대응
🌐 크래킹 S/W
💠 크래킹 S/W 사례
✔️ John the Ripper : 패스워드 점검 도구 프로그램
✔️ pwdump : 윈도우에서 패스워드 덤프 도구
✔️ L0phtCrack : 패스워드 취약점 점검도구
✔️ ipccrack : 사용자 계정 패스워드를 원격지에서 추측 > 취약점 점검
✔️ chntpw : 물리적 접근이 가능한 시스템에서 패스워드를 리셋 시키는 프로그램
✔️ ERD Commander : 윈도우 시스템에서 패스워드 복구해야 하는 경우에 사용
🌐 키로그 S/W
4️⃣ 서버 보안용 S/W 설치 및 운영
🌐 취약점 분석 도구
💠 취약점 분석 도구
✔️ SATAN (Security Analysis Tool for Auditing Networks) : 해커와 똑같은 방식으로 시스템에 침입, 보안상의 약점을 찾아 보완할 수 있는 네트워크 분석용 보안 관리 도구
✔️ SARA : SATAN을 기반으로 개발 된 취약점 분석 도구로 html 형식의 보고서 기능 존재
✔️ SAINT : 원격에서 취약점 점검하는 기능 존재
✔️ COPS : 유닉스 플랫폼에서 동작하며 시스템 내부에 존재하는 취약점 점검
✔️ NESSUS : 클라이언트-서버 구조로 클라이언트의 취약점 점검
✔️ nmap : 포트스캐닝 도구, stealth 모드로 포트 스캐닝하는 기능
🌐 무결성 점검
💠 파일 무결성 점검 (tripwire) : 정상적인 상태 정보 백업, 점검 수행 시점에서 백업한 정보를 비교
🌐 스캔탐지
💠 스캔탐지도구
✔️ mscan : 메인 전체를 스캔하여 그 도메인 내에 있는 취약점 한번에 스캔
✔️ sscan : mscan을 업데이트
✔️ portsentry : 실시간으로 포트 스캔을 탐지하고 대응하기 위한 프로그램
◾ 취약점 점검 도구 : SATAN, SARA, SAINT, COPS, NESSUS, NMAP
◾ 파일 무결성 점검 도구 : tripwire, MD5, Fcheck, AIDE
◾ 스캔 탐지 도구 : mscan, sscan, portsentry
🌐 침입탐지 및 방화벽
💠 네트워크 모니터링 및 탐지 도구
✔️ Snort : 실시간 트래픽 분석과 P네트워크에서 패킷 처리를 담당하는 공개 소스 네트워크 침입탐지시스템(IDS)
💠 방화벽
✔️ TCP-Wrapper : 네트워크 서비스에 관한 트래픽을 제어하고 모니터링
✔️ IPchain/IPtable : 패킷 필터링 방화벽
SECTION 17. 각종 시스템 보안위협 및 대응책
◾ 버퍼오버플로우 공격
◾ 포맷스트링 공격 printf(buffer) %d %s: 정상
◾ 레이디스컨디션 공격 : 심볼릭링크, 임시하일, SetUID
◾ 백도어 : 트랩도어
◾ 자원고갈공격 : DoS 공격
✔ 디스크 : creat > write
✔ 메모리 : malloc
✔ CPU : fork
SECTION 18. 최신 보안 주제들
◾ 블록체인
◾ 사물 인터넷
◾ 클라우드 보안
◾ 랜섬웨어
◾ APT
◾ 사이버 킬 체인