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

[시스템 보안] 서버 보안

by 푸고배 2021. 3. 4.

1. 인증과 접근 통제

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

 

▶ Linux Server

  • 리눅스 Booting 순서
    1. ROM BIOS를 읽고 디스크의  MBR(Master Boot Record)에 있는 부트로더(Boot Loader)가 실행
    2. 부트로더(LILO or GRUB)는 보조 기억장치에 저장되어 있는 리눅스 커널 탐색 및 실핵
    3. 리눅스 커널은 하드웨어 확인 후 root의 읽기 전용으로 mount 수행
    4. 디스크 검사 후 root의 쓰기 전용으로 다시 mount 수행
    5. 리눅스 커널은 init 프로세스 실행, PID 1번 할당
    6. init 프로세스는 /etc/initab 파일을 읽어 디바이스 및 프로세스 활성화
  • Linux Run Level
    • 0 : PROM 감사단계
    • 1 : 관리 상태의 단계, 암호 변경 시 사용
    • 2 : 공유된 자원을 갖지 않은 다중 사용자 단계
    • 3 : 공유된 자원을 가진 다중 사용자 단계, 텍스트 유저 모드 (기본실행 단계)
    • 4 : 현재 사용되지 않음
    • 5 : Run Level3으로 기동 후 그래픽 모드인 X-Windows 실행
    • 6 : 재부팅 단계로 실행단계 3의 상태로 재부팅
  • 계정 생성, 수정, 삭제 : useradd / usermod / userdel
  • 계정과 패스워드에 관련된 파일
    • /etc/passwd : 사용자 계정 정보
    • /etc/shadow : 사용자 패스워드
    • /etc/group : 그룹 ID / 목록
    • /etc/gshadow : 그룹 정보
    • /etc/login.defs : 사용자 전체에 자동 할당되는 UID, GID 범위, 패스워드 유효 기간, useradd 설정사항
    • /etc/default/useradd : useradd 명령어로 계정 생성 시, 어떤 환경과 파일을 참조할 것인가에 대한 정보
    • /etc/skel : 계정생성시 필요한 파일, 디렉토리를 저장하고 있는 디렉토리, 새 계정 생성 시 그대로 해당 계정은 홈 디렉토리로 복사
  • /etc/passwd 구성
    •  

       

    • [User Name] : [password] (x : 패스워드가 암호화되어 Shadow 파일에 저장) : [UID] : [GID] : [계정정보] : [홈디렉토리] : [쉘]
    • root : x : 0 : 0 : root : /root : /bin/bash
    • ※ Linux에서 사용자 계정 잠구는 법
      • /etc/passwd에서 쉘 정보에다가 /bin/false 또는 /bin/nologin을 기술함
      • passwd -l [계정명]
  • /etc/shadow 구성
    • root : $1$F9FBAJKWEBKF4A30AJWNFKE : 15551 : 0 : 99999 : 7 :  :  :  :
    • [User Name] : [암호화된 패스워드] : [패스워드 최종 수정일] : [패스워드 변경 최소일] : [패스워드 변경 최대일] : [패스워드 만료 경고기간] : [로그인 접속차단 일 수] : [로그인 금지 일 수] : [사용 안함]

Windows Server

  • 컴퓨터 관리나 net user 명령어로 계정 생성, 수정, 삭제
  • 계정 생성 시 옵션
    • 다음 로그온 시 반드시 암호 변경
    • 암호 변경 불가
    • 암호 사용기간 제한 없음
    • 계정 사용 안 함(사용할 때까지 로그인 X)
  • 기본 제공 계정인 Administrator(리눅스 root)는 계정 사용 안함으로 설정하거나 이름을 변경하는게 보안상 이득
  • Guest 계정은 불필요하면 계쩡 사용 안함으로 설정(기본값은 사용안함)
  • 암호 정책
    • 암호의 복잡성
    • 최근 암호 기억
    • 최대 암호 사용기간
    • 최소 암호 사용기간
    • 최소 암호 길이
    • 해독 가능한 암호화를 사용해 암호 저장
  • 계정 잠금 정책
    • 계정 잠금 기간 : 0으로 하면 명시적으로 잠금 해제 할 때까지 유지(0부터 99999까지; 분 단위)
    • 계정 잠금 임계값 : 실패한 로그인 시도 최대 횟수를 설정(0부터 999까지 적용가능; 0이면 잠금 적용 X)
    • 다음 시간 후, 계정 잠금 임계값을 0으로 설정(1에서 99999까지; 분 단위)

