IDC(서버): Centos
본사(클라이언트): Windows
재택 해외지사 운영자: 계정추가 작업
운영자(클라이언트)가 부여받아야 할 파일: .ovpn / 구글OTP 키값 (각 계정마다부여)
yum update && upgrade
yum install vim
vi /etc/sysctl.conf //포트 포워딩 활성화
net.ipv4.ip_forward = 1
yum -y install epel-release
yum -y install openvpn* easy-rsa
yum -y install libgcrypt libgcrypt-devel gcc-c++ google-authenticator
[root@localhost ~]# cd /usr/share/easy-rsa/3.0.8/
[root@localhost 3.0.8]# cp /usr/share/doc/easy-rsa-3.0.8/vars.example vars
인증서 정보 작성
[root@localhost 3.0.8]# vi vars
set_var EASYRSA_REQ_COUNTRY "KR"
set_var EASYRSA_REQ_PROVINCE "Seoul"
set_var EASYRSA_REQ_CITY "Geum chun-gu"
set_var EASYRSA_REQ_ORG "kimjaeho"
set_var EASYRSA_REQ_EMAIL "dnldp55@naver.comr"
set_var EASYRSA_REQ_OU "kimjaeho"
cp -r /usr/share/easy-rsa/3/* /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
서버인증키 생성
./easyrsa init-pki
./easyrsa build-ca nopass //ca
./easyrsa gen-req server nopass //req, key
./easyrsa sign-req server server //cert
./easyrsa gen-dh //dh
openvpn --genkey --secret /usr/share/easy-rsa/3.0.8/pki/ta.key
//ta.key
cd pki/
cp ca.crt /etc/openvpn/
cp dh.pem /etc/openvpn/
cp ta.key /etc/openvpn/
cp private/server.key /etc/openvpn/
cp issued/server.crt /etc/openvpn/
server.conf 옮기기
cp /usr/share/doc/openvpn-2.4.10/sample/sample-config-files/server.conf /etc/openvpn/server.conf
openvpn 서버 설정
cd /etc/openvpn/
vi /etc/openvpn/server.conf
port 10440 // 포트설정
proto tcp //tcp
;proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key # This file should be kept secret
dh /etc/openvpn/dh.pem
topology subnet
server 10.8.0.0 255.255.255.0
// VPN 클라이언트들의 가상IP대역이 될 부분입니다.
ifconfig-pool-persist ipp.txt
push "route 192.168.111.0 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
// VPN client들이 할당 받을 DNS서버입니다. 구글DNS사용
duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/ta.key 1
user nobody
group nobody
persist-key
persist-tun
statys openvpn-status.log
verb3
log openvpn.log
//server.log openvpn의 대한 오류 확인가능
key-direction 0
방화벽을 구성합니다.
[root@localhost openvpn]# firewall-cmd --permanent --zone=public --add-port=10440/tcp
[root@localhost openvpn]# firewall-cmd --permanent --zone=public --add-port=1194/udp
[root@localhost openvpn]# firewall-cmd --permanent --add-service openvpn
[root@localhost openvpn]# firewall-cmd --add-masquerade
[root@localhost openvpn]# firewall-cmd --permanent --add-masquerade
[root@localhost openvpn]# firewall-cmd --query-masquerade
[root@localhost openvpn]# firewall-cmd --reload
[root@localhost openvpn]# vi /usr/lib/systemd/system/openvpn@.service
아래와 같이 작성 합니다.
[Unit]
Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I
After=network.target
[Service]
Type=notify
PrivateTmp=true
ExecStart=/usr/sbin/openvpn --cd /etc/openvpn/ --config %i.conf
[Install]
WantedBy=multi-user.target
재부팅 한번 하겠습니다.
[root@localhost openvpn]# reboot
[root@localhost ~]# systemctl start openvpn@server
Google OTP 적용
[root@localhost ~]# vi /etc/pam.d/openvpn
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth required pam_google_authenticator.so
account required pam_nologin.so
account include system-auth
[root@localhost ~]# useradd testuser1
[root@localhost ~]# su - testuser1
[testuser1@localhost ~]$ google-authenticator
Client .Ovpn 구성
;------------------------------------------------------------------------------------------------
Client
;dev tap
dev tun
;dev-node MyTap
proto tcp //tcp
remote 192.168.10.1 10440 //서버 주소
;remote my-server-2 1194
;remote-random
resolv-retry infinite
nobind
;user nobody
;group nobody
persist-key
persist-tun
;ca ca.crt
;cert jhkim.crt
;key jhkim.key
;tls-auth ta.key 1
key-direction 1
remote-cert-tls server
cipher AES-256-CBC
verb 3
구글 OTP 설정
reneg-sec 14400
--auth-user-pass
--auth-nocache
;------------------------------------------------------------------------------------------------
<ca>
//서버 ca
</ca>
<cert>
//클라이언트 crt
</cert>
<key>
//클라이언트 key
</key>
<tls-auth>
//서버 ta.key
</tls-auth>
Client 접속
받을 파일: .ovpn / OTP 키값
Openvpn GUI 설치
https://openvpn.net/community-downloads/OpenVPN-2.5.0-I601-amd64
설치 후 부여 받은 OVPN파일를 다음 경로로 이동합니다.
C:\Program Files\OpenVPN\config
google OTP 설치 및 Openvpn 로그인
Google OTP 설치 후 부여된 구글OTP 설정 키 값을 입력합니다.
OpenVPN를 접속합니다.
부여 받은 사용자ID를 입력하시고 OTP설정된 암호를 입력합니다.
계정 추가 생성
▣ 사용자 계정 추가
cd /etc/openvpn/easy-rsa
./easyrsa gen-req [username] 명령을 입력해 req, key를 생성합니다.
./easyrsa sign-req client [username] 명령을 입력해 사용자 cert를 생성합니다.
(Confirm request details: yes)
req: /etc/openvpn/easy-rsa/pki/reqs/test112.req
key: /etc/openvpn/easy-rsa/pki/private/test112.key
cert: /etc/openvpn/easy-rsa/pki/issued/[username].crt
▣ 구글 OTP 계정 추가
[root@localhost ~]# useradd [username]
[root@localhost ~]# su – [username]
[testuser1@localhost ~]$ google-authenticator
Your new secret key is: 6CP3EFZCUZHNWMXJF3TZK3LF
//구글 OTP 키 값 복사 후 사용자에 제공
Sharepoint문서에서 Client.ovpn 다운 후 메모장으로 실행합니다.
<cert> <key>란에 앞 전에 생성한 cert, key를 vi편집기로 열어 복사 붙여넣기를 실행합니다.
저장 후 완성된 Client.ovpn 파일을 사용자에게 제공합니다.
도움 받은 글:
https://www.sharedit.co.kr/posts/9404
https://dejavuqa.tistory.com/246
'OS > Linux' 카테고리의 다른 글
[Centos 8] Nagios Core - 클라이언트편 (0) | 2021.04.20 |
---|---|
[Centos 8] Nagios Core - 서버 편 (0) | 2021.04.20 |
[리눅스 명령어] sar (sysstat) 명령어 (0) | 2020.12.24 |
[리눅스명령어] grep, less, sed (0) | 2020.12.24 |
[리눅스 명령어] df (0) | 2020.12.24 |