블로그 이미지
송시혁

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Notice

Tag

Recent Post

Recent Comment

Recent Trackback

Archive



서버3에 도메인 설치 기존 과정을 똑같지만, 새 포리스트가 아닌 기존 포리스트를 선택한다.

그림은 비활성화 되어있으나, 기존 포리스트를 체크하고 기존 포리스트에 새 도메인 만들기


서버1에 도메인 northwind.com이 부모도메인. 서버3에 설치하는 것이 자식 도메인이다.

도메인을 복사하는 것. 

설치하는 도메인이 자식도메인이라고 알려주는 화면 나머지는 다음 - 다음으로 넘어가서 재시작을 한다.




사용권한 부여 실습 시나리오2

Srv1서버의 부품재고 공유폴더에 대해 모든 영업부 직원들은 볼 수는 있어야 하고 

대리(user3, user4)는 읽기 및 쓰기, 간부(user5,6)는 삭제(수정)도 할 수 있도록 설정하시오.

           A G DL P

글로벌 그룹    G영업 /G대리 /G간부 

      도메인로컬그룹 공유리소스 이름 읽기 /쓰기/수정

      부품재고R /부품재고RW/부품재고M


★ 글로벌 그룹과 도메인로컬 글부은 Srv1(도메인컨트롤러)에서 생성되어야

★ 사용권한 할당은 해당 공유폴더가 있는 서버에서 작업(Srv1)   

1) 사용자마다 잔신이 사용할 계정이 필요함 : 사용자계정은 1명당 한 개

2) 성격이 비슷한 사용자들을 글로벌 그룹으로 묶는다

---------------------------------------------------------------------------------------

3) 사용자 권한 설정 작업을 하려고 하는 개체에 대해 필요한 사용권한에 맞도록 

    도메인로컬 그룹을 만든다.

4) 공유자원에 대해 도메인로컬 그룹을 추가하고 적절한 사용권한을 할당한다.

---------------------------------------------------------------------------------------

5) 도메인로컬 그룹에게 글로벌 그룹을 추가

사용자계정 -> 글로벌 그룹 -> (사용권한)도메인로컬그룹 -> 공유자원 



글로벌 그룹부터 추가 

Activity domain 사용자 및 컴퓨터에서 영업부 우클릭

아래와 같이 진행.


그룹을 만들때 글로벌로 설정하고 문제에서 부품재고R /부품재고RW/부품재고M은 도메인

로컬로 설정


아래 그림은 각 user들을 그룹에 소속시키는 것.



아래그림은 부품재고등을 도메인 로컬로 설정. 


G간부,영업, 대리등이 생성이 되었다. 로컬 도메인에서 해당 그룹을 추가한다.



생성한 부품재고 폴더에 권한을 할당.




이름확인 누르면 아래와 같이 뜨는데 전체 드래그 하고 확인 

문제에 맞게 권한을 할당하면 된다.


* 그룹 : 서버, 다중사용자환경, 액세스제어--> 사용권한 할당: 사용자별로 할당은

         R, RW, M :사용권한의 종류별로 사용자를 그룹화하자.

  다중도메인 환경 northwind.com -> 조직관리 OU="영업부"

                  cn.northwind.com 홍길동 자재담당: 엔진 1 cn공장에 납품을 하자.

  cn 도메인에 있는 자재목록 .xls을 읽을 수 있어야 한다.

  

  글로벌 그룹 :(유니버셜 그룹) 비슷한 사용자들을 조직화하기 위한 목적

   - G대리의 사용자 

  도메인로컬그룹 : 자신에게 있는 자원에 대해 사용권한을 할당하기 위한 목적  = 자재R

   Srv3: 공유폴더[자재]

              

  

  고유자원 <=도메인로컬그룹<구성원> 유니버셜그룹 <-글로벌그룹 <-사용자계정

         사용권한 설정            타 도메인에서도 검색가능




다른 도메인에 있는 그룹의 정보를 가져올 그룹이 필요하다. 그것이 바로 "유니버설" 이라고 한다.

아래와 같이 생성. 

아래와 같이 생성된 모습



현재 cn.northwind.com->northwind.com으로 위치를 변경한다. 그 이유는 문제에 제시된 G대리가 

northwind.com에 속해 있기 때문이다. 


northwind.com으로 변경 


NTFS 파일시스템 특징 (속성)

파일 압축


실무에서 활용하는 방법은 일단 파일 크기와 디스크 저장 크기의 차이가 클수록

좋다. 예를 들어 그림 파일과 같이 원본의 크기가 클수록 압축퓰이 높아진다.

압축해제할 필요가 없이 바로 실행된다.

단, 주의 program files 폴더와 같이 프로그램 설치 폴더는 하지 마세요.

사용시에는 압축된 폴더를 만들어 놓고, 그 안에 파일을 옮기면 된다.

 (주의) 옮기는 경우에 복사한 파일은 자동으로 압축된다.

 

 <비교> 알집에 의해 만들어진 zip,rar 파일은 반드시 알집과 같은 The third-Party프로그램

        이 반드시 설치되어 있어야 하면, 압축/압축풀기의 과정을 거쳐야 한다.

단점 : 압축 해제시 오류, 압축파일을 실행하기 전 압축을 풀어야 한다.

디스크 할당량(쿼터) 가각의 드라이브 루트에서 설정

모든 사람들이 공용으로 사용하는 서버의 디스크는 항상 용량이 부족하게 된다.

따라서 사용자별로 서버의 디스크 사용량을 제한할 필요가 있다.

고객 폴더에 영업1팀원들은 쓰기가 가능하므로, 업로드도 가능하다.(쓰기)

서버 디스크는 공동으로 사용하기 때문에 사용자별로 사용 한도를 설정해야 한다.


<실습1>

위에서 생성된 부품재고 공유폴더에 대해 대리와 간부는 쓰기 권한이 있으므로 

파일을 업로드할 수도 있다. 서버에 일반사용자가 무제한으로 데이터를 업로드해도 되나?

사용자에 대해 업로드할 수 있는 제한을 150MB로 하자.


폴더A 우클릭- 고급

아래와 같이 체크 

C:\드라이브를 우클릭하여 "할당 관리사용", "할당량 한도를 넘은 사용자에게 디스크 공간주지 않음"에 

체크. 그리고 "할당량 항목"을 클릭.


새 할당량 항목 클릭.


user1을 추가.


할당량 공간을 설정.


설정한 폴더에 70MB가 넘는 폴더를 복사할 경우 다음과 같이 경고가 뜬다.




posted by 송시혁


전체 토폴로지 

제일위에 스위치를 아래와 같이 설정해야 된다.

DHCP relay와 각각의 vlan에 할당한 IP gateway를 할당한다.



그리고 vtp를 설정한다.


vtp란?

대빵 스위치(vtp server)

를 두어 여기서 생성된 vlan들은 trunk port로 

연결된 다른 client 스위치들도 동일하게 생성

되게 하는 프로토콜 --> VTP 

나머지 L3스위치는 vtp 모드를 클라이언트로 설정한다.

vtp mode client로 설정 


도메인 네임 설정



Access Control List를 설정하는 실습



1) 192.168.0.0대역과 192.168.1.0대역의 통신을 차단/허용

2) 192.168.1.0대역은 라우터와 스위치로  telnet불가

3) 모든 PC는 Server로 ping 불가

4) 192.168.0.0대역은 server로 웹 접속 불가




access-list 101 deny ip 192.168.0.0 0.0.0.255 192.168.1.0 0.0.0.255

access-list 101 deny tcp 192.168.1.0 0.0.0.255 any eq 23

