이 포스트에서 설명하는 것은 바로 ‘신뢰할 수 있는 3자’의 역할을 스스로 하는 법이다. 물론 이렇게 생성한 인증서는 root-ca에 등록된 인증서가 아니므로 웹 브라우저에서는 신뢰할 수 없는 인증서라는 메시지를 띄울 것이지만 인트라넷 환경이라거나 인증서 발급 비용이 부담1물론 Let’s encrypt 등 무료로 인증서를 발급해주는 기관도 있다. 되는 경우 자체 서명 인증서를 이용하여 https 서비스를 제공할 수 있게 된다. 적어도 http에 비해 보안성을 향상 시킬 수 있다.
준비 openssl 패키지가 필요하다. 아래 두 가지 방법으로 설치 여부 확인이 가능하다.
만약 설치 되어있지 않으면 “sudo yum install openssl” 명령으로 설치하자.
인증서를 생성하는 과정은 “개인키 발급” ->”인증요청서 작성” -> “인증 요청” -> “발급”2여기서의 발급은 당연히 파일의 생성이다. 의 과정을 거친다.
개인키 생성
haedong@haedong:~:]$ openssl genrsa -des3 -out server.key 2048
Generating RSA private key, 2048 bit long modulus
......................................................+++
............................................................+++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
haedong@haedong:~:]$ ll
합계 4
-rw-rw-r-- 1 haedong haedong 1743 8월 18 09:02 server.key
개인키 Passphrase 제거 생성된 개인키의 권한 확인을 위한 것으로 이 개인키로 생성된 인증서를 사용하는 서비스는 구동 시 매번 패스워드를 물어본다. 어차피 이 passphrase가 있건 없건 SSL 서비스를 제공하는데엔 아무런 문제도, 차이도 없다.
haedong@haedong:~:]$ cp server.key server.key.original
haedong@haedong:~:]$ openssl rsa -in server.key.original -out server.key
Enter pass phrase for server.key.original:
writing RSA key
haedong@haedong:~:]$ ll
합계 8
-rw-rw-r-- 1 haedong haedong 1675 8월 18 09:06 server.key
-rw-rw-r-- 1 haedong haedong 1743 8월 18 09:06 server.key.original
인증 요청서 생성
haedong@haedong:~:]$ openssl req -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:KR <- 국가코드
State or Province Name (full name) []:SEOUL <- 도/특별시/광역시
Locality Name (eg, city) [Default City]:GANGNAMGU <- 시/군/구
Organization Name (eg, company) [Default Company Ltd]:HaeDong <- 조직,회사 이름
Organizational Unit Name (eg, section) []:INFRASECU <- 팀 이름
Common Name (eg, your name or your server's hostname) []:haedong.net <- 서버, 사이트 이름
Email Address []:haedonggang@naver.com <- 관리자 E-mail
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: <- Enter로 넘겨도 무방
An optional company name []: <- Enter로 넘겨도 무방
haedong@haedong:~:]$ ll
합계 12
-rw-rw-r-- 1 haedong haedong 1066 8월 18 09:14 server.csr
-rw-rw-r-- 1 haedong haedong 1675 8월 18 09:06 server.key
-rw-rw-r-- 1 haedong haedong 1743 8월 18 09:06 server.key.original
인증서 발급 (생성) 여기서의 인증서는 원래 ‘root-ca’기관에서 발급을 해주는 인증서를 말한다. 하지만 앞 단락에서 이야기 한 것처럼 이 과정은 내가 나 스스로에게 인증서를 요청하고 인증서를 발급 해주는 것이다. 즉 root-ca에서 인증서를 발급 받는 경우는 위에서 생성한 csr 파일을 root-ca로 보내고 root-ca에서 다시 crt 파일을 보내주는 과정을 거쳐야 한다.
haedong@haedong:~:]$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
Signature ok
subject=/C=KR/ST=SEOUL/L=GANGNAMGU/O=HaeDong/OU=INFRASECU/CN=haedong.net/emailAddress=haedonggang@naver.com
Getting Private key
haedong@haedong:~:]$ ll
합계 16
-rw-rw-r-- 1 haedong haedong 1322 8월 18 09:21 server.crt
-rw-rw-r-- 1 haedong haedong 1066 8월 18 09:14 server.csr
-rw-rw-r-- 1 haedong haedong 1675 8월 18 09:06 server.key
-rw-rw-r-- 1 haedong haedong 1743 8월 18 09:06 server.key.original
위의 crt 파일이 https 적용을 위한 인증서 되시겠다. 활용하고자 하는 서비스에 적용하면 된다. 아래는 제타위키를 참고한 apache https서비스를 위한 설정 파일 수정 예.
EPEL1Extra Package for Enterprise Linux 릴리즈 패키지가 필요하다.
[centos7:/home/haedong:]$ sudo yum -y install epel-release
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.kakao.com
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-11 will be updated
---> Package epel-release.noarch 0:7-13 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
============================================================================================================================================================================================================================================
Package Arch Version Repository Size
============================================================================================================================================================================================================================================
Updating:
epel-release noarch 7-13 epel 15 k
Transaction Summary
============================================================================================================================================================================================================================================
Upgrade 1 Package
Total download size: 15 k
Downloading packages:
epel/x86_64/prestodelta | 539 B 00:00:01
epel-release-7-13.noarch.rpm | 15 kB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : epel-release-7-13.noarch 1/2
Cleanup : epel-release-7-11.noarch 2/2
Verifying : epel-release-7-13.noarch 1/2
Verifying : epel-release-7-11.noarch 2/2
Updated:
epel-release.noarch 0:7-13
Complete!
openvpn, easy-ras 패키지 설치
[centos7:/home/haedong:]$ sudo yum -y install openvpn easy-rsa
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.kakao.com
Resolving Dependencies
--> Running transaction check
---> Package easy-rsa.noarch 0:3.0.8-1.el7 will be installed
---> Package openvpn.x86_64 0:2.4.9-1.el7 will be installed
--> Processing Dependency: libpkcs11-helper.so.1()(64bit) for package: openvpn-2.4.9-1.el7.x86_64
--> Running transaction check
---> Package pkcs11-helper.x86_64 0:1.11-3.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
============================================================================================================================================================================================================================================
Package Arch Version Repository Size
============================================================================================================================================================================================================================================
Installing:
easy-rsa noarch 3.0.8-1.el7 epel 44 k
openvpn x86_64 2.4.9-1.el7 epel 524 k
Installing for dependencies:
pkcs11-helper x86_64 1.11-3.el7 epel 56 k
Transaction Summary
============================================================================================================================================================================================================================================
Install 2 Packages (+1 Dependent package)
Total download size: 624 k
Installed size: 1.5 M
Downloading packages:
(1/3): easy-rsa-3.0.8-1.el7.noarch.rpm | 44 kB 00:00:02
(2/3): openvpn-2.4.9-1.el7.x86_64.rpm | 524 kB 00:00:01
(3/3): pkcs11-helper-1.11-3.el7.x86_64.rpm | 56 kB 00:00:00
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 141 kB/s | 624 kB 00:00:04
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : pkcs11-helper-1.11-3.el7.x86_64 1/3
Installing : openvpn-2.4.9-1.el7.x86_64 2/3
Installing : easy-rsa-3.0.8-1.el7.noarch 3/3
Verifying : easy-rsa-3.0.8-1.el7.noarch 1/3
Verifying : openvpn-2.4.9-1.el7.x86_64 2/3
Verifying : pkcs11-helper-1.11-3.el7.x86_64 3/3
Installed:
easy-rsa.noarch 0:3.0.8-1.el7 openvpn.x86_64 0:2.4.9-1.el7
Dependency Installed:
pkcs11-helper.x86_64 0:1.11-3.el7
Complete!
설정
config 파일 복사 /usr/share/doc/openvpn-VERSION/sample/sample-config-files/ 디렉토리 아래에 존재한다.
Config 수정
# openvpn 사용 port
# 운영 환경에 맞게 변경한다.
port 9411
# 프로토콜 (UDP는 user defined protocol)
proto udp
# 가상 Device
dev tun
# 인증 키 관련 정보
# 다음 단락에서 생성할 파일들이다. 경로를 맞춰줘야 한다.
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
tls-auth /etc/openvpn/easy-rsa/pki/ta.key
key-direction 0
auth SHA512
cipher AES-256-CBC
topology subnet
# vpn network 정보. 가상 device 인터페이스.
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# vpn을 연결하면 사용할 DNS
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 192.168.4.254"
push "dhcp-option DNS 8.8.8.8"
# 클라이언트간 연결을 허용할 때.
# 이 항목을 활성화 할 경우 iptables 정책도 수정 해야 한다.
;client-to-client
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
verb 4
# 로그를 저장할 경로. 디렉토리를 만들어줘야 한다.
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn.log
[centos7:/home/haedong:]$ sudo vi /etc/openvpn/easy-rsa/vars
# 아래 내용을 붙여넣는다.
# 국가 명
export KEY_COUNTRY="KR"
# 시/도 (경기도, 충청남도, 서울특별시, 광주광역시 등 광역시 이상)
export KEY_PROVINCE="Soeul"
# 시/군/구 (수원시, 속초시, 예산군, 강남구 등)
export CITY="GANGNAMGU"
# 회사명
export ORG="HaeDongcorp"
# Email
export KEY_EMAIL="haedonggang@naver.com"
# 부서 명
export KEY_OU="ITinfra"
# 서버 명
export KEY_NAME="centos7"
# 공통이름
export KEY_CN="vpn.haedongg.net"
[centos7:/root:]# cd /etc/openvpn/easy-rsa
[centos7:/etc/openvpn/easy-rsa:]# ./easyrsa clean-all
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki
[centos7:/etc/openvpn/easy-rsa:]# ./easyrsa init-pki
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
WARNING!!!
You are about to remove the EASYRSA_PKI at: /etc/openvpn/easy-rsa/pki
and initialize a fresh PKI here.
Type the word 'yes' to continue, or any other input to abort.
Confirm removal: yes
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki
[centos7:/etc/openvpn/easy-rsa:]# ./easyrsa build-ca
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017
Enter New CA Key Passphrase: PASSPHRASE를 넣는다.
Re-Enter New CA Key Passphrase: PASSPHRAS 확인
Generating RSA private key, 2048 bit long modulus
...............................................................+++
.........................................................+++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]: 서버_이름
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easy-rsa/pki/ca.crt
서버 키 생성
[centos7:/etc/openvpn/easy-rsa:]# ./easyrsa build-server-full server
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017
Generating a 2048 bit RSA private key
..................................+++
.......................+++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-35432.9GPaYv/tmp.0beTT2'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
Using configuration from /etc/openvpn/easy-rsa/pki/easy-rsa-35432.9GPaYv/tmp.RTNa79
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key: CA_키_생성시_입력한_PASSPHRASE
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'server'
Certificate is to be certified until Mar 13 06:22:57 2023 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
[centos7:/etc/openvpn/easy-rsa:]# ./easyrsa gen-dh
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.................+......................................................
...한참 중략....
........................................................................++*++*
DH parameters of size 2048 created at /etc/openvpn/easy-rsa/pki/dh.pem
[centos7:/etc/openvpn/easy-rsa:]# ./easyrsa build-client-full haedong
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017
Generating a 2048 bit RSA private key
.............................................................+++
...................................+++
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-35775.MjyGfQ/tmp.HL4Nlv'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
Using configuration from /etc/openvpn/easy-rsa/pki/easy-rsa-35775.MjyGfQ/tmp.VU7eke
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'haedong'
Certificate is to be certified until Mar 13 06:31:57 2023 GMT (825 days)
Write out database with 1 new entries
Data Base Updated
OS(openvpn이 설치된 centos) 계정 정보를 이용한 인증 설정 옵션에 넣어줘야 하는 파일은 openvpn 패키지에 포함 되어있다. CentOS7 기준으로 /usr/lib64/openvpn/plugin 에 존재한다.
# /etc/openvpn/server.conf 파일 끝에 아래 내용 추가
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so login
client-cert-not-required
서비스 시작
[centos7:/etc/openvpn/easy-rsa/pki:]# systemctl start openvpn@server.service
Broadcast message from root@centos7 (Tue 2020-12-08 16:35:57 KST):
Password entry required for 'Enter Private Key Password:' (PID 37264).
Please enter password with the systemd-tty-ask-password-agent tool!
[centos7:/etc/openvpn/easy-rsa/pki:]# systemctl start openvpn@server.service
Enter Private Key Password: 개인키_PASSPHRASE
클라이언트 설정
Windows를 기준으로 다음과 같은 파일을 준비한다. ca.crt / ta.key 파일은 키 생성 과정에서 생성했으니 다운로드 하면 된다. VPN.ovpn 파일은 그냥 text 파일이다. 빈 파일을 만든다. 그리고 세 개 파일을 openvpn 클라이언트가 설치된 경로아래 config 디렉토리에 복사한다. 보통 C:\Program Files\OpenVPN\config 가 된다.
# 다음의 내용을 삽입하고 저장한다.
client
dev tun
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
comp-lzo
verb 4
# 키 파일의 경로를 입력
# 별도의 경로를 넣지 않으면 C:\Program Files\OpenVPN\config 디렉토리를 기본으로 인식한다.
# openvpn client 인스톨 뒤 위 경로에 ca.crt파일과 ta.key 파일을 복사한다.
ca ca.crt
tls-auth ta.key 1
key-direction 1
auth-user-pass
#remote VPN-SERVER-IP 9411
클라이언트 실행
아래 아이콘에 마우스 오른쪽 버튼을 클릭하면 메뉴가 뜬다. vpn 서버가 여러대 일 경우 각 서버마다 ovpn 파일을 생성해서 config에 넣어주면 선택하여 접속할 수 있다.
가상사설망(假想私設網) 또는 VPN(영어: virtual private network)은 공중 네트워크를 통해 한 회사나 몇몇 단체가 내용을 바깥 사람에게 드러내지 않고 통신할 목적으로 쓰이는 사설 통신망이다.가상 사설망에서 메시지는 인터넷과 같은 공공망 위에서 표준 프로토콜을 써서 전달되거나, 가상 사설망 서비스 제공자와 고객이 서비스 수준 계약을 맺은 후 서비스 제공자의 사설망을 통해 전달된다.
가상 사설망의 등장배경은 인터넷을 기반으로 한 기업 업무환경의 변화에 기인한다. 즉, 소규모 지역에서 문서만을 전달하던 업무처리 기반에서 하나의 건물 내의 네트워크를 이용한 업무로, 다시 본사와 다수의 지사 관계, 또한 지사는 국내 지사와 국외 지사로 확장되었다. 이들이 하나의 네트워크 구축을 위해 기존 전용선을 사용하는 방법에는 비용을 포함한 여러가지 한계를 가지며, 전용선을 이용해서 네트워크가 구성되었다고 하더라도 네트워크 운영을 자체적으로 하는 것과 새로운 기술들을 도입하는 것 역시 기업의 입장에서는 상당한 부담이 될 수 있다. 또한 기존의 공중 네트워크는 보안과 관련해서는 서비스를 제공하지 않기 때문에 중요한 문서나 데이터를 전달하기에는 부족한 점이 있었다. 이러한 복합적인 이유가 가상 사설망이 등장한 계기가 되었다.1위키백과에서 발췌
왜 VPN이 생겨났는가는 단순하다. A라는 회사가 있다고 생각해보자. 최첨단 산업을 선도하는 A사는 시간이 흐르면서 회사의 규모도 커지고 직원도 늘어나면서 서울에 본사 뿐 아니라 미국, 중국, 영국 등 세계 각국의 주요 거점에도 지사를 세우게 됐다.
서울 본사만 있을 때는 사내망 관리만 하면 됐지만 미국지사와 중요한 자료를 주고받으려니 일반망으로 데이터를 주고 받자니 중간에 패킷을 가로채거나 하는 공격의 위험이 크고, 서울에서 미국까지 전용선을 설치하자니 너무 비용이 많이 든다.
이러한 상황에서의 보안 요건을 충족하기 위한 것이 바로 Virtual Private Network 되시겠다. 즉, 일반망을 사용하되, 암호화 등의 조치를 통해 본사와 미국지사 사이의 연결이 사설망인 것 처럼 동작하게 하는 것, 그것이 VPN이다.
PPPTP / L2TP / IPSEC / SSL 등의 방식이 있으며, 근래에는 IPSEC, SSL 두 종류로 수렴하는 듯 한다. 가장 많이 쓰이는 IPSEC / SSL 방식 VPN의 차이를 찾자면 – SSL 방식이건 IPSEC이건 모두 암호화방식이나, 터널 개념에 있어서 큰 차이는 없다.
– 클라이언트와 대상 망의 VPN 서버와 터널을 맺고 암호화 통신을 한다.
– 양자간 각각의 VPN server를 두고 각 VPN 서버끼리 터널을 맺고 통신을 한다.
전송 계층 보안(영어: Transport Layer Security, TLS, 과거 명칭: 보안 소켓 레이어/Secure Sockets Layer, SSL)는 컴퓨터 네트워크에 통신 보안을 제공하기 위해 설계된 암호 규약이다. 그리고 ‘트랜스포트 레이어 보안’이라는 이름은 ‘보안 소켓 레이어’가 표준화 되면서 바뀐 이름이다. 이 규약은 인터넷 같이 TCP/IP 네트워크를 사용하는 통신에 적용되며, 통신 과정에서 전송계층 종단간 보안과 데이터 무결성을 확보해준다. 이 규약은 웹 브라우징, 전자 메일, 인스턴트 메신저, voice-over-IP (VoIP) 같은 응용 부분에 적용되고 있다. 국제 인터넷 표준화 기구(IETF)에 의해 현재 구식(deprecate)으로 간주되어 있다. 최종 갱신은 RFC 5246이고, 최종 갱신 버전은 넷스케이프에서 만든 SSL 표준을 바탕으로 했다. 위키백과 발췌 용어 사용 시 SSL과 TLS를 구분해야 할 필요는 없다. 사실 TLS보다 SSL이 더 입에 잘 붙는다.
먼저 컴퓨터의 암호화에 대해 아주 쉽게 설명하면 컴퓨터는 0과 1만 존재한다 (on, off). 즉 컴퓨터는 숫자만 존재한다. 숫자 1,000이 있다고 가정하면 이 숫자 1,000이 아닌 것처럼 보이게 한다. = 암호화
예를 들어 1,000 X 100 = 10,000 1,000은 내가 암호화 하고 싶은 원본 곱하기는 ‘암호화 알고리즘’ 100은 암호화를 위한 ‘키’ 가 되겠다.
여기에서 철수가 영희에게 금고의 비밀번호를 알려주는 상황을 적용해보자. 금고의 비밀번호는 1000이다. 비밀번호는 철수만 알고 있다. 주변에 사람이 많아서 비밀번호를 그냥 말하면 금고의 비밀번호가 노출된다. 보안을 위해 100이라는 숫자를 키로 하여 곱하기 알고리즘으로 암호화한다. 철수는 영희에게 ‘비밀번호는 10000이야. 곱하기 알고리즘으로 암호화 했어’ 라고 말한다. 여기까지가 기본적인 암호화,암호화 데이터 전송 순서가 되겠다.
하지만, 철수가 미리 영희에게 키를 알려줬다면 문제가 없겠지만 만약 영희는 아직 키를 모른다면? 의 경우에 대응하기 위해서 나온 기술이 바로 SSL 되시겠다. (엄밀히 말하면 좀.. 다르지만)
공개키 암호화와 비공개키 암호화 (=비대칭키 암호화와 대칭키 암호화)
개념상 두 종류의 자물쇠가 있다고 생각하면 편하고. 하나는 ‘잠그는 열쇠, 여는 열쇠가 따로 있는 자물쇠’ = A 다른 하나는 ‘잠글 때 열 때 같은 열쇠를 사용하는 자물쇠’ = B. SSL의 중요한 개념은 여기에 있다.
자물쇠 A : 소인수분해를 통해 소수(자기 자신과 1로만 나뉘어지는 수)를 찾아 내는 것이 쉽지 않다는 것에 기인하여 만들어진 알고리즘을 이용한다.11,2,3,5,7,11… 은 소수임을 금방 알아낼 수 있지만 10,000,000,000,000,001이 소수인지는 알아내기 쉽지 않다. 아직 특정한 수가 소수인지 아닌지 알아내는 방법은 없다(고한다. 난 산수 싫다. 어렵다.) 그래서 느리다(고 한다.) 잠그는 열쇠와, 여는 열쇠가 구분 되어있다. 열쇠 하나는 잠그는 것만 가능하고 하나는 여는 것만 가능하다. 잠글 때 쓰는 열쇠와 열 때 쓰는 열쇠가 다르다 = 비대칭 키 암호화,복호화 하는데 시간이 많이 걸린다.
자물쇠 B :열쇠 하나만 있으면 열고 잠그는 것이 가능하다. 잠글 때 쓰는 열쇠와 열 때 쓰는 열쇠가 같다 = 대칭 키 암호화, 복호화 하는데 시간이 덜 걸린다. (비대칭키 암호화 알고리즘에 비해)
위와 같은 절차로 Kk를 주고 받는 것이 ‘키 교환’ 알고리즘이 되겠다. (개념상으로 이렇다는 것만 이해하자. 실제 키를 주고 받는데엔 다양한 방법이 존재한다. DH, RSA 등이 포함되면 키를 교환하기 위한 수단이구나 생각하면 된다.)
HTTPS 언뜻 보면 완벽해 보이지만 여기에 큰 맹점이 하나 있다. 바로 도둑이 철수인 척 하여 중간에서 데이터를 가로채는 경우이다. 1. 철수에게서 받은 K1을 받는다. 2. K1#을 만들어 영희에게 전달한다 3. 영희는 K1#으로 Kk를 암호화 하여 도둑에게 전달한다. 4. 도둑은 K2#으로 복호화하여 Kk를 획득한다. 5. K1으로 Kk를 암호화 하여 철수에게 전달한다. 이후부터는 Kk로 암호화한 데이터가 오가므로 쉽게 복호화 할 수 있다.
즉, 철수와 영희는 실제 상대방이 누구인지 확인할 수 없다는 사실이다. 우리가 사용하는 SSL-HTTPS는 이를 보완하기 위한 제 3자 증명 과정이 추가된다.
[root@hostname ~]# vi /etc/login.defs
#아래 값들을 변경한다.
PASS_MAX_DAYS 90
#패스워드 최대 사용 기간. 90일 지나면 변경 해야 함
PASS_MIN_DAYS 0
#패스워드 최소 사용 기간. 변경 최소 0일간 변경 불가.
PASS_MIN_LEN 9
#패스워드 최소 길이. 9자 이상.
PASS_WARN_AGE 10
#패스워드 변경 경고 출력 기간. 변경일로부터 10일 전부터 표시.
2. 패스워드 복잡도 설정
[root@hostname ~]# vi /etc/security/pwquality.conf
minlen = 8
#패스워드 최소 길이
minclass = 4
#각기 다른 문자의 조합 수
#즉 4로 설정 했을 경우 숫자, 대문자, 소문자, 특수문자가 모두 포함 되어야한다.
#0은 설정 안함.
maxrepeat = 2
#연속으로 같은 문자의 사용 허용
maxclassrepeat = 0
#연속으로 같은 종류의 문자 사용 허용.
3. 계정 임계 값 설정
[root@hostname ~]# vim /etc/pam.d/system-auth
auth required pam_tally2.so deny=5 unlock_time=60
#5회 로그인 실패 시 계정이 잠기고 60초 이후에 풀린다.
댓글을 달려면 로그인해야 합니다.