본문 바로가기
자격증/정보보안기사

[정보보안기사 실기] 시스템보안③

by 겸손하게 빚진자로, 밝게 인사 2016. 4. 18.
728x90

□ 참조모니터(Reference Monitor)


 - 주체의 객체에 대한 모든 접근통제를 담당하는 추상머신으로

   승인되지 않은 접근이나 변경으로부터 객체를 보호하기 위한

   객체에 대한 모든 주체의 접근통제를 중재하는 개념



□ 바이러스 종류


 - 부트바이러스 : 

   · 바이러스가 부팅과정에서 이미 시스템의 제어권을 획득하여 동작 

   · 부트 영역에 감염된 바이러스는 윈도우 환경에서는 치료하기 어려우며

     도스 부팅등의 방법으로 치료가 가능


 - 파일 바이러스

   · 일반적으로 실행 가능한 .com, .exe 파일에 감염된다

   · 윈도우의 경우 bin, ocr, scr 등 다양한 실행파일이 존재

   · 감염된 파일을 실행했을 때바이러스 증상이 발생되며

     대표적인 종류로 팡리 바이러스와 매크로 바이러스, 윈도우 바이러스 등이 있음


 - 부트/파일 바이러스 

   · 부트 영역 및 파일에 모두 감염되는 바이러스


 - 메모리 상주 바이러스

   · 메모리 상주코드에 바이러스를 첨부시켜, 시스템이 동작되는 동안 여러번 실행

   · 매번 수행될 때마다 감염되지 않은 전달자를 찾아 감염시킴

 

 - 매크로 바이러스

  · 응용프로그램에 포함되는 매크로 기능을 이용하여 자신을 복제하는 바이러스

  · 운영체제에 영향을 받지 않으며, 제작과 변형이 쉽고 데이터의 변형을 가져와 

    데이터 파괴보다 더 치명적인 영향을 미칠 수 있음



□ /etc/crontab에 설정값 의미


 등록 내용 설정

"분,시,일,월,요일, 실행명령" 순으로 설정


crontab 파일 형식
------    --------  ---------------------------------------------------
필  드    의  미    범  위
------    --------  ---------------------------------------------------
첫번째    분        0-59
두번째    시        0-23
세번째    일        0-31
네번째    월        1-12
다섯번째  요일      0-7 (0 또는 7 = 일요일, 1 = 월, 2 = 화,...)
여섯번째  명령어    실행할 명령을 한줄로 쓴다.
------    --------  ---------------------------------------------------

- 한 줄당 하나의 명령 (두줄로 나눠서 표시할 수 없음)
- # 으로 시작하는 줄은 실행하지 않는다 (주석)


  # 30분, 새벽 4시와 낮 12시, 모든 일, 모든 월, 모든 요일 
  30 4,12 * * *  /usr/bin/rsync -avxH --delete /home /BACKUP/home > /dev/null 2>&1

  # 파일/디렉토리 퍼미션 설정
  # 40분, 새벽 1시, 매주 일요일
  40 1    * * 0  /root/bin/perm_set.sh   > /dev/null 2>&1


  # 20분마다 실행

  */20 * * * * /shell/mrtg



□ 데이터 보안등급

 민감 > 기밀 > 비밀 > 대외비



□ 윈도우 서버의 네트워크 방식


1. 워크그룹 방식

 - 각각의 계정과 자원을 시스템별로 관리하는 방식, 소규모 네트워크에 적합

 - 서버 관리자가 필요없으며 각 시스템의 로컬 디렉터리 데이터베시스(SAM DB)에 의해 관리

 - %SystemRoot%\System32\config\SAM 에 저장


2. 도메인 방식

 - 모든 계정과 자원을 특정 서버에서 관리하는 중앙 집중식 방식

 - Active Directory가 구축된 상태에서 가능하며 기존의 NT기반의 도메인 보다 확장된 기능 제공



□ 레지스트리 키


1. HKEY_CLASS_ROOT : 파일 확장명과 응용프로그램 연결정보 저장, 인트페이스 기능에 대한 바로가기 키도 존재

2. HKEY_CURRENT_USER : 현재 로그인되어 있는 사용자의 제어판 설정, 네트워크 연결, 응용 프로그램 등을 저장

3. HKEY_LOCAL_MACHINE : 시스템 전체에 적용되는 프로그램 설정 데이터 저장

4. HKEY_USERS : 사용자 프로필을 만들 때 적용한 기본 설정과 사용자별로 정의한 그룹정책 저장

5. HKEY_CURRENT_CONFIG : 현재 하드웨어 프로필 설정 저장



□ Heap

 - 프로그래머가 관리하는 메모리여영ㄱ으로 메모리 사용 시 필요한 만큼만 할당하여 메모리의 낭비를 막을 수 있음

 - 보안 관점에서 힙은 스택과 달리 연속된 메모리 공간이 아니기 때문에 버퍼 오버 플로우의 피해 확률이 낮고 변수의 기능이나 주소를 예측하기 어려워 치명적인 피해 가능성이 스택보다 적다



□ 아이노드(inode)

 - 파일의 이름을 제외한 해당 파일의 모든 정보를 가지고 있으며, 

   각 파일이름에 부여되는 고유한 번호로,

   파일형태, 그키, 위치, 파일의 소유자 등에 대한 정보를 가짐



□ 수퍼블록(Super block)

 - 파일 시스템에 의존하는 정보를 가지며 파일 시스템의 크기 등과 같은 파일 시스템의 전체적인 정보를 가지고 있음