access-list 101 deny icmp any 192.168.0.0 0.0.0.0

access-list 101 deny tcp 192.168.0.0 0.0.0.255 host 210.1.1.1 eq 80

access-list 101 permit ip any any


5) 210.1.1.2 PC에서 라우터로 telent 불가

6) 192.168.1.0대역은 DHCP 차단

7) 210.1.1.3 PC에서 192.168.0.0 대역으로 ping 불가 

8) 라우터에서 스위치로 telnet 불가 



access-list 101 deny tcp host 210.1.1.2 any eq 23

access-list 101 deny icmp host 210.1.1.3 192.168.0.0 0.0.0.255

access-list 101 deny tcp 10.1.1.0 0.0.0.3 any eq 23

access-list 101 permit ip any any 

int vlan 1

ip access-group 101 in


access-list 102 deny udp host 192.168.1.254 any eq 67 

access-list 102 permit ip any any

ip access-group 102 in

ip access-group 102 out



9) PC 2대에 대역대에서 나가는 IP를 10.1.1.2를 달게 하시오.

   

 NAT 

 1) 내부 IP를 access-list 로 만든다.

 2) 외부 IP를 NAT pool을 만든다.

 3) ACL과 NAT pool을 매칭 시킨다

 4) 내부에서 들어오는 포트에 NAT inside를 건다

 5) 외부로 나가는 포트에 NAT outside를 건다.

 

access-list 1 permit 192.168.0.0 0.0.1.255 

ip nat pool abc 10.1.1.2 10.1.1.2 netmask 255.255.255.252

ip nat inside list 1 pool abc

ip nat inside source list 1 pool abc overload 

posted by 송시혁
2018. 7. 9. 13:55 네트워크/database실습


먼저 이론 




service -e 

=>현재 구동되고 있는 서비스 목록


sudo service myslq-server status 

=> mqsql 상태


su

=> 바로 root로 접속



numberic(3,2) 

=> 3자리 표현하면 소수점 2자리 표시


enum('wes','central','east');


<관리자 프로그램 , 유틸리티>


- ibd2sdi


- innochecksums


- myisam_ftpdump


- myisamchk


- myisamlog


- mysampack


- myslql_config_editor


- mysqlbinlog


- myusqldumpslow 



● 프로그램 개발 유틸리티


- mysql_config

- my_print_defautlts

- resolve_statck_dump

- Iz4_decompress

- perror

- resloveip

- zlib_decompress



<>


● 오픈소스 데이터베이스 엔진


● 데이터를 디스크에 어떠한 형태로 기록, 관리할 것인가를 결정


● MyISAM : 구형 엔진, 읽기 위주 데이터 저장에 적합


● 새로운 버전, MyISAM을 대체해 나가는 중



<Mysql - 사용자 계정관리>


● 데이터 베이스는 별도의 사용자 데이터 베이스를 구축


● 시스템 사용자와는 다른 사용자 세트를 사용


● select current_user(); -- 현재 사용중인 계정명 반환




<사용자 계정의 표시>


● 'user_name'@'host_name'


● user_name은 최대 32개 문자까지 가능


● 여러 호스트/도메인에 돔영 이인이 있을 수 있으므로 


메일 주소와 비슷한 형식을 사용자


- 'alice'@'192.168.0.10'


- 'alice'@'%.my_domian.com'


- 'bob'@'localhost'


● 도메인과 호스트 이름


● www.naver.com에서 


- www는 특정 서버 컴퓨터를 뜻하는 호스트의 이름


- naver.com은 도메인 이름을 뜻함


- .com은 최상위 도메인(Top Level domain)이라 부름 



● 일반적으로 호스트명(hostname) www만을 지칭하나

  명확한 호스트명을 표시하기 위해 모든 파트를 다 언급하기도 함


● www.naver.com 과 같이 모든 파트를 다 언급하는 형태를 

  FQFN(Fully qualified domain Name)이라고 하고


● 특히 DNS 시스템을 구성할 때에는 www.naver.com.과 같이

  마지막에 .을 표기하도록 하는 경우도 있음

  

● 사용자 명은 특정 사용자 이름 외 빈칸을 입력할 수 있음

  

● 사용자 명에는 패턴 매칭 사용 불가   

  

● 빈칸은 모든 사용자 명을 뜻함 

  

  - ''@'192.168.0.10'

  - ''@'%.mydomain.com'


● 호스트/도메인을 명을 입력하지 않으면 '%'로 처리

  - 'alice'

  - 'alice'@'%'


● 괄호에 주의 

  - 'alice@localhost'

     => 사용자 이름으로 인식

     'alice'@'localhost;로 사용하여야 한다.

  - 'alice@localhost'@'%'


  

● 호스트/ 도메인 명에 Like 구문에서와 가트은 패턴매칭 사용가능

- 'alice'@'192.168.100.%'

- 'bob'@'%.com'


● IPv4 주소를 사용할 경우 마스크 값 사용가능

- 'alice'@'192.168.100.0/255.255.255.0'



● h1.example.net에서 접속하는 fred

=>'fred'@'h1.example.net'


● h1.example.net에서 접속하는 모든 사용자명

=> ''@'h1.example.net'


● 불특정한 호스트(모든 호스트)에서 접속하는 fred

=>'fred'@'%'


● 불특정한 호스트(모든 호스트)에서 접속하는 모든 사용자명

=> "@'%'


● example.net 도메인의 모든 호스트에서 접속하는 fred

=> 'fred'@'%.example.net'


● 192.51.100.0/24 네트워크에서 접속하는 fred

=>'fred'@'192.51.100.0/255.255.255.0'




<사용자 인증>


● 호스트명, 사용자명, 패스워드 검증


● 검증시 사용자 테이블을 정렬하여 최초 매칭되는 경우를 사용

1. 호스트가 가장 구체적으로 명시되어 있는 순서대로 정렬

2. 사용자명이 가장 구체적으로 명시되어 있는 순서대로 정렬

3. 호스트와 사용자 명의 구체성이 동일한 경우, 정렬순서는 랜덤 


● 구체적인 명시

- 'h1.example.net'이 '%.example.net'보다 더 구체적임

- 'alice' 보다 더 구체적임 



<사용자 작업권한 인증>


● 접속이후 사용자가 입력하는 명령어 사용권한을 인증함


● mysql 데이터 베이스의 user테이블에 기록되는 권한은 

  모든 데이터 베이스에 대한 사용자 계정의 권한을 표시


● 관리자 계정 외에는 myslq.user테이블에 기록되는 권한은 'N'으로,

  mysql.db 테이블을 사용하여 각 데이터베이스, 테이블, 칼럼 별 권한을

  지정하여 사용하는 것이 안전 


   <사용자 작업권한 적용 시기>

● 서버 시작시 권한 사항을 메모리에 저장하여 구동되고


● gran, revoke등 DCL을 사용한 구너한 조정은 실시간 권한 적용


● insert, update 등 DML을 이용하여 직접 테이블 값을 수정한 겂은 


 - FLUSH PRIVILEGES;

 - msysqladmin flush-privileges

 - mysqladmin reload

  명령어 이후 적용

 

● 명령어 권한은 다음번 명령어 사용시 적용시작

 

● 데이터베이스 권한은 다음번 use db_name; 구문 사용시 적용



 

<사용자 계정의 추가 /삭제>


● CREATE USER user_nema IDENTIFIED BY password;


● user_name 은 올바른 사용자계정 이름의 형식을


● password는''를 사용한 문자열 


● DROP USER user_name;




select user,host from mysql.user;

=> 사용자 조회



<사용자 계정: 리소스 권한>


s

● 시간당 SQL문 사용 가능 횟수

