자격증 공부/정보보안기사

정보보안기사(필기) 1. 시스템 보안 - 서버보안(1)

DevStory 2020. 5. 4.

1. 인증과 접근통제

(1) 계정과 패스워드 보호

리눅스에서 패스워드 관련 파일

- /etc/passwd : 사용자 기본정보 파일(계정명, UID, GID, 쉘, 홈디렉토리)

- /etc/shadow : 사용자 패스워드가 암호화 되어 있는 파일과 패스워드 정책

- /etc/group : 그룹 기본 정보 파일

- /etc/default/useradd : 사용자 계정 생성시 기본 정보

- /etc/login.defs : 리눅스 시스템 사용자 전체를 제한하기 위한 설정 파일

- /etc/skel : 사용자 계정 생성시 홈디렉토리에 기본적으로 생성되는 파일 위치

 

\etc\passwd 파일

- root : x : 0 : 0 : root : /root : /bin/bash

   (1)   (2) (3) (4)   (5)      (6)       (7)

   (1) root : 사용자 계정

   (2) x : 패스워드가 암호화되어 \etc\shadow 파일에 저장되어 있음

   (3) 0 : 사용자 UID로 관리자이므로 0번이다. 일반 사용자는 500번부터 시작

   (4) 0 : 그룹 GID로 관리자이므로 0번이다.

   (5) root : 계정 이름

  (6) /root : 사용자 홈디렉토리이며, 관리자는 \root 일반사용자는 \home 디렉토리 하위에 위치한다.

  (7) /bin/bash : 사용자의 쉘을 정의하며, 기본 쉘은 bash다. \etc\shells 파일에 정의되어 있다.

 

\etc\shadow 파일

- root : $1$F8oEBqlg$inU46TDY7gNj4DdqxJDqt : 15551 : 0 : 99999 : 7  :   :   :

   (1)                                (2)                         (3)    (4)    (5)    (6)(7)(8)(9)

   (1) root : 사용자 계정

   (2) $1$F8oEBqlg$inU46TDY7gNj4DdqxJDqt : 암호화된 사용자 패스워드

   (3) 15551 : 1970/01/01부터 계산하여 마지막으로 패워드를 바꾼 날짜까지의 값이다.(15551일 경과)

   (4) 0 : 패스워드를 변경하고자 하는 최소 일수

   (5) 99999 : 패스워드를 바꾸지 않고 최대한 사용 가능한 일수

   (6) 7 : 패스워드 최대 사용기간에 다가올수록 사용기간 며칠 전에 경고를 보낼지를 지정

   (7) : 계정에 대한 사용제한을 설정하고 며칠 후에 완전히 정지할 것인지

   (8) : 사용자가 시스템을 마지막으로 사용할 수 있는 날짜

   (9) : 예약된 필드

 

사용자 계정 관리 명령어

ㆍ계정 생성 : # useradd <만들고자 하는 계정 이름>

ㆍ계정 삭제 : # userdel <삭제하고자 하는 계정이름>

ㆍ사용자 패스워드 변경 : # passwd <패스워드 변경하고자 하는 계정이름>

ㆍ사용자 계정 속성 변경 : # usermod <옵션>

 

사용자 계정 속성 변경 옵션

옵션 설명
-c comment 사용즈 설명을 변경
-d 사용자 홈디렉토리 위치를 지정
-e 사용자의 사용기간을 제한을 해제
-f 남은 날수 임시 사용자 사용제한을 해제
-l 사용자 ID 변경
-p 사용자 패스워드 변경
-s 사용자 쉘을 지정
-L 사용자의 패스워드 접근 설정
-U 사용자의 패스워드 접근 해제

 

사용자 계정의 기본 내용

환경 변수 설명

GROUP

기본 그룹 ID

HOME

사용자 홈디렉토리 경로

INACTIVE

사용자 패스워드 기간 마료 후에 계정 사용이 불가능하게 되는날

