DB보안

estar987·2023년 9월 18일
0

Linux

목록 보기
15/23
작업 목차 
: 패스워드 및 복잡도 기관 정책에 따른 설정 (관리자 비번 설정)
: 익명 사용자 계정 및 비어있는 필드 내용 삭제
: (옵션) 작업 환경설정(테이블 설정)
: 뷰 테이블 생성
: 뷰테이블 접근 제한
samadal에게 vt안의 내용을 볼 수 있게 해준다
: 필드의 데이터 암호화
: 필드의 값이 복호화 되지 않게 단방향 암호화 설정
: Log 파일 분석
  - MYD (MYsql Data file) 
     : 실제 데이터가 저장되어 있는 파일
  - MYI (MYsql Index)
     : 인덱스 정보가 저장되어 있는 파일
  - frm(fOrmAT)
     : 테이블 구조가 저장되어 있는 파일
: 백업 및 복구
: DB 확장

실습 1 (뷰 테이블 생성)

  1. 테이블 생성
    create table tbsamadal (id int(10), name char(20), pw char(20), phone char(16), email char(30));
  2. 테이블 필드 확인
    desc tbsamadal;
  3. value 값 입력 후 테이블 확인
    insert into tbsamadal values(1, ‘samadal’,password(‘1’),‘010-9999-9999’, ‘samadal@naver.com’);
    insert into tbsamadal values(2, ‘madal’,password(‘1’),‘010-8888-8888’, ‘madal@naver.com’);
    insert into tbsamadal values(3, ‘sam’,password(‘1’),‘010-7777-7777’, ‘sam@naver.com’);
    select * from tbsamadal;
  4. View Table 생성(테이블에서 내가 원하는 부분만 설정해서 볼 수 있음)
    create view vt as select id,name,email from tbsamadal;
  5. 생성된 테이블 확인
    show tables;
  6. view table로 내용확인
    desc vt;
    select * from vt;
  7. 저장 및 적용
    flush privileges;
    (linux) # systemctl restart mariadb

실습 2 (뷰테이블 접근 제한)

  1. 자신의 데이터 베이스가 아니면 접속이 안되는 것 확인
  # mysql –u samadal –p mysql
  # mysql –u usersamadal –p mysql
  # mysql –u usersamadal –p dbsamadal (접속됨) 비밀번호 : 1

실습 3

  1. View Table 접근 제한(samadal(사용자)에게 vt안의 내용을 볼 수 있게 
  해준다) 
  주의사항 
  사용자:usersamadal DB:dbsamadal로 로그인해서 grant 명령어 불가
  > grant select on mysql.vt to samadal;
  2. DB를 바꾸고 정보 확인하기
  > use dbsamadal;
  > select * from tbsamadal (dbsamadal 안에 tbsamadal이 없어서 안됨)
  > select * from mysql.tbsamadal;
  > select * from vt (dbsamadal 안에 vt가 없어서 안됨)
  > select * from mysql.vt;
  

실습 4(필드의 데이터 암호화)

  1. data 베이스는 mysql로
  > use mysql;
  2. 패스워드 암호화, 변화 확인

실습 5(DB 사용자(usersamadal)의 데이터 암호화)

  1. 설정 및 확인
      > select host, user, password from user;
      > delete from user where user=’‘ (익명의 사용자 접근 불가)
      > select host, user, password form user;     
      > update user set password=encrypt(‘1’,‘key’) where user=’usersamadal’;
      > select host, user, password form user;  (변화 확인)

    2. 설정 저장 후 확인
      > flush privileges;
      # systemctl restart mariadb
      # mysql –u usersamadal –p dbsamadal (접속 안됨)
      결론
      - 접속이 안되어서 루트 사용자로 다시 들어가서 보니 암호화가 되어 사용자가 있으므로 
        데이터를 찾을 수 없다고 나옴
        

실습 6(복호화 – 암호화 해제)

  1. 루트 접근, 확인
  # mysql –u root –p mysql
  > select host, user, password from user;
  > show grants for usersamadal@localhost; (권한이 없어서 명령어 실행 안됨)
  2. 복호화
  > update user set password=password(‘1’) where user=’usersamadal‘;
  3. 변화 확인
  > select host, user, password from user;

  > show grants for usersamadal@localhost; (복호화 해서 볼 수 있음)

암호화와 복호화 차이

- 암호화를 하면 show grants for usersamadal@localhost;
  이 명령어를 입력할 시 아무 것도 뜨지 않는다
- 복호화를 하면 show grants for usersamadal@localhost;
   이 명령어를 입력할 시 값이 보인다
- 암호화 명령어에는 ‘key’ 가 붙고 복호화에는 붙지 않는다
    암호화 
    > update user set password=encrypt(‘1’,‘key’) where user=’usersamadal’;
    복호화
    > update user set password=password(‘1’) where user=’usersamadal‘
    

실습 7 (필드의 값이 복호화되지 않게 단방향 암호화 설정)

  1. 설정하기 / 변화 확인하기
    select from tbsamadal;
    update tbsamadal set pw=password(‘pwsamadal’) where id = 1;
    update tbsamadal set pw=md5(‘pwsamadal’) where id=1;
    select
    from tbsamadal;
    select host, user, password from user;



    2. 설정 저장
    flush privileges;
    exit
        # systemctl restart mairadb
        3. 접속 가능한지 확인 (접속 불가)
        # mysql –u usersamadal –p dbsamadal

실습 8(Log 파일 분석)

    # cd /var/lib/mysql
    # ls
    # cd /var/lib/mysql/mysql
    # ls
    - DB에 직접 접속하지 않고 정보를 확인할 수 있다.



mysql -u root -p mysql –h 192.168.10.128
: 원하는 서버의 db에 접속

실습 9(백업 및 복구)

  개요
     백업
 - 신규 HDD(1GB) 추가 후 자동 마운트 설정
 - DB 전체 백업
   mysqldump -u root -p –all-databases > /sdb/full.sql
 - 원하는 DB 만 백업
   mysqldump -u root -p mysql > /sdb/mdb.sql
 - 테이블만 백업
   mysqldump -u root -p mysql user > /sdb/tuser.sql
복구
 - mysql -u root -p mysql < /sdb/mdb.sql
  작업
1. 오토마운트 하고 필드 하나 만들고 나오고 백업하고 
     만든 db를 삭제하고 다시 들어가서 복구하기
2. MariaDB [mysql]> create table BKtable (num int(10));
3. DB 전체 백업(백업 할 땐 mysqldump)
4. 원래 만들어둔 테이블(BKtable) 삭제하고
     5. 복구(복구할 때만 mysql)
실습 9 (DB 확장)
     - 웹서버를 구성한 후 phpmyadmin, xe를 구동후 DB서버의 내용과 연동
     

실습 10(DB 확장)

     - 웹서버를 구성한 후 phpmyadmin, xe를 구동후 DB서버의 내용과 연동
profile
System / Cloud / DevOps Engineer

0개의 댓글