웹사이트 검색

Packer를 사용하여 2단계 인증이 내장된 VPN용 결합 OpenVPN/WiKID 서버를 구축하십시오.


이 페이지에서

  1. 통합 서버 구축\n
  2. WiKID 이중 인증 서버 구성
  3. WiKID 소프트웨어 토큰 등록\n
  4. VPN 클라이언트 설정

이전 자습서에서는 OpenVPN에 일회용 암호를 추가하고 Packer를 사용하여 WiKID 서버를 만들었습니다. 이 튜토리얼에서는 Packer를 사용하여 결합된 OpenVPN/WiKID 서버를 생성합니다. Packer를 사용하면 코드를 사용하여 VMware, VirtualBox, EC2, GCE, Docker 등의 이미지를 만들 수 있습니다. 이중 인증 서버와 VPN 서버를 하나의 상자에 결합하는 것이 최상의 솔루션일 수도 있고 아닐 수도 있습니다. 우리는 일반적으로 보안과 유연성을 위해 업무 분리를 선호합니다. 그러나 빠른 것이 필요한 경우(PCI 감사원이 월요일에 도착하거나) 억압적인 상태에 있고 짧은 시간 동안 보안 아웃바운드 연결이 필요한 경우입니다. 그리고 여전히 약간의 유연성이 있습니다. WiKID 서버에 더 많은 서비스를 추가할 수 있습니다. OpenVPN 서버를 비활성화하고 대신 다른 VPN으로 전환할 수 있습니다.

통합 서버 구축

먼저 Packer를 다운로드하여 설치합니다.

GitHub에서 Packer 스크립트를 확인하세요. 스크립트는 Packer에게 수행할 작업을 알려주는 기본 JSON 파일, Anaconda 빌드 스크립트가 있는 http 디렉터리, 이미지에 업로드되는 파일 디렉터리 및 이미지가 빌드된 후 실행되는 프로비저너로 구성됩니다. 기본적으로 Packer는 ISO 또는 AMI와 같은 일부 소스로 시작하여 Anaconda(적어도 CentOS의 경우)를 기반으로 서버를 구축하고 파일을 업로드한 다음 프로비저너를 실행합니다. Packer는 주로 idempotent 서버를 만드는 데 적합합니다. 우리의 경우에는 이를 사용하여 명령을 실행하므로 약 50개가 아닌 하나의 명령을 실행할 수 있습니다(프로비저닝용).

빌드하기 전에 몇 가지 파일을 편집해야 합니다. 먼저 /files/vars를 편집합니다. 이것은 OpenVPN 인증서를 생성하기 위한 표준 vars 파일입니다. 인증서 필드에 값을 입력하기만 하면 됩니다.

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="US"
export KEY_PROVINCE="GA"
export KEY_CITY="Atlanta"
export KEY_ORG="WiKID Systems Inc"
export KEY_EMAIL=""
export KEY_OU="WiKID Systems, Inc"

다음으로 /files/server에서 공유 암호를 편집해야 합니다. 이 파일은 사용할 RADIUS 서버를 PAM에 알려줍니다. 이 경우 WiKID 서버와 직접 통신합니다. 공유 비밀은 반경 트래픽을 인코딩하는 데 사용됩니다. WiKID가 동일한 서버에서 실행 중이므로 localhost를 서버로 유지합니다.

# server[:port] shared_secret      timeout (s)
127.0.0.1       secret             3
 

이 공유 암호는 나중에 필요합니다.

centos-6-x86-64.json을 살펴보세요. 그대로 실행할 수 있지만 몇 가지를 편집하고 싶을 수 있습니다. source_ami(나열된 ami는 미국 동부에 있음)를 확인하거나 선호하는 CentOS AMI 중 하나로 전환해야 합니다. VMware 또는 VirtualBox에서 빌드하는 경우 iso_url을 하드 드라이브의 CentOS ISO 위치로 변경하고 MD5Sum을 업데이트해야 합니다. 이름과 설명을 편집할 수 있습니다. EC2 지역을 변경할 수도 있습니다. 가장 중요한 것은 루트 암호인 ssh_password를 변경할 수 있다는 것입니다.

JSON 파일에 만족하면 Packer로 확인할 수 있습니다.

$packer_location/packer verify centos-6-x86-64.json

작동하는 경우 빌드하십시오. 명령줄에서 대상 플랫폼을 지정할 수 있습니다.

$packer_location/packer build --only=virtualbox-iso centos-6-x86-64.json