(2) 파일 시스템 보호

 

▶ Windows

  • FAT12 / FAT16 / VFAT / FAT32
  •  NTFS
  • 관리 공유 폴더 제거 / 마지막에 로그인한 계정 숨김 / 예약작업 수시로 체크 / 이동식 디스크의 자동실행방지 / 원격 레지스트리 서비스 중지

▶ Linux

  • minix / ext2 / ext3 / ext4

▶ 클라우드 파일 시스템

  • Ceph
  • GlusterFS(글러스터)
  • Google 파일시스템(GFS)
  • Hadoop 분산파일시스템(하둡)
  • Lustre 파일시스템
  • Panasa 파일시스템
  • PVFS2
  • OASIS : 한국전자통신연구원 저장 시스템 연구팀에서 개발한 객체 기반 클러스터 파일 시스템

 

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

 

▶ 리눅스 디렉토리 구조(트리 구조)

  • /bin : 필수 바이너리 파일, 시스템 기본 명령어
  • /dev : 장치 파일
  • /etc : 시스템 설정 파일
  • /usr : 각종 서드 파티 응용 프로그램이 설치되는 프로그램
  • /var : 시스템에서 운영되는 임시파일 및 로그 파일
  • /home : 사용자 홈 디렉토리
  • /lib : 시스템 운영 및 프로그램 구동 시 필요한 공유 라이브러리
  • /sbin : 관리자가 사용하는 시스템 운영에 필요한 명령어
  • /tmp : 임시파일 디렉토리
  • /boot : 부팅에 필요한 커널과 핵심 파일
  • /mnt : CD-ROM과 플로피의 마운트 포인트를 제공하는 디렉토리
  • /proc : 시스템 상태를 제공하기 위한 디렉토리와 파일들이 존재

▶ Mount 하기

  • 디바이스와 디렉토리의 연결
  • # mount <디스크or 파티션> <마운트될 디렉토리>
  • 재부팅 시 마운트가 풀리기에, /etc/fstab에 기술해서 자동 마운트

▶ Shell 설정 변경

  • /etc/profile : 시스템 전역 쉘 변수 초기화
  • /etc/bashrc : 쉘 함수와 Alias를 위한 시스템 전역 변수 정의
    • 파일 안에 alias rm='rm -i'처럼 기술하면, rm이란 명령어는 rm-i와 동일하게 처리하라는 의미
  • ~/.bash_profile : 사용자의 환경 설정 파일
  • ~/.bash_history : 사용자 최초 로그인 후 생성, 사용자가 쉘에 입력한 명령어를 기록

▶ 쿼타(Quota)

  • 디스크에 사용량을 체크 감시하고, 한 파티션에 너무 많은 디스크를 사용하게 되면 관리자에게 알리도록 제한

▶ 파일 시스템 점검(File System Check & Recovery) : FSCK를 사용함

  • 저널링 파일 시스템으로 자동 복구가 되지만, 복구가 불가능한 경우 수동으로 복구해야할 경우 사용
  • 많은 시간을 요구하는 경우가 많음
  • 반드시 검사하고자 하는 파일 시스템은 unmount하고 검사해야 함

