몇 달 전에 정확한 질문이 있지만 가능한 경우 IPv6 연결을 원했습니다. Serverfault에 대한 내 질문에 관심이있을 수 있습니다.
서버에 사용할 NIC ( "네트워크 인터페이스")가 하나뿐입니다. 설정에서 IPv6를 지원하기 위해 사용자 지정 스크립트를 실행해야하므로 NetworkManager로는 충분하지 않습니다. 그러나 간단히하기 위해 여기서 NetworkManager를 사용하고 IPv6 지원을 생략합니다.
먼저 인증 방법을 결정하십시오. SSL처럼 작동하는 더 안전한 인증서 방법을 사용하겠습니다. 핸드 셰이크 중에 세션에 사용될 공통 비밀이 선택됩니다. 다른 방법은 공유 키입니다. 사용자 이름과 비밀번호.
섬기는 사람
1. 준비
먼저 openvpn 서버를 설치하십시오. 이만큼 쉽습니다 sudo apt-get install openvpn
. 어려운 부분은 구성하는 것입니다. 구성은에 /etc/openvpn
있습니다.
2. 인증 구성
서버는 자신과 클라이언트를 식별하기위한 인증서가 필요합니다. 이 인증서는 CA (Common Authority)에서 검색됩니다. 인증서 및 관련 개인 키 생성은 모든 컴퓨터에서 수행 할 수 있으며 서버에서 수행 할 필요는 없습니다. 정말 편집증이라면 네트워크에 연결되지 않은 기계에서 수행하고 인증서를 전송하기 위해 메모리 스틱을 사용해야합니다.
서버에 대한 CA 및 인증서 작성
CA의 개인 키가 손상되지 않으면이 단계를 한 번 수행해야합니다. 이 경우 서버에서 승인 할 수있는 유효한 인증서를 만들 수 있으므로 보안 위반이 발생합니다.
공식 문서 의 관리를 할 제안합니다 /etc/openvpn
. 나는 루트로 모든 것을 실행하는 큰 팬이 아니므로 다른 디렉토리에 넣을 것입니다.
다음을 실행하여 관리 디렉토리를 작성하고 파일을 복사하십시오.
mkdir ~/openvpn-admin
cd ~/openvpn-admin
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
cd easy-rsa
- 편집증이기 때문에
vars
설정과 같이 필요에 따라 기본값을 편집하십시오 KEY_SIZE=2048
.
다음을 실행하여 변수를로드하고 키 디렉토리를 작성하십시오.
. vars
오류가 발생 No ... openssl.cnf file could be found
Further invocations will fail
하면를 실행 ln -s openssl-1.0.0.cnf openssl.cnf
한 다음 . vars
다시 실행 하십시오.
이 CA를 처음 사용하는 경우 키 환경을 준비하십시오. 마십시오 하지 당신이 이전에 생성 된 CA를 유지하려면이 명령을 실행 그렇게하려면 새로운 배포가 필요합니다 ca.crt
.
./clean-all
- 를 실행하여 CA를 작성하십시오
./build-ca
. 원하는 세부 사항을 채울 수 있지만 클라이언트가 서버에 연결하면이 정보가 로그 파일에 표시됩니다. 그러면 파일 ca.key
과 ca.crt
하위 폴더 가 만들어 keys
집니다. 모든 상황에서ca.key
파일을 비밀 로 유지하십시오 . 그렇지 않으면 키를 가진 사람이 서버에 연결할 수 있습니다.
- 이전 인증서가 손실되거나 만료 된 경우을 사용하여 이전 인증서를 먼저 취소해야합니다
./revoke-full server
. 그렇지 않으면 데이터베이스 오류가 발생합니다.
다음을 실행하여 서버의 인증서를 작성하십시오.
./build-key-server server
비밀번호를 묻는 메시지가 표시되면 서버가 시작될 때마다 비밀번호를 입력 할 의향이 없으면 비워 두십시오 (권장되지 않음). 인증서 서명 및 커밋 확인 디렉토리에 두 개의 새 파일이 나타납니다 keys
: server.key
및 server.crt
.
DH 및 tls-auth에 대한 준비 사용
다음을 사용하여 Diffie-Hellman 매개 변수를 생성하십시오 .
./build-dh
경화 팁 마다 사용하십시오 tls-auth
. 이를 위해 다음을 사용하여 공유 비밀 키를 생성하십시오.
openvpn --genkey --secret ta.key
결과 파일 ( ta.key
)도 클라이언트에 배포해야하지만 공개적으로 배치해서는 안됩니다.
클라이언트 용 인증서 생성
각 클라이언트에 대해 다음 단계를 반복해야합니다.
CA 및 서버 인증서를 작성한 디렉토리를 입력하십시오.
cd ~/openvpn-admin/easy-rsa
이미 CA 생성 단계를 건너 뛰었다면 변수를 먼저로드해야합니다.
. vars
- 이전 인증서가 손실되거나 만료 되어 새 인증서를 작성하는 경우 이전 인증서를 먼저 취소해야합니다
./revoke-full you
. 그렇지 않으면 데이터베이스 오류가 발생합니다.
클라이언트 인증서 you.key
와 해당 인증서를 작성하십시오 you.crt
.
./build-key you
은 CommonName
고유해야합니다. 아직 10.10부터 지원되지 않으므로 KDE를 사용하는 경우 암호를 비워 두십시오. 서버 인증서 생성과 마찬가지로 인증서에 서명하고 변경 내용을 커밋했는지 확인하십시오.
3. OpenVPN 서비스 설정
기본적으로 OpenVPN은 연결을 수락 할 때 루트로 실행됩니다. 사악한 인터넷에서 서비스에 접근 할 수 있다면 좋은 생각이 아닙니다.
OpenVPN 전용 사용자를 만듭니다 (예 openvpn
:
sudo useradd openvpn
파일 복사 server.key
, server.crt
, ca.crt
및 dh1024.pem
(또는 dh2048.pem
당신은 키 크기를 변경 한 경우)에 키 디렉토리에서 /etc/openvpn
. 400의 권한 (소유자에게는 읽기 전용)이 좋습니다.
sudo cp ~/openvpn-admin/easy-rsa/keys/{server.key,server.crt,ca.crt,dh*.pem} /etc/openvpn
sudo chmod 400 /etc/openvpn/{server.key,server.crt,ca.crt}
파일 ta.key
도 복사하십시오 .
sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
sudo chmod 400 /etc/openvpn/ta.key
파일을 작성하고 /etc/openvpn/server.conf
다음 행을 파일 에 넣으십시오.
proto udp
dev tap
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth ta.key 0
# Compress data to save bandwidth
comp-lzo
user openvpn
group openvpn
persist-key
persist-tun
# Logs are useful for debugging
log-append openvpn-log
verb 3
mute 10
적절한 권한을 설정하면 비밀 일 필요는 없지만 구성 세부 정보를 유출하지 않는 것이 좋습니다.
sudo chmod 640 /etc/openvpn/server.conf
4. 서버 마무리
서버에서 인증서를 만든 경우이를 암호화하거나 서버에서 다른 곳으로 옮기는 것이 좋습니다. 어쨌든 ca.key
및을 잃지 마십시오 server.key
. 첫 번째 경우 다른 사람들이 서버에 연결할 수 있습니다. 후자의 경우 MITM 이 가능합니다.
고객
서버 IP 주소 외에 서버 관리자는 다음 파일을 전달해야합니다.
ca.crt
: 인증서 확인을 위해
server.crt
: 서버 확인 및 통신
ta.key
: 보안 강화
you.crt
: 서버로 자신을 식별
you.key
: 비밀번호와 같으며 파일 권한은 400이어야합니다 (소유자에게는 읽기 전용)
1. 설치
OpenVPN 및 NetworkManager 플러그인을 설치하십시오 (KDE 및 Gnome에 적합).
sudo apt-get install openvpn network-manager-openvpn
network-manager-openvpn
유니버스 저장소에 있습니다.
2. 구성
제어판에서 다음 세부 사항을 사용하십시오.
- 게이트웨이 : 서버 IP 주소
- 유형 : "인증서 (TLS)"(그놈) 또는 "X.509 인증서"(KDE)
- CA 인증서 : 경로
ca.crt
- 사용자 인증서 : 경로
you.crt
- 개인 키 : 경로
you.key
에서 고급 :
- 게이트웨이 포트 : 자동 (1194) (변경하지 않아도 됨)
- LZO 데이터 압축 사용 : 사용
- TCP 연결 사용 : 비활성화
- TAP 장치 사용 : 활성화
- 암호 : 기본
- HMAC 인증 : 기본
- TLS 인증 사용 : enabled
키 파일 경로를 지정하고 ta.key
"키 방향"을로 설정하십시오 1
.
- ( - 할 일을 체크 아웃하는 모든 트래픽이 VPN 연결을 통해 이동하므로 서버는 기본 게이트웨이를 밀어). 마지막으로 확인했을 때 network-manager-openvpn 플러그인이하지 않았습니다.
NetworkManager가 작동하지 않거나 사용하지 않으려면 파일 ( ca.crt
, ...)을 /etc/openvpn
넣고 파일 /etc/openvpn/client.conf
파일을 작성 하십시오.
client
dev tap
proto udp
# replace 1.2.3.4 by your server IP
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert you.crt
key you.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20
부팅시이 VPN을 활성화하지 않으려면 /etc/default/openvpn
다음을 제거하여 다음 줄을 편집 하고 주석을 해제하십시오 #
.
#AUTOSTART="none"
이 연결을 시작하려면 다음을 실행하십시오.
sudo /etc/init.d/openvpn start client
client
구성 파일 이름이 없으면 이름을 바꿔야합니다 client.conf
. 예 : 구성 파일 이름을 지정한 경우을 safe.conf
실행해야합니다 sudo /etc/init.d/openvpn start safe
.
OpenVPN을 중지하려면 다음을 실행해야합니다.
sudo /etc/init.d/openvpn stop