728x90

1. 라우터-스위치-pc연결

라우터에 스위치를 연결하고 그 스위치에 pc를 연결해보자.
먼저 패킷트레이서의 하단 아이콘에서 라우터, 스위치, pc를 각각 선택하여 빈 화면에 띄워놓는다.

 

 


그리고 스트레이트 케이블로 각각의 장비들을 연결할것이다.
스트레이트 케이블, 라우터, 스위치, pc가 무엇인지 잘 모르겠다면 이전 포스팅을 참고하자.
참고 : https://streetdeveloper.tistory.com/72

 

패킷트레이서 사용법

1. 패킷트레이서 다운로드 링크 : https://skillsforall.com/resources/lab-downloads Skills for All Resource Hub Your one-stop for learning resources used within our courses such as hands-on practice ac..

streetdeveloper.tistory.com

 

스트레이트 케이블을 선택하고 먼저 라우터를 클릭해보자.
여러 항목이 나오는데 그 중 'FastEthernet0/0'포트를 선택한다.

그리고 스위치도 클릭해보자.
여기에서도 여러 항목이 나오는데 그 중 'FastEthernet0/24'포트를 선택한다.
참고할것은 스위치를 라우터에 연결할때는 'FastEthernet0/24'부터 꼽기 시작하고
스위치를 pc에 연결할때는 'FastEthernet0/1'부터 꼽기 시작한다는 것이다.('FastEthernet0/0'이 있다면 그것부터 꼽는다.)
꼭 그래야하는것은 아닌데 네트워크 입문 책들을 보면 대부분 그렇게 되어있다..
지금은 라우터와 스위치를 연결하는 것이므로 케이블을 'FastEthernet0/24'포트에 꼽았다.

연결된 모습이다.

이번엔 스위치를 pc 2대에 연결해보자.
이번에도 스트레이트 케이블을 선택하고 스위치를 클릭한다.
그리고 이번에는 'FastEthernet0/1'을 선택한다.

그러고나서 pc를 클릭한다.
pc에서는 'FastEthernet0'을 선택한다.

다른 pc는 스위치의 'FastEthernet0/2'와 연결해보자.

실험정신이 있는 사람이라면 케이블을 눈에 보이는 Console이나 USB0 이런곳에 한번 꽂으려고 시도해볼것이다.
하지만 안될것이다..ㅋㅋ
각 케이블은 맞는 구멍들이 다 있다. 패킷트레이서는 괜히 모든 항목을 보여줘서 헷갈리게 한다...

모두 연결하면 이런 모양이 된다.

케이블에 보이는 '초록 세모'는 뭔가 연결이 되어서 네트워크 상태를 이루었다는 뜻이고
'주황색 동그라미'나 '빨간색 세모'는 아직 네트워크적으로 연결이 안되었다는 뜻이다.
스위치랑 pc는 아무런 조치를 취하지 않아도 케이블로 연결만 하고 시간이 조금 지나면 초록 세모가 된다.

 

2. 라우터-라우터 연결

라우터는 다른 네트워크 대역을 연결할때 쓰이는 장비이다.
조금 있어보이게 말하면 WAN과 WAN을 연결하는 장비이고 그냥 쉽게 이해하자면 부산지역의 네트워크 대역과 서울지역의 네트워크 대역을 연결하는 것이라고 생각하면 된다.

라우터랑 라우터를 연결하려면 DTE나 DCT케이블을 이용해서 연결해줘야 하는데 기본 라우터에는 이 케이블을 꼽을 수 있는 포트가 없다.
그래서 장비뒤편에 '모듈'이라는 것을 추가해서 DTE/DCE 케이블을 꼽을 수 있도록 조치해야 한다.
여기서 모듈이 뭐냐면 필요에 의한 케이블 종류를 꼽을 수 있게 모아둔 것라고 생각하면 된다.

아까 위에서 완성한 토폴로지 옆에 라우터 장비를 하나 더 놓아보자.

 

그러고 이제 라우터 둘중에 하나 아무거나 클릭한 후
Physical탭을 눌러보면 모듈이 이것저것 나온다.
여기서 또 한번 멘붕이 올 수 있다. 이게 다 뭐여..하고..

왼쪽은 이런저런 모듈 목록이고
오른쪽에 뭔가 장비뒷편 처럼 생긴것은 진짜 라우터 장비의 뒷면을 표현한것이다.
까만 공간은 모듈이 꽂아져 있지 않아서 빈것이다.(모듈을 5개 꼽을 수 있는 상황이다.)
장비의 우측하단에는 전원 스위치도 있다.

모듈을 추가하려면 먼저 전원을 꺼야한다.
(1) 전원부분을 한번 클릭하여 전원을 끈다.
(2) 그리고 왼쪽의 모듈 목록에서 'WIC-2T'를 클릭하고 우측 하단의 모듈모양을 드래그해서 위 장비의 빈 공간에 끌어다 놓는다.
(3) 모듈을 잘 넣었다면 전원부분을 다시 눌러서 키면 된다.
* 큰 네모 공간에는 사이즈가 안 맞아서 안들어가고 작은 네모 공간에 놓아야 들어간다.
* 장비를 끄지 않고 진행하거나 사이즈가 맞지 않는곳에 모듈을 넣으려고 하면 에러메시지가 뜬다.
* 만약 모듈을 잘못 넣었다면 다시 드래그해서 빼면 된다.

 