▶ 퍼미션(Permission)

  • umask : 파일은 666에서 빼고, 디렉토리는 777에서 뺌
  • setuid(s, 4000) / setgid(s,2000) / sticky bit(t, 1000)
    • setuid, setgid 해당 파일이 실행될 떄에만, 실행한 사용자에게 소유자(그룹)의 권한을 부여함
    • sticky bits는 주로 공유 디렉토리에 지정하는데,sticky bit가 부여된 디렉토리는 누구나 사용할 수 있지만, 삭제 및 수정은 root와 소유자만이 가능
  • setuid 파일 찾기 : find / -user root -perm -4000 -print -xdev

 find로 악성코드 탐지하기

  1. find 명령으로 악성코드 파일과 중요 파일 존재 여부 확인
  2. 과도하게 부여된 권한이 있는 파일 확인
  3. 최근에 변경된 파일 확인
  4. 특정 사용자가 소유자인 파일 화가인

 

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

 

▶ Linux의 iptables

  • 방화벽 정책을 수립할 수 있는 도구로 특정 패킷을 분석해 패킷 차단 및 허용 가능
  • iptables -A FORWARD -p udp -m udp --dport 53 -j DROP : DNS를 사용하는 서비스 모두 차단

▶ Windows의 ipsec

▶ 통제 방식

  • 강압적 접근통제 : MAC(Mandatory Access Control)
    • 주체, 객체 등급 기반 접근권한 부여
  • 임의적 접근통제 : DAC(Discretionary Access Control)
    • 접근 주체 신분 기반 접근권한 부여
  • 역할기반 접근통제 : RBAC(Role-Based Access Control)
    • 주체, 객체 역할기반 접근 권한 부여

 

2. 보안관리

(1) 시스템 최적화(Unix/Linux)

▶ CPU

  • top : CPU와 Memory, swap에 대한 전체적인 모니터링 가능
  • ps aux : CPU와 Memory 사용량이 큰 PID를 확인 가능
  • pstree : 시스템에서 프로세스간의 연결구조를 트리 구조로

▶ Memory

  • free : 사용되는 메모리와 여유가 있는 메모리가 얼마인지 알려주는 간단한 명령어
  • vmstat : 가상 메모리 상태를 확인

▶ Disk I/O

  • df : 파일 시스템의 상태를 기초로 용량을 출력(df -k(KB단위) / df -h(다양한 단위))
  • du : 실제 디렉토리와 파일의 크기를 확인해서 용량을 출력
  • iostat : 디스크에 I/O가 얼마나 나타나는 모니터링

▶ Network

  • netstat : 포트 정보
  • ping : IP 네트워크를 통해 특정한 호스트가 도달할 수 있는지의 여부를 테스트
  • traceroute : 목적지로 이동할 때 패킷이 실제로 사용하는 경로를 검색하는데 사용
  • tcpdump : 네트워크 카드를 통해 송수신 되는 패킷을 가로채고 표시함

 

(2) 시스템 로그 설정과 관리

 

▶ 시스템 로그는 시스템의 정확한 시간이 필수

  • #rdate -s time.bora.net

▶ Linux의 /var/log 디렉토리

  • messages
    • 로그인 기록에서 디바이스에 관련된 정보와 네트워크 등등 다양한 정보
    • 콘솔에 출력되는 메시지들이 저장됨. 시스템 장애가 생기면 이 파일을 점검해서 취약점 점검
  • pacct(binary)
    • 로그인부터 로그아웃까지 입력한 명령과 시간, 작동된 tty 등에 대한 정보 수집
    • 명령어 : lastcomm
  • histroy
    • 사용자별로 실행한 명령을 기록하는 로그
  • lastlog(binary)
    • 사용자별로 최근 로그인 시간 
    • 명령어 : lastlog
  • wtmp(binary)
    • 전체 로그인 기록(최근에 사용자 로그인 및 로그아웃한 정보)
    • 시스템 관련 정보
    • 시스템 종료 및 부팅 정보, 재부팅 정보
    • 명령어 : last
  • utmp(binary)
    • 현재 로그인이 되어 있는 사용자에 대한 정보(/var/run/utmp에 있음)
    • 로그인 사용자 ID, 사용 터미널, 로그인 시간 등을 확인 가능
    • 명령어 : w / who / users / finger
  • btmp(binary)
    • 로그인 실패 정보
    • 명령어 : lastb
  • sulog
    • Su 명령어와 관련된 로그
  • dmesg
    • 부팅부터 HW적인 에러
  • secure
    • 보안과 관련된 중요한 로그(사용자 인증 관련된 로그 ; FTP나 SSH 같은 것)
  •  httpd access_log, error_log
    • 웹 서버에 대한 로그
  • xferlog
    • FTP로 어떤 자료가 오갔는지 보여주는 로그

 

