[1,2교시 - 데이터베이스 보안 구축]
/ 인덱스 정의서
- 인덱스
> 속도
> 데이터를 정렬
> 단점 : 지속적인 유지가 힘들다.
> insert, update를 하게되면 다시 업데이트가 되어야 한다.
/ 뷰 정의서
/ 테이블 용량 산정서
- 용량 산정 방법
select * from tab;
select table_name, sum(DATA_LENGTH)
FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'EMPLOYEES'
GROUP BY TABLE_NAME;
DESC USER_TAB_COLUMNS;
/*
-- (가정) 하루 등록되는 예상 건수
-- 5,000건 발생
-- 용량 산정
-- 일일 적재 예상 용량(mb) :
-- (산식) = col전체길이 x 적재예산건수/1024kb/1024mb
*/
SELECT TABLE_NAME,
round(SUM(DATA_LENGTH) * 5000/1024/1024, 2) as "1day",
round(SUM(DATA_LENGTH) * 5000/1024/1024 * 30, 2) as "30 month",
round(SUM(DATA_LENGTH) * 5000/1024/1024 * 365, 2) as "1 year",
round(SUM(DATA_LENGTH) * 5000/1024/1024 * 365 * 10, 2) as "10 year"
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'EMPLOYEES'
GROUP BY TABLE_NAME;
/ 테이블 용량 확인
SELECT
owner, segment_name, segment_type,
sum(bytes)/1024/1024 as "MB"
FROM dba_segments
WHERE segment_type= 'TABLE'
AND segment_name = 'EMPLOYEES'
GROUP BY owner, segment_name, segment_type;
/ 인덱스 용량 확인
SELECT * FROM USER_INDEXES;
select owner, segment_name, segment_type, sum(bytes)/1024/1024 as "MB"
from dba_segments
where segment_type= 'INDEX'
and segment_name = 'EMP_PK'
GROUP BY OWNER, SEGMENT_NAME, SEGMENT_TYPE;
/ 테이블 스페이스 용량 확인
SELECT A.TABLESPACE_NAME,
ROUND(A.BYTES_ALLOC / 1024 / 1024, 2) CURRENT_SIZE,
ROUND(NVL(B.BYTES_FREE, 0) / 1024 / 1024, 2) FREE_SIZE,
ROUND((A.BYTES_ALLOC - NVL(B.BYTES_FREE, 0)) / 1024 / 1024, 2) USED_SIZE,
ROUND((NVL(B.BYTES_FREE, 0) / A.BYTES_ALLOC) * 100,2) FREE_RATE,
100 - ROUND((NVL(B.BYTES_FREE, 0) / A.BYTES_ALLOC) * 100,2) USED_RATE,
ROUND(MAXBYTES/1048576,2) MAX_SIZE
FROM (
SELECT F.TABLESPACE_NAME,
SUM(F.BYTES) BYTES_ALLOC,
SUM(DECODE(F.AUTOEXTENSIBLE, 'YES',F.MAXBYTES,'NO', F.BYTES)) MAXBYTES
FROM DBA_DATA_FILES F
GROUP BY TABLESPACE_NAME) A,
(SELECT F.TABLESPACE_NAME,
SUM(F.BYTES) BYTES_FREE
FROM DBA_FREE_SPACE F
GROUP BY TABLESPACE_NAME) B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME (+)
UNION
SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES_USED + BYTES_FREE) / 1048576, 2),
ROUND(SUM(BYTES_FREE) / 1048576,2),
ROUND(SUM(BYTES_USED) / 1048576,2),
ROUND((SUM(BYTES_FREE) / SUM(BYTES_USED + BYTES_FREE)) * 100,2) FREE_RATE,
100 - ROUND((SUM(BYTES_FREE) / SUM(BYTES_USED + BYTES_FREE)) * 100,2) USED_RATE,
ROUND(MAX(BYTES_USED + BYTES_FREE) / 1048576, 2)
FROM SYS.V_$TEMP_SPACE_HEADER
GROUP BY TABLESPACE_NAME
ORDER BY 1;
--전체 DB 용량
select sum(bytes) from dba_data_files;
select sum(bytes)/1024/1024/1024 from dba_data_files; --GB로 표시
-- 사용한 DB 용량
select sum(bytes) from dba_segments;
select sum(bytes)/1024/1024/1024 from dba_segments; --GB로 표시
-- 사용 가능한 DB 용량
select sum(bytes) from dba_free_space;
select sum(bytes)/1024/1024/1024 from dba_free_space; --GB로 표시
-- 관련 테이블 검색
-- a) DBA_TABLESPACES 테이블스페이스 목록
SELECT TABLESPACE_NAME, STATUS, CONTENTS FROM DBA_TABLESPACES;
-- b) DBA_DATA_FILES 테이블스페이스 파일 목록
SELECT FILE_NAME, BYTES, STATUS FROM DBA_DATA_FILES;
-- c) DBA_FREE_SPACE 테이블스페이스 잔여 공간
SELECT TABLESPACE_NAME, BYTES, BLOCKS FROM DBA_FREE_SPACE;
---데이터 파일 당 할당된 size와 사용중인 size 확인
--- blksize = 35
select file_name,
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
ceil( blocks*&&blksize/1024/1024) currsize,
ceil( blocks*&&blksize/1024/1024) -
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
from dba_data_files a,
( select file_id, max(block_id+blocks-1) hwm
from dba_extents
group by file_id ) b
where a.file_id = b.file_id(+);
[3,4,5교시 - 시스템 보안 구축]
/ Master/Slave DNS 서버 구조
- Master DNS 서버 : 서버 1
> yum -y install bind bind-chroot
> vi /etc/named.conf >> any none any -> 여기까진 기본이다!
>> 페이지 밑에 john.com 부분을 추가
> touch /var/named/john.com.db >> zone정보 추가
- Slave DNS 서버 : client(IP고정x)
> yum -y install bind bind-chroot
> vi /etc/named.conf >> any none any -> 여기까진 기본이다!
* dns 서버 이중화 검색
/ 마스터 서버에서
# rpm -qc bind : 설정파일 찾기
# vim /etc/named.conf
* allow-query에 특정 아이피나 아이피대역을 써주면 특정 위치에서만 쿼리를 날리도록 할 수 있다.
- 슬레이브에서 마스터 파일과 동기화 할 수 있게 한줄을 추가한다.
- allow-transfer에 넣는 아이피는 클라이언트의 아이피이다.
- 맨 밑에 추가했던 내용은 잠시 메모장에 옮겨놓고 저장한다.
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { none; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
allow-transfer { 192.168.111.136; };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
- vi로 /etc/named.rfc1912.zones를 수정한다.
# vi + /etc/named.rfc1912.zones
- 맨밑에 메모장에 옮겨놓았던 내용을 붙여놓고 수정한다.
//new add
zone "john.com" IN {
type master;
file "john.com.db";
allow-update { 192.168.111.136; };
allow-transfer { 192.168.111.136; };
};
zone "111.168.192.in-addr.arpa" IN {
type master;
file "111.168.192.in-addr.arpa.db";
allow-update { 192.168.111.136; };
allow-transfer { 192.168.111.136; };
};
# named-checkconf : 설정파일 오류 확인
# systemctl restart named : 재시작
- john.com.db 파일 수정
# vi /var/named/john.com.db
- ns2를 추가해준다. (아이피는 클라이언트의 아이피 번호이다.)
$TTL 3H
@ SOA ns.john.com. root.john.com. (2 1D 1H 1W 1H)
IN NS ns.john.com.
IN A 192.168.111.101
ns IN A 192.168.111.101
ns2 IN A 192.168.111.136
WWW IN A 192.168.111.110
ftp IN A 192.168.111.111
web IN CNAME www
- 역방향 파일도 수정해준다.
- 여기에도 ns2에 대한 정보를 추가해준다.
- 클라이언트의 아이피의 끝 번호로 넣어준다.
# vi /var/named/111.168.192.in-addr.arpa.db
$TTL 3H
@ SOA ns.john.com. root.john.com. (2 1D 1H 1W 1H)
IN NS ns.john.com.
IN A 192.168.111.101
101 IN PTR ns.john.com.
136 IN PTR ns2.john.com.
110 IN PTR www.john.com.
111 IN PTR ftp.john.com.
- 확인
# named-checkzone john.com john.com.db
# named-checkzone 111.168.192.in-addr.arpa 111.168.192.in-addr.arpa.db
- 서버 재시작
# systemctl restart named
/ 이제 2차 네임서버로 사용할 클라이언트로 넘어간다.
/ dns서버를 설치한다.
# yum list bind bind-chroot
# yum -y install bind bind-chroot
/ 실행하고 확인한다.
# systemctl start named : 시작
# systemctl enable named : 활성화
# systemctl status named : 상태확인
# ps -ef | gerp named : 프로세스 확인
- 설정정보 수정하러 가기
- any, none, any 작업하기
# vim /etc/named.conf
- 수정 후 'named-checkconf'로 확인
- named.rfc1912.zones파일 수정
- 아래의 내용 추가
# vim + /etc/named.rfc1912.zones
one "john.com" IN {
type slave;
file "slaves/john.com.db";
masterfile-format text;
masters { 192.168.111.101; };
};
zone "111.168.192.in-addr.arpa" IN {
type slave;
file "slaves/111.168.192.in-addr.arpa.db";
masters { 192.168.111.101; };
};
# named-checkconf : 확인
# systemctl restart named : 재시작
# ll /var/named/slaves
- /var/named/slaves위치에 정방향, 역방향 파일이 들어와있는것을 확인해볼 수 있다.
/ 마스터서버와 슬레이브서버에서 각각 /var/log/messages | grep transfer를 확인한다.
- 정방향과 역방향 파일이 전송된 내역을 확인할 수 있다.
- AXFR(모든정보 전송), IXFR(부분정보 (incremental늘어난 정보))
- 로그를 보면 뭔가 잘 안되었을때 이유를 알 수 있다.
# cat /var/log/messages | grep transfer
- master
- slave
/ named 버전 확인
# named -version
# named -v
- 버전이 안보이게 조치 하는 법
# vi /etc/named.conf
- varsion 하고 문자열을 주면 버전확인 시 설정한 문자열을 표시하게 된다.
'정보보안학원 > 과정평가형 일지' 카테고리의 다른 글
34일차 - 데이터베이스 보안 구축, 시스템 보안 운영 (0) | 2022.06.07 |
---|---|
33일차 - 데이터베이스 보안 구축, 시스템 보안 운영 (0) | 2022.06.02 |
31일차 - 데이터베이스 보안 구축, 시스템 보안 운영 (0) | 2022.05.30 |
29일차 - 데이터베이스 구축 보안, 시스템 보안 운영 (0) | 2022.05.26 |
28일차 - 데이터베이스 보안, 시스템 보안 운영 (0) | 2022.05.25 |