기본 콘텐츠로 건너뛰기

추천 가젯

OpenSSL 명령어로 비대칭 암호화하기 (공개키로 암호화하고 비밀키로 복호화하기)

비대칭 암호화 암호화 키와 복호화 키가 서로 다른 비대칭 암호의 특징을 이용하여 공개키로 암호화하고 비밀키로 복호화할 수 있다. 우선 이전에 생성한 private.pem 과 public.pem 이 필요하다. 비밀키는 계속 가지고 있고, 통신을 하고자 하는 사람에게 공개키를 전달한다. 그 다음 공개키를 가진 사람이 공개키로 암호화하고, 암호화한 결과를 전달한다. 이 과정은 도청되어도 비밀키를 알아낼 수 없기에 원문을 도청자가 알아낼 수 없다. 원문 준비하기 원본은 다음과 같이 준비한다. 주로 대칭 암호화를 사용할 키를 전달할 때 공개키 암호를 보조하여 사용하므로, 여기서는 키파일을 생성하겠다. echo -n "key=" > key.txt openssl rand -hex 32 >> key.txt echo -n "iv=" >> key.txt openssl rand -hex 16 >> key.txt 그러면 key와 iv가 포함된 파일이 완성된다. 이 파일을 안전하게 전달하기 위해 암호화한다. 공개키로 암호화하기 openssl pkeyutl -encrypt -pubin -inkey [public.pem] -in [key.txt] -out encrypted.bin openssl pkeyutl : openssl에서 제공하는 low-level 공개키/개인키 연산 유틸리티인 pkeyutl 을 이용한다. -encyprt : 암호화를 한다. -pubin : 입력받을 키의 종류를 공개키로 지정한다. -inkey [입력키] : 입력받을 키를 지정한다. 암호화를 할 때는 공개키를 지정한다. 필자는 'public.pem'으로 지정하였다. -in [입력파일] : 입력파일을 지정한다. 암호화를 할 때는 원문을 지정한다. 필자는 위에서 생성한 'key.txt'로 지정하였다. -out [출력파일] : 출력파일을 지정한다. 출력된 결과는 암호문이므로 저장될 이름을 지정한다. 필자는 'e...

Synology NAS에 Oracle 설치하기

오늘은 시놀로지 NAS에 오라클을 설치해 보려고 한다.

D대학에서 K교수님의 데이터베이스 수업을 듣는 중, 과제를 통해 오라클 DBMS를 사용하게 되었는데, 마침 집에 시놀로지가 있어 이곳을 서버로 사용하기로 했다.


오라클의 상품은 여러개가 있는데, 그 중에서 우리는 무료 버전인 XE를 사용할 것이다.

XE는 무료인 만큼 여러 제약이 있다.

1. 한 서버에 1개의 인스턴스만 사용 가능하다.

2. 1개의 CPU 자원만 가능. 듀얼코어인 내 NAS에서도 싱글코어로 작동한다.

3. 사용자 데이터는 11GB까지만 저장할 수 있다.

4. 메모리는 1GB까지만 사용한다.

이러한 제한을 빼고는 교육, 연구, 데이터의 테스트 등에 제한없이 사용 가능하다.





그럼 바로 설치와 설정을 해 보자.


1. Docker 패키지 설치

먼저 DSM에 접속해 Docker를 다운받는다. 다운로드 받는 방법은 익히 알고 있을 것이니 생략한다.

2. Oracle Image 다운로드, 설치



'레지스트리' 탭에 들어간 후, oracle을 검색한다. 그러면 oracle과 관련된 여러 이미지들이 있는데, 그 중에서 xe가 들어간 아무 레지스트리나 적당히 고르면 된다. 필자의 경우 별점이 높은 'oracleinanutshell/oracle-xe-11g'를 선택하였다.


더블클릭하여 다운로드를 할 수 있다. 가끔 태그 선택 창이 뜨는데, latest를 누른 다음 선택 버튼을 눌러 다운로드했다.


이미지 탭에 들어가면 다운로드된 이미지들이 있는데, 다운로드가 완료되면 더블클릭하여 설치한다.

컨테이너 이름을 적당히 지정해 준 다음, '고급 설정'을 연다.
'폴더 추가' 버튼을 누른 후, 적당한 경로를 추가해준다.



'포트 설정'을 누르고, 적절히 포트를 설정한다. 22포트나 8080포트는 이미 사용중인 포트일 수 있기에, 다른 포트로 바꿔준다. 보안을 위해서 Well-Known Port는 사용하지 않는 것이 바람직하다. 만약 Well-Known Port를 사용하게 되면, 악의를 가진 사람이 당신의 NAS에 접근해서 영 좋지 못한 일을 당할 수 있다.



