728x90

[1,2교시 - 데이터베이스 보안]

데이터베이스 보안 요구사항 정의

[학습내용]
• 데이터베이스 사용 용도 분석
• 사용자 요구사항 분석
• 사용자 요구사항 명세서 작성

1. 데이터베이스 사용 용도 분석은
- 데이터베이스 보안 설계 이전에 가장 먼저 파악하여야 하는 작업이 사용하는 데이터베이스의 사용 용도를 분석하는 일임

2. 사용자 요구사항 분석
- 데이터베이스 사용자 요구사항을 분석하는 과정을 숙지하고 단계별 역할과 산출물을 숙지해야 함
- 사용자 요구사항 도출 → 사용자 요구사항 분석 → 사용자요구사항 기록

3. 사용자 요구사항 명세서 작성
- 데이터베이스 구축을 위하여 요구된 사용자 요구사항을 분석하여 최종적으로 사용자 요구사항 명세서를 작성해야 함
- 사용자 요구사항 분석 → 메타데이터 수집 → 사용자 뷰 자료 수집 → 자료 사전 작성 → 자료량과 패턴 조사 → 사용자 요구사항 명세서 작성

 

데이터베이스 보안 위협 분석

1. 데이터베이스 보안 위협
2. 데이터베이스 보안 목적
3. 데이터베이스 보안 필요성

1. 데이터베이스 보안 위협
- 데이터베이스 보안은 내부 및 외부자가 데이터베이스내에 저장된 조직의 주요 기밀 정보에 불법적으로 접근하는 것을 막는 것임

2. 데이터베이스 보안 목적
- 데이터베이스 보안의 목적은 위협 요소 식별·분석 및 적절한 통제를 통해 불확실한 이벤트의 발생 위험을 감소시키고 수용 가능한 수준(Acceptable Level)으로 최소화하는 것

3. 데이터베이스 보안 필요성
- 권한이 없는 사용자의 부적절한 접근을 막는 동시에 정당한 권한을 갖고 있는 사용자는 정보시스템이 서비스 요구를 거부하지 않도록 보호할 필요가 있음


[데이터베이스 보안 위협]

1. DB 보안 위협 개요

1) 데이터베이스 보안
- 데이터베이스 내에 저장된 조직의 주요 기밀 정보에 내부 및 외부자가 불법적으로 접근하는 것을 막는 것. 
- 데이터베이스에 저장된 데이터를 인가하지 않은 변경·파괴·노출·비일관성 등을 발생시키는 외부 위협들로부터 보호하는 것

2) 데이터베이스 보안 설계
정보보안의 범주에서도 데이터베이스에 저장된 데이터 보호를 위한 설계에 초점을 맞춘 것

3) 데이터베이스의 보안 위협 발생 요인
- 사용자의 실수 및 오용
- 내부 사용자의 권한 남용 및 비정상적인 접근
- 데이터베이스에 대한 알려진 취약점들

2. 일반적인 데이터베이스 위협

1) 악의적 목적을 가진 외부의 비인가 사용자, 
악성 프로그램 삽입
데이터베이스의 중요 정보 유출

2) SQL injection 공격
- 입력 값에 대한 검증 미비로 인한 위협
- 로그인 인증 우회를 통해 데이터베이스 데이터 열람·유출 및 데이터베이스
- 서버에 시스템 명령 실행
- 파일 업로드에 대한 취약점이 존재할 경우 웹 쉘(web shell) 등을 실행하여
- 데이터베이스의 데이터에 접근

3. 케이스별 데이터베이스 위협

1) 사용자에 대한 식별 및 인증 위협
(1) 사용자 식별 및 인증
  - 데이터베이스에 접근하기 위한 가장 기본적인 단계
(2) 보안 위협 요인
  - 취약한 인증 수준
  - 추측하기 쉬운 비밀번호의 사용
(3) 보안 위협 형태
  - 사전 공격(dictionary attack)
  - 무작위 대입 공격(brute force attack)
  - 사회 공학적 기법(social engineering)

2) 데이터 유출 위협
(1) 암호화되지 않은 데이터
  - 네트워크 도청, 파일 백업, 정당한 사용자 및 미인가 사용자에 의한 데이터베이스 검색 등을 통하여 데이터 유출 가능

