D.evelop [CS]/Computer security

서버 보안 개념, 종류, 대책

Danne 2024. 6. 12. 23:28

1. 서버 보안의 개념

1-1. 일반적인 정보 시스템

  • 클라이언트 : 일반적인 사용자
  • 서버 : 서비스를 제공하는 컴퓨터
  • 클라이언트와 서버는 “통신 채널”(인터넷)을 통해 데이터를 주고 받을 수 있다.

 

1-2. 서버/클라이언트의 구조

  • 응용 프로그램 계층
    • 서버 프로그램은 개발단계에서 제거하지 못하거나 발견하지 못한 백도어, 버그 같은 취약성을 가짐. 이 취약성을 사용하여 운영체제의 접근 권한을 뚫는다.
  • 운영체제 계층
    • ”운영체제의 제어권”확보는 대부분의 공격 목적이 된다. 응용프로그램을 사용하기 위한 제어. (입/ 출력, 파일 등) 실제 시스템 접근에 대한 결정이 이루어지는 계층으로 보안의 가장 근본적인 레벨이다.
  • 네트워크 제어
    • 시스템의 in/out 트래픽을 제어하여 잠재적으로 유해한 트래픽을 줄일 수 있음. 운영체제 내에서 수행되거나 별도의 독립된 위치에서 수행될 수도 있다.
  • 전송 데이터 제어
    • 인터넷을 통해 전송되는 정보는 누구나 연람 가능
    • 바람직한 절차 : 전송자 - 정보를 암호화 → 전송 → 수신자 - 복호화 하여 확인

 


2. 서버 침입 및 정보 유출 단계

1 단계 - 정보 획득 단계
  • 공격하기 위한 공격 대상을 선택한다.
    스캐닝같은 툴을 사용해 다음과 같은 시스템을 찾아 정보를 획득한다.

    ”서버 보안 취약 or 관리가 잘 되지 않는 시스템 or 그냥 공격하고 싶은 대상”
2단계 : 권한 획득 단계
  • 해당 서버의 확지라 권한을 획득하는 단계
  • 1순위는 관리자 권한을 획득 하는 것이다. 대부분 관리자 권한의 보안은 잘 되어 있기 때문에 “일반 사용자”권한을 획득한 후 관리자 권한을 획득한다.
3단계 : 공격 단계
  • 관리자 권한으로 침임 흔적을 지운다.
  • 재침입을 할 수 있도록 백도어 설치
4단계 : 재침입 단계
  • 유용한 정보를 획득
  • 공격한 시스템을 통해 다른 시스템 공격
  •  

 


3. 서버 공격의 유형

 

3-1. 계정 크랙 공격

  • 공격자가 서버에 접속 가능한 계정의 ID와 PW를 알아냄
  • 전수 공격 (Brute Force Attack) 
    • 공격자는 서버에 존재하는 계정에 대한 정보가 전혀 없는 상태
    • ID와 PW를 모두 조합하여 공격
      • PW가 숫자 4자리 조합이다 → 0000부터 9999까지 자동 조합
    • 많은 시간 소요
  • 사전 공격 (Dictionary Attack)
    • ID와 PW가 될 가능성이 있는 단어를 사전 파일로 만들어 놓고 대입하여 공격
    • 사전 파일 : 서버를 이용하는 사람의 정보
      • 예 : 보안담당 막내 단대리의 이름, 생년월일, 가족정보, 차량 정보 등
    • 사전 파일을 이용하여 다양한 조합으로 시도
      • 예 : dan, 1월 28일 → dan0128, 0128dan, dan28 등
    • 전수 공격보다 공격시간이 단축됨

 

3-2. 네트워크 공격

  • 스푸핑(Soopfing) : IP주소, MAC 주소 등의 정보를 속여 권한을 획득하여 중요한 정보 탈취, 서비스 방해 등을 하는 공격
  • 스니핑(Siniffing) : 네트워크 패킷으로 전달되는 중요 정보를 도청하는 공격
  • 서비스 거부(DoS) 공격 : 대량의 패킷을 이용하여 네트워크를 마비 시켜 서비르 수행을 방해하는 공격

 