0: 바로 사용 불가능, -1 : 이 기능을 사용 안함

EXPIRE

사용자 패스워드 만료일

SHELL

기본 쉘

SKEL

환경 파일들이 있는 위치

CREATE_MAIL_SPOOL

새로 생성되는 계정의 메일 저장 파일 여부

 

윈도우 계정과 패스워드 보호

- 시작 > 프로그램 > 관리도구 > 컴퓨터 관리

- 'User' 그룹에 속함

 

윈도우 계정정책

- 암호정책 : 제어판 > 관리도구 > 로컬보안정책 > 계정정책

   암호복잡성, 암호기억, 사용기간, 암호길이, 최소암호 사용기간, 해독 가능한 암호화

- 계정잠금 정책 특징

   임계값은 0~999까지 적용가능하며, 0으로 설정시 잠금 불가능

   잠금기간의 기본값은 없으며, 임계값이 '0'이 아닐 경우 활성화된다. 임계값은 0~99999까지다. 0으로 설정시 계정관리자가 명시적으로 잠금해제할 때까지 잠금형태로 된다.

   다음 시간 후 계정 잠금 수를 원래대로 설정하는 것으로 기본값은 없다. 계정 잠금 임계값이 '0'아 이날 경우 활성회 되며 그 임계값은 1~99999까지이다.

 

(2) 파일시스템 보호

윈도우 파일시스템

- FAT12 -> FAT16 -> VFAT -> FAT32

- FAT16 : 클러스터를 표한하는 비트 수가 2^16인 65,535개

- FAT32 : 2TB까지 인식하지만 최대용량을 32GB로 제한하고 있다. 32GB 이상은 파티션 분할 또는 NTFS를 사용해야함

- NTFS

   일부 디스크 관련 오류를 자동으로 복구

   대용량 디스크에 대한 지원향상

   승인된 사용자만 특정 파일에 접근 가능(보안 향상)

   윈도우 파일시스템의 기본형태

 

리눅스 파일시스템

- minix : 리눅스에서 처음 사용한 파일시스템

- ext2 파일시스템 : 2GB 단일 파일을 지원하고 4TB 디스크 사용이 가능 

- ext3 파일시스템 : 커널 2.4 버전부터 지원하고 있는 파일시스템

ㆍ저널링 파일시스템 : 시스템이 데이터를 쓰고 있는 중에 비정상적으로 종료가 되었을 때, 파일시스템 손상이 될 가능성이 있는데 이 손상을 복구할 수 있는 시스템

 

클라우드 파일시스템

- Ceph

   용량을 페타바이트 수준으로 손쉽게 확장

   가변적인 워크로드를 효과적으로 처리할 수 있는 고성능

   강력한 신뢰성

- GlusterFS(글러스터) : 대용량 저장 공간과 고성능 컴퓨팅을 제공하기 위한 클러스터 파일시스템

- Google 파일시스템(GFS)

  ▶ 저가형 서버로 구성

  ▶ 대용량 파일을 가정

  ▶ 낮은 응답지연 시간보다 높은 처리율을 우선

  ▶ 작업부하는 연속적으로 데이터를 읽는 연산이나 임의 영역에서 읽는 연산으로 구성

- Hadoop 분산파일시스템(하둡)

  Hadoop 분산파일시스템(HDFS)과 MapReduce 구현 등을 포함

  ▶ HDFS는 하나의 네임노드와 다수의 데이터 노드들로 구성

  ▶ HDFS에서 파일데이터는 블록단위로 나뉘어서 여러 데이터노드에 분산되어 저장

- Lustre 파일시스템 : Unix 시맨틱을 제공하면서 파일 메타 데이터에 대해서는 write - back 캐시를 지원

- Panasas 파일시스템 : 객체 기반으로 구현된 병렬 파일시스템으로서 현재는 pNFS와 호환 가능

- PVFS2 : 클러스터 시스템에서 공유되는 디시크 공간

