20/11/2018

OpenVpn Centos Client

Kendi VPN inimde kurduğum owncloud a disk alanı eklemeyi istedim Bunun içinde owncloud içinde ki alana önce vpn ile güvenli net bağlantısı kurup sonrada o net bağlantısı ile NFS mount ile bir folder a paylaşım ile bu fikrimi uygulamayı düşünüyorum.
Şimdi VPS üzerinde zaten bir Openvpn server i koştuğu için ek birşeyler yapmama gerek yok sadece gerekli client setifika ve anahtarlarını üretmem gerekiyor.
Özellikle aşağıda ki linkten faydalandım.
https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-an-openvpn-server-on-centos-7
Keyleri çok uzun süre önce üretmiştim notlarımı buraya bir gün aktarırsam detaylandırırım.
Şimdi önce client ıma openvpn, easy-rsa, screen kurdum.
sonra gerekli 3 dosyayı şuraya kopyaladım.

[root@localhost easy-rsa]# pwd
/etc/openvpn/easy-rsa
[root@localhost easy-rsa]# ls -l
total 20
-rwxr-xr-x. 1 root root 1773 Nov 19 09:30 ca.crt
-rwxr-xr-x. 1 root root 5439 Nov 19 09:27 client2.crt
-rwxr-xr-x. 1 root root 1090 Nov 19 09:27 client2.csr
-rwxr-xr-x. 1 root root 1704 Nov 19 09:27 client2.key

şimdi de config dosyasını oluşturmamız gerekli.

[root@localhost openvpn]# cat client2.ovpn
client
#tls-client
ca /etc/openvpn/easy-rsa/ca.crt
cert /etc/openvpn/easy-rsa/client2.crt
key /etc/openvpn/easy-rsa/client2.key
#tls-crypt /path/to/myvpn.tlsauth
#remote-cert-eku "TLS Web Client Authentication"
proto udp
remote 1194 udp
dev tun
topology subnet
pull
user nobody
group nobody

tls i kapattım çünkü serverda kurmadım. Umarım pişman olmam 🙂
Geriye başlatmak kalıyor
Bu nedenle önce screen ile bağımsızlaştırıyorum. (gerçek terim nedir bilmiyorum ama ). Aslında crontab a bir script yazıp faaliyeti takip etmek ve durduysa yeniden başlatarak devamlılığı sağlamak gerekiyor.
Neyse devam edeyim

openvpn --config /etc/openvpn/client2.ovpn

sonra ctrl a ve d ile screen den çıkıyorum.
Kontrol etmek için

[root@localhost openvpn]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:43:30:62 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.45/24 brd 192.168.0.255 scope global dynamic enp0s3
valid_lft 2992sec preferred_lft 2992sec
5: tun0: mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::c63e:d459:8eec:3151/64 scope link flags 800
valid_lft forever preferred_lft forever

----------------------------------------------------------------
Şimdi bir VARS dosyası oluşturmak gerekiyor certifika üretmek için. Bunu Openvpn server da yapıyorum.

[root@buyukburc easy-rsa]# cat vars |grep -v \#
export EASY_RSA="`pwd`"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"
export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="DE"
export KEY_PROVINCE="Eyalet"
export KEY_CITY="Bi sehir"
export KEY_ORG="soyadim neden bilmiyorum megolomanım herhalde"
export KEY_EMAIL="benim mail adresim"
export KEY_OU="benimadim"
export KEY_NAME="EasyRSA"

Sonra

mkdir -p /etc/openvpn/easy-rsa/keys
cd /root
wget https://github.com/OpenVPN/easy-rsa-old/archive/2.3.3.tar.g
tar xvf 2.3.3.tar.gz

link çalışmazsa buraya tıklayın
tar dosyasını açtıktan sonra

# cp -R /root/easy-rsa-old-2.3.3/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
# cd /etc/openvpn/easy-rsa/
# source ./vars
-bash: /etc/openvpn/easy-rsa/whichopensslcnf: No such file or directory
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
# cd keys/
# ls -l
total 0
# cd ..
# ./clean-all

Şimdi burada gördüğünüz gibi bir erişim problemi oldu. kısa bir zaman için

chmod 777 /etc/openvpn/easy-rsa/whichopensslcnf

yaptım ama bunu mutlaka değiştirin çünkü dosya sahibi root. Biri içinde ki kodu değiştirip sisteme sahip olabilir.
sonra

./build-ca
Generating a 2048 bit RSA private key
.............................................................................................+++
..................................+++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [DE]:
State or Province Name (full name) [Eyalet]:
Locality Name (eg, city) [Sehir]:
Organization Name (eg, company) [soyadim neden bilmiyorum megolomanım herhalde]:
Organizational Unit Name (eg, section) [benimadim]:
Common Name (eg, your name or your server's hostname) [benimadim CA]:
Name [EasyRSA]:
Email Address [benim mail adresim]:

Gelen her soruya enter a basarak geçin çünkü zaten bunları "vars" dosyasına yazmıştık zaten onlar geliyor.
sonra

./build-key-server server
Generating a 2048 bit RSA private key
...........+++
...............................................................+++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [DE]:
State or Province Name (full name) [Eyalet]:
Locality Name (eg, city) [Sehir]:
Organization Name (eg, company) [soyadim neden bilmiyorum megolomanım herhalde]:
Organizational Unit Name (eg, section) [benimadim]:
Common Name (eg, your name or your server's hostname) [server]:
Name [EasyRSA]:
Email Address [benim mail adresim]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'DE'
stateOrProvinceName :PRINTABLE:'Eyalet'
localityName :PRINTABLE:'Sehir'
organizationName :PRINTABLE:'soyadim neden bilmiyorum megolomanım herhalde'
organizationalUnitName:PRINTABLE:'benimadim'
commonName :PRINTABLE:'server'
name :PRINTABLE:'EasyRSA'
emailAddress :IA5STRING:'benim mail adresim'
Certificate is to be certified until Nov 18 02:31:58 2028 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Yine vars dosyasından veriler geldi

./build-dh
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.......................................................+........................................................................................................................................................................................................................................................................................................++*++*

"keys" klasörünün içeriği böylece belli oldu

keys]# ls -l
total 52
-rw-r--r--. 1 root root 5552 Nov 21 05:32 01.pem
-rw-r--r--. 1 root root 1773 Nov 21 05:28 ca.crt
-rw-------. 1 root root 1708 Nov 21 05:28 ca.key
-rw-r--r--. 1 root root 424 Nov 21 05:37 dh2048.pem
-rw-r--r--. 1 root root 141 Nov 21 05:32 index.txt
-rw-r--r--. 1 root root 21 Nov 21 05:32 index.txt.attr
-rw-r--r--. 1 root root 0 Nov 21 05:20 index.txt.old
-rw-r--r--. 1 root root 3 Nov 21 05:32 serial
-rw-r--r--. 1 root root 3 Nov 21 05:20 serial.old
-rw-r--r--. 1 root root 5552 Nov 21 05:32 server.crt
-rw-r--r--. 1 root root 1090 Nov 21 05:31 server.csr
-rw-------. 1 root root 1704 Nov 21 05:31 server.key

ve artık clientlarımızın keylerini oluşturacağız

./build-key client

işlem basamakları aynı.
daha sonra keys dosyasına bakınca

-rw-r--r--. 1 root root 5434 Nov 21 05:48 client.crt
-rw-r--r--. 1 root root 1090 Nov 21 05:48 client.csr
-rw-------. 1 root root 1704 Nov 21 05:48 client.key

dosyaların oluştuğunu görürüz.

Leave a Reply