Beiträge zu “OpenVPN”

pfsense OpenVPN Server um Anmeldung erweitern

An dieser Stelle habe ich beschrieben wie ich auf meiner pfsense Firewall einen Openvpn Server mit TLS Zertifikaten eingerichtet haben.

Eine Anmeldung sollte also nur möglich sein wenn man die richtigen Zertifikate hat und auch noch den TLS Schlüssel besitzt. Aus meiner Sicht schon eine hohe Hürde. Da ich allerdings auch von meinem Mobilfunkgerät das VPN nutzen möchte und diese Daten dort abgelegt sind wollte ich noch den Faktor eines Nutzernamens / Password hinzufügen.

Hier meine Schritte

1. Erweitern der Openvpn Konfiguration

Zuerst sagen wir dem OpenVPN Server das wir auch eine Anmeldung mit Nutzernamen wollen

Damit ist eine Anmeldung wie bisher nicht mehr möglich.

 ... TLS Error: Auth Username/Password was not provided by peer
 ... TLS Error: TLS handshake failed 

2. Nutzer einrichten und Zertifikat vergeben.

Zuerst erstellen wir einen neuen Benutzer in der pfsense

und dann importieren wir das Zertikat

3. Client Konfiguration anpassen

In den Konfigurationen der Clients fügen wir jetzt diese Zeile hinzu

auth-user-pass

Auf dem Android Geräte musste ich dann die existierende Konfiguration löschen und noch mal neu importieren. Danach werde ich aufgefordert einen Nutzernamen und ein Kennwort zu vergeben. Und dann klappt es auch wieder mit dem Anmelden.

16.6.17
Weitere Beiträge zu: OpenVPN   pfsense   Android  

Android Geräte an einem pfsense OpenVPN Server

Die Schritte zum Einbinden eines Android Gerätes in ein OpenVPN Netzwerk sind dann eigentlich recht einfach.

Zuerst gilt es wieder ein neuen Nutzerzertifikates wie schon hier beschrieben anzulegen.

Ich habe mir auf meinem CA Notebook ein Verzeichnis eingerichtet in dem die “Transferpakete” zusammenstelle. Dorthin kopiere ich alle notwendigen Daten

 mkdir transferpakete/openvpn2
 cp certs/ca.cert.pem transferpakete/openvpn2/
 cp certs/user2-openvpn.cert.pem transferpakete/openvpn2/
 cp private/user2-openvpn.key.pem transferpakete/openvpn2/

und erstelle wieder die server-tls.key wie schon für den Debian Client. Der Openvpn Client arbeitet mit der gleichen Client Konfiguration wie oben verlinkt schon beschreiben. Sie muss aber die Endung ovpn haben.

 vi transferpakete/openvpn2/server-tls.key
 vi transferpakete/openvpn2/home.ovpn
 tar czvf openvpn2.tar.gz openvpn2/

Das Paket muss man dann “irgendwie” auf das Handy ausgepackt bekommen.

Dort kann man dann im OpenVPN Client unter “Import / Import Profile from SD Card” diese ovpn Datei importieren.

14.6.17
Weitere Beiträge zu: OpenVPN   pfsense   Android  

pfSense mit OpenVPN Server

Dies ist die Dokumentation meiner openvpn / pfsense einrichtung mit einer separaten CA. Im Gegensatz zu dieser Beschreibung verwende ich hier nicht den Ansatz mit easyRSA.

Wie immer, aber hier besonders: Use at your own risk.

Die pfsense aktualisiert bei afraid.org einen dynamischen DNS eintrag namens openvpn.xyz.org

1. Erstellen der notwendigen Zertifikate auf einer Debian basierenden openssl CA

Zuerst das Serverzertifikat

 openssl genrsa -out private/openvpn.xyz.org.key.pem 4096
 openssl req -new -key private/openvpn.xyz.org.key.pem -out certs/openvpn.xyz.org.csr.pem
 openssl ca -config openssl.cnf -extensions server_cert -notext -md sha256 -in certs/openvpn.xyz.org.csr.pem -out certs/openvpn.xyz.org.cert.pem