- OASIS : 한국전자통신연구원 저장 시스템 연구팀에서 개발한 객체 기반 클러스터 파일시스템

 

(3) 시스템 파일 설정과 관리

[디렉토리 구조]

※ 출저 : https://www.oreilly.com/openbook/debian/book/appa_01.html

 

리눅스 시스템 파일 설정과 관리

- /bin : 필수 바이너리 파일, 기본 명령어

- /boot : 부팅에 필요한 커널과 핵심 파일

- /dev : 장치 파일

- /etc : 시스템이나 사용자 관리를 위한 자료 파일, 관리자용 명령어 등 시스템설정 파일

- /home : 일반 사용자 홈디렉토리

- /lib : 공유 라이브러리

- /mnt : 마운트 포인트

- /proc : 프로세스와 시스템 정보를 제공하기 위한 가상 파일시스템을 사용하는 디렉토리

- /root : root 사용자 홈디렉토리

- /sbin : 관리자가 사용하는 명령어

- /tmp : 임시 파일을 저장

- /var : 가변 자료를 저장

- /usr : 각종 서드파티 응용 프로그램들이 설치

 

마운트 : 디바이스와 디렉토리를 연결

형식 : # mount <디스크나 파티션> <마운트될 디렉토리>

예시 : # mount-t ext3 -o ro /dev/sdb1 /home2

  ▶ "파일시스템이 ext3 /dev/sdb1 파티션을 /home2라는 디렉토리에 마운트하는데 read-only전용으로 한다."

 

/etc/fstab 파일 내용 구조

- LABEL=/   /   ext3   defaults   1   1

     (1)      (2)    (3)       (4)      (5) (6)

   (1) LABEL=/ : 파일시스템

   (2) / : 파일시스템을 마운트할 디렉토리

   (3) ext3 : 파일시스템 타입

   (4) defaults : 기본옵션(rw, suid, dev, exec, auto, nouser)

   (5) 1, (6) 1 : 백업주기와 FSCK로 체크유무(0이면 체크를 하지 않음)

 

ㆍnoexec : 마운트된 파일시스템 상의 어떠한 바이너리도 실행을 허가 하지 않는다.

ㆍnosuid : setuid, setgid를 무시한다.

ㆍ/etc/fstab 파일을 수정하였을 시에는 반드시 다시 마운트 한다.

   # mount -o remunt /tmp

 

쉘 환경에 관련된 파일

- /etc/profile : 시스템 전체적으로 공통된 초기화 파일

- .bashrc : 시스템 전체에 적용되는 함수외 alias

- .bash_profile : 사용자 환경 설정과 시작 프로그램

- .bash_history : 사용자 최초 로그인 후 생성, 사용자가 쉘에서 입력한 명령어를 기록

 

쿼타(quota) : 리눅스 시스템에서 디스크 사용량을 체크 감시하고 디스크 사용량을 제한 가능

- 사용 방법 절차

디스크 사용량 제한을 사용하기 위해 /etc/fstab수정 -> 재마운트 -> 디스크 사용량 할당 파일(quota)을 만든 후에 사용량 표 생성 -> 디스크 사용량 할당

 

파일시스템 점검

※ 주의사항 : 검사하고자 하는 파일시스템을 unmount한 다음에 해야함

 

퍼미션 : 리눅스 시스템에서 파일이나 디렉토리의 접근을 허가

- d   rwx   r-x   r-x   root   root   /tool

 (1)   (2)    (3)   (4)    (5)     (6)     

ㆍr : read(4), w : write(2), x : execute(1) 

ㆍfile type : - : file, d : directory, l : link file, c : character device, b : block device

  ▶ (1) d : 파일 타입

  ▶ (2) rwx : 소유주 퍼미션

  ▶ (3) r-x : 그룹 퍼미션

  ▶ (4) r-x : 3자 퍼미션

  ▶ (5) root : 소유주

  ▶ (6) root : 그룹

 