모듈을 넣은 모습이다.

 


작은 네모가 4개인데 아무데나 꼽아도 되는걸까?
아무데나 꼽아도 되긴 하는데 포트 넘버 숫자가 있긴하다.
순서는 아래 그림과 같고, 무슨 차이가 있냐하면 나중에 세팅할때
0번 포트에 꼽으면 'Serial0/0/0'이 되고, 3번 포트에 꼽으면 'Serial0/3/0'이 되는 식이다.
참고로 시리얼 뒤에 붙는 번호는 '슬롯 숫자/모듈 숫자/인터페이스 숫자' 이다.

 

아 그리고 모듈이 종류가 엄청 많은데 뭐가 무엇일까..
모듈에 NM이 들어가면 Network Module이고
WIC는 Wan Interface Card, 
E는 Ethernet, 
FE는 Fastethernet, 
T는 Serial이라고 한다.
방금 우리가 넣은것은 'WIC-2T'이니까 Wan Interface Card가 있고 Serial포트가 2개 있는 것이다.
(다른것은 잘 모름..)
일단 내가 연습할때는 주로 WIC-2T를 썻다..ㅋㅋ

 

라우터에 시리얼 포트가 있는 모듈을 추가해줬으므로 라우터끼리 DTE/DCE케이블을 연결해 줄 수 있게 되었다.
(아, 방금 했던 'WIC-2T'모듈 끼우는 것을 라우터 2개에 모두 끼워줘야 한다.)

이제 라우터끼리 연결을 해보자.

번개모양의 DTE를 선택하고 라우터를 클릭한다.
항목이 여러개 나오는데 이때 'Serial0/0/0'포트를 선택한다.

그리고 다른쪽 라우터도 클릭해서 'Serial0/0/0'을 선택하여 연결해준다.
연결된 모습은 이렇다.

 

심심하니까 연습할겸 1번에서 했던 라우터-스위치-pc연결을 왼쪽에도 해주고 나면 이런 그림이 나온다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
728x90

1. 패킷트레이서 다운로드

링크 : https://skillsforall.com/resources/lab-downloads

 

Skills for All Resource Hub

Your one-stop for learning resources used within our courses such as hands-on practice activities and our network simulation tool, Cisco Packet Tracer.

skillsforall.com:443

위 링크에서 OS에 맞는 프로그램을 다운로드 받아 설치를 한다.

설치 후 프로그램을 실행하기 위해서는 시스코 홈페이지에 가입을 해야할 수 있다.

 

2. 실행

실행을 하고 나면 아래와 같은 화면이 뜬다.(8.1.1 기준)
버전이 다르다고 해도 크게 다르지 않다.
아래 이미지 좌측 하단에 표시해 놓은 숫자는 기기의 큰 카테고리를 뜻한다.
1번 항목에는 라우터, 스위치, 방화벽 장비들이 있고
2번 항목은 pc, server 등
3번 항목에는 케이블들이 있다.

 

실습을 위해 이것저것 장비를 한번 놓아보자.
예를 들어 '라우터'라는 장비를 놓으려면
1. '클릭1'을 누른 후 그 아래칸 원통 모양의 라우터 아이콘(클릭2)을 클릭한다.
2. 그러면 그 오른쪽에 선택할 수 있는 수 많은 라우터 종류들이 나열되는데 지금은 아무거나 마음에 드는것을 선택하여 클릭(클릭3)하고 위의 빈 화면에 끌어다 놓거나 빈 화면을 클릭(클릭4)하면 된다.


결과화면

 

 

3. 장비 및 케이블 종류

맨 처음에는 뭐가 많은데 뭐가 뭔지 몰라서 뭘 놓아야 할지 모른다.
대충 처음에 입문하게 될때 많이 쓰이는 장비 및 케이블을 설명하겠다.

  > 
 
이름 : 라우터
쓰임새 : 다른 네트워크 대역대를 이어줄때 쓰인다.
  > 
이름 : 스위치
쓰임새 : 비교적 가까운 곳에 있는 pc나 server등을 이어줄때 쓰인다.
  > 
이름 : ASA
쓰임새 : 방화벽 장비이다. 라우터랑 거의 비슷하다.
  >
이름 : PC
쓰임새 : 걍 집에 있는 pc를 표현한다. ping을 날려서 테스트하거나 홈페이지에 접속하여 테스트하는 용도로 많이 쓰인다.
  > 
이름 : Server
쓰임새 : 초반에 DNS서버로 많이 나온다.
  > 
이름 : 스트레이트 케이블
쓰임새 : 종류가 다른 장비를 연결할때 쓰인다.
예를 들어 라우터와 스위치를 연결하거나 할때.
  > 
이름 : 크로스 케이블
쓰임새 : 종류가 같은 장비를 연결할때 쓰인다.
예를들어 스위치와 스위치를 연결하거나 할때.
  > 

이름 : DCE 케이블
쓰임새 : 라우터와 라우터를 연결할때 쓰인다.
토폴로지에서 시계 모양이 있으면 이 아이콘을 선택에 연결해주면 된다.
토폴로지에 시계 모양이 없으면 바로옆에 빨간 번개모양인데 시계모양이 없는걸로 선택해 연결해준다.
  > 
이름 : DTE 케이블
쓰임새 : 라우터와 라우터를 연결할때 쓰인다.
토폴로지에 시계 모양이 없으면 이것으로 선택해 연결해준다.

 

 