(2) 암호화된 데이터
  - 안전성이 확인되지 않은 암호 모듈을 사용하는 경우 악의적인 사용자에 의하여 암호문 해독 가능

3) 권한 오남용 위협
(1) 권한 오·남용
  - 데이터베이스의 데이터 접근 권한이 업무 사용을 위해 허용된 권한보다 더  많이 부여
  - 정당한 사용자가 악의적인 목적으로 허용된 범위를 넘어서 인가되지 않은 작업 수행
(2) 시스템의 취약성
  - 시스템의 취약점을 이용하여 불법 권한 상승 및 계정 정보 획득

4) 암호 모듈 오용 위협

  - 데이터베이스의 데이터를 암호화하기 위해 안전성이 검증되지 않은 암호 모듈을 사용하거나, 적합하지 않은 암호 모드를 사용하는 경우
암호문 해독 가능
  - 데이터가 한 블록 이상의 크기를 가지는 경우 블록 암호 알고리즘을 적용하면 사전 공격에 의해 해독 가능
  - 동일 평문에 대하여 동일 암호문이 생성되면 암호문을 통해 암호 키 추측 가능

5) 암·복호화 키 및 마스터 키 노출 위협
(1) 암·복호화 키 안전 관리
  - 데이터 암호화 시 사용되는 키가 노출되면 암호화된 데이터를 복호화 할 수 있기 때문에 키의 안전 관리는 매우 중요
  - 데이터를 암호화하는 경우 키가 인가되지 않은 제3자에게 노출되지 않도록 안전하게 보관 필요

(2) 암·복호화 키 사용법
  - 마스터 키를 통하여 암호화
  - 실제 사용 시점에만 임시로 복호화 하여 사용

(3) 암·복호화 키 노출 시 대처 방안
  - 키 변경
      : 신규 데이터는 변경된 키를 사용하여 암호화
      : 기존 암호문은 마이그레이션 작업을 통하여 신규 암호문으로 변경

6) 프로젝트 수행과정에서의 데이터베이스 접근 허용 위협
  - 프로젝트에 참여한 외부 작업자가 자사의 데이터에 접근할 수 있는 권한을 부여함으로써 데이터 유출이 발생함
  - 프로젝트 목적상 데이터베이스를 사용해야 하는 경우, 보안서약서를 작성하게 하고 추가적인 물리적인 보안 통제를 적용함으로써 정보 유출을 방지하는 절차가 있어야 함

7) 운영과정에서 권한에 대한 관리 소홀로 인한 침해 발생 위협
  - 개발자에게 DBA 권한을 설정함으로써 개발자가 직접 데이터베이스에 접근하여 정보 유출 가능
  - 잘못된 사용자 권한 설정으로 비정상적인 데이터 노출 및 외부 유출 발생

8) 접근 통제 우회 위협
(1) 디폴트 계정 및 패스워드 동일
  - 공급자에 의해 출하 시 설정되는 디폴트(default) 계정 또는 단순 계정 등 계정번호(ID)와 비밀번호 동일
    : 암호 추측 공격, 사전 공격 등을 통해 계정 확인 가능
    : 데이터베이스의 자료 유출 및 변조 등 발생
(2) 계정 및 패스워드 정책 미흡
  - 계정 및 패스워드의 정책 설정이 미흡한 경우 무차별 공격에 의해 패스워드 크래킹 가능

9) 데이터베이스 정보의 불법 열람 및 변조·삭제 위협
(1) 보안 위협 요인
  - 데이터베이스에 저장된 주요 정보에 대해 암호화가 미흡한 경우 비인가자에 의해 정보 노출 또는 변조 가능
(2) 보안 니즈 현황
  - 데이터베이스에 저장된 개인정보, 금융 관련 정보, 게임 관련 정보 탈취 시도 증가
   : 데이터베이스 보안에 대한 요구사항 증가

(3) 보안 방법
- 공개키(PKI: Public Key Infrastructure)
  기반의 강력한 암호화 기능 및 검증 기능 제공
     : 기존 데이터베이스에 대한 불법적 접근 방지
  - 사용자가 데이터베이스의 내용을 추출하여도 암호화된 상태의 데이터베이스 기밀성이 유지되는 시스템 구축


