[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파일 찾기
* 리눅스 마스터 시험에서 아래 빨간 부분에 들어갈 문자열이 무엇인지 찾는 문제가 종종나온다.
- 편집
- 포트 확인
- 확인
'정보보안학원 > 과정평가형 일지' 카테고리의 다른 글
23일차 - 데이터베이스 보안, 시스템 보안 (0) | 2022.05.18 |
---|---|
22일차 - 시스템 보안 (0) | 2022.05.17 |
18일차 - 데이터베이스 보안, 시스템 보안 (0) | 2022.05.11 |
17일차 - 데이터베이스 보안, 시스템 보안 (0) | 2022.05.10 |
16일차 - 데이터베이스 보안, 시스템 보안 (0) | 2022.05.09 |