AWS에서 OpenVPN[AmazonLinux] 구축(사용자 & 비밀번호 인증 편)

5790 단어 OpenVPNAWS

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.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.ovpnclient.ovpn
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
고객 터미널에 다음 파일 구성~/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. 통신 경로 확인

  • 개(PC)→OpenVPN 연결
  • 가정(PC)에서 10.8.0.0 255.255.255.0의 IP 주소가/30으로 분할되어 지불된다. [최초 분배된 IP 주소는 10.8.0.6/30일 수 있음]
  • 가정(PC)→AWS에서의 개인 EC2(Windows, Linux) 연결 확인
  • NAT 구조의 경우 3.단방향 통신으로 EC2(Windows, Linux)를 보면 송신원 IP는 OpenVPN 서버의 개인 IP
  • 이다.
  • 라우팅 구조의 경우 EC2(Windows, Linux)를 보면 소스 IP가 OpenVPN 서버가 지불하는 클라이언트의 IP 주소가 되는 것을 발송한다10.8.0.6/30.
    [서버에서 집(PC)으로 통신 가능]
  • 좋은 웹페이지 즐겨찾기