ㆍ파일이나 디렉토리 속성을 변경할때에는 chmod 명령어 사용

 

umask : 파일 생성시와 디렉토리 생성시 기본적인 퍼미션

- 기본적으로 '022'를 사용함

- 파일 생성시 666 - 022 = 644

- 디렉토리 생성시 777 - 022 = 755

 

setuid, setgid, sticky bits : 시스템 보안에서 퍼미션 관련

- setuid, setgid : 파일이 실행될 때만 실행한 사용자에게 소유자 권한을 부여

- sticky bit : 모든 사용자가 사용할 수 있는 디렉토리에 지정

   적용시 다른 소유자가 임의적으로 삭제 불가능

   파일 소유자와 root만이 삭제, 변경 권한 있음

- 4000 : SETUID 설정

- 2000 : SETGID 설정

- 1000 : STICKY BIT 설정

ㆍsetuid 파일 찾는 방법 : # find / -user root -perm -4000 -print -xdev

 

(4) 시스템 접근통제 기술

리눅스 iptables : 리눅스 방화벽 설정

- itables 서비스 시작 : # service iptables start

- 정책 적용 확인 : # iptables -L

- iptables 구문 : iptables -A chain -j target

   -A : 기존 규칙에 또 다른 규칙을 추가 가능

   chain : 규칙에 사용될 체인 이름(아래 세 가지는 영구적이며 삭제 불가능)

       ☞ INPUT : 호스트를 대상으로 하는 네트워크 패킷에 적용

       ☞ FORWARD : 호스트를 통해 라우팅된 네트워크 패킷에 적용 

       ☞ OUTPUT : 로컬에서 생성된 네트워크 패킷에 적용

  ▶ j : 특정 규칙을 jump

- 기본 방화벽 정책 수립

   # iptables -P INPUT DROP

   # iptables -P OUTPUT DROP

   # iptables -P FORWARD DROP

- deny 정책 : 모든 것을 막고 난 이후에 신뢰된 것만 오픈

- allow 정책 : 모든 것을 허용하고 특정한 사항만 방어

- iptables 규칙 저장 및 복구하기 : 규칙은 리눅스 시스템이 가동되고 있는 중에만 적용

  ▶ # /sbin/service iptables save 또는 /etc/sysconfig/iptables-config 파일 수정 후 iptables 재시작

- 일반적인 iptables 규칙 만들기

  ▶ 형식 : # iptables -A -p top -m tcp --sport 80 -j ACCEPT

        iptables -A INPUT -s[발신지 ip] --sport[발신지 포트] -d[목적지 ip] --dport[목적지 포트] -j[정책]

 

iptables 주요 매개변수

규칙 설명
-A 새로운 규칙 추가
-D 규칙 삭제
-C 패킷 테스트
-I 새로운 규칙 삽입
-R 새로운 규칙 교체
-L 새로운 규칙 출력
-F 체인의 모든 규칙 삭제
-Z 모든 체인의 패킷과 바이트 카운터 값을 0으로
-N 새로운 체인 생성
-X 체인 삭제
-P 기본정책 변경

 

iptables 옵션

옵션 설명
-p 패킷의 프로토콜
-s 패킷의 발신지 ip주소
-d 패킷의 수신지 ip주소
-i 규칙에 적용할 인터페이스 이름
-j 규칙에 맞는 패킷을 어떻게 처리할 것인지
-y 접속 패킷인 syn 패킷 허용 안함
-f 두 번째 이후 조각에 대하여 규칙을 명시

 

방화벽에서 80 포트 허용규칙 예시

규칙 설명

iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --sprot 80 -j ACCEPT

80 포트를 any로 허용하는 규칙

 

방화벽에서 443 포트 허용규칙 예시

규칙 설명

iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

iptables -A OUTPUT -p tcp -m tcp --sprot 443 -j ACCEPT

443 포트를 any로 허용하는 규칙

 

윈도우 ipsec : 윈도우 방화벽 설정

반응형

댓글