□  유닉스 시스템의 세가지 핵심 컴포넌트

 1. 커널 : 유닉스 운영체제의 핵심으로 메인 메모리에 상주하여 컴퓨터 자원 관리

 2. 쉘 : 커널과 사용자 간의 인터페이스를 담당

 3. 파일 시스템 : 디렉토리, 서브 디렉토리, 파일 등의 계층적인 트리구조를 제공



□ 특수파일(special file)

 - 파일 타입 중 리눅스의 자원을 관리하는 장치(Device)를 가리킴

   리눅스는 다른 모든 버전의 유닉스와 마찬가지로 하드웨어 장치들을 특수파일로 보여줌 



□ 임계영역(Critical Section)

 - 다중 프로그래밍 운영체제에서 한 순간에 여러 개의 프로세스에 의해 공유되는 데이터 및 

   자원에 대하여, 반드시 하나의 프로세스씩 자원 또는 데이터를 사용하도록 하고, 이러한

   자원이 반납된 후에 다른 프로세스에서 자원을 이용하도록 지정된 영역



□ 프로세스의 실행방식

 1. 포그라운드 : 한번에 한개의 프로세스 실행

 2. 백그라운드 : 여러 개의 프로세스를 병렬로 실행



□ df 명령어 : 디스크의 남아있는 공간을 조회

 df -k : 파일의 크기를 Kbyte단위로 보여줌

 df -m : 파일의 크기를 Mbyte 단위로 보여줌

 df -h : 파일 크기의 용량 단위를 K, M, G 등을 함께 보여줌



□ 하드디스크 동기화(Sync)

 - 리눅스는 하드디스크의 입출력에 대한 효율성 향상을 위해 버퍼를 사용하는데

   이러한 디스크 캐시에 저장된 내용을 디스크에 직접 쓰기 위해 사용하는 명령이 sync



□ 프로세스 관리를 위한 명령어

 - top : CPU 정보 뿐만아니라 물리적인 메모리, 스왑, 개별 프로세스 정보 등 시스템 자원의 다양한 정보를 종합적으로 보여줌

 - pstree : 실행중인 프로세스들을 트리구조로 보여줌

 - nice : 프로세스의 순위를 변경시킴


 

□ setgid가 포함되어 있는 실행 파일을 ls -al 명령으로 확인하면 

   소유 그룹의 실행 퍼미션에 's'가 설정되어 있는 것을 확인할 수 있을 것음


[root@rootman root]# ls -al /usr/bin/man

-rwxr-sr-x    1 root     root        14112  2월 5  2001 /usr/bin/man 


▶ file1 이라는 실행 파일에 setuid 퍼미션을 설정할 때

[root@rootman root]# chmod 4755 file1


▶ file1 이라는 실행 파일에 setgid 퍼미션을 설정할 때

[root@rootman root]# chmod 2755 file1



□ find 명령어 이해하기


# find / -perm 4000 -print     : setuid가 설정된 파일 검색

# find / -perm 2000 -print     : setgid가 설정된 파일 검색

# find / -name *temp* 1> find 2. /dev/null      : 루트 디렉토리를 포함한 모든 하위 디렉토리에서        temp라는 문자열이 포함된 파일을 찾아 그 경로를 find 파일에 저장하고, 

   에러 메세지는 /dev/null로 보냄 



□ 일반적으로 파일은 세 가지의 시간 속성을 가진다.

    Modify time, Access time, Change time이다.


1. Modify time의 정의는 '파일의 내용이 마지막으로 수정된 시각'이다. 

파일의 구조에 비추어 설명해 보면 data block의 내용이 마지막으로 수정된 시각이라는 이야기다. 여기서 '수정'의 의미를 잘 이해해야 한다. OS의 관점에서 데이터가 '수정'되었다는 것은 데이터가 새롭게 씌여졌음을 의미한다. 실제 내용이 바뀌었는지와는 아무런 관계가 없다. 예를 들어 vi로 파일을 열어 아무런 작업을 하지 않고 ':wp' 하고 나와도 modify time은 변경된다. 파일의 Inode의 내용이 변경되는 것과 modify time과는 아무런 연관이 없다. Modify time은 파일의 '정보'가 아니라 '실제 내용'이 수정된 시각을 의미한다.


2. Access time은 파일의 내용에 마지막으로 접근한 시간을 의미한다. 

Access time과 관련하여 알아두어야 할 것은 리다이렉션을 통해 데이터를 추가하거나 덮어쓸 경우에는 access time이 변경되지 않는다는 사실이다. 출력 리다이렉션을 통해 데이터 블록에 데이터를 쓰는 경우 실제 내용을 읽는 것은 아니기 때문이다.


3. Ctime이 의미하는 것은 creation time이 아니며 Ctime의 change time을 의미한다. 또한 change time은 파일의 내용이 마지막으로 변경된 시각을 의미하지 않는다. 

파일의 내용이 마지막으로 변경된 시각은 앞서 본 것처럼 mtime에 기록되어 있다. 

Change time은 '파일의 상태가 마지막으로 변경된 시각'을 의미한다.

유닉스의 경우 파일의 상태에 대한 정보는 inode에 저장되어 있다. 따라서 파일의 상태가 변하면 inode의 내용도 바뀌게 되며 이 경우 change time도 변경되게 된다.

change time은 inode가 마지막으로 변경된 시각을 의미한다. 예를 들어 파일의 퍼미션을 변경했다면 inode 내 퍼미션 정보 수정되는 동시에 change time도 변경되게 된다. 파일의 내용을 수정하면 어떻게 될까? 파일의 내용을 수정하면 어떻게 될까? 파일 내용을 수정하면 당연히 modify time이 변경되고 또한 파일의 사이즈 역시 변경된다. 물론 inode내 정보가 변경되었으므로 당연히 change time도 변경되게 된다.



반응형