4. 토폴로지란?

네트워크 수업을 듣기시작했다면 토폴로지 실습을 할것이다.
토폴로지는 컴퓨터 네트워크 요소들을 물리적으로 연결해 놓은것을 뜻한다.

실습을 한다고 하면 직접 모든 장비들을 배치하면서 요구사항에 맞게 세팅하는 작업을 하게된다.

이런식으로 배치를 해놓고 통신이 되도록 각 장비에 세팅을 하는 실습을 한다.

 

 

5. 인터페이스

맨 처음 스위치를 놓고 케이블을 꽂으려고 하면 조금 당황스럽다.
뭐가 되게 많기 때문이다..

저 많은 항목 중 어디에 케이블을 꽂아도 괜찮다.
FastEthernet0/1이든 FastEthernet0/15이든 FastEthernet0/23이든..
나중에 스위치에 세팅을 할때 해당 케이블을 꽂았던 인터페이스에 세팅을 해주면 되기 때문이다.
연습할때는 보통 pc들은 FastEthernet0/1부터 차례대로 꽂는다.

 

728x90
728x90

[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 하고 문자열을 주면 버전확인 시 설정한 문자열을 표시하게 된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
728x90

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

 

데이터베이스 보안 구현

수행 순서

1. 수립된 구현 계획에 따라 보안성이 강화된 데이터베이스를 구현한다.
- 보안 데이터베이스 구현 및 운영 단계의 주안점을 확인한다.
- 접근제어 부문의 구축 및 운영 주안점을 확인한다.
- 운영 관리 활동 분야를 확인한다.
- 직무의 분리, 로그 검토 등의 체크사항을 확인한다.
- 데이터베이스 암호화 부문의 구축 및 운영 주안점을 확인한다.
- 데이터베이스 작업결재 부문의 구축 및 운영 주안점을 확인한다.
- 데이터베이스 취약점 분석 부문의 구축 및 운영 주안점을 확인한다.

2. 데이터베이스 설계 문서를 기반으로 데이터베이스를 구현한다.
- 데이터베이스 설계 문서를 확인한다.
    > E-R 다이어그램, 테이블 정의서, 인덱스 정의서, 뷰 정의서, 테이블 용량 산정서, 인덱스 용량 산정서, 데이터 파일 용량 산정서, 시스템 파일 용량 산정서
    > ERD 참고 링크1, ERD 참고 링크2
    > 엔티티 도출해보기

엔티티 속성
유통회사 회사코드, 전화, 위치, 담당자
물품 가격, 재고량, 입고일자, 물품명

- 데이터베이스 구축 시나리오를 작성한다.
- 데이터베이스를 구축한다.
- 인덱스를 설정한다.
- 사용자 권한을 설정한다.

 

ER 다이어그램

ERD(Entity-Relation Diagram: 개체 관계도) - ER 모델(개체-관계 모델, Entity-Relationship M...

blog.naver.com

 



 


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

/ 2차 네임서버가 있을 경우에 데이터를 허용하는 것
- allow-transfer{ any; };

/ john.com.db 수정
# vi john.com.db

$TTL    3H
@       SOA     @       root. (2 1D 1H 1W 1H)
        IN      NS      @
        IN      A       192.168.111.101

WWW     IN      A       192.168.111.110
ftp     IN      A       192.168.111.111

[두번째 줄]
- root.의 점은 그냥 마침표의 점(.)이다.
- 괄호안의 2 : 시리얼번호
- 1D : 동기화의 간격(하루 마다)(정기적인 업데이트)
- 1H : 동기화가 실패했을경우 리트라이 시간(1시간)
- 1W : 계속 리트라이 하다가 이제 안하는 시간
- 마지막의 1H : 동기화된 데이터를 유지하는 시간(마스터네임서버와 슬레이브서버간의)
[세번째 줄]
- IN : 인터넷에서 주고받는 정보라는 뜻
- NS : 네임서버
- @ : 자기자신이다.
[네번째 줄]
- IN :  인터넷에서 주고받는 정보라는 뜻
- A : IPv4 (AAAA는 IPv6버전이다.)

/ 내용 저장 후 'named-checkzone john.com john.com.db'으로 내용에 이상이 없는지 체크한다.

 

/ 다시한번 john.com.db파일을 수정해본다.
# vi john.com.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

ns      IN      A               192.168.111.101
WWW     IN      A               192.168.111.110
ftp     IN      A               192.168.111.111
web     IN      CNAME           www

- ns.john.com. : ns.john.com뒤에는 점(.)이 꼭 들어가야 한다.
- 아이피 말고 이름으로 되어 있으면 점으로 끝나야 한다.
- root.john.com. : @가 들어가지 않는다
- cname : 별칭
- 상단의 TTL은 사용자가 이 정보 캐시를 얼마동안 가지고 있을지

/ 다시 내용 저장 후 'named-checkzone john.com john.com.db'으로 내용에 이상이 없는지 체크한다.

/ 서비스를 재시작하여 적용한다.
# systemctl restart named

* 종종 문제에서 CNAME이냐 A이냐를 선택하는게 있는데 아이피면 A이고 문자열이면 CNAME이다.

/ 테스트(정방향)
# nslookup
# server 192.168.111.101
# ftp.john.com
# web.john.com

 

/ cmd에서도 확인해본다.

 

- 지금까지 마스터 DNS서버를 만들어본것이다.

/ 메모
- named.conf
- john.com.db
    > 정방향/역방향이 있다.
    > 정방향 : 이름 -> ip
    > 역방향 : ip -> 이름

/ 역방향 설정
# vi + /etc/named.conf (파일의 맨 끝에서 커서를 열겠다.)
- 맨 끝에 아래의 내용을 추가한다.

zone "111.168.192.in-addr.arpa" IN {
        type master;
        file "111.168.192.in-addr.arpa.db";
        allow-update { any; };
};

- 큰따옴표안의 문자열과 file의 블라블라.db의 블라블라는 맞춰놓는게 나중에 유지보수시에 편하다.
- 저장 후 'named-checkconf'로 확인한다.

/ 아직 재시작을 해도 올라가지 않는다.
# systemctl restart named

- 역방향 파일이 아직 없기 때문이다.
# systemctl status named -l

 

/ 기존의 정방향 파일을 복사해서 역방향 파일을 만든다.
# cp john.com.db 111.168.192.in-addr.arpa.db
- 복사 후 수정한다.
# vi 111.168.192.in-addr.arpa.db
- PTR : 역방향 조회에 사용되는 레코드

$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.
110     IN      PTR             www.john.com.
111     IN      PTR             ftp.john.com.

- 저장 후 체크한다.
# named-checkzone 111.168.192.in-addr.arpa 111.168.192.in-addr.arpa.db

- 서버를 재시작한다.
# systemctl restart named

 

/ nslookup으로 확인한다.
# nslookup
# server 192.168.111.101
- 아이피로 조회해본다.




/ nslookup에서 set type
- set type을 ns로 설정해본다.
- ns정보 위주로 조회한다.
# set type=ns
# john.com
# naver.com
# google.com


- set type을 soa로 설정해본다.
- 속성정보로 조회한다.

- set type을 mx로 설정해본다.
# set type=mx
- 메일 서버의 정보를 보여준다.
- john.com은 아직 메일서버가 없어서 데이터가 나오지 않는다.

- 메일서버는 우선순위를 10단위로 지정한다.(10이 제일 작다)

 

- set type을 A로 지정해본다.
- 기본으로 지정되어 있는 타입이다.

 

- 윈도우에서는 -type으로 지정한다.
# nslookup -type=ns google.com

 

내일은 dns서버를 이중화하는것을 배운다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
728x90

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

 

 


 

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

/ vsftp가 어디에 있나
# rpm -ql vaftpd | grep /var/ftp

/ pub디렉토리의 권한을 확인
# ls -ld /var/ftp/pub

/ vsftpd의 프로세스 확인
# ps -ef | grep vsftpd

/ vsftpd의 프로세스 확인
# netstat -antp | grep vsftpd

* 보안기사 기출 문제
- 아래의 ftp설명을 보고 괄호를 채워라

FTP는 (능동)모드와 수동모드가 있다. (능동)는 통신 제어를 위한 (21/tcp)포트와 데이터 전송을 위한 (20/tcp)포트를 사용한다. 수동모드에서는 데이터 전송을 위해 서버에서 (1024/tcp)포트 이상을 사용한다.

 

/ 리눅스에 ftp 클라이언트 설치
# yum -y install ftp

/ 리눅스 ftp 실행
# ftp localhost
- 누구로 로그인할지 물으면 차례로 root / password 입력

 

/ 윈도우 cmd에서 ftp 실행
- cmd를 열고 'ftp 아이피'를 입력한다.
# ftp 192.168.111.101
- 사용자와 암호를 입력한다.

- ftp에서 나오려면 'quit'나 'exit'를 입력한다.

* vi에서 해당줄로 이동하기
- 명령하고 숫자를 입력 후 쉬프트+G

/ vsftpd 로그보기
# cat /var/log/xferlog

 

 


 

DNS 이중화

/ 세팅순서
1. 해싱전용 dns 세팅
2. 마스터 세팅
3. 슬레이브 서버 세팅해서 동기화

/ centos/ubuntu 설치 차이점
- centos
    > net-tools, bind-utils
    > bind bind-chroot
    > yum -y install
    > rpm -iVh ... rpm
- ubuntu
    > net-tools, dnsutils
    > bind9
    > apt -y install bind9 or apt-get -y install bind9
    > dpkg -i ... dep

 

- bind-chroot란? : 조사해보기

/ 설치
# yum -y install bind bind-chroot
# systemctl start named
# systemctl enable named
# systemctl status named : 확인


/ 확인
# ps -ef | grep named
# netstat -antup | grep named

 

/ 설정파일 확인 및 설정
# rpm -qc bind
# cp /etc/named.conf /etc/named_bak.conf : 설정파일 백업
# vi /etc/named.conf : 수정

캐싱전용에서는 이것만 하면 된다.

# named-checkconf  : 설정내용에 문제가 있는지 체크
# systemctl restart named

/ 방화벽 열기
# firewall-cmd --permanent --add-service=dns
# firewall-cmd --reload
# firewall-cmd --list-all

 

/ nslookup
# nslookup
> server 192.168.111.101
> 알고싶은 도메인

- Non-authoritative answer : 윈도우에서의 권한없는 응답과 같다.

 

/ 마스터 DNS 서버 세팅
# vi /etc/named.conf
- 제일 밑에 아래의 내용을 넣는다.

zone "john.com" IN {
        type master;
        file "john.com.db";
        allow-update { any; };
};

 

- 이때 'systemctl restart named'를 하면 에러가 나는데 이것은 'systemctl status named -l'을 하면 알 수 있다.


- 위 설정파일에 적었던 'john.com.db'파일을 'var/named'밑에 만들어주어야 한다.
# vi /var/named/john.com.db
- TTL(time to live) : dns의 ttl은 dns의 정보를 가져와서 기억하고 있는 시간이라는 뜻
- 시간단위를 H로 시간형식으로 표현할 수 도 있고 초로 표현할수도 있다.
- SOA(start of Authority) : 레코드는 해당 도메인에 대해 네임서버가 인증(authoritative)된 자료를 갖고 있음을 의미

$TTL    3H
@       SOA     @       root. (2 1D 1H 1W 1H)



 

 

 

 

 

 

 

 

 

728x90
728x90

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

 

 


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

/ 과목
- 시스템 보안 구축
- 시스템 보안 운영 ~ 6/29
- 정보시스템 진단
- 모의해킹
- 보안 운영관리
- 보안로그 분석
- SW개발 보안 구축
- 애플리케이션 보안 운영 ~2/3

/ FTP
- File Transfer Protocol, tcp 사용
- 20/tcp 데이터전송포트
- 21/tcp 컨트롤 포트
* 22/tcp sshd Openssh-server
* 443/tcp ssl Secure socket Layer https

/ FTP 패키지
- vsFTPd(very secure)
- sFTP : 22/tcp포트를 사용한다. 
- scp : 22/tcp 포트를 사용한다.

/ 버전확인
- 우분투 : cat /etc/issue
- centOS : cat /etc/*release*

 

/ 커널 버전 확인
- cat /proc/version
- uname -r
- uname -a

/ vFTPd 설치
# rpm -qa |  grep vsftpd : 확인
# yum list vsftpd : 확인
# yum -y install vsftpd

- 설치 확인
# yum list installed | grep vsftpd

 

/ vsftpd 실행
# systemctl start vsftpd
# systemctl enable vsftpd
# systemctl status vsftpd : 확인

# ps -ef | grep vsftpd

# netstat -antp | grep vsftpd

- 설정파일 찾기
# rpm -qc vsftpd
- 설정파일 : /etc/vsftpd/vsftpd.conf

- 설치된 패키지의 경로
# rpm -ql vsftpd

/ vsftpd 방화벽 설정
# firewall-cmd --permanent --add-port=20/tcp
# firewall-cmd --permanent --add-port=21/tcp
# firewall-cmd --permanent --add-service=ftp
# firewall-cmd --reload

# firewall-cmd --list-all

- 호스트pc에서 tcping으로 확인
- cmd에서 'tcping 192.168.111.101 21'


/ vsftpd 설정파일
# rpm -qc vsftpd

# ls -al /etc/vsftpd/

- ftpusers :  무엇인지 조사

- user_list : 무엇인지 조사


# vi vsftpd.conf
- anonymous_enable=YES : 익명으로 접근 할 수 있는지 여부(안할때는 주석처리 함)
- local_enable=YES : 무엇인지 조사
- write_enable=YES : 무엇인지 조사
- local_umask=022 : 무엇인지 조사
- anon_upload_enable=YES : 무엇인지 조사
- anon_mkdir_write_enable=YES : 무엇인지 조사
- xferlog_enable=YES : fpt로그 기록 여부
- connect_from_port_20=YES

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/xferlog
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode. The vsftpd.conf(5) man page explains
# the behaviour when these options are disabled.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
#chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=NO
#
# This directive enables listening on IPv6 sockets. By default, listening
# on the IPv6 "any" address (::) will accept connections from both IPv6
# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
# sockets. If you want that (perhaps because you want to listen on specific
# addresses) then you must run two copies of vsftpd with two configuration
# files.
# Make sure, that one of the listen options is commented !!
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

- 설정파일을 수정 한 수 restart를 한번 해준다.
# systemctl restart vsftpd

/ vsftpd의 설치 위치
# rpm -ql vsftpd


- pub폴더의 권한을 보면 other유저의 권한은 쓰기(r), 실행(x)권한만 있다.
- 해서 쓰기 권한을 줘야만 ftp로 파일을 업로드할 수 있다.


- other유저에 스기 권한을 주기
# chmod o+w pub

- pub폴더의 소유를 root에서 other유저인 ftp로 변경한다.
# chown ftp.ftp pub
# chown ftp:ftp pub


- ftp로 접속했는데 아무파일도 없으면 내가 어디에 있는것인지 잘 모를 수 있으므로 임의의 파일을 만든다.
# ./pub
# touch vsftpd_server


- 임의의 내용 넣어보기
# echo blabla > vsftpd_server : 내용 변경
# echo blabla >> vsftpd_server : 내용 추가

 

/ 파일질라 설치
- https://filezilla-project.org/download.php 접속 후 초록 버튼 말고 밑에 있는 'Show additional download options'클릭

- Windows환경에서 설치 시 FileZilla_3.59.0_win64-setup.exe클릭

- 설치는 그냥 넥스트 넥스트 하면 된다.

 

/ 파일질라 실행
- 익명접속 시 로그인 유형을 '일반'으로 놓고 사용자에 'anonymous'으로 놓으면 된다.


- 확인

- 접속 성공


/ ftp 업로드 시도
- pub파일 안쪽으로는 파일을 업로드하거나 폴더를 생성할 수 있는데, 바깥쪽에는 업로드하거나 파일 생성이 되지 않는다.
- pub폴더 안의 파일이나 폴더 삭제는 되지 않는다.

 

/ vsftpd 로그확인
- 위치 및 파일명 : /var/log/xferlog
# cat /var/log/xferlog

- 파일명 뒤에 a : 전송모드가 아스키 모드였을 때(아스키는 cat으로 읽을 수 있는것, b는 바이너리 모드. 바이너리 모드는 cat으로 읽을 수 없다.)
- '_'(언더바)뒤의 i : input의 i이다. 클라이언트에서 서버측으로 업로드 하였을때
- '_'(언더바)뒤의 o : output의 o이다. 클라이언트에서 다운로드 받았을때
- 그 뒤의 알파벳
    > a : 익명계정
    > g : 패스워드 인증을 거친 익명계정
    > r : 패스워드로 인증된 사용자
- 물음표 : 익명
- 물음표뒤의 ftp : ftp방식
- 그 뒤는 계정이름
- * 뒤의 i or c
    > i : 작업 미완료(Incomplete)
    > c : 작업완료(complete)

/ root 연결 시도
- 계정을 root / password로 입력하고 접속해보기

- 서버에서 설정을 다시 해줘야 한다.
- ftpusers, user_list에서 root를 주석처리 해준다.
# vi /etc/vsftpd/ftpusers
# vi /etc/vsftpd/user_list
# systemctl restart vsftpd

- 파일질라에서 다시 root / password로 접속해본다.

- root계정이기 때문에 업로드/다운로드가 자유롭게된다.

/ 로그확인
* w, who로는 보이지 않는다.
* netstat에서는 접속을 확인할 수 있다.
* ps -ef | grep vsftpd
# cat /var/log/xferlog

 

​/ FTP 모드(능동 vs 수동)
- 능동모드의 주체는 서버이다.
- 수동모드의 주체는 클라이언트다.
- 방화벽이 있을때 수동모드를 쓴다.

 

 

728x90
728x90

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

# select * from dba_data_files;
# select * from V$NLS_PARAMETERS;
# select * from sys.v_$parameter;
# select * from sys.props$;

/ cmd에서 1
# wmic diskdrive get deviceid, model, size

/ cmd에서 2
# wmic logicaldisk get name,size

/ cmd에서 3
# wmic volume get name, capacity

/ cmd에서 4
# PowerShell "Get-WmiObject Win32_DiskDrive | FT DeviceID,@{E={\"{0:N1} GB\" -F($_.Size/1GB)}} -H -A" | FindStr G | Sort

/ cmd에서 5
# PowerShell "Get-WmiObject Win32_LogicalDisk -F DriveType=3 | FT DeviceID,@{E={\"{0:N1} GB\" -F($_.Size/1GB)}} -H -A" | FindStr G

 

 

 


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

net-tools bind-utils

728x90
728x90

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

 


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

/raid1, raid5
- 가상서버에 하드 1기가 싱글로 5개 추가
- 리부팅
# ll /dev/sd*
# fdisk /dev/sdb
- n > 엔터4번 > t > fd > p로 확인 > w로 저장 (/dev/sdb~/dev/sdf까지 진행)
# fdisk -l | grep fd 로 확인
# ll /dev/sd* 로 확인
# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
- 뭐라 물어보면 y
# mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdd1 /dev/sde1 /dev/sdf1
# mkfs.ext4 /dev/md1
# mkfs.ext4 /dev/md5
# mkdir /raid1
# mkdir /raid5
# mount /dev/md1 /raid1
# mount /dev/md5 /raid5
# df -h 로 확인

# vi /etc/fstab
- /dev/md1    /raid1    ext4    defaults,nofail    0 0
- /dev/md5    /raid5    ext4    defaults,nofail    0 0     -> 추가 및 저장
# reboot
# blkid

 

* 우분투 계열 설치 : dpkg, apt
* 레드햇 계정의 rpm, yum과 같다.
* 설치할때는 install, 삭제할때는 remove이다.
* 삭제할때 레드햇은 erase, 우분투는 purge(강력)가 있다.

/ SSL
- 시큐어 소켓 레이어 라는 뜻!

/ 프록시 설정
- 서버에서..
# rpm -qa | grep squid
# yum list squid
# yum -y install squid
# systemctl start squid
- 시작이 안될경우 open-ssl을 설치해줘야 한다.
# yum -y install openssl (시작이 안되는 경우)
# systemctl enable squid
# ps -ef | grep squid -> 프로세스가 살아있는지 확인
# netstat -antup | grep squid
# firewall-cmd --permanent --add-port=3128
# firewall-cmd --permanent --add-port=8081
# firewall-config
- 포트 추가 > 영구적 > 옵션 Firewalld불러오기
# firewall-cmd --list-all
# rpm -qc squid -> /etc/squid/squid.conf가 설정파일
# vi /etc/squid/squid.conf
- acl centos7 src 192.168.111.0/24
- http_access allow centos7
- http_port 3128   -> 확인
# systemctl restart squid
# netstat -antp | grep squid

- 클라이언트에서..
# su -
- 파이어폭스를 띄우기 > 편집 > 환경설정 > 고급 > 네트워크 > 설정 클릭 > 프록시 수동 설정 > 192.168.111.101 포트 3128, 모든 프로토콜 선택 > 확인

- 서버에서..
# tail -f /var/log/squid/access.log

- 클라이언트에서..
- 파이어폭스에서 nate.com들어가 보기

- 서버에서..
# netstat -ant | grep 3128 한 화면을 캡쳐
# vi /etc/squid/squid.conf    -> 포트를 변경하러 가기
- 3128포트를 8081포트로 변경
# systemctl restart squid
# netstat -ant | grep 8081
# tail -f /var/log/squid/access.log 걸어놓기

- 클라이언트에서..
- 파이어폭스 새로고침 -> 안되는거 확인
- 안되는거 확인하고 다시 프록시 세팅창에서 포트를 8081로 변경

- 서버에서
# netstat -ant | grep 8081

 

 

 

728x90
728x90

집에서 따로 정리예정..

728x90
728x90

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

/ 오라클 데이터 딕셔너리
- 전용 뷰(view) 접두어 : user_, all_, dba_

/ SQL, PL/SQL 풀네임
- SQL : Structured Query Language
- PL/SQL : Procedural Language

/ 현재 계정의 모든 테이블 목록 쿼리
# select * from tab;

/ 테이블의 데이터 조회 쿼리
- SELECT 가져올항목(모두 가져올 경우 *) FROM 테이블이름 WHERE 조건;
- ex) SELECT * FROM EMPLOYEES WHERE first_name = 'Steven';
- EMPLOYEE테이블에서 first_name이 'Steven'인 데이터를 모두 가져와라

/ 조건절 LIKE
- ex) SELECT * FROM EMPLOYEES WHERE first_name LIKE 'St%';
- 'St'로 시작하는 문자열 검색
- ex) SELECT * FROM EMPLOYEES WHERE first_name LIKE '%St';
- 'St'로 끝나는 문자열 검색

- ex) SELECT * FROM EMPLOYEES WHERE first_name LIKE '%St%';
- 'St'문자열이 들어가는(St로 시작하고 끝나는) 문자열 검색

/ USER_CONSTRAINTS 데이터 딕셔너리
- 제약조건을 위배하면 오류 메시지에 제약 조건명만 출력되는데, 이때 오라클이 부여한 제약 조건명으로는 어떤 제약 조건을 위반했는지 알 수 없다.
- 이때 USER_CONSTRAINTS를 검색하면 확인할 수 있다.
# DESC USER_CONSTRAINTS;
- TABLE_NAME : 테이블명
- CONSTRAINT_NAME : 제약조건명
- CONSTRAINT_TYPE : 기본키/외래키 정보
- R_CONSTRAINT_NAME : 외래키인 경우 PRIMARY KEY를 참조했는지 
- STATUS : 제약조건 활성화 정보
- SEARCH_CONDITION : 검사 제약 조건으로 지정된 조건

/ 특정 테이블에 지정된 제약조건 검색
# SELECT 컬럼명 FROM USER_CONSTRAINTS WHERE TABLE_NAME='테이블명';

/ 테이블 예명(alias)
- 쿼리 작성 시 테이블 이름이 너무 길 경우 예명을 줄 수 있다.
- 사용법 : 테이블 이름 뒤에 예명을 따로 적어준다.
- ex) SELECT * FROM USER_CONSTRAINTS C1 WHERE TABLE_NAME='EMPLOYEES';

/ 수업 때 진행 한 쿼리
- USER_CONSTRAINS : 유저가 소유한 모든 제약 조건을 볼 수 있다.
- USER_CONS_COLUMNS : 컬럼에 할당된 제약 조건을 볼 수 있다.
- 아래는 EMPLOYEES테이블의 제약조건을 검색하는 쿼리이다.

SELECT
    c2.column_name,         -- 컬럼명
    c1.constraint_name,     -- 제약조건명
    c1.constraint_type,     -- 기본키/외래키 정보
    c1.search_condition,    -- 검사 제약 조건으로 지정된 조건
    c1.r_constraint_name    -- 외래키인 경우 PRIMARY KEY를 참조했는지 
FROM
    user_constraints  c1,
    user_cons_columns c2
WHERE
        c1.constraint_name = c2.constraint_name
    AND c1.table_name = 'EMPLOYEES'
ORDER BY 1;

- 결과

 

/ 실습 문제
- USER_TABLES를 통해 'employees'테이블의 테이블스페이스 및 레코드 건수, 몇 개의 block으로 이루어 졌는지, 평군 row size, 최근 통계정보 생성일자를 조회하시오.
- 참고 : USER_TABLES(사용자가 작성한 테이블 확인하는 뷰), USER_TAB_COLUMNS

select tablespace_name, num_rows, blocks, last_analyzed from user_tables where table_name = 'EMPLOYEES';

- 아래의 쿼리로도 확인가능하다.

SELECT TABLESPACE_NAME, NUM_ROWS, BLOCKS, last_analyzed FROM ALL_TABLES WHERE TABLE_NAME='EMPLOYEES';

- 참고 링크

 

/ 여러 테이블에 작업 할 쿼리를 여러개 만드는 쿼리 예제

SELECT 'DROP TABLE '|| TABLE_NAME || ' CASCADE SONSTRAINTS;' FROM USER_TABLES;

 

/ dba_profiles
- 로그인하는 계정 정보 조회

SELECT RESOURCE_NAME, RESOURCE_TYPE, LIMIT FROM DBA_PROFILES;

- 비밀번호 기한을 제한없음으로 변경

ALTER PROFILE default LIMIT PASSWORD_LIFE_TIME UNLIMITED;

- 결과



​/ DBA_PROFILES 테이블 뷰
- PASSWORD_LIFE_TIME : 비밀번호 유효 기간
- PASSWORD_REUSE_TIME : 암호가 재사용 될 때까지의 날 수
- PASSWORD_REUSE_MAX : 암호가 재사용 될 때까지의 날 수
- PASSWORD_VERIFY_FUNCTION : 비밀번호 복합성 검사를 수행할 PL/SQL
- PASSWORD_LOCK_TIME : 암호가 기간만료되어 계정이 잠겨진 채로 남아 있었던 일수
- PASSWORD_GRACE_TIME : 유예기간
- 참고 링크

/ 프로파일 만들기 실습

CREATE PROFILE KIMYJ limit 
FAILED_LOGIN_ATTEMPTS 5     -- 로그인 실패 횟수
PASSWORD_LOCK_TIME 3        -- 암호가 기간 만료되어 계정이 잠겨진 채로 남아 있었던 날 수
PASSWORD_LIFE_TIME 20       -- 날 수로 표시한 암호의 수명으로 이 기간이 지나면 기간 만료됨
CPU_PER_SESSION 2000        -- 1/100 초 단위로 측정한 총 CPU이용시간
;

- 결과 확인

 


 

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

/ cron.daily
# cd /etc/cron.daily

/ at
- 사용법 : at 옵션 시간
- 사용법 : at 시간 날짜 -f test.sh
- ex) at 1410 21122021 : 2021년 12월 21일 오후2시 10분
- t옵션을 사용하는 경우
# at -t 202112211410 : 2021년 12월 21일 오후2시 10분
- 지금부터 1분후에 실행 : at now+1 minutes

/ at 실습 1
# at -t 202205191800   --2022년 5월 19일 오후6시에 한번 실행
# echo "Hello!"
# mkdir at_test

 

/ at 실습 2
# at now+2 minutes


/ at 생성 목록
# at -l

 

/ at 실행 예정 항목 삭제
# at -d 항목번호

 

/ crontab 실습
- 매월 28일 15시 00분에 user이름 'wednesday'를 만들기
# 0 15 28 * * root useradd wednesday
- '/home'디렉토리 밑에 생긴 'wednesday'디렉토리를 매월 28일 15시 01분에 'wednesday'디렉토리가 '/backup'디렉토리에 백업되도록 하여라
# 1 15 28 * * root cp /home/wednesday /backup
- 매일 새벽3시에 'rdate -s time.bora.net'이 실행되게 하여라
# 0 3 * * * rdate -s time.bora.net
- 매시 1분에 시간별 액션을 실행한다.
# 1 * * * 8 액션
- 매주 월~금 11:59에 백업 스크립트를 실행하게끔한다.
# 59 11 * * 1-5 백업스크립트
- 9시~17시 사이에 매 15분 마다 프로그램 실행된다.
# */15 9-17 * * * 프로그램
- 매월 1~15일 정오와 20~25일 정보, 그리고 17일의 정보에 실행된다.
# 0 12 1-15,20-25,17 * * 프로그램
- 1분마다 시간별 액션을 실행한다.
# * * * * * 액션

/ at 실습
- 현재 시점에서 1분후에 mkdir 명령어를 실행해서 testdir이 만들어지도록
# at now+1 minutes [엔터] mkdir testdir [엔터] 컨트롤+D
- 2022년 5월 19일 오후7시에 testfile이 만들어지도록 하여라
# at -t 202205191900 [엔터] touch testfile [엔터] 컨트롤+D

/ 복습 - dns
- dns가 설치되어 있는지
# rpm -qa | grep bind
- yum 설치가 가능한지
# yum list bind bind-chroot
- 시작, 활성화, 활성여부확인
# systemctl start     named
# systemctl enable named
# systemctl status named
- 53포트를 사용하는 네트워크 인터페이스를 확인하여라
# netstat -antup | grep 53
- dns 설정파일 위치 확인
# rpm -qc bind
- name편집(13, 14, 21번째 줄)
# vi /etc/named.conf
# listen-on port 53 { any; };
# listen-on-v6 port 53 { none; };
# allow-query     { any; };
- 편집 후 conf파일에 문제가 없는지 체크(똑 떨어지면 문제가 없는것)
# named-checkconf
- DNS 서버 재시작
# systemctl restart named
- nslookup, dig 확인
# nslookup www.naver.com 192.168.111.150
# dig @192.168.111.150 www.naver.com
- netstat으로 LISTEN확인
# netstat -antu | grep 53
- 방화벽 설정
- firewall-config > 영구적 > 서비스의 dns체크 > 옵션에서 Firewalld 리로드
- 방화벽 확인
# firewall-cmd --list-all
- 호스트pc에서 nslookup확인
- cmd에서 nslookup www.google.com 192.168.111.150


/ 실습대비 
- CLI 모드 서버 설치 : 최소설치, net-tools와 bind-utils를 설치하여 ifconfig와 nslookup이 실행되도록 한다.
- yum -y install net-tools bind-utils로 설치해준다.

 

 

 

 

728x90

+ Recent posts