3-3. 시스템의 취약점을 이용한 공격

  • 버퍼 오버플로 (Buffer Overflow) 공격
    • 버퍼 : 임시로 데이터를 저장하는 작은 공간
    • 메모리에 할당된 버퍼의 양을 초과하는 데이터 입력하여 프로그램의 복귀주소를 조작 → 공격자가 원하는 코드를 실행하여 공격
    • 종류 : 스택 오버플로 공격, 힙 오버 플로 공격
    • 스택 오버플로 공격 (Stack Overflow Attack)
      • 서브 프로그램이 호출 될 떄 복귀주소를 스택에 저장한다.
      • 프로그램이 변수에 할당된 공간에 저장 될 데이터의 크기에 대한 제한을 해두지 않으면
        → 공격자가 데이터의 길이와 내용을 조절해 변수 공간을 넘치게함
        → 오버플로가 발생하며 저장된 데이터가 복귀주소 영역을 침범
  • 힙(Heap) 오버플로 공격
    • 힙 영역 : malloc이나 new 등 메모리를 동적으로 할당할 때 사용
    • 프로그램이 변수의 할당된 공간에 저장될 데이터의 크기를 검사나 제한을 두지 않으면
      → 데이터의 길이와 내용을 적절히 조정하여 변수공간을 넘치게 함
      → 오버플로가 발생하면 저장된 데이터는 다른 영역까지 침범
      → 공격자가 원하는 특정 코드가 실행되게 할 수 있음
  • 레이스 컨디션 공격 (Race condition) 공격
    • 두 프로세스가 동일한 자원을 사용하기 위해 경쟁하는 상태를 이용하는 공격
    • 시스템 프로그램과 공격 프로그램이 경쟁 상태에 이르게 하여 프로그램의 권한을 획득
      → 공격 프로그램이 원하는 파일에 접근하여 공격자가 원하는 곳 시스템을 삽입
      → 관리자의 권한으로 실행가능한 코드를 공격자가 원하는 위치에 수행되게 함
  • 기본 설정의 오류를 이용
    • 시스템을 활용하기 위한 설정 중 잘못된 설정에 대해 공격
    • 공유 폴터, 취약한 암호
    • IIS 웹 서버 설정에서 쓰기 권한 부여한 경우 등 (권한을 제한 시켜 읽기 권한만 주는 등 의 권한 설정을 올바르게 해야함)

 

3-4. 사회 공학적인 공격

: 시스템이 아닌 “사람”을 이용해 정보를 유출하거나 해당 서버에 접속하는 공격

  • 사람을 속여 민감한 정보를 유출, 내부자와의 결탁, 내부자의 부주의, 피싱/파밍 등으로 인한 정보 유출

 


4. 서버 보안 대책

4-1. 계정과 패스워드 보호

  • 계정 관리
    • 사용자별, 그룹별 접근권한을 올바르게 설정하여 부여
    • root권한에 대한 사용 제한
    • 불필요한 사용자 계정 삭제
    • guest, anonymous 등 공개용 계정 사용 제한
    • 일관된 정책을 정립하여 정책에 부합하는 사용자 추가
    • 잘못된 비밀번호 일정 횟수 시도시 계정 block
  • 패스워드 관리
    • 유추 가능한 패스워스 사용하지 않기
    • 문자, 숫자, 특수문자를 조합하여 사영
    • 패스워드 길이, 사용기간등 정책 강화 (다양한 문자보다 긴 패스워드사용이 중요)
    • 패스워드 파일을 해시함수로 일방향 암호화하여 보관
      • a → 0cc175b9c0f1b6a831c399e269772661
    • shadow password 시스템 사용

 

