2014.06.11. 10:27

RHEL 6 (or CentOS 6) 서버에서 gpg 암호화를 위한 방법이다.    

1. rng-tools 패키지 설치
$ yum install -y rng-tools

* rng는 Random Number Generator의 약자이다.
* RHEL 6는 틱없는 커널을 채용하였다. 그런데 틱없는 커널에서는 충분한 엔트로피를 생성하지 않는다.
  따라서 별도로 rng-tools를 설치하여 gpg 키에 사용될 랜덤값을 뽑아내야 한다.
* entropy(엔트로피) : 정보에 포함되어 있는 불확실성의 정도를 나타냄.
* 아래는 틱없는 커널에 대한 Redhat 문서이다.
https://access.redhat.com/site/documentation/ko-KR/Red_Hat_Enterprise_Linux/6/html/Power_Management_Guide/Tickless-kernel.html
* OS 커널의 틱, rng-tools를 이용하는 방법 외에 전용 TPM 장치를 이용하는 방법도 있다.
  TPM(Trusted Platform Module)은 하드웨어적인 보안 장치로써 내부적으로 지원되는 컴퓨터 시스템에 보다 강력한 보안을 제공한다. 보안 옵션 소프트웨어 패키지와 결합되면 전체적인 시스템 보안, 파일 보호, 이메일 및 사생활 관련 보호를 제공한다

2. rngd 관련 옵션 설정
랜덤 값을 생성해 줄 urandom device를 이용한다.
/dev/random 로 지정하면 gpg 키가 생성되지 않으니 urandom으로 지정할 것.

$ vim /etc/sysconfig/rngd
EXTRAOPTIONS="-r /dev/urandom"

3. rngd 데몬 시작
$ /etc/init.d/rngd start

4. gpg-agent 실행
실행하면 /root/.gnupg/S.gpg-agent 파일이 생성된다.
$ /usr/bin/gpg-agent --daemon --use-standard-socket
--> gpg-agent 데몬을 죽이려면 kill -9 PID 하고 rm -f /root/.gnupg/S.gpg-agent

5. gpg 파일 생성하기

$ gpg --gen-key
   (1) RSA and RSA (default) --> 엔터
   What keysize do you want? (2048) --> 엔터
   Please specify how long the key should be valid. --> 엔터
   Is this correct? (y/N)  --> y 엔터
   Real name: testuser 입력 후 엔터 (testuser - 공개키를 가지는 UID라 할 수 있다.)
   Email address: 안 넣으려면 엔터
   Comment: 안 넣으려면 엔터
   Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?  O 누르고 엔터
   Passphrase  사용할 비밀키(개인키)값 입력 후 엔터 (여기선 redhat123)

 

* GnuPG에 관련된 자세한 사용법은 아래 사이트를 참조할 것.
https://www.gnupg.org/documentation/manuals.html
GnuPG는 GPG라고도 불리우며 GNU Privacy Guard의 약자이다.

6. 평문 파일 생성
$ echo "ipmi-admin-password" > /root/password-plain

7. User ID의 공개키를 이용해서 평문 파일을 gpg 암호화 파일로 변환하여 생성.
password-plain.gpg 파일이 생성된다.
$ gpg -e -r testuser /root/password-plain
-> -o 옵션과 파일명을 주면 원하는 파일명으로 생성. -o 옵션을 안주면 password-palin.gpg 파일명으로 생성.

* 만약 공개키를 파일로 export 하고 싶다면 아래처럼 한다.
$ gpg --armor --export test123 > /root/mypubkey.asc
* 설치된 공개키의 리스트를 보여주기
$ gpg --list-keys

8. gpg 파일 퍼미션 조정
$ chmod 600 /root/password-plain.gpg

9. 평문 파일은 삭제
$ rm -f /root/password-plain

10. 스크립트 파일 생성
$ echo "gpg --quiet -d /root/password-plain.gpg" > decrypt-password

11. 스크립트 파일 내용 확인
$ cat decrypt-password
gpg --quiet -d /root/password-plain.gpg

12. root만 실행할 수 있도록 퍼미션 조정
$ chmod 700 /root/decrypt-password

13. decrypt-password를 실행한다.(최초 실행시 비밀키(개인키)값 redhat123 을 입력해 줘야 한다.)
실행하면 ipmi-admin-password 문장이 나온다. 자신의 공개키로 암호화 된 문서를 자신의 비밀키(개인키)로 복호화 하여 문서의 내용을 보는 것이다.
decrypt-password 스크립트의 -d 옵션이 decrypt 이다.
$ bash /root/decrypt-password
비밀키 redhat123 입력
문서내용 ipmi-admin-password 이 출력된다. 즉, fence 장치의 비번이다.

14. cluster.conf 파일에 반영
passwd_script="/root/decrypt-password"

cluster.conf의 fence 장치 비번 설정을 gpg 키로 암호화하기

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다