=> WITH MAX_QUERIES_PER_HOUR 

 

● 시간당 update 명령어 사용 가능 횟수

=> WITH MAX_UPADATES_PER_HOUR

 

● 시간당 접속 가능 횟수

=> WITH MAX_CONNECTIONS_PER_HOUR

 

● 가능한 동시접속 횟수 

=> WITH MAX_USERS_CONNNECTIONS 

 

<사용자 계정 : 패스워드 관리 >


/usr/local/etc/mysql


● 패스워드 변경

 - ALTER USER user_name IDENTIFIED BY password;

 - SET password for user_name = password;


● 패스워드 만료 설정

 - ALTER USER user_name PASSWORD EXPIRE

 - ALTER USER user_name PASSWORD EXPIRE INTERVAL 90 DAY;


 - my.cnf mysqlid 섹션 : default_passwordk_lifetime

   0는 제한없음, 기타 숫자는 패스워드의 기본 유효기간 


● 패스워드 재사용

  - my.conf의 mysql 섹션 : password_history

                           password_reuse_interval

● 패스워드 재사용 전 5번의 다른 패스워드 사용을 강제   

- ALTER USER user_name PASSWORD HISTORY 5;


● 패스워드 재상용 전 6일이 지나도록 강제 

- ALTER USER user_name PASSWORD REUSE INTERVAL 6 DAY;


● 패스워드가 만료된 계정으로 접속이후

mysql --connect-expired-password 사용 


<사용자 계정 잠금>

● ALTER USER user_name ACCOUNT LOCK


● ALTER USER user_name ACCOUNT UNLOCK



<사용자 계정 보안 접속방법 제한>

● ALTER USER user_name REQUIRE NONE;


● ALTER USER user_name REQUIRE SSL;


● ALTER USER user_name REQUIRE X509;


● ALTER USER user_name REQUIRE ISSUER;


● ALTER USER user_name REQUIRE SSL;

'/C=SE/ST=Stcoholm/L=stockholm/O=MySQL/CN=CA/

 emailAddress=ca@example.com


<사용자 계정 실습>

 

● vic.esample.net에서 접속하는 vitcor계정을 생성하면서

  'my_pass'를 패스워드로 지정

=>  create user victro'@'vic.example.net identifed by 'my_pass';



● t5.example.net에서 접속하는 trent계정을 생성하면서

  SSL 암호화된 접속만을 허용하고 동시 접속 가능 회선을 3개로 제한 

=> create user trent'@'t5.example.net' identifed by 'password' REQUIRE 

   SSL with MAX_USER_CONNECTION 3;

   


<Grant, Revoke>   

● 계정에 대한 현재 GRANT 내역 조회


● 사용가능한 SQL문의 제한없음

ALL

SELECT

UPDATE

INSERT

CREATE

DROP

ALTER

...



● 레벨: 전체, 테이블, 칼럼


● 레벨의 표시


*

*.*

db_name.*

db_name.table_name



<사용자 계정 SQL >

● GRANT _ 허용 SQL_ON_ 레벨_TO user_name;


● GRANT SELECT ON test.*TO 'eve'@'localhost';


● GRANT SELECT(col1). INSERT(col1, col2) ON test.tb1 TO 'may'@'localhost';


● REVOKE는 GRANT와 같은 형태의 문법 사용 


● FLUSH PRIVILEGES

  => 권한 다시 재로드.(초기화)


root에서 권한 

grant all on world.* to 'tuser1'@'localhost';


tuser1으로 로그인

=> show databases;



● 192.168.0.0/24 네트워크 대에서 접속하는 trent계정

=> create user 'trent'@'192.168.0.0/255.255.255.0' identfied by 'pass';


● trent는 test 데이터베이스의 t1 테이블에 데이터 추가 가능

=> grant insert on test.t1 to 'trent'@'192.198.0.0/255.255.255.0';


● trent는 test 데이터베이스의 모든 테이블 값을 제한없이 조회가능

=> grant all on test.* to 'trent'@'192.168.0.0/255.255.255.0';


● trent는 test 데이터베이스의 t2 테이블의 c1 칼럼의 값을 변경 가능 

=> grant update(c1) on test.t2 to 'trent'@'192.168.0.0/255.255.255.0';

   칼럼은 ()쳐서 칼럼을 적는다.


//////////////////////////////////////////////////////////////////////////////


service -e 

=>현재 구동되고 있는 서비스 목록


sudo service myslq-server status 

=> mqsql 상태

아래 명령어도 mysql -uroop -p와 같은 명령어이다. 길게 사용할 때는 '--'를 두번 붙인다.


그냥 pager라고 하면 more인식되나, pager less라고 입력시 less처럼 사용할 수 있다.


● select current_user(); -- 현재 사용중인 계정명 반환


mysql데이터베이스에 user라는 테이블에서 계정을 관리하고 생성, 삭제가 이루어진다. 따라서 계정을 조회하기 위해서는

mysql.user에서 조회 가능하다. 


계정을 삭제하는 모습 


계정을 생성이 가능하다. 생성된 계정을 한 번 더 만들려고 하면 에러가 발생한다. 그러나 syntax를 참고하여 if not exist를 적어두면

에러를 내지 않는다. 왜냐하면 적어도 되고, 안적어도 된다라고 알려주므로 PC가 있으면 생성하지 않고, 없으면 생성한다고 알아먹기

때문이다. 



<사용자 작업권한 인증>


● 접속이후 사용자가 입력하는 명령어 사용권한을 인증함


● mysql 데이터 베이스의 user테이블에 기록되는 권한은 

  모든 데이터 베이스에 대한 사용자 계정의 권한을 표시


● 관리자 계정 외에는 myslq.user테이블에 기록되는 권한은 'N'으로,

  mysql.db 테이블을 사용하여 각 데이터베이스, 테이블, 칼럼 별 권한을

  지정하여 사용하는 것이 안전 


   <사용자 작업권한 적용 시기>

● 서버 시작시 권한 사항을 메모리에 저장하여 구동되고


● gran, revoke등 DCL을 사용한 구너한 조정은 실시간 권한 적용


● insert, update 등 DML을 이용하여 직접 테이블 값을 수정한 겂은 


 - FLUSH PRIVILEGES;

 - msysqladmin flush-privileges

 - mysqladmin reload

  명령어 이후 적용

 

● 명령어 권한은 다음번 명령어 사용시 적용시작

 

● 데이터베이스 권한은 다음번 use db_name; 구문 사용시 적용



 

<사용자 계정의 추가 /삭제>


● CREATE USER user_nema IDENTIFIED BY password;


● user_name 은 올바른 사용자계정 이름의 형식을


● password는''를 사용한 문자열 


● DROP USER user_name;




select user,host from mysql.user;

=> 사용자 조회



<사용자 계정: 리소스 권한>


● 시간당 SQL문 사용 가능 횟수

=> WITH MAX_QUERIES_PER_HOUR 

 

● 시간당 update 명령어 사용 가능 횟수

=> WITH MAX_UPADATES_PER_HOUR

 

● 시간당 접속 가능 횟수

=> WITH MAX_CONNECTIONS_PER_HOUR

 

● 가능한 동시접속 횟수 

=> WITH MAX_USERS_CONNNECTIONS 

 

<사용자 계정 : 패스워드 관리 >


/usr/local/etc/mysql


● 패스워드 변경

 - ALTER USER user_name IDENTIFIED BY password;

 - SET password for user_name = password;


● 패스워드 만료 설정

 - ALTER USER user_name PASSWORD EXPIRE

 - ALTER USER user_name PASSWORD EXPIRE INTERVAL 90 DAY;


 - my.cnf mysqlid 섹션 : default_passwordk_lifetime

   0는 제한없음, 기타 숫자는 패스워드의 기본 유효기간 