4-2. 시스템 접근 제어

  • 접근제어 정책
    • 임의적 접근제어(DAC) Discretionary Access Control
      • 보안 관리자의 개입 없이 관리자 혹은 자원 소유자가 자율적 판단에 따라 보유하고 있는 자원의 접근권한을 다른 사용자에게 부여
        접근제어 목록(ACL: Access Control List) 필요
        예) 단대리 소유의 파일 A → 홍과장님만 Read, Write 할 수있게 단대리가 권한 부여
      • 자원의 공동 활용이 더 중요시되는 환경에 적합
      • 자원의 유출 가능성 내포
    • 강제적 접근제어(MAC) Mandatory Access Control
      • 각 객체에 비밀등급을, 각 사용자에 허가등급을 부여
        • 보안 등급: A 파일 - 1등급, B 파일 - 2등급…
        • 허가 등급 : 센터장 - 1등급, 김차장 - 2등급, 단대리 - 3등급 …
      • 권한 부여 시점 : 사용자가 객체에 접근할 때마다 사전에 규정된 규칙에 근거하여 접근권한 부여
      • 규칙의 적용 범위 : 모든 사용자 및 객체에 대해 일정
      • 객체의 소유자에 의해 접근제어 관계가 변경되지 않음
      • 정보의 기밀성이 매우 중요시되는 환경에 적합
    • 역할 기반 접근제어(RBAC) Role-Based Access Control
      • 권한은 역할과 관련 있다는 제어 방법으로 사용자는 역할의 멤버가 됨으로써 권한을 배정받음. 예: 개인정보 관리자 - 개인정보 접근 권한
      • 모든 자원에 접근 가능
      • 접근권한 변경 불가
  • 최소 권한 Least Privilege
    • 사용자와 객체에 꼭 필요한 최소한의 권한만 부여
    • 특정 시점에 특정 권한만 부여하고 제거
      • 예: 스크립트나 바이너리 주로 루트 계정만 사용하므로 기타 계정에는 권한 제거
      • 예: 리눅스의 apache 계정 웹 서버만 실행하므로 다른 실행권한 제거 서버 실행자는 원격 로그인 필요 없으므로 셸 사용권한 제거
  • UNIX 계열의 접근제어
    • 명령어 chmod : 파일과 디렉터리에 대한 접근권한 변경
    • 명령어 chown : 파일과 디렉터리에 대한 소유자 및 소유 그룹 변경

 

4-3. 파일 시스템 보호

  • UNIX 계열
    • 접근 및 변경 권한을 루트로 설정 ~/.login, ~/.profile, crontab 등
    • 불필요한 파일에 설정된 SetUID, SetGID 비트 제거 (남아 있으면 소유자 권한으로 실행 됨)
    • umask 설정 (파일이나 디렉터리 생성 시 초기 접근권한을 설정)
  • 윈도우
    • 보안 기능이 강화된 NTFS 파일 시스템 사용 권장
    • administrator 계정의 사용권한 관리
  • 파일 시스템 보호 정책
    • 파일 시스템 백업 및 복구
    • 주기적인 파일 시스템의 무결성 검사

 

4-4. 시스템 파일 설정 관리

  • UNIX 계열
    • mount 테이블을 이용한 파일 시스템 관리
    • 외부 접속 제어 관리 : TCP-wrapper, xinetd 활용하여 호스트 접근제어 관리
    • telnet, rcp 대신 ssh, scp 사용 등 (안전한 파일 복사 등 가능)
  • 윈도우
    • NTFS에 대한 사용권한 설정
    • 레지스트리 원격 액세스 권한 제어 및 백업

 

4-5. 운영체제의 취약점 관리

  • 작업용도에 따른 시스템 파티션 분리
    • 루트 영역과 사용자 파일 시스템 분리
    • 불필요한 서비스 중지 및 프로그램 제거
    • 패치 관리

 

4-6. 시스템 로그 설정과 관리

  • UNIX 계열 : syslog 통해 시스템 로그 설정
  • 윈도우 : 이벤트 뷰어 통해 시스템 로그, 응용 프로그램 로그, 보안 로그 등 관리
  • 로그 파일 분석 : 비정상적인 시간대의 접근, 실패한 로그인, 의심스러운 su 명령 등 확인

 

4-7. 서버 관리자의 의무

  • 시스템의 시작과 종료, 재시작 상황 이해
  • 패스워드 파일 등 사용자 계정 관리 방법 이해
  • 프로세스, 메모리, 디스크 등 자원 관리 방법 이해
  • 네트워크 연결관리 및 상태관리 방법 이해
반응형