AWS에서 OpenVPN[AmazonLinux] 구축(사용자 & 비밀번호 인증 편)
1. 환경 구성
환경이 이런 느낌이에요.
VPN 터널에서 개인 서브넷에 연결된 EC2의 프로그램은 다음과 같습니다!!
1.1. VPC 네트워크
VPC CIDR:172.24.0.0/16
Public1:172.24.0.0/24
Public2:172.24.1.0/24
Private1:172.24.2.0/24
Private2:172.24.3.0/24
1.1.1. 루트 테이블
【Public】
목적지
목표
172.24.0.0/16
local
0.0.0.0/0
InternetGateway
【Private】
목적지
목표
172.24.0.0/16
local
1.2. VPN 서버
AmazonLinux
배치 - PublicSubnet
- EIP 인증
- 송신자/수신자가 False를 검사합니다(OpenVPN이 NAT로 구성된 경우 True일 수 있음).
SG:Inbound TCP 0.0.0.0/443
이번에는 TCP 443에서 접수합니다.
2. 설치 단계
2.1. OpenVPN 서버
Amazon Linux(OpenVPN)의 SSH에 로그인
이하 실시yum --enablerepo=epel -y install openvpn openssl-devel lzo-devel pam-devel
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
unzip master.zip
cp -r easy-rsa-master/easyrsa3/ /etc/openvpn/
rm -rf easy-rsa-master/
rm -f master.zip
# 認証局初期化
cd /etc/openvpn/easyrsa3/
./easyrsa init-pki
# CA証明書・秘密鍵作成
./easyrsa build-ca
cp pki/ca.crt /etc/openvpn
# サーバー証明書・秘密鍵作成(パスフレーズを2回入力)
./easyrsa build-server-full server nopass
cp pki/issued/server.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/
# DH(Diffie Hellman)パラメータ作成(ちょっと時間かかる)
./easyrsa gen-dh
cp pki/dh.pem /etc/openvpn/
# 証明書廃止リスト作成
./easyrsa build-client-full dmy nopass
./easyrsa revoke dmy
rm -f /etc/openvpn/easyrsa3/pki/issued/dmy.crt
rm -rf /etc/openvpn/easyrsa3/pki/private/dmy.key
rm -rf /etc/openvpn/easyrsa3/pki/reqs/dmy.req
cp vars.example vars
vars 파일 편집vi vars
#set_var EASYRSA_CRL_DAYS 180
set_var EASYRSA_CRL_DAYS 3650
계속하다./easyrsa gen-crl
cp /etc/openvpn/easyrsa3/pki/crl.pem /etc/openvpn/
chmod o+r /etc/openvpn/crl.pem
cd
openvpn --genkey --secret /etc/openvpn/ta.key
cp /usr/share/doc/openvpn-2.x.x/sample/sample-config-files/server.conf /etc/openvpn/
/etc/openvpn/server.conf 파일 편집
server.confdev tun
#dh dh2048.pem
dh dh.pem
# OpenVPNからクライアントへ払い出すIPアドレスのレンジ
server 10.8.0.0 255.255.255.0
# クライアントがVPNを経由して、通信させたいネットワーク経路を記載(複数可)
push "route 172.24.0.0 255.255.0.0"
tls-auth ta.key 0
;comp-lzo
user nobody
group nobody
;log-append openvpn.log
log-append /var/log/openvpn.log
# TCP通信の場合はコメントアウト(今回はTCPなのでコメントアウト)
#explicit-exit-notify 1
# 最終行へ追加
crl-verify crl.pem
# ユーザー/パスワード認証の場合必要
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-pam.so login
client-cert-not-required
username-as-common-name
로그 리디렉션 파일 설정
/etc/logrotate.d/openvpn/var/log/openvpn.log {
missingok
notifempty
sharedscripts
postrotate
/etc/init.d/openvpn restart 2>&1 > /dev/null || true
endscript
}
/etc/sysctl.conf 파일 편집
IP 포워드 설정
sysctl.conf#net.ipv4.ip_forward = 0
net.ipv4.ip_forward = 1
IP 포워드 설정 반영sysctl -p
2.1.1. NAT 설정 시
/etc/init.d/iptables start
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
/etc/init.d/iptables save
iptables -L -n -t nat
/etc/init.d/iptables restart
2.1.2. 라우팅 구성 시
발송원/발송목적지 검사가 가짜임
AWS 콘솔을 통한 루트 테이블 편집
(다음은 Private용 표입니다. 필요하면 Public용 표도 같은 설정을 추가합니다)
[Prevate 루트 테이블]
목적지
목표
172.24.0.0/16
local
10.8.0.0/24
EC2(OpenVPN) 인스턴스
↑ OpenVPN 서버 인스턴스 NIC 경유라는 노선표를 작성했다.
2.2. 자동 시작 서비스
chkconfig openvpn on
2.3. 서비스 시작
/etc/init.d/openvpn start
3. 클라이언트 설정
3.1. 서버를 사용하여 VPN 사용자 만들기
OS의 사용자는 VPN 사용자입니다.
VPN 서버를 사용하여 사용자를 생성합니다.
Amazon Linux, CentOS는 다음과 같습니다.■ユーザー / パスワード
useradd vpnuser01
passwd vpnuser01
3.2. 서버에서 VPN 클라이언트의 구성 파일 만들기
cp /usr/share/doc/openvpn-2.x.x/sample/sample-config-files/client.conf ~/client.ovpn
client.ovpnclient
# 今回はudpではなくTCPなので変更
;proto udp
proto tcp
remote [VPNサーバのFQDN or IPアドレス] 443
ca ca.crt
# 証明書じゃなくユーザー・パスワードなのでコメントアウト
#cert client.crt
#key client.key
#remote-cert-tls server
tls-auth ta.key 1
#comp-lzo ←圧縮を無効にする。これはサーバーのconfファイルと合わせる必要がある。
auth-user-pass
고객 터미널에 다음 파일 구성~/client.ovpn
/etc/openvpn/ca.crt
/etc/openvpn/ta.key
3.3. VPN 클라이언트(Windows 터미널)
오픈 vpn 클라이언트 다운로드 및 설치 ~/client.ovpn
/etc/openvpn/ca.crt
/etc/openvpn/ta.key
위 3개 파일C:\Program Files\OpenVPN\config
아래
이렇게 연결을 실행하면 비밀번호를 물어볼 거예요.
LinuxOS에서 만든 사용자의 암호를 입력하고 연결합니다.
OpenVPN 클라이언트가 녹색으로 바뀌면 연결이 성공합니다.
3.3.1. 통신 경로 확인
2.1. OpenVPN 서버
Amazon Linux(OpenVPN)의 SSH에 로그인
이하 실시
yum --enablerepo=epel -y install openvpn openssl-devel lzo-devel pam-devel
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
unzip master.zip
cp -r easy-rsa-master/easyrsa3/ /etc/openvpn/
rm -rf easy-rsa-master/
rm -f master.zip
# 認証局初期化
cd /etc/openvpn/easyrsa3/
./easyrsa init-pki
# CA証明書・秘密鍵作成
./easyrsa build-ca
cp pki/ca.crt /etc/openvpn
# サーバー証明書・秘密鍵作成(パスフレーズを2回入力)
./easyrsa build-server-full server nopass
cp pki/issued/server.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/
# DH(Diffie Hellman)パラメータ作成(ちょっと時間かかる)
./easyrsa gen-dh
cp pki/dh.pem /etc/openvpn/
# 証明書廃止リスト作成
./easyrsa build-client-full dmy nopass
./easyrsa revoke dmy
rm -f /etc/openvpn/easyrsa3/pki/issued/dmy.crt
rm -rf /etc/openvpn/easyrsa3/pki/private/dmy.key
rm -rf /etc/openvpn/easyrsa3/pki/reqs/dmy.req
cp vars.example vars
vars 파일 편집vi vars
#set_var EASYRSA_CRL_DAYS 180
set_var EASYRSA_CRL_DAYS 3650
계속하다./easyrsa gen-crl
cp /etc/openvpn/easyrsa3/pki/crl.pem /etc/openvpn/
chmod o+r /etc/openvpn/crl.pem
cd
openvpn --genkey --secret /etc/openvpn/ta.key
cp /usr/share/doc/openvpn-2.x.x/sample/sample-config-files/server.conf /etc/openvpn/
/etc/openvpn/server.conf 파일 편집server.conf
dev tun
#dh dh2048.pem
dh dh.pem
# OpenVPNからクライアントへ払い出すIPアドレスのレンジ
server 10.8.0.0 255.255.255.0
# クライアントがVPNを経由して、通信させたいネットワーク経路を記載(複数可)
push "route 172.24.0.0 255.255.0.0"
tls-auth ta.key 0
;comp-lzo
user nobody
group nobody
;log-append openvpn.log
log-append /var/log/openvpn.log
# TCP通信の場合はコメントアウト(今回はTCPなのでコメントアウト)
#explicit-exit-notify 1
# 最終行へ追加
crl-verify crl.pem
# ユーザー/パスワード認証の場合必要
plugin /usr/lib64/openvpn/plugin/lib/openvpn-auth-pam.so login
client-cert-not-required
username-as-common-name
로그 리디렉션 파일 설정/etc/logrotate.d/openvpn
/var/log/openvpn.log {
missingok
notifempty
sharedscripts
postrotate
/etc/init.d/openvpn restart 2>&1 > /dev/null || true
endscript
}
/etc/sysctl.conf 파일 편집IP 포워드 설정
sysctl.conf
#net.ipv4.ip_forward = 0
net.ipv4.ip_forward = 1
IP 포워드 설정 반영sysctl -p
2.1.1. NAT 설정 시
/etc/init.d/iptables start
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
/etc/init.d/iptables save
iptables -L -n -t nat
/etc/init.d/iptables restart
2.1.2. 라우팅 구성 시
발송원/발송목적지 검사가 가짜임
AWS 콘솔을 통한 루트 테이블 편집
(다음은 Private용 표입니다. 필요하면 Public용 표도 같은 설정을 추가합니다)
[Prevate 루트 테이블]
목적지
목표
172.24.0.0/16
local
10.8.0.0/24
EC2(OpenVPN) 인스턴스
↑ OpenVPN 서버 인스턴스 NIC 경유라는 노선표를 작성했다.
2.2. 자동 시작 서비스
chkconfig openvpn on
2.3. 서비스 시작
/etc/init.d/openvpn start
3. 클라이언트 설정
3.1. 서버를 사용하여 VPN 사용자 만들기
OS의 사용자는 VPN 사용자입니다.
VPN 서버를 사용하여 사용자를 생성합니다.
Amazon Linux, CentOS는 다음과 같습니다.■ユーザー / パスワード
useradd vpnuser01
passwd vpnuser01
3.2. 서버에서 VPN 클라이언트의 구성 파일 만들기
cp /usr/share/doc/openvpn-2.x.x/sample/sample-config-files/client.conf ~/client.ovpn
client.ovpnclient
# 今回はudpではなくTCPなので変更
;proto udp
proto tcp
remote [VPNサーバのFQDN or IPアドレス] 443
ca ca.crt
# 証明書じゃなくユーザー・パスワードなのでコメントアウト
#cert client.crt
#key client.key
#remote-cert-tls server
tls-auth ta.key 1
#comp-lzo ←圧縮を無効にする。これはサーバーのconfファイルと合わせる必要がある。
auth-user-pass
고객 터미널에 다음 파일 구성~/client.ovpn
/etc/openvpn/ca.crt
/etc/openvpn/ta.key
3.3. VPN 클라이언트(Windows 터미널)
오픈 vpn 클라이언트 다운로드 및 설치 ~/client.ovpn
/etc/openvpn/ca.crt
/etc/openvpn/ta.key
위 3개 파일C:\Program Files\OpenVPN\config
아래
이렇게 연결을 실행하면 비밀번호를 물어볼 거예요.
LinuxOS에서 만든 사용자의 암호를 입력하고 연결합니다.
OpenVPN 클라이언트가 녹색으로 바뀌면 연결이 성공합니다.
3.3.1. 통신 경로 확인
■ユーザー / パスワード
useradd vpnuser01
passwd vpnuser01
client
# 今回はudpではなくTCPなので変更
;proto udp
proto tcp
remote [VPNサーバのFQDN or IPアドレス] 443
ca ca.crt
# 証明書じゃなくユーザー・パスワードなのでコメントアウト
#cert client.crt
#key client.key
#remote-cert-tls server
tls-auth ta.key 1
#comp-lzo ←圧縮を無効にする。これはサーバーのconfファイルと合わせる必要がある。
auth-user-pass
10.8.0.0 255.255.255.0
의 IP 주소가/30으로 분할되어 지불된다. [최초 분배된 IP 주소는 10.8.0.6/30
일 수 있음]10.8.0.6/30
.[서버에서 집(PC)으로 통신 가능]
Reference
이 문제에 관하여(AWS에서 OpenVPN[AmazonLinux] 구축(사용자 & 비밀번호 인증 편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ohechi/items/7ed8a61194eb1dcca283텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)