● 패스워드 재사용

  - my.conf의 mysql 섹션 : password_history

                           password_reuse_interval

● 패스워드 재사용 전 5번의 다른 패스워드 사용을 강제   

- ALTER USER user_name PASSWORD HISTORY 5;


● 패스워드 재상용 전 6일이 지나도록 강제 

- ALTER USER user_name PASSWORD REUSE INTERVAL 6 DAY;


● 패스워드가 만료된 계정으로 접속이후

mysql --connect-expired-password 사용 


<사용자 계정 잠금>

● ALTER USER user_name ACCOUNT LOCK


● ALTER USER user_name ACCOUNT UNLOCK



<사용자 계정 보안 접속방법 제한>

● ALTER USER user_name REQUIRE NONE;


● ALTER USER user_name REQUIRE SSL;


● ALTER USER user_name REQUIRE X509;


● ALTER USER user_name REQUIRE ISSUER;


● ALTER USER user_name REQUIRE SSL;

'/C=SE/ST=Stcoholm/L=stockholm/O=MySQL/CN=CA/

 emailAddress=ca@example.com


● t5.example.net에서 접속하는 trent계정을 생성하면서

  SSL 암호화된 접속만을 허용하고 동시 접속 가능 회선을 3개로 제한 

=> create user trent'@'t5.example.net' identifed by 'password' REQUIRE 

   SSL with MAX_USER_CONNECTION 3;


이 부분은 syntax를 참고해야 한다. syntax는 나중에 포스팅 예정 


<사용자 계정 SQL >

● GRANT _ 허용 SQL_ON_ 레벨_TO user_name;


● GRANT SELECT ON test.*TO 'eve'@'localhost';


● GRANT SELECT(col1). INSERT(col1, col2) ON test.tb1 TO 'may'@'localhost';


● REVOKE는 GRANT와 같은 형태의 문법 사용 


● FLUSH PRIVILEGES

  => 권한 다시 재로드.(초기화)



<실습>

create user 'tuser'@'localhost' (identified by '패스워드'); 명령어로 임의의 계정을 생성.



root 계정에서 먼저 권한을 준다.

=>grant all on world.* to 'tuser1'@'localhost';


tuser1으로 로그인

=> show databases;




posted by 송시혁


<대칭키 실습1>

● ~아래 , opnessl_practice 돌더 생성

=> mkdir openssl_practice


● /boot/loader.conf를 ~/openssl_practice/ 아래로 복사

=> cp /boot/loader.conf ~/openssl_practice/ 

   cp /boot/loader.conf ./ 


● loader.conf의 sha256 해시값을 -r 옵션을 사용하여 

  loader.conf.sha256로 저장

  

=> openssl dgst -r -sha256 loader.conf > loader.conf.sha256

   -r옵션은 해시값이외에 앞에 내용을 지운다.

  

● loader.conf를 aes 알고리즘을 사용(128비트 키, cbc모드)하여

  loader.conf.en으로 저장

=> openssl enc -aes-128-cbc -in loader.conf -out loader.conf.en

  

  

● loader.conf.en을 loader.conf.de로 복호화

=> openssl enc -aes-128-cbc -d -in loader.conf.en -out loader.conf.de



● loader.conf.de의 sha256해시값(-r옵션)을 loader.conf.de.sha256에 저장

=> openssl dgst -sha256 -r loader.conf.sha256 > loader.conf.de.sha256



● diff를 이용하여 loader.conf.sha256와 loader.conf.de.sha256을 비교

=> diff loader.conf.sha256 loader.conf.de.sha256


loader.conf               = 원본 

loader.conf.de           = loader.conf.en복호화 파일

loader.conf.de.sha256  = loader.conf.de 파일 해시값

loader.conf.en           = 원본(평문)인 loader.conf을 암호화 

loader.conf.en.sha256  = loader.conf.en에 대한 해시값          


diff명령어로 loader.conf.sha256과 loader.conf.de.sha256의 해시값은 같다. 원래 diff가 참이면 아무것도 안떠야 하지만

뒤에 *loader.conf, *loader.conf.de가 붙어있어 다르다고 인식하여 화면에 출력된다. 해시값은 아니니 무시하자!



sha256명령어를 사용하여 해당 파일에 해시값을 출력 가능하다.


<개인키 생성>

● openssl genrsa -out priv_key.pem 2048(개인키 생성)

=> 키의 비트 갯수는 2048


● openssl rsa -in priv_key.pem -text -noout

=> 암호화돠 키의 내용을 텍스트 내용으로 본다. 

    RSA는 소인수분해을 이용한다.


그 밖에 이진파일과 공개키 생성(캡쳐하지 못함 ㅜㅜ)

● openssl rsa -in priv_key.pem -outform DER -out priv_key.der 

=> priv_key.der 이진파일로 저장. 


<공개키 생성>

● openssl rsa -in priv_key.pem -des3 -out encrypted-priv_key.pem

=> RSA 개인키는 대칭키 시스템으로 암호화 하여 보관


● openssl rsa -in encrypted-priv_key.pem -pubout -out dec_priv_key.pem

=> RSA 개인키에서 공개키를 추출



● Self-signed 인증서 박릅시, 공개키 자동생성 

      

openssl req -newkey rsa:2048 -nodes -keyout privkey.pem

-x509 -days 365 -out certificate.pem


nodes        : 암호화 안함 

      rsa:2048     : 암호화 복잡도

days          :유효기간 1년 


* 아래내용은 인증서 생성시 나타나는것으로 테스트를 위한 것이므로 아무거나 입력. (실제로는 당연히

아무거나 입력해서는 안됨 )

AR                  : KR

some-state        : Busan 

Cityp               : Busan

Oranic             : Mycompany 

unit name         : CA 

Common Name   : CA_ROOT

Email              : mail@mycompany.con


<인증서 생성 명령어 >

 openssl x509 -text -noout -in certificate.pem

=> certificate.pem를 화면에 출력


openssl rsa -in privkey.pem -noout -text 

 => 인증서를 text형식으로 출력 




posted by 송시혁


7월 5일 L2-L3 스위치 구축



NAT

1) IP의 낭비를 줄이기 위해서 

   사용.(여러개의 사설 IP를 하나의 공인 IP로 사용 가능)

   

2) 보안이 강화됨( 외부에서 내부의 IP를 알 수 가 없다.)


3) IP는라는 것은 유한 0.0.0.0 ~ 255.255.255.255

   ->공인 IP / 사설 IP 

   -> subnetting / NAT (IP가 유한해서)

4) NAT 

   - software NAT

   - hardware NAT

   - 변환이 되어서 나감.

     ->  NAT 성능 : 속도 차

              : NAT 변환이후 속도/Full bandwidth

   - NAT table : 

    (사설 IP/ MAC / 변환 IP / 변환 MAC + port #)

    1:N NAT인 경우에는 이 Port #로 구별을 한다. (TCP/UDP)

   - NAT는 내부에서 외부로 트랙픽이 나가지 않는 이상 세션이

     세션이 생성되지 않아서, 외부에서 내부로 통신이 되지 않는다.    


   - ASA

   - port-forwarding / DMZ

     차후에 실습

   - 설정할 수 있는 장비나 디자인이 다르기때문에, CLI보다는 이론을 

     이해하시는게 더 좋음.

   

   - NAT/Debug 활용 

   

   - VPN(ISP - 인터넷 서비스 프로바이더 

     KT, LG, CNS, SK Broadband, CJ ehllovision 지역사업자

     ISP망을 통해서 전용회선처럼 사용)   




Control Plane    - ACL


Data Plane       - 데이터를 보내주는 역할 


Managament Plane - CLI 



1) DHCP는 가능