Dann ein separater Nutzer für die Openvpn Nutzung

openssl genrsa -out private/user1-openvpn.key.pem 4096
openssl req -new -key private/user1-openvpn.key.pem -out certs/user1-openvpn.csr.pem
openssl ca -config openssl.cnf -notext -md sha256 -in certs/user1-openvpn.csr.pem -out certs/user1-openvpn.cert.pem

2. Importieren des Zertifikates

Genau dieselbe Prozedur wir hier mit einem anderem Namen.

3. Erstellen der OpenVPN Server Konfiguration

Ich verwende hierzu den Wizard unter VPN \ OpenVPN

Hier wählen wir die vorhandene CA aus

und jetzt das gerade importierte Server Zertifikat

Beim Serversetup habe ich mich an die Default Werte gehalten.

Bei Tunnel Network ein neues noch nicht verwendetes Netzwerk eingeben und bei Local Network das Netzwerk angeben in das man gehen möchte (wenn man verschiedene VLANs hat). Bei Compression habe ich entgegen dem Screenshot später “Enabled with adaptiv…. “ ausgewählt.

Ich habe hier gleich die richtigen Regeln erstellen lassen

Und fertig

Optional habe ich noch einen User angelegt den ich aber noch nicht verwendet habe.

Da ich in den Einstellungen des OpenVPN Servers erst einmal nur “Remote Access SSL/TLS” ausgewählt habe. Das möchte ich später noch um ändern.

Dafür kann man hier schon mal den TLS Key kopieren. Den brauchen wir gleich auf der Client Seite.

So jetzt ist der Server fertig.

4. Erstellen einer OpenVPN Client Konfiguration auf Debian

Auf der Client Seite habe ich in einem Verzeichnis den gerade kopierten TLS key in eine Datei kopiert. Ausserdem brauchen wir noch die ca.cert und den user cert / key aus Schritt 1.

 vi server-tls.key 
   paste the tls key from openvpn server

 vi client.opvn 
    client
    dev tun
    proto udp
    remote openvpn.xyz.org <your opvn port> 
    resolv-retry infinite
    nobind
    user nobody
    group nogroup
    persist-key
    persist-tun
    ca ca.crt
    cert user1-openvpn.cert.pem
    key openvpn.xyz.org.key.pem
    ns-cert-type server
    cipher AES-256-CBC
    comp-lzo
    verb 3
    tls-auth server-tls.key  1

5. Verbindung aufbauen

Dann konnte ich mit

 sudo openvpn --config client.ovpn 

eine erfolgreiche Verbindung zu dem Server aufbauen

 ......
 ......
 Sun Jun 11 17:35:10 2017 OPTIONS IMPORT: timers and/or timeouts modified
 Sun Jun 11 17:35:10 2017 OPTIONS IMPORT: --ifconfig/up options modified
 Sun Jun 11 17:35:10 2017 OPTIONS IMPORT: route options modified
 Sun Jun 11 17:35:10 2017 OPTIONS IMPORT: route-related options modified
 Sun Jun 11 17:35:10 2017 Preserving previous TUN/TAP instance: tun0
 Sun Jun 11 17:35:10 2017 Initialization Sequence Completed

Offen / Todo

  • Umstellen von SSL / TLS auf “SSL/TLS username password”
  • Anbinden eines Android Clients
11.6.17
Weitere Beiträge zu: pfsense   OpenVPN  

Push Notification bei kritischen Einträgen im Logfile bei syslog-ng

Ich wollte einen Weg finden wie ich auf bestimmte Ereignisse in Logfile durch eine Pushnachricht per Mail (oder auch per Pushover) benachrichtigt werden. Die wesentliche Idee habe ich von hier übernommen und basiert auf Syslog-ng.

Konkret will ich über erfolglose und erfolgreiche Logins auf meinem Openvpn Server informiert werden. Wahrscheinlich kann man einiges noch verbessern aber es tut es.