EC2용으로 빌드하는 경우 명령줄에 필요한 자격 증명을 입력합니다.

$packer_location/packer build -var 'aws_access_key=XXXXXXXXXXXXXXXXXXXX' -var 'aws_secret_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' --only=amazon-ebs centos66.json

명령이 실행되는 것을 보면 새로운 인증서로 완전한 OpenVPN 서버가 구축되는 것을 볼 수 있습니다!

WiKID 이중 인증 서버 구성

생성되면 AMI를 시작하거나 가상 머신을 가져와야 합니다. VirtBox를 시작하고 파일, 기기 가져오기를 선택합니다. 빌드 명령으로 생성된 output-virtualbox-iso 디렉토리를 가리키고 OVF 파일을 엽니다. 가상 머신(예: 메모리 또는 네트워크)에 대해 원하는 사항을 변경하고 서버를 시작하십시오.

root/wikid 또는 JSON 파일에서와 같이 루트 암호를 설정했을 수 있는 것을 사용하여 로그인합니다. 빠른 시작 구성 옵션을 사용하여 WiKID 서버를 구성할 것입니다. 파일을 현재 디렉터리에 복사합니다.

cp /opt/WiKID/conf/sample-quick-setup.properties wikid.conf

해당 지침에 따라 wikid.conf를 편집합니다. 도메인 코드로 제로 패딩된 서버 또는 EC2 인스턴스의 외부 IP 주소를 사용합니다. 따라서 54.163.165.73은 054163165073이 됩니다. RADIUS 호스트의 경우 localhost와 위의 /files/server에서 만든 공유 비밀을 사용합니다.

information for setting up a RADIUS host
radiushostip=127.0.0.1
radiushostsecret=secret
; *NOTE*: YOU SHOULD REMOVE THIS SETTING AFTER CONFIGURATION FOR SECURITY
  

VM에 있는 경우 다음을 실행하여 네트워크를 구성할 수 있습니다.

wikidctl setup

EC2에서는 WiKID 서버를 구성할 수 있습니다.

wikidctl quick-setup configfile=wikid.conf

구성 정보가 스크롤되는 것을 볼 수 있습니다. WiKID 서버를 시작합니다.

wikidctl start

wikid.conf에서 설정한 암호를 묻는 메시지가 나타납니다. https://yourserver.com/WiKIDAdmin/에서 WIKIDAdmin 인터페이스로 이동하면 도메인 생성, 반경 네트워크 클라이언트 구성 및 필요한 모든 인증서가 완료된 것을 볼 수 있습니다.

서버를 떠나기 전에 useradd $username을 사용하여 사용자 이름을 서버의 계정으로 추가해야 합니다. 암호를 추가할 필요가 없습니다.

WiKID 소프트웨어 토큰 등록

앱 스토어에서 iOS 또는 Android용 market://search?q=pname:com.wikidsystems.android를 다운로드하세요.

토큰을 시작하고 "도메인 추가"를 선택합니다. wikid.conf에서 설정한 도메인 식별자 코드를 입력하면 PIN을 설정하라는 메시지가 두 번 표시됩니다. 그렇게 하면 등록 코드를 다시 받게 됩니다. WiKIDAdmin 웹 UI로 이동하고 사용자 탭을 클릭한 다음 수동으로 사용자 유효성 검사를 클릭합니다. 등록 코드를 클릭하고 사용자 이름을 입력하십시오. 이 프로세스는 토큰(및 교환된 키)을 사용자와 연결합니다.

VPN 클라이언트 설정

클라이언트에 ca.crt를 다운로드합니다.

scp -i ~/Downloads/wikid.pem :/etc/openvpn/ca.crt .

client.conf OpenVPN 파일을 편집합니다. 원격 서버를 결합된 WiKID/OpenVPN 서버로 설정:

# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote yourserver.com 1194
   

인증서 및 키에 대한 줄을 주석 처리합니다. CA만 남습니다. WiKID를 사용하여 사용자를 인증하고 식별하므로 필요하지 않습니다.

ca ca.crt
#cert client.crt
#key client.key
 

파일 맨 아래에서 클라이언트에게 암호를 묻도록 지시합니다.

auth-user-pass

이제 OpenVPN 클라이언트를 시작합니다.

sudo openvpn client.conf

사용자 이름과 암호를 묻는 메시지가 나타납니다. WiKID 토큰에서 암호를 요청하고 암호 필드에 입력하십시오. 액세스 권한을 부여받아야 합니다.

관련된:

  • WiKID - 이중 인증 서버
  • OpenVPN
  • 패커