[정보보안기사] 시스템 보안 - 서버 보안
본문 바로가기

[정보보안기사] 시스템 보안 - 서버 보안

액트 2019. 6. 20.


- 목차 -

3. 서버보안
    (1) 인증과 접근통제
      ① 계정과 패스워드 보호
      ② 파일 시스템 보호
      ③ 시스템 파일 설정과 관리
      ④ 시스템 접근통제 기술
    (2) 보안관리
      ① 운영체제 설치
      ② 시스템 최적화
      ③ 시스템 로그 설정과 관리
      ④ 서버 해킹 원리의 이해
      ⑤ 서버관리자의 업무
    (3) 서버 보안용 S/W 설치 및 운영
      ① 시스템 취약점 점검 도구
      ② 시스템 침입 탐지 시스템
      ③ 무결성 점검 도구
      ④ 접근 통제 및 로깅 도구
      ⑤ 스캔 탐지 도구
      ⑥ 로깅 및 로그 분석 도구

 


3. 서버보안

    (1) 인증과 접근통제

        ① 계정과 패스워드 보호
            - Linux Server
                 ▶ 계정 생성, 수정, 삭제 : #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 구성
                         사용자계정이름 : x(패스워드가 암호화되어 저장됨을 의미) : UID : GID : 계정정보 : 홈디렉토리 : 쉘
                         ex) 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 :  :  :  :
                        사용자계정 : 암호화된 패스워드 : 패스워드 바꿔진 日수: 패스워드 변경할수있는 최소 日수 : 패스워드 만료 日수 : 패스워드 만료 경고日수 : 사용자 제한 이후 계정 정지까지 日수 : 계정만기일 : (사용안함)

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

                                                      (0부터 999까지 적용가능, 0이면 잠금 적용 X)
                         ▷ 다음 시간 후, 계정 잠금 임계값을 0으로 설정(1에서 99999까지 ; 분 단위)

 

        ② 파일 시스템 보호
            - Windows
                 ▶ FAT12 / FAT16 / VFAT / FAT32
                 ▶ NTFS
                 ▶ 관리 공유 폴더 제거 / 마지막에 로그인한 계정 숨김 / 예약작업 수시로 체크 / 

                     이동식 디스크의 자동실행방지 / 원격 레지스트리 서비스 중지

            - Linux
                 ▶ minix / ext2 / ext3 /ext4

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

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

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

            - Shell 설정 변경
                 ▶ /etc/profile에 설정된 값대로 shell에 적용
                 ▶ /root/.bashrc : 시스템 전체에 적용되는 함수와 alias
                         ▷ 파일 안에 alias rm='rm -i' 처럼 기술하면, rm이란 명령어는 rm-i와 동일하게 처리하라는 의미
                 ▶ /root/.bash_profile : 사용자 환경 설정과 시작프로그램
                 ▶ /root/.bash_history : 사용자 최초 로그인 후 생성, 사용자가 쉘에 입력한 명령어를 기록함

            - 쿼타(Quota)
                 ▶ 디스크에 사용량을 체크 감시

                 ▶ 한 파티션에 너무 많은 디스크를 사용하게 되면 관리자에게 알리도록 제한함

            - 파일 시스템 점검(File System Check & Recovery) : FSCK를 사용함
                 ▶ 저널링 파일시스템으로 자동 복구가 되지만, 복구가 불가능한 경우 수동으로 복구해주어야 할때 씀
                 ▶ 많은 시간을 필요로하는 경우가 많음
                 ▶ 반드시 검사하고자 하는 파일시스템은 unmount하고 검사해야 함

            - 퍼미션(Permission)
                 ▶ umask : 파일은 666에서 빼고, 디렉토리는 777에서 뺌
                 ▶ setuid(s, 4000) / setgid(s, 2000) / sticky bits(t, 1000)
                 ▶ setuid, setgid는 해당 파일이 실행될 때에만, 실행한 사용자에게 소유자(그룹)의 권한을 부여함
                         ▷ sticky bits는 주로 공유 디렉토리에 지정

                         ▷ 파일을 root와 소유자만이 삭제, 수정이 가능하게 함
                         ※ setuid 파일 찾기 : find / -user root -perm -4000 -print -xdev


        ④ 시스템 접근통제 기술
            - Linux의 iptables
                 ▶ 방화벽을 설정하는 도구

                 ▶ 커널상에서의 net filter 패킷 필터링 기능을 사용자 공간에서 제어하는 수준으로 사용할 수 있음 

            - Windows의 ipsec (Internet Protocol Security)
                 ▶ 사설 네트워크 및 인터넷 공격을 방어하는 핵심 라인을 제공

                 ▶ 안전한 통신을 실현하는 통신 규약

            - 통제 방식
                 ▶ 강제적 접근통제(MAC)
                         ▷ 주체의 권한을 기준으로 객체에 대한 접근을 제어
                 ▶ 임의적 접근통제(DAC)
                         ▷ 주체가 속한 그룹의 권한을 기준으로 객체에 대한 접근을 제어

                 ▶ 역할기반 접근통제(RBAC)

                         ▷역할을 미리 설정하고, 주체를 역할에 할당한 후, 역할에 접근 권한 부여
                         ▷ 최근에 많이 사용되는 통제방식으로 관리자에게 편리함


    (2) 보안관리

        ① 운영체제 설치

 

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

            - Memory
                 ▶ free : 사용되는 메모리와 여유가 있는 메모리가 얼마인지 알려주는 간단한 명령어
                 ▶ vmstat : 가상 메모리 상태를 확인(Swap-Out과 Swap-In을 봐)

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

             - Network
                 ▶ netstat : 포트 정보
                 ▶ ping
                 ▶ traceroute
                 ▶ tcpdump

        ③ 시스템 로그 설정과 관리
            - 시스템 로그는 시스템의 정확한 시간이 필수
                 ▶ #rdate -s time.bora.net

            - Linux의 /var/log/디렉토리
                 ▶ messages
                         ▷ 로그인 기록에서 디바이스에 관련된 정보와 네트워크 등등 다양한 정보
                         ▷ 콘솔에 출력되는 메시지들이 저장된다. 시스템 장애가 생기면 이 파일을 점검해서 취약점 점검
                 ▶ pacct
                         ▷ 로그인부터 로그아웃까지 입력한 명령과 시간, 작동된 tty 등에 대한 정보 수집 ; binary
                         ▷ 명령어 : lastcomm
                 ▶ history
                         ▷ 사용자별로 실행한 명령을 기록하는 로그
                 ▶ lastlo
                         ▷ 사용자별로 최근 로그인 시간 ; binary
                         ▷ 명령어 : lastlog
                 ▶ wtmp
                         ▷ 전체 로그인기록 (최근에 사용자 로그인 및 로그아웃한 정보) 
                         ▷ 명령어 : last
                 ▶ utmp
                         ▷ 현재 로그인 되어 있는 사용자에 대한 정보(/var/run/utmp에 있다) ; binary
                         ▷ 명령어 : w / who / users / finger
                 ▶ btmp
                         ▷ 로그인이 실패한 경우에 ; binary
                         ▷ 명령어 lastb
                 ▶ sulog
                         ▷ Su 명령와와 관련된 로그
                 ▶ dmesg
                         ▷ 부팅부터 HW적인 에러

                 ▶ secure
                         ▷ 보안과 관련된 중요한 로그(사용자 인증관련된 로그; FTP나 SSH 같은 것)
                 ▶ httpd access_log, error_log
                         ▷ 웹서버에 대한 로그
                 ▶ xferlog
                         ▷ FTP로 어떤 자료가 오갔는지 보여주는 로그

        ④ 서버 해킹 원리의 이해 
            ⅰ. 정보수집단계
                 ▶ 포트스캐닝 등

            ⅱ. 시스템 침입단계(root권한 획득이 목적)
                 ▶ exploit(root계정 따내는 여러 프로그램)
                 ▶ 서버 설정 오류 / 원격 버퍼 오버플로우 취약점 / 계정 도용 / 패스워드 파일 획득 

                    / 기타 취약점을 이용해 침입함
                 ▶ 가장 단순하지만 강력한 대책은 업데이트(패치)

            ⅲ. 공격 경유지나 혹은 거점 마련
                 ▶ 백도어 등을 설치하거나, 또다른 공격의 공유지로 삼음

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


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

        ① 시스템 취약점 점검 도구
            - NESSUS : 서버-클라이언트 구조로 작동하는 취약점 점검 도구
            - SARA(SATAN기반) : 서버, IDS, 라우터 등의 보안 분석도구
            - nikto2 : 웹 서버 스캔해서 취약점 점검(오픈 소스)

        ② 시스템 침입 탐지 시스템

        ③ 무결성 점검 도구
            - trpwire : 가장 대표적인 무결성 점검 도구로써, 

                           시스템의 모든 파일에 대해 DB를 만들어서 추후 변동사항을 점검
            - Fcheck : tripwire보다 조금 더 간편한 설치와 설정

        ④ 접근 통제 및 로깅 도구
            - TCP Wrapper
                 ▶ 슈퍼데몬(Xinetd)의 영향을 받는 데몬들은 TCP Wrapper로 접근 제어와 로깅이 가능
                 ▶ 도식화 : 클라이언트의요청 → Xinetd → TCP Wrapper → 데몬 실행
                 ▶ /etc/host.deny파일과 /etc/host.allow파일을 통해 접근 통제를 할 수 있음
                         ▷ Deny 정책 적용 시, host.deny에 ALL:ALL을 적어 놓고, 

                             host.allow에 데몬종류:클라이언트 주소를 적음
                 ▶ 접근 통제기록은 secure나 messgae 파일 등에 기록됨

        ⑤ 스캔 탐지 도구
            - 방어적인 관점에서, 스캔 탐지가 일어나면 이에 따란 방어 대책을 세워야 할 듯
            - portsentry
                 ▶ 포트스캔을 실시간으로 탐지하고 TCP_Wrapper와 결합해, host.deny파일에 자동으로 등록해 방어함
            - 실시간 네트워크 불법 Scan 자동탐지 도구(RTSD ; Real Time Scan Detector)
                 ▶ KISA에서 과거에 개발한건데 오래되서 업데이트 안되고 있음

        ⑥ 로깅 및 로그 분석 도구
            - syslog
                 ▶ 백그라운드 프로세스로 돌면서, 로그 메시지를 하나 이상의 개별 파일에 기록하는 데몬
                 ▶ /etc/syslog.conf에 각종 로그 환경 설정을 추가, 변경, 삭제할 수 있음
                         ▷ 형식 : Facility.Priority    Logfile-Location
                             ※ 우선순위 Priority : Emerg > Alert > Crit > Err > Warn > Notice > Info > Debug > None

            - webalizer
                 ▶ 아파치 웹로그를 분석해주는 멀티 웹로그 분석도구

 


[ 출처 ]
https://kit2013.tistory.com/209?category=288746 

을 참고하여 보완하고 수정한 글입니다.

댓글