Zuerst brauchen wir ein Script, das aus einer Pipe heraus Mailnachrichten und über Pushover auf meine mobilen Geräte versendet.

vi /usr/local/bin/log-mail.sh
  #!/bin/bash
  subject="Openvpn Aktivitaet"
  email="your.mail.de"
  URL="https://api.pushover.net/1/messages.json"
  API_KEY="yourapikey"
  USER_KEY="youruserkey"
  while read event;
  do
  	  echo ${event} | mail -s "${subject}" ${email}
	  curl  -F "token=${API_KEY}" -F "user=${USER_KEY}" -F "title=${subject}" -F "message=${event}" "${URL}" > /dev/null 2>&1
  done

chmod +x /usr/local/bin/log-mail.sh

Dann brauchen wir noch die Konfiguration von Syslog

vi /etc/syslog-ng/syslog-ng.conf

     filter f_openvpn1 { message("Peer Connection");};
         filter f_openvpn2 { message("TLS Auth Error");};
     destination d_email_notification { program("/usr/local/bin/log-mail.sh"); };
     log { source(src); filter(f_openvpn1); destination(d_email_notification); };
     log { source(src); filter(f_openvpn2); destination(d_email_notification); };

Die ersten beiden Zeilen legen den Zeichenstring fest, für den ich mich interessiere. Die dritte Zeile sagt, dass es ein Programm gibt das Events entgegen nehmen kann. Die vierte und fünfte Zeile verbindet den Filter mit der Destination und sagt, dass die interessanten Events an das gerade erstellte Programm versenden werden soll.

Dann kommen Nachrichten per Mail und Pushover.

[Openvpn Pushover Notification]

18.4.14
Weitere Beiträge zu: pfsense   Pushover   OpenVPN   Logfile  

VPN mit OpenVPN und pfSense

Ich möchte ein virtuelles privates Netzwerk (VPN) installieren um sicher über das Internet auf mein privates Netzwerk zugreifen zu können. pfSense bietet diese Möglichkeit. Als Clients sind Note- / Netbooks mit Ubuntu im Einsatz. Der Ablauf ist so. Erst werden die Konfigurationsdateien erstellt, dann wird der Server konfiguriert und dann ist der Client dran.

Disclaimer: dies sind meine Notizen nach bestem Gewissen. Bitte erst Denken dann Abtippen ;-) Es wird mit Sicherheit Möglichkeiten geben das schneller/besser zu machen aber so bin ich ans Ziel gekommen.

Zuerst gilt es das OpenVPN Packet zu installieren. Auf Ubunutu geht das ziemlich einfach über den Packetmanager. Im OpenVPN Packet ist ein Verzeichniss, das es einem erlaubt schnell eine einfache und kleine Konfiguration zu erstellen: EasyRSA

Konfiguration erstellen

Zuerst kopiert man die Templates in ein eigenes Verzeichniss

sudo mkdir /etc/openvpn/myvpn
sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/myvpn/

Dann editiert man eine Textdatei und gibt Angaben zu Land, Organisation, Servernamen.

sudo vi /etc/openvpn/myvpn/vars

export KEY_COUNTRY="DE"
export KEY_PROVINCE="NRW"
export KEY_CITY="Meckenheim"
export KEY_ORG="hbauer"
export KEY_EMAIL="hagen-bauer@web.de"

Dann "baut" man durch aufrufen von ein paar Scripts die notwendigen CA, Keyfiles sowohl für den Server als auch für den Client ... (das zu erklären führt hier zu weit)

sudo su -
cd /etc/openvpn/myvpn/
source ./vars
./clean-all
./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
........+..............+..........................................+....+...........................

./pkitool --initca
./pkitool --server server1
cd keys/
openvpn --genkey --secret ta.key
./build-key client1
Generating a 1024 bit RSA private key
...............++++++

