[1,2,3교시 - 데이터베이스 보안]
/ 데이터베이스 보안 설계
- 데이터베스 보안 : 내부 및 외부자가 데이터베이스 내에 저장된 조직의 주요 기밀 정보에 불법적으로 접근하는 것을 막는 것
- 보안 설계 : 데이터베이스에 저장된 데이터 보호를 위한 설계에 초점을 맞춘 것
- 보안 위협들은 사용자의 실수나 오용, 내부 사용자의 권한 남용, 비정상적인 접근, 취약점들로부터 시작
/ 주요 위협 요소
- 일반적인 데이터베이스 위협
> SQL Injection
> 악성 프로그램 삽입
- 사용자에 대한 식별 및 인증 위협
> 사전 공격, 무작위 대입공격, 사회 공학적 기법
- 데이터 유출 위협
> 암호화 되지 않은 데이터
> 안전성이 확인되지 않은 암호 모듈을 사용하는 경우
- 권한 오남용 위협
> 허용된 권한보다 더 많이 부여된 접근 권한
> 악의적인 목적으로 허용된 권한 범위를 벗어나는 경우
- 암호 모듈 오용 위협
> 안전성이 검증되지 않은 암호 모듈 사용
> 적합하지 않은 암호 모드 사용
- 암복호화 키 및 마스터 키 노출 위협
> 데이터 암호화 시 키 노출
- 프로젝트 수행과정에서의 데이터베이스 접근 허용 위협
> 외부 작업자가 자사의 데이터에 접근할 수 있는 권한을 부여
- 운영과정에서 권한에 대한 관리 소흘로 인한 침해 발생 위협
> 개발자에게 DBA 권한을 설정함
- 접근통제 우회
> 디폴트계정 또는 단순 계정 등 계정번호와 비밀번호가 동일할 경우
> 계정 및 패스워드의 정책 설정이 미흡한 경우
- 데이터베이스 정보의 불법 열람 및 변조/삭제 위협
> 데이터베이스에 저장된 주요 정보에 대해 암ㅎ화가 미흡한 경우
/ 데이터베이스 보안 설계하기
1. 접근제어 설계
1) 정보 식별(right information)
- 데이터베이스, 계정, 테이블/뷰, 컬럼
2) 사용자 식별(right people)
3) 접근 방법(right form)
4) 접근 시간(right time)
2. 암호화를 설계
- 데이터베이스에 접속할 수 있는 사용자에 대한 정의
- 데이터베이스에 접속하는 사용자 식별에 대한 방법
- 암호화 대상 컬럼의 범위 정의
- 암호화 컬럼에 대한 복호화 권한 통제 수행
- 암호화 키를 위한 알고리즘과 대상 정의
- 암호화 키 사용에 대한 로깅 수행
1) 복호화 권한 통제
- 사용자 식별, 암호화 대상 컬럼, 암호화 컬럼에 대한 복호화 권한 통제, 비인가 사용자에 대한 통제
2) 암호화 키 및 알고리즘을 이용하여 구현
- 암호화 키 : 암호화 알고리즘 + 파라미터 키
- 암호화 방식 : 대칭형(암호화 키와 복호와 키 동일), 비대칭형(암호화 키와 복호화 키 다름)
- 대칭형 알고리즘 : DES, 3-DES, AES, SEED, ARIA, MASK
- 비대칭형 알고리즘 : RSA, DSA
3. 작업 결재를 설계
1) 결재 대상을 정의
- 사용자 중심, 정보 중심, SQL 중심
2) 결재자를 정의
3) 결재 사용자 관리
4) 결재자 관리
4. 취약점을 분석/설계
1) 데이터베이스 환경을 적정하게 구축
2) 계정 관리를 한다.
3) 패스워드 관리
4) 권한 관리
5) 인증 관리
6) 원격접속 관리
- 방화벽 구축
- 기본 서비스 포트 사용 자제
- 네트워크 트래픽 암호화
- 데이터베이스 서버가 있는 시스템의 운영체제 강화
- 보안 패치의 적용
/ 딕셔너리 조회 쿼리
SELECT * FROM DICTIONARY WHERE table_name LIKE 'USER_T%' AND ROWNUM < 10;
[4,5교시 - 시스템 보안]
/ 어제 퀴즈 답
예) 분 시 일 월 요일
* * * * * test.sh
-> 1분마다 test.sh를 실행(한 시간에 60번 실행)
# * * * * * test.sh
-> 10분마다 test.sh를 실행(한 시간에 6번 실행)
# */10 * * * * test.sh
-> 매시 15분과 45분에 test.sh를 실행(한 시간에 2번 실행)
# 15,45 * * * * test.sh
-> 매시 30분에 test.sh를 실행(한 시간에 1번, 하루에 24번 실행)
# 30 * * * * test.sh
-> 6시간 간격으로 test.sh를 실행(하루에 4번 실행, 00:30, 06:30, 12:30, 18:30)
# 30 */6 * * * test.sh
-> 매일 새벽 1시 20분에 test.sh를 실행(하루에 한번 실행)
# 20 1 * * * test.sh
-> 매주 월요일 새벽 3시 10분에 test.sh를 실행(일주일에 한번 실행)
# 10 3 * * 1 test.sh
-> 매월 1일 새벽 3시 30분에 test.sh를 실행(1달에 한번 실행)
# 30 3 1 * * test.sh
/ 시험 준비
1. selinux 비활성화
# vi /etc/sysconfig/selinux
# sestatus
# getenforce
2. httpd설치
# yum list httpd
# yum -y install httpd
# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd
# netstat -ant | grep 80
# netstat -ant | egrep '22|80' -- 22,80포트 둘 다 표시
3. 방화벽 열기
# firewall-config
- 영구적 > http 체크 > 옵션에서 firewalld 다시 불러오기
# firewall-cmd --list-all
4. 호스트pc에서 서버의 index페이지 띄우기
# rpm -ql httpd
# vi /var/www/html/index.html
# systemctl restart httpd
- 호스트pc에서 putty_kn.exe 실행
- root / password 접속
# who
# w
# users
# netstat -ant | grep 22
# netstat -antp | grep httpd
# netstat -antp | grep 22
# netstat -ant | grep 22
- 호스트pc에서 웹페이지 새로고침을 여러번하고, 서버에서 netstat을 확인해서 연결상태 확인
'정보보안학원 > 과정평가형 일지' 카테고리의 다른 글
25일차 - 네트워크 보안 (0) | 2022.05.23 |
---|---|
24일차 - 데이터베이스 보안, 시스템 보안 (0) | 2022.05.19 |
22일차 - 시스템 보안 (0) | 2022.05.17 |
21일차 - 데이터베이스 보안, 시스템 보안 (0) | 2022.05.16 |
18일차 - 데이터베이스 보안, 시스템 보안 (0) | 2022.05.11 |