[데이터베이스 보안 목적]

1. 개요

1) 명심해야 될 사항 
(1) “보안에 100%는 없다!”
(2) “관리 범위 100% 충족하는 기술적 대안은 없다!”
(3) “방화벽 구축으로 완벽히 보호되지 않는다!”
(4) “보안은 기술만으로 해결되지 않는다!”

2) 데이터베이스 보안
(1) 정보보안의 3요소
정보보안의 목적은 기밀성, 무결성, 가용성 등을 유지하는 것
(2) DB보안의 목적
DB에 저장된 데이터를 공개·노출, 변조·파괴·훼손, 재해·재난 등의 위협으로부터 보호하여 기밀성, 무결성, 가용성 등을 확보하는 것

 


[3,4,5교시 - 시스템 보안]

/ 리눅스 bind, bind-chroot란
- bind서비스의 최상위경로가 바뀌지 않게 해주는 패키지

/ bind 설치 정보

 

/ bind, bind-chroot 설치
# yum -y install bind bind-chroot
# systemctl restart named
# systemctl enable named
# systemctl status named (옵션 -l : 상태확인 메시지 확인가능)

/ vi /etc/named.conf

- listen-on port 53 { any; }; 모든 포트 외부 접근 허용
- listen-on-v6 port 53 { none }; 모든 포트 외부 접근 비허용
- allow-query { any; }; 외부에서 오는 query를 허용할 IP 혹은 IP대역 설정
- 저장 후 'named-checkconf'로 확인 : 똑 떨어지면 이상X
- 저장 후 'systemctl restart named'
- 계속 대기중인 'standalone'방식이다.(systemctl로 하는 애들은 대부분 standalone이다.)

/ dig
- dig www.naver.com  

 

네이버

네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요

www.naver.com

- 특정 도메인 서버에서 하려면
# dig @164.124.101.2 www.naver.com  

 

네이버

네이버 메인에서 다양한 정보와 유용한 컨텐츠를 만나 보세요

www.naver.com

 

/ 리눅스의 호스트파일
- /etc/host.conf or /etc/hosts


/ DNS 질의 순서
- 리눅스에서는 $ -> /etc/host.conf -> /etc/hosts -> DNS 순으로 찾는다.
- 윈도우에서는 $ -> hosts.ics -> hosts -> DNS

/ [여담] CEO, CFO, CCO, CIO, 각 풀네임 알아두기
- CEO : 
- CFO : 
- CCO : 
- CIO : 
- CISO : 정보보호 최고 책임자
    > 1) 정보보호 관리체계의 수립 및 관리, 운영
    > 2) 정보보호 취약점 분석, 평가 및 개선
    > 3) 침해사고의 예방 및 대응
    > 4) 정보보호 사전 보안성 검토

/ bind의 설정파일 확인
# rpm -qc bind
# ps -ef | grep named

* rndc 원격제어 : 953/tcp 포트

/ dns 방화벽 설정
# firewall-config
-
영구적 > 체크 DNS > 옵션에서 firewalld 다시 불러오기
or
# firewall-cmd --permanent --add-port=53/tcp
#
firewall-cmd --permanent --add-port=53/udp
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload
firewall-cmd --list-all
- 확인 'firewall-cmd --list-all'

 

/ nslookup으로 확인
- 빨간색으로 표시한 부분은 처음 다녀오는 것이라 조금 느리게 응답이 되었던 부분이다.
- 두번째로 질의를 하면 바로 응답이 온다.

 


proxy

/ 나중에 실습할 것
-
취약점분석도구 OWASP_ZAP, BurpSuite
-
CentOS7 , squid  (서버, client)

/ squid
- 설치되어있는지 확인 및 설치 가능한지 확인
# rpm -qa squid
# rpm -qa | grep squid
# yum list squid

* 설치할때는 install, 삭제할때는 remove또는 erase 

- 설치
# yum -y install squid


- config파일 찾기

* 리눅스 마스터 시험에서 아래 빨간 부분에 들어갈 문자열이 무엇인지 찾는 문제가 종종나온다.

 

- 편집

앞의 #제거

- 포트 확인

 

- 확인

 

 

728x90

+ Recent posts