writing new private key to 'client1.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) [NRW]:
Locality Name (eg, city) [Meckenheim]:
Organization Name (eg, company) [hbauer]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [client1]:
Name []:
Email Address [hagen-bauer@web.de]:

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/myvpn/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'DE'
stateOrProvinceName   :PRINTABLE:'NRW'
localityName          :PRINTABLE:'Meckenheim'
organizationName      :PRINTABLE:'hbauer'
commonName            :PRINTABLE:'client1'
emailAddress          :IA5STRING:'hagen-bauer@web.de'
Certificate is to be certified until Mar 23 08:09:03 2020 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

Das wars damit hat man die notwendigen Zertificate, CA , Key files.

pfSense konfigurieren

Jetzt wird der Openvpn Server auf pfSense konfiguriert. Zuerst auf der administrativen Oberfläche einloggen und dann unter

201004-pfsense-openvpn1.png

einen neuen Server anlegen. Wichtig ist, daß der Adresspool ein Netzwerk ist, welches momentan noch nicht benutzt wird. Aus eigener Erfahrung empfehle ich auch nicht die Standardwerte 192.168.1.1 zu nehmen. Die sind häufig auch in Hotels im Einsatz und das beist sich dann.

Protocol: UDP
Local port: 1194
Address pool: 192.168.xx.0/24
Remote Network: blank
Cryptography: BF-CBC (128 bit)
Authentication Method: PKI
CA certificate => <Inhalt der Datei ca.crt>
Server Certificate =>
<Inhalt der Datei server.crt >
Server Key =>
<Inhalt der Datei server.key>
DH parameters =>
<Inhalt der Datei dh1024.pem>
LZO Compression = on

Jetzt noch Regeln auf der Firewall damit "was durchkommt. Auf

201004-pfsense-openvpn2.png

eine neue Regel anlegen

PASS
WAN
Protocol: TCP
source: any
OS type: any
Destination: any
Destination port range from: OpenVPN
Destination port range to: OpenVPN
LOG => true

Der Rest bleibt default.

Setup des Client Rechners

Auf dem Client habe ich unter /etc/openvpn ein Verzeichniss "clients" angelegt. Dort kommt auch die Konfigurationsdatei hin.
 

cd /etc/openvpn/
mkdir clients
cd clients/
cp /home/hbauer/Documents/keys/client1.* .
cp /home/hbauer/Documents/keys/ca.crt .
cd ..

und jetzt die Konfigurationsdatei.

vi server1.conf

dev tun
proto tcp-client
remote <your-server-address>
ping 30
persist-tun
persist-key
cipher bf-cbc
tls-client
ca /etc/openvpn/clients/ca.crt
cert /etc/openvpn/clients/client1.crt
key /etc/openvpn/clients/client1.key
ns-cert-type server
comp-lzo
pull

Ich kann zwar die Networkmanager in Ubuntu mit den Openvpn daten füttern aber leider wird das nicht erfolgreich gestartet. Deswegen einfach als root von der Kommando zeile.
 

openvpn --config /etc/openvpn/clients/server1.conf

und wenn euch dann ein

Initialization Sequence Completed

anlacht seit Ihr drin

Man kann das ganze jetzt auch noch automatisieren oder bei jedem Starten aber das brauche ich eigentlich nicht.

 

11.6.10
Weitere Beiträge zu: OpenVPN   pfSense  

Ubuntu: kein "Add VPN" Button im Networkmanager

Ich wollte auf meinem Ubuntu ein VPN mit Openvpn einrichten und hatte auch schon Openvpn installiert. Im Networkmanager gibt es dazu auch einen schönen Punkt.

VPN Connections -> Configure VPN

Nur hatte ich dort keinen "Add" Button :-(

Geht auch nicht wenn man nicht noch

network-manager-openvpn

installiert.

26.3.10
Weitere Beiträge zu: Linux   OpenVPN   Ubuntu  

Dies ist ein privater Blog von Hagen Bauer- berufstätiger Vater, Ehemann, Naturliebhaber, Läufer, Zelter, technikverliebt.


Creative Commons License
This blog is licensed under a Creative Commons License