2) PC2는 router로 DHCP router telnet이 되면 안됨 

3) PC1은 DHCP router로 ping이 되면 안됨.

NAT 설정

망을 구성해서 ACL과 NAT를 활용



WAN/Serial-cable 사용(CCNA 덤프)



<실습2>


1) 모든 Router에 Telnet을 뚫어놓고 , OSPF쪽 라우터에서 EIGRP를 쓰는 Router로

   telnet이 불가능 하도록 ACL을 이용하여 막으시오.

   

   

2) 172.16.1.0/24 대역과 192.168.1.0/24 대역은 통신이 되지 않도록 하시요.




ip address 20.1.1.14 255.255.255.252 수정해




router 


default-information originate 

-> default router 를 설정해줘야 한다.


static router 


router2


access-list 123 deny tcp 20.1.1.0 0.0.0.255 10.1.1.0 0.0.0.255 eq 23  

access-list 123 deny tcp 30.1.1.0 0.0.0.3 30.1.1.0 0.0.0.3 eq 23  

access-list 123 deny tcp 30.1.1.0 0.0.0.3 20.1.1.0 0.0.0.255 eq 23 

access-list 123 permit ip any any 

ip access-group 123 in




access-list 102 deny icmp 192.168.1.0 0.0.0.255 172.16.1.0 0.0.0.255 eq 2

access-list 102 permit ip any any 

ip access-group 102 in



sw tr en dot1q

sw mo tr



<debug 활용 실습>


해당 라우터에 ping을 디버깅 하고 싶다고 가정한다면 debug ip icmp를 입력한다. 그러면 라우터에 ping이 지나갈 때마다

ping에 대한 정보를 볼 수 있다. 장애 처리시 유용하다.



cutom-queue = QOS 관련 디버그 

frame-realy = 잘 안씀

ntp         = network time protocol (시간 동기화)

ppp         = 점 대 점 프로토콜 



<실습>아래와 같이 토폴로지를 구성하고 NAT를 설정해보자.


1. NAT를 올리는 순서

   1) Access-list를 생성(standard)

      : Access-list가 포함할 정보

    ->내부의 IP / 사설 IP

(밑에서 밖으로 나갈 사설 IP들의 

  IP list를 만들어 준다.)

   2) NAT pool을 생성 

       : 외부로 나갈 IP list를 만들어준다.

         (공인 IP 대역)

          명령어 입력시 start ip와 end ip를 지정.

          현 라우터 기준으로 외부와 연결된 IP는 10.1.1.2이므로 

           둘 다 10.1.1.2로 지정.

   

   3) 해당되는 내부 IP의 Access-list와 해당되는 외부 IP의 NAT pool을 

       매칭 시겨준다. ()

   

 .


아래 명령어를 치면 nat table에 등록된 정보를 조회 가능. 





*3 01, 00:54:47.5454: ICMP: echo reply sent, src 10.1.1.1, dst 10.1.1.2

*3 01, 00:54:48.5454: ICMP: echo reply sent, src 10.1.1.1, dst 10.1.1.2

*3 01, 00:54:49.5454: ICMP: echo reply sent, src 10.1.1.1, dst 10.1.1.2



  4) 해당되는 Access-list를 걸 인터페이스에 

       ip nat inside라고 입력하고 

       외부로 나가는 공인 IP를 달 인터페이스에

       ip nat outside라고 입력한다






ACL을 활용하여 telnet 막기 




참고 - static default routing , static 재분배


default-information originate 

-> default router 를 설정해줘야 한다.



posted by 송시혁

-Right : 빌트인 그룹에 구성원으로 추가한다.

- 관리도구 -> 로컬보안정책 -> 로컬정책 -> 사용자 권한 할당에서 확인할 수 있다.

<실습> 시스템 시간 변경과 시스템 종료 항목에서 user1을 추가하자.

       user1을 추가한 후 user1계정으로서 시간변경과 종료 작업을 해보자.

       시스템 종료 메뉴가 활성화 되는지 확인. 



시스템 종료 권한 설정. 로컬 보안정책- 사용자 권한 할당 - 시스템 종료 실행 - 사용자 또는 그룹 추가


시스템 종료 활성화

''



<실습1>


Srv1서버에 administartor로 로그온하여 폴더A를 생성한 후 공유설정하고 

그 안에 ,관리1과 2를 생성하자.

공유사용권한을 everyone에 대해 읽기로 설정을 하고 보안 user1에게 모든 권한을 할당하였다.


Srv2에서 northwind\user1 계정으로 로그온한 후 폴더A에 연결하여(실행 -> \\Srv1)

파일1과 2에 대해 열어보고, 내용을 추가하여 저장, 파일 삭제 등의 작업을 하자.

어떠한 사용권한을 사용할 수 있는지를 확인하세요. 그리고, 파일3을 생성하시오.

:user1은 어떤 작업을 할 수 있었나요?


everyone 읽기만 설정


user1에게는 모든 권한 


- 파일읽기                             (o)

- 파일생성                             (x)

- 파일을 복사한 후 새로운 파일 생성 (x)

- 파일 삭제                            (x)

- 파일내용 변경 후 저장    (x)


<결론>

공유 사용권한 : 1차 필터의 역할, 네트워크 연결을 했을 때 우선적으로 옹호됨

                만약 공유에서 읽기만 주었다면 보안 사용권한에서 모든 권한을 

주어도 소용이 없다.

보안 사용권한 : 2차 필터 역할. 공유 사용권한에서 모든 권한을 가지고 들어와도

                2차적으로 사용권한을 제어할 수 있다.

만약 공유연결이 아닌 로컬로 직접 로그온하는 경우에도 적용된다.

실무적인 방법


1) 공유 사용권한은 모든 권한으로 설정하자.(공유는 공유 설저의 유무가 중요하므로 

                                              모든 권한을 할당)

2) 보안 사용권한은 로컬로 로그온을 하나, 네트워크 연결을 한는 것과 관계없이 

   무조건 적용된다.


소유자를 administrator가 현재 소유궈이다.  administrator 이외의 다른 계정은 권한이 없다. 






실습2-2>예외적인 항목에 대한 방안


수백개의 파일 중 파일2에 대해 그룹B에게 쓰기 거부를 설정하였다면 user1은 파일2에 대해 

어떤 권한을 가지나?


거부가 허용보다 우선된다. 무조건 거부된다.


<Permission의 종류>

암묵적인 퍼미션         VS     명시적인 퍼미션

Implicitly Permission   VS  Expllicityly Permission

Allow + Revodk              Allow할당 + Deny 거부

 

▶ 명시적 할당 / 거부 = 사용자를 추가한 후 권한을 할당하든지 거부한다.


◎ 거부: 일반적으로 사용권한 설정은 폴더에서 한다. 그러면 폴더 안에 있는 모든 파일에게

         동일한 사용권한이 상속되므로, 파일에 일일히 설정을 해 줄 필요가 없다.

         예외적으로 특정한 파일에 대해서 특정 사용자(그룹)에게만 상속된 사용권한과 달리

         설정을 해야 할 필요가 있는 경우에만 거부를 사용한다.


▶ 암묵적 거부 = 권한을 줄 필요없는 계정이 포함되 그룹은 처음부터 추가할 필요 없다.


