랜덤으로 패스워드를 생성/암호화/복호화하는 방법
자동화된 시스템에서(IaaS와 같은…) 패스워드를 발급하거나 회원가입시 설정한 패스워드 분실이 있을경우 요청한 메일로 랜덤한 패스워드를 발급하게 되는데 이과정을 시스템 기준으로 사용할수 있는 명령어를 5가지 소개합니다.
※ 본문에서는 Ubuntu 환경에서의 예문으로 다루며 RHEL 계열에서도 크게 다르지 않습니다.
# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION=”Ubuntu 14.04.3 LTS”
1. pwgen (http://pwgen-win.sourceforge.net/)
Windows 와 LInux 모두 지원되며 RHEL/Debian 계열에서는 YUM/APT 를 통해서 설치가능합니다.
Ubuntu
# apt-get install pwgen
CentOS
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum install pwgen
# pwgen 10 1 # [패스워드 길이] [패스워드 생성갯수]
–> 10자리수 패스워드 1개 생성
uGee5Rieb7
:: Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]
# pwgen 10 3
–> 10자리수 패스워드 3개 생성
mei6kah8Oh reisiShoh0 ithei8Ki7m
2. makepasswd
# apt-get install makepasswd
# makepasswd
ehNGTpG2YU
:: 명령어뒤에 옵션값을 입력하지 않으면 기본길이는 10
# makepasswd –chars 20
IeIAJz1t4EzM1TDzUYKB
# makepasswd –chars 20 –count 5
5gvgdtBGIM37dbJaCE4i
xx8UVoCR8WDvaHI23YyK
C8Vag1TvhKBN5mFj7ujX
7u7m83geBpxy4KBP33pm
NaJnpcHX9GK64ntMHL5N
3. mkpasswd
# apt-get install whois
# mkpasswd mojily
I9cLLjK6mQK0Y
:: Usage: mkpasswd [OPTIONS]… [PASSWORD [SALT]]
# mkpasswd smileserv
/yElucic5PlMI
# mkpasswd smileserv
mLfX9hPLMbs.E
# mkpasswd smileserv 11
11j6t644wtSmo
# mkpasswd smileserv 11
11j6t644wtSmo
4. openssl 암호화
아래 예문은 양방향(block) 암호화 aes-256-cbc 알고리즘을 이용해서 패스워드 암호화했으며 libmcrypt 2.4.x 이상 지원, 입력값 32byte마다 따라 결과값 32byte단위로 증가하는 방식입니다.
# echo cloudv.kr |openssl enc -aes-256-cbc -a -salt -pass pass:smileserv
U2FsdGVkX185/o978p51zFU7JgMpPJk8K/rVvsSnWe0=
※ salt 는 단방향 해시 함수에서 다이제스트를 생성할 때 추가되는 바이트 단위의 임의의 문자열
:: 암호 알고리즘 (Cipher commands)
aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb
aes-256-cbc aes-256-ecb base64 bf
bf-cbc bf-cfb bf-ecb bf-ofb
camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb
camellia-256-cbc camellia-256-ecb cast cast-cbc
cast5-cbc cast5-cfb cast5-ecb cast5-ofb
des des-cbc des-cfb des-ecb
des-ede des-ede-cbc des-ede-cfb des-ede-ofb
des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb
des-ofb des3 desx rc2
rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb
rc2-ecb rc2-ofb rc4 rc4-40
seed seed-cbc seed-cfb seed-ecb
seed-ofb
5. openssl 복호화
aes-256-cbc 암호화 알고리즘을 이용해서 패스워드 복호화
# echo U2FsdGVkX185/o978p51zFU7JgMpPJk8K/rVvsSnWe0= | openssl enc -aes-256-cbc -a -d -salt -pass pass:smileserv
cloudv.kr
[…] /root/.bashrc :: pwgen 은 패스워드를 랜덤하게 생성해주는 명령어로 여기서는 36자리 랜덤한 문자열로 생성하겠습니다. 관련해서 이전에 적어 놓은글이 있으니 참고 http://idchowto.com/?p=16051 […]