'환경' 탭에 들어가서 환경변수를 추가한다.
LANG은 언어, TZ는 타임존이다. 한국어를 사용하는 한국 환경에서 실행할 예정이기에 한국으로 설정했다.

TZ            Asia/Seoul
LANG       ko_KR.UTF8

각각 TZ(타임존)을 서울 시간, LANG(언어)를 유니코드 한국어로 설정한 부분이다.
'적용' 버튼을 눌러 다음으로 넘어가자.


마지막으로 '완료' 버튼을 눌러 설치를 완료한다.


이제 컨테이너에 오라클 11g xe가 설치되었다.
다만 앞으로 해야 할 일이 있는데, 바로 SYSTEM의 ID와 비밀번호를 변경하고, 새 사용자를 추가하는 일이다.
설치한 값이 기본값으로 되어 있기에, 가만히 놔두면 나쁜 사람들이 멋대로 내용을 바꾸는 불상사가 일어날 수 있기 때문이다.
먼저 http://nas주소:포트번호(웹,8080)/apex/apex_admin 에 접속한다.
포트번호는 아까전의 설정에서 봤던 포트의 '로컬 포트'를 입력하면 된다.


위와 같은 창이 뜨는데, Username에는 ADMIN, Password에는 admin을 입력해준다.

첫 로그인이 완료되면 경고 메시지와 함께 패스워드를 바꾸라고 한다. 적당히 넣어서 비밀번호를 바꿔주자.

다시 로그인을 하면 관리자 모드로 접속할 수 있다. 나중에 필요할 때 이곳에서 설정을 건드릴 수 있으니 참고하자.


대부분의 설정이 완료되었다. 이제 DB설정을 마무리할 때이다.
먼저, 데이터베이스 접속 툴을 통해 접속한다.
데이터베이스 툴로는 Oracle Developer, DBeaver, DataGrip 등이 있는데, 원하는 툴을 이용해 접속한다.
호스트에는 nas주소, 포트에는 로컬 포트, 사용자에는 system, 비밀번호에는 'oracle'을 입력한다.
'oracle' 비밀번호가 Default password이다. 얼른 수정해주자.
수정하기 전에 관리자 계정을 하나 생성하자.

다음 SQL문을 입력하고 실행한다.
CREATE USER 사용자명 IDENTIFIED BY 비밀번호;
GRANT CONNECT, RESOURCE, DBA TO 사용자명;

CREATE USER는 사용자를 생성하고, IDENTIFIED는 비밀번호를 설정한다.
아래의 GRANT CONNECT, RESOURCE, DBA는 각각 연결, 자원, 데이터베이스 관리자 권한을 부여하는 건데, 자세한 것은 각자 알아보도록 하자.

이젠 정말로 SYSTEM의 비밀번호를 변경할 때이다. 변경하지 않는다면 외부에서 나쁜 마음을 먹은 사람들이 여러분의 NAS에 영 좋지 못한 일을 벌일 수가 있기 때문이다.

다음 SQL문을 입력하고 실행한다.
ALTER USER SYSTEM IDENTIFIED BY 비밀번호;
ALTER USER SYS IDENTIFIED BY 비밀번호;

'ALTER'는 데이터베이스의 내용을 변경하는 뜻이고, USER SYSTEM은 'SYSTEM'사용자를 뜻하고, 'IDENTIFIED BY 비밀번호'는 위에서 말했던 내용과 같이 비밀번호를 설정하는 부분이다.
이 쿼리의 실행이 종료하면 DB 서버와의 연결이 끊기게 된다. SYSTEM으로 로그인 한 상황에서 SYSTEM의 비밀번호를 바꿔버렸기 때문이다.


위의 경고대로 접속이 되지 않는다. 이제 아까전에 만들었던 사용자로 로그인을 해서 사용하면 된다.
예시로 모든 테이블의 내용을 출력하는 SQL문을 실행해 보겠다.


SELECT * FROM SYS.ALL_TABLES;

*는 모든 내용, FROM 뒤에는 테이블 이름을 적는다. SYS.ALL_TABLES는 SYS의 모든 테이블이다.


이렇게 쿼리문을 통해 테스트까지 완료하였다면, 시놀로지 NAS에 성공적으로 데이터베이스 서버를 구축한 것이다.
힘들게 구축한 데이터베이스 서버로 과제를 불태워보자!


댓글

가장 많이 본 글