★ 상속차단 : 기본적으로 볼륨의 루트에 설정한 사용권하는 하위로 상속이 된다/

      만약 폴더를 생성한다면 디스크 볼륨 루트의 사용권한을 그대로 상속받게 된다.

   상속은 상위에서 주지만, 거부는 하위에서 차단하는 것이다.


              추가: 상속만 차단할 뿐이고, 기존에 사용자, 그룹은 그대로 존재한다.

        단, 사용권한은 변경할 수 있게 된다.

  제거: 모두 제거 후 새로 사용자를 한명씩 추가해야 한다. 

   

<실습1> srv2에서 C:\폴더A\폴더B\폴더C\파일1 을 생성하세요.

        폴더A에 대해 user2 사용자를 추가하여 읽고 쓰기 권한을 부여하세요.

        파일1에는 쓰기 권한을 제거하세요. 상속 차단 (추가/제거)

        하위 폴더들과 파일1에 대해 폴더A의 권한설정이 상속되는지도 확인하세요!!!!!

        테스트: Srv3에서 user2로 로그온하여 권한 테스트하시오.


▶ Permission을 적용하는 방법(Access Control)

  * 사용권한은 상위의 설정이 하위에 상속된다.

    상속된 권한은 상속차단하기 전까지는 변경할 수 없다.

  * 사용권한은 누적(결합)된다.

 (활용)폴더에 설정한 사용권한은 대부분의 파일에게 공통으로 적용될 수 있는 정도

        즉, 최소한의 권한을 부여하고, 각각의 파일에 대해 상세하게 권한을 

추가해주면 된다.


해당 폴더 우클릭 - 보안 탭 - 고급 - 편집 


원래는 이렇게 상속받은 설정을 지울 수가 없다. 그러니 명시적 거부를 사용한다.!!!





<Test>

영업부 OU에 기본값으로 HR과 Sales 그룹을 생성하고,

HR   : user1, user2, user3

Sales: user1, user4, user5 를 각각의 그룹에 구성원을 추가하자.


장그래는 HR과 Sales그룹의 구성원이다. 폴더의 구조는 그림과 같다.


1) 폴더1에 대해 HR그룹은 쓰기 권한, Sales그룹은 읽기 권한이 있다면

   user1는 파일1과 파일2에 대해 어떠한 권한을 가지나? 읽고 쓰기 

   읽기와 쓰기가 결합되고 하위폴더, 파일까지 상속된다.

파일2에서 HR그룹의 쓰기 권한을 제거



2) 폴더1에 대해 HR 그룹은 읽기 권한, Sales그룹은 폴더2에 대해 쓰기 

    권한이 있다면 파일1과 파일2에 대해 User1은 어떤 권한을 가지나?

        읽기             읽고 쓰기

3) HR 그룹에게 폴더1에 대해 수정 권한이 있다. 폴더2에 있는 파일2에 대해 Sales 그룹만이 액세스 가능해야

   하며 권한은 읽기 권한만을 부여하려면 어떻게 해야 하나?

   이 요구사항을 처리하기 위해 가장 짧은 단계가 무엇일까?

   


   - 폴더1 : HR 수정

   - 폴더2 : HR 수정 상속 

   - 파일2 : 수정 상속 / 상속 차단/ HR 그룹 제거 /Sales 추가 후 읽기 권한 할당


아래 파란색 네모를 클릭하면 상속된 설정을 변경 가능하다.



posted by 송시혁

BGP : 대규모 네트워크에 사용하기 위해 만든  프로토콜의

(국가와 국간에 사용 )

: 우리나라는 ISP업체들이

  BGP AS #를 하나씩 기지고있다.

  SK 1000 번대, KT 9000 번대, LG 7000번대


  BGP AS #가 같은애들은  

  -> internal BGP

  BGP AS #가 다른애들은 

  -> external BGP(국가와 국가간은 AS number가 다르므로 )   

  

  # BGP 보통 넘어오는 routing table갯수 

    3만개 ~ 5만개

    -> 쌍용정보통신(cisco골파, KT 구로, 혜화)

    * show ip route -> 함부로 치면 안됟다.(50000개가 넘는 프로토콜이다 !!!!!!!)

-> neighbor를 맺는다.

   TCP packet을 쓴다.

   TCP port# 179

-> negithbor를 맺을 때 상대방 IP를 지정을 한다.

-> unicast routing이 올라가 있어야 한다.

    -> Next-hop을 알지 못하면 

       BGP 를 맺지 않는다.

BGP가 ㅏ정상적으로 맺어진것을 확인

 

show ip bgp neighbor

neighbor상태가 establish

 

    -> negithbor x.x.x.x remote-as #

       네이버를 맺는다.

    -> network x.x.x.x mask x.x.x.x

       자신이 가지고 있는 네트워크를 

       입력한다. (loopback)


아래 그림은 설정된 루프백으로 neighbor를 맺는 것.





<ACL 실습하기>


ACL(Access-Control List)

: 특정 패킷을 차단/허용 기술

: 굉장히 많이 쓰는 기술

  (네트워크 관리 및 보안)

: standard(#1-99) 

  extended(#100-199)

: 기준을 보는것

  1) standard

     -> 패킷의 구별 기준이 source IP 만 보고 판단

     -> 특정 host만 차단을 할 때

            특정 IP만 차단을 할 때  

  2)extended

    -> 패킷의 구별 기준 

   source IP, dest IP

   protocol

   TCP/UDP port# 도 구별 가능 

   -> 특정 서비스만 차단을 할 때


기술팀        192.168.1.0

총무팀        192.168.2.0

총무팀 서벅가 192.168.2.100

    기술팀 서벅가 192.168.1.100

source 192.168.1.0 dest 192.168.1.100 허용 

source 192.168.2.0 dest 192.168.2.100 차단 


ACL을 설정시 유의할 점

1) 순서대로 해야된다. 가장 중요!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

   source 192.168.1.0 허용 

   source 192.168.1.0 차단

   위의 설정을 하더라도 스탠다드는 무조건 허용한다. 

   그 이유는 source IP가 허용을 먼저 설정하였기 때문에

   차단은 먹히지 않는다.


2) 방화벽

3) access-list 10 permit any

4) access-list의 기본동작은 (default) deny 

5) access-list 1 permit 192.168.1.0 0.0.0.255

   => 192.168.1.0의 대역을 통과를 허락하고 나머지 대역은 전부 차단 

   permit any (마지막에 넣는다.)

   

   차단할 대역대를 다 입력하고

   마지막에 permit any를 넣는다.


standard ACL 설정. 아래 그림들은 그냥 명령어만 보여준다. 동작은 포스팅 안함


설정한 ACL을 포트에 적용해야 한다. ip access-group 1 out은 해당 라우터에서 전송하는 ip를 차단하겠다는 것이다.

in과 out은 설정하는 라우터가 기준이다.  위그림에서 192.168.1.0/24를 deny 라고 Access control list를 지정하였기 때문에

router기준 192.168.1.0대에 ip를 전송하지 않음. 



아래 그림은 access list 를 보여준다. 

위 그림과는 달리 access-list 1 permit any 를 추가였다.

ACL은 받드시 순서가 중요하다!!!


나름 설명하자면, 192.168.1.0 대에 ip를 거부하고 나머지느 허용한다는 의미이다.

access-list 1 permit any 추가 시키지 않으면 모두 deny 함으로 반드시 추가해야 한다.



아래는 extended ACL을 설정하는 것. standard 와는 달리 source ip/subnet, dest IP/subent까지 입력해야 한다. 

아래는 standard 와 extended의 번호를 나타냄. 


<실습 - 웹서버 막기>






posted by 송시혁
2018. 7. 2. 10:51 네트워크/database실습



BSD mysql 설치 절차.


sudo pkg update

=> 패키지 목록 받아오기


sudo pkg search mysql | less

=> 정확한 패키지 이름 검색 


sudo pkg install mysql80-server

=> mysql 서버 설치 


service mysql-server start

=> mysql 서버 구동


mysql_secure_installation

=> mysql 초기 설정 


mysql -uroot -p

=> mysql 서버에 루트 계정으로 접속 


sudo pkg search mysql | less

설치할 mysql을 확인한다. 




vi /usr/local/etc/mysql/my.conf 

=> mysql config 파일 



그러나 어떻게 설정할지 모른다. 

그러기 때문에 /usr/local/etc/rc.d로 간다.

아래 그림을 참고 


rc.d에 보면 설명이 대략 나와있다. 


/etc/rc.conf

=> 프로그램 구동하기 위한 설정. 

아래와 같이 설정.


설정을 했으면 서비스를 시작함. 


mysql -uroot -p

=> mysql을 접속하기 위한것. (아직 패스워드를 지정하지 않은 상태)


pager 

=> less나 more과 같은 mysql 명령어 



mysql passwd 설정하기


안전하게 mysql을 설치하기 위한 파일. 이것을 실행.

mysql_secure_installation 


원격 로그인이 필요하나? n

test database를 제거하기를 원하나? no

prvililedge table를 가져오기를 원하나? y


FreeBSD에서 인터넷에 있는 파일 다운받고 실행하기.

 fetch https://dev.mysql.com/doc/index-other.html


인터넷상에서 다운받고자 하는 파일을 커서에 갖다댄다.

아래와 같이 주소가 뜬다.






우분투도 마찬가지이다.


// 우분투도 비슷하나 apt 명령어를 사용해야한다는점. 그리고 일반계정인 경우 무조건 

   sudo 명령어를 사용한다는 점이 BSD와 차이가 있다.



데이터베이스 mysql을 조회한 모습. 




결국 정리하자면 다음과 같다.


linux mysql 절차


sudo atp-get update

=> 패키지 목록 받아오기


sudo apt-cache search mysql | less

=> 정확한 패키지 이름 검색 

 

sudo apt-install mysql-server 

=> mysql 서버 설치 


sudo service mysql start

=> mysql 섭 구도 


sudo mysql_secure_installation

=> mysql 초기 설정 


sudo mysql -uroot -p

=> mysql 서버에 루트 계정으로 접속 



posted by 송시혁

/etc/defaults/

=> 운영체제가 디폴트 값을 설정한 파일들이 존재.


수정시에서

/etc/rc.conf가

rc.conf가 존재.


less /etc/defaults/rc.conf에 보면 
syslogd는 자동으로 yes로 되어있어서 구동되고 있는 것.






대칭키 암호화 /해시값 구하기

  

  

file.txt 대상


openssl enc -base64 -in file.txt

openssl enc -base64 -in file.txt out file_base64.txt


openssl enc -aes-256-cbc -in file.txt -out file_enc.txt

=> file.txt를 aes256알고리즘으로 cbc방식으로 암호화 하여 file_enc.txt에 저장.


openssl enc -aes-256-cbc -d -in file_enc.txt(복호화)

=> file_enc.txt를 복호화 


openssl dgst file_enc.txt 

->해쉬값을 파일에 저장

  

openssl dgst -sha256 file_enc.txt

-> 해쉬값을 256비트에 크기만큼 파일에 저장(sha256 이 해쉬 256비트라는 것이다.)


openssl enc -aes-256-cbc -in file.txt -out file_enc.txt

=> file.txt를 aes256알고리즘으로 cbc방식으로 암호화 하여 file_enc.txt에 저장.

그리고 패스워드를 설정하면 file_enc.txt가 생성. 


cat명령어로 출력하면 뭔가 이상한 문자가 나온다. 

 file.txt의 내용을 file_enc.txt에 암호화하여 저장한 것. 


아래 그림은 복호화. 위와 동일하지만, -d옵션을 추가해야함.



openssl dgst file_enc.txt 

->해쉬값을 파일에 저장

  

openssl dgst -sha256 file_enc.txt

-> 해쉬값을 256비트에 크기만큼 파일에 저장(sha256 이 해쉬 256비트라는 것이다.)


● web2a의 MD5 해쉬값을 web2a.md5에 저장

=> openssl dgst -md5 web2a > web2a.md5


뭔가 잘못치면 아래 그림같이 뜬다. 알고리즘 옵션을 줄때 화면을 참고하면 된다. aes-256-cbc이러식으로 명령했으나,

des3을 사용힛에는 그냥 -des라고 입력.


● web2a를 des3알고리즘을 이용하여 암호화 : web2a_enc

=> openssl enc -des3 -in web2a -out web2a_enc


바이너리 파일인 web2a_enc파일이 이상한값으로 되어 있음을 알 수 있다. 즉, DES3로 암호화 된것이다. 



<실습>


전체 시나리오는 아래와 같다.


● /usr/share/dict/web2a ~/openssl_work/아래복사


● web2a의 MD5 해쉬값을 web2a.md5에 저장

=> openssl dgst -md5 web2a > web2a.md5


● web2a를 des3알고리즘을 이용하여 암호화 : web2a_enc

=> openssl enc -des3 -in web2a -out web2a_enc


● 암호환된파일의 MD5 해쉬값을 web2a_enc.md5에 저장 

 => openssl dgst -md5 -in web2a_enc > web2a_enc.md5 


● diff를 이용하여 web2a.md5, web2a_enc.md5 비교

=> diff  web2a.md5 web2a_enc.md5


● 암호화된 파일을 web2a_decript 파일로 복호화를

=> openssl enc -des3 -d -in web2a_enc -out web2a_decript


● 복호환딘 파일의 MD5 해수l값을 web2a_decript.md5에 저장

=> openssl dgst -md5 web2a_decript > web2a_decript.md5


● 복호화된 파일과 원본 MD5를 diff를 이용하여 비교 

=> diff web2a.md5 web2a_decript.md5


아래는 web2a.md5 를 비교한것. web2a_decript.md5
해쉬값은 동일한것을 알 수 있다.


비대칭 암호 

openssl genrsa -out priv_key.pem 1024

=> 키의 비트 갯수는 1024 


openssl rsa -in priv_key.pem -text -noout

=> 암호화돠 키의 내용을 텍스트 내용으로 본다. 

    RSA는 소인수분해을 이용한다.


openssl rsa -in priv_key.pem -outform DER -out priv_key.der 

=> priv_key.der 이진파일로 저장. 

  

PEM : 인터넷으로 전송하기 좋은 아스키 코드 형태


DER : 이진형태 파일

.cert

.cer

.crt


두 가지 형태 사이 변환 가능   



openssl rsa -in priv_key.pem -des3 -out encrypted-priv_key.pem

-> RSA 개인키는 대칭키 시스템으로 암호화 하여 보관


openssl rsa -in encrypted-priv_key.pem -pubout -out dec_priv_key.pem

-> RSA 개인키에서 공개키를 추출 


공개키를 추출한 모습.


< TCP dump >


● 암호화 되지 않은 http get 요청


=> tcpdump 'tcp[32:4]=0x47455420'


posted by 송시혁

홈폴더 : 리눅스의 홈 디렉토리와 동일. 단, 리눅스와 달리 사용자를 추가해도 자동으로 

         생성되지 않고 수동으로 만들어주어야 한다.

 

사용목적 : 보안상 이유로 각자의 PC에 데이터를 저장치 않고, 반드시 회사 내 파일 서버에

            있는 홈 폴더에 저장을 하게 한다.

