1. OpenVPN
- 오픈소스 기반 VPN으로 터널링 기법을 사용하여, 서버와 클라이언트간 안전한 통신을 할 수 있는 프로토콜
시나리오 : CentOS를 VPN서버로 구성하여 여러 OS클라이언트에서 접속을 해보도록 하겠습니다.
[+] VPN 서버 구축
- 패키지 설치
> yum -y install epel* (epel 리포지터리 설치)
> yum -y install ntp easy-rsa openvpn
- 서버 키 생성(key)
> cd /etc/openvpn/easy-rsa && ls 디렉터리로 이동 및 파일 확인
> ./easyrsa init-pki : 키 생성 (/etc/openvpn/easy-rsa/pki 생성됨)
- CA 키 생성 (crt)
> ./easyrsa build-ca
> 차례대로 CA 암호, 확인, PEM, 서버명(manpage_VPN)
./easyrsa gen-req manpage_VPN nopass
> ./easyrsa sign-req server manpage_VPN (내용이 맞는지 확인 "yes" 및 CA 암호 입력)
- 디피헬만 알고리즘으로 보안키 생성
DH 알고리즘이란??
- 상대방의 공개키와 나의 개인키를 계산을 계산하여 비밀키를 구하는 알고리즘이다.
- 주로 "키 교환(key exchange)" 알고리즘으로 대칭키를 공유하는데 사용되며, 이는 암호화나 서명을 위한 것은 아니다.
이는 이산 대수 문제(Discrete Logarithm Problem)(혹은 이산 로그)라는 방식을 이용하는데
일때 g와 x와 p를 안다면 y는 구하기 쉽지만
g와 y와 p를 알땐 x를 구하기는 어렵다는 방식에 착안하여 만들어진 알고리즘이다.
> ./easyrsa gen-dh 보안키 생성(2048사이즈의 dh.pem생성)
- OpenVPN 서버의 설정파일을 /etc/openvpn으로 이동
> cp -a /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn
> cp -a /etc/openvpn/easy-rsa/pki/issued/manpage_VPN.crt /etc/openvpn
> cp -a /etc/openvpn/easy-rsa/pki/private/manpage_VPN.key /etc/openvpn
> cp -a /etc/openvpn/easy-rsa/pki/dh.pem /etc/openvpn
- server.conf 설정
[+] 방화벽 및 네트워크 설정
> firewall-cmd --get-active-zones // active zone 지정 네트워크 인터페이스 여부 확인
> firewall-cmd --zone=public --change-interface=eth0 // 네트워크 인터페이스 지정
> firewall-cmd --get-active-zones // 지정 여부 재확인
> firewall-cmd --zone=public --add-port=1194/tcp
> firewall-cmd --zone=public --add-port=1194/tcp --permanent // 영구 적용 옵션 추가
> firewall-cmd --add-masquerade //마스커레이드 설정
> firewall-cmd --add-masquerade --permanent
> firewall-cmd --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
> firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
> firewall-cmd --reload
- vi /etc/sysctl.conf 수정
2. 클라이언트 설정
- windows 의 경우 openVPN for windows 다운로드 및 설치 후 C:\Program Files\OpenVPN\config 경로에 [서버명].ovpn으로 생성
내용
# 클라이언트로 설정
client
#
dev tun
# TCP 프로토콜 사용
proto tcp
# remote VPN서버 포트
remote [VPN 서버 IP] [Port]
resolv-retry infinite
nobind
persist-key
persist-tun
cipher AES-256-GCM
# 사용자 키 파일 경로 지정
ca ca.crt
comp-lzo
# Set log file verbosity.
verb 3
auth-user-pass
'소소한 IT이야기' 카테고리의 다른 글
[M2 Mac] Windows server 2019 install (feat. UTM) (2) | 2023.04.09 |
---|---|
Linux root 파일 권한 취약점 (feat. 파일교체 기법) (1) | 2023.01.31 |
NFT 뜻 NFT는 무엇인가?? (feat. NFT 장단점) (2) | 2022.05.22 |