(3) 서버 해킹 원리의 이해

 

▶ 정보수집단계

  • 포트스캐닝 등

▶ 시스템 침입단계(root 권한 획득이 목적)

  • exploit : 컴퓨터의 소프트웨어나 하드웨어 및 컴퓨터 관련 전자 제품의 버그, 보안 취약점
  • 서버 설정 오류 / 원격 버퍼 오버플로우 취약점 / 계정 도용 / 패스워드 파일 획득 / 기타 취약점을 이용해 침입함
  • 가장 단순하지만 강력한 대책은 업데이트(패치)

▶ 공격 경유지나 혹은 거점 마련

  • 백도어 등을 설치하거나, 또 다른 공격의 공유지로 삼음

 

(4) 서버관리자의 업무

  • 시스템의 시작과 종료 및 재시작
  • 사용자 계정관리
  • 프로세스 및 디스크, 메모리
  • 네트워크 연결 및 상태관리

3. 서버 보안용 S/W 설치 및 운영

(1) 시스템 취약점 점검 도구

▶ NESSUS : 서버-클라이언트 구조로 작동하는 취약점 점검 도구

▶ SARA (SATAN 기반) : 서버, IDS, 라우터 등의 보안 분석 도구

▶ nikto2 : 웹 서버 스캔해서 취약점 점검(오픈 소스)

 

(2) 시스템 침입 탐지 시스템

 

(3) 무결성 점검도구

trpwire : 가장 대표적인 무결성 점검도구로써, 시스템의 모든 파일에 대해 DB를 만들어서 추후 변동 사항을 점검

▶ Fcheck : tripwire보다 조금 더 간편한 설치와 설정

 

(4) 접근통제 및 로깅도구

▶ TCP Wrapper

  • 슈퍼데몬(Xinetd)의 영향을 받는 데몬들은 TCP Wrapper로 접근 제어와 로깅이 가능
  • 도식화 : 클라이언트의 요청 → Xinetd → TCP Wrapper → 데몬 실행
  • /etc/host.deny 파일과 /etc/host.allow 파일을 통해 접근 통제를 할 수 있음
    • Deny 정책 적용 시, host.deny에 ALL:ALL을 적어 놓고, host.allow에 [데몬종류]:[클라이언트 주소]를 적음
  • 접근 통제기록은 secure나 message 파일 등에 기록됨

(5) 스캔 탐지도구

▶ 방어적인 관점에서, 스캔 탐지가 일어나면 이에 따라 방어 대책을 세워야 함

▶ Portsentry

  • 포트스캔을 실시간으로 탐지하고 TCP_Wrapper와 결합해, host.deny 파일에 자동으로 등록해 방어

▶RTSD(Real Time Scan Detector) : 실시간 네트워크 불법 Scan 자동탐지 도구

 

(6) 로깅 및 로그 분석 도구

▶ syslog

  • 백그라운드 프로세스로 돌면서, 로그 메시지를 하나 이상의 개별 파일에 기록하는 데몬
  • /etc/syslog.conf에 각종 로그 환경 설정을 추가, 변경, 삭제할 수 있음
    • 형식 : Facility.Priority Logfile-Location
    • Priority : Emerg > Alert > Crit > Error > Warn > Notice > Info >Debug > None
  • webalizer
    • 아파치 웹로그를 분석해주는 멀티 웹 로그 분석도구

참고 자료 :

 

정보보안기사 필기 정리 - 1과목 시스템 보안

2015/03/03 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 준비 2015/03/07 - [자격증/정보보안(산업)기사] - 정보보안기사 필기 정리 - 1과목 시스템 보안 2015/03/09 - [자격증/정보보안(산업)기사] -

kit2013.tistory.com

 

반응형

댓글