<실습1> 모든 직원은 boston의 홈 폴더 하위의 자신의 아이디와 동일한 폴더에 

        파일을 저장하자. 

자신이 만든 파일에 대해서는 모든 권한이며, 다른 사용자가 만든 파일은 읽기만 하자.

<실습2> http://blog.northwind.com/user4 강소라의 개인 블로그 만들기

목적: srv2 서버에 위치한 개인 홈폴더를 사용자의 개인 블로그로 만들자

2-1) srv2 서버에 홈 폴더를 생성하고 공유설정(모든 권한)

2-2) 강소라 프로필 속성 편집 \\boston\홈\%username% 적용

2-3) IIS 역할 추가: 기본설정에서 경로를 변경해 준다.

2-4) DNS서버(london)에서 srv2 호스트 blog 추가 

2-5) srv3 서버에서 user4로 로그온하여 메모장을 이용해 default.htm파일을 만들고

2-6) 자신의 홈 폴더로 전송한다.

2-7) http://blog.northwind.com/user4\로 엑세스하면 장그래 블로그를 볼 수 있다.

*DNS: 숫자로 구성된 IP주소는 암기, 사용하기 불편하기 때문에 고안된 이름풀이 서빗

컴퓨터 이름 1) 호스트 이름: 라우팅 가능한 이름 FQDN형식

www.naver.com => IP주소

            2) NetBIOS : 랜 전용 


실습 시작 . 


2-1) srv2 서버에 홈 폴더를 생성하고 공유설정(모든 권한)

=> 폴더를 생성하고 우클릭-고급공유-권환을 클릭하여 모든 권한 설정.


2-2) 해당 유저 프로필 속성 편집 \\boston\홈\%username% 적용

=> 해당 유저 속성(서버 관리 AD DS - 사용자 및 컴퓨터- northwind 사용자-사업부

-유저 변요한 더블 클릭. 아래에 연결을 체크하고 디렉토리를 설정한다.


2-3) IIS 역할 추가: 기본설정에서 경로를 변경해 준다.




2-4) DNS서버(london)에서 srv2 호스트 blog 추가 


blog라고 입력하면 FQDN에 아래와 같이 입력이 되다. domain 이름이 northwind.com이기 때문이다.



2-5) srv3 서버에서 user4로 로그온하여 메모장을 이용해 default.htm파일을 만들고


2-6) 자신의 홈 폴더로 전송한다.


2-7) http://blog.northwind.com/user4\로 엑세스하면 장그래 블로그를 볼 수 있다.







user3에서 추가한 웹 페이지 모습



AD DS에서 user 생성 시 명령어로 생성이 가능하다.


먼저 dsadd ou "ou=영업부,dc=northwind,dc=com"

=> northwind - 조직구성단위에 영업부를 생성.



 cn           = command.

 ou           = 고객 명. 

 dc           = domain control.

 upn          = 사용자 도메인 이름(확실치 않음)?

 samid       = sam 파일. 

 pwd         = 패스워드.

 canchpwd   = 패스워드 정책?(확실치 않음).

 



 파일 암호화 EFS(Encrypt >< 복호화)

 스니핑을 해도 내용을 알 수 없게 하는 것

 - 공개키 = 이중키, 공개키로 암호화하여 개인키로 복화화하는 방식. 소인수분해

            한국은 전자상거래 결제시에는 반드시 공개키 방식이어야 한다.

(계좌이체) 구축 비용이 비싸다. 공인인증서 

 

 - 단일키(개인키) = 비밀키, 암호화와 복호화를 할 때 사용하는 키가 동일하다.

                    빠르다. 키가 하나이므로 분실하면 안 된다.


(예1) 특정 서버(srv2)에 user1 사원이 담당하는 2018년 신규 프로젝트 파일이 저장되어 있다.

      비밀을 유지하기 위해 장그래는 파일 암호화를 사용했다. 발표전까지는 자신 이외에 아무도

      볼 수 없다.

* 특정 사용자로서 로그온을 하여 새 파일을 만들고 (파일 소유권을 가진다.)

  암호화 속성을 사용. ---> 자신 외에는 아무도 해당 파일을 열어 볼 수 없다.

  ---> 사용권한도 변경이 된다. 

  

  northwind\user2 로 로그온하여 장그래 파일 열어보자.

  northwind\administrator로 로그온하여 장그래 파일 열어보자.

  => 일단, 둘 다 안됨. 엑세스 거부 됨. 


(예2) 만약 관리자가 실수로 장그래의 계정을 삭제했다면 암호화된 파일을 열기 위해 

      동일한 속성의 장그래 계정을 다시 만들더라도 열 수 없다.

(이유) 모든 개체가 최초 생성될 당시 고유번호를 발급받게 된다. SID는 절대 중복 사용될 수 없다.

        또한 한 번 삭제된 SID는 다시 만들 수도 없다.

-rwxrwxr-x 파일소유권을 가진 살망이 모든 권한 Full Control

==> 파일 복구 에이젼트

SID 장그래 계정 삭제와 동시에 SID도 함께 삭제 --> 복구 x

=============================================================

S-1-5-21-680965171-1554889309-1836984643-1104


SID

=============================================================

S-1-5-21-680965171-1554889309-1836984643-1105



다음과 같은 실습 진행하기 

<실습>


Srv3 서버의 C:\home 폴더 생성

user2의 속성을 편집 \\Srv3\\home\%username% 개인 홈폴더 생성

자신의 홈폴더를 암호화하고 인증서를 [USB]폴더 안에 키 백업을 하시오.

administrator로 위의 키를 사용하여 암호화 속성을 해제시키시오.


일단, Srv3 서버의 C:\home 폴더 생성(user2로 생성 )

user2의 속성을 편집 \\Srv3\\home\%username% 개인 홈폴더 생성은 생략하였다. 위의 내용과 

중복되기 때문이다.



user2에서 암호화를 한다.


user2에 usb라는 폴더를 생성하고 키를 생성하는 절차는 아래와 같다. 


파일 암호화 인증서 관리를 실행. 




아래에서 암호화 키 주체, 발급자를 확인한다. 암호화된 파일을 만든 유저가 백업을 해야 한다.

여기서는 user2로 진행하였기에 user2가 발급자, 발급대상이다. 기간은 100년. 


다음과 같이 백업할 경로를 지정. 여기서는 테스트로 usb라는 폴더를 만들어 실습을 진행하였다.


열쇠라는 키를 생성한다. 이름은 상관없다. 확장자 명을 .pfx이다. 


키에 대한 암호를 설정한다. 



백업이 완료된 모습이다.


administartor로 접속한다.



암호화 키를 administrator가 가져와서 암호화된 파일에 접근을 하는 절차를 거쳐야 된다.



mmc를 실행한다.

mmc(microsoft management console) 

 

=> m - microsoft

=> m - management

=> c - console



파일 - 스냅인을 추가/제거- 인증서 클릭 - 추가 


user2에서 생성하였던 암호화 키를 가져온다.



생성하였던 암호화 키를 가져오면 된다.



해당 암호화 키에 password를 입력한다.



administrator 계정은 접근이 가능하다. 암호화 키를 가져왔기 때문이다. 


이제 암호화 해제를 한다. 해제가 가능한 이유는 administrator 에서 키를 불러냈기 때문에 가능하다. 

그리고 해제를 하는 이유는 User2가 퇴사를 했을때, User2만 접근 가능한 파일을 해제하여 다시 다른 사용자가

사용하게끔 만들어야 하기 때문이다.


데이터 보호를 위해 내용을 암호화 체크를 해제한다. 


다른 user로 접속해도 볼 수 있다. 










posted by 송시혁
prev 1 2 3 4 5 ··· 8 next