Categories: Devops

1194 : OpenVpn / Route CIDR / DNS / Fail2Ban / 2FA

OpenVpn

Disini saya akan menjelaskan beberapa config tambahan (diluar config default) untuk penggunaann vpn client(komputer developer) <-> server. Bukan server <-> server. Baru copas command/config singkat. Untuk penjelasan lengkap nya nanti akan di update.

Installation Script

Sumber : https://twitter.com/nonapeptide/status/608471679103148032

https://github.com/angristan/openvpn-install/

Cukup lengkap script dan cakupan OS nya. Update nya juga sering. Banyak contributor dan sponsor nya. Mudah mudahan aman. Sebenernya bisa juga install manual pakai package manager apt/yum/dnf. Dan di script ini dia juga pake package manager.

Route Spesifik CIDR Pakai VPN, Selain Itu Tidak

Hanya subnet 10.0.0.0/8 yang akan di route ke vpn, selain itu akan menggunakan internet komputer anda.

route-nopull
route 10.0.0.0 255.0.0.0

Walaupun kalau mau lebih aman umumnya ketika kita menyalakan vpn, internet nya mati. Jadi hanya bisa mengakses network server kita saja.

Pakai DNS Internal

Misal ada dashboard/console internal yang hanya bisa diakses di private network saja (tidak di ekspose public ip) dengan ip 10.0.8.20. Umumnya kita menggunakan hostfile dan menambahakan baris 10.0.8.20 console.abdillah.my.id.internal. Atau menggunakan dns server (bind9/managed dari cloud) dan menambahkan record tadi. Dengan memakai DNS ini di openvpn, kita bisa buka aplikasi di browser komputer kita menggunakan hostname nya. Tidak usah manual mengganti dns server di windows/linux komputer kita.

Konfigurasi server:

push "dhcp-option DNS 10.0.0.99"

Konfigurasi client:

dhcp-option DNS 10.0.0.99

Fail2ban

Default fail2ban tidak ada openvpn, nyari yang terdekat dengan ubuntu 20.04 dan openvpn 2.4 adalah ini : https://stefan.angrick.me/block-unauthorized-openvpn-logins-using-fail2ban

Karena di situs yang lain harus modifikasi konfigurasi openvpn nya sehingga membuat log di /var/log/openvpn, selain dari log di syslog/journalctl. Saya mencari yang minim konfigurasi (prinsip KISS) 😀

Namun saya coba tidak bisa karena sehingga saya sesuaikan dengan menambahkan regex “%(__hostname)s ovpn-server.*: tls-crypt unwrapping failed from [AF_INET]:[0-9]{4,5}” . ini untuk file filter nya (/etc/fail2ban/filter.d/openvpn.conf)

[INCLUDES]
before = common.conf

[Definition] 
failregex =%(__hostname)s ovpn-server.*:.<HOST>:[0-9]{4,5} TLS Auth Error:.*
           %(__hostname)s ovpn-server.*:.<HOST>:[0-9]{4,5} VERIFY ERROR:.*
           %(__hostname)s ovpn-server.*:.<HOST>:[0-9]{4,5} TLS Error: TLS handshake failed.*
           %(__hostname)s ovpn-server.*: TLS Error: cannot locate HMAC in incoming packet from \[AF_INET\]<HOST>:[0-9]{4,5}
           %(__hostname)s ovpn-server.*: tls-crypt unwrapping failed from \[AF_INET\]<HOST>:[0-9]{4,5}

dan file jail nya (/etc/fail2ban/jail.d/openvpn.conf)

[openvpn] 
enabled = true
port = 1194
protocol = udp
filter = openvpn
logpath = /var/log/syslog
maxretry = 5 

Cara kerja fail2ban adalah monitor file log setiap saat, jika ada log yang sesuai dengan regex. akan di ambil log nya dan di parsing IP nya dari log tersebut. Lalu ip tersebut ditambah ke iptable untuk di blok.

Brute Force / Vuln / 2FA

OOT sedikit, sebenernya peluang bruteforce key openvpn itu kecil sekali 0.00000….. Sama seperti bruteforce private key SSH. Jadinya fail2ban tidak ada pengaruh sebenernya. Misal rsa 2048 bit butuh 300 trilion years to break. Ini hanya memperkecil attack surface saja. Mungkin hanya sugesti biar lebih tenang 😀 . Kalaupun ada vuln/CVE, pasti bukan lewat brute force key. Dan untuk megnatasi vuln/CVE ini harus update software nya, atau “virtual patching” dengan cara menambah rule di firewall.

https://www.quintessencelabs.com/blog/breaking-rsa-encryption-update-state-art/

http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=openvpn

Sama seperti yang lain nya kalau ini bisa di brute force, berarti ssl/https, cookies seesion id juga bisa di brute force. Padahal tidak bisa karena membutuhkan waktu yang sangat lama.

2FA

Daripada cara diatas, lebih baik kita menambahkan 2FA pada openvpn. Misalkan private key dan passphrase nya bocor, masih bisa dicegah dengan 2FA. Kecuali orang nya di culik terus dipaksa kasih tau 2FA nya juga 😛

Ini referensinya, nanti saya akan coba untuk update di post ini :

https://openvpn.net/blog/diy-mfa-setup-community-edition/

https://medium.com/quiq-blog/openvpn-with-two-factor-authentication-4dce9199c3af

https://github.com/evgeny-gridasov/openvpn-otp

Atau kalo gak mau pusing bisa juga pake vpn yang berbayar seperti openvpnAs, forticonnect, cisco anyconnect dll.

User

Dulu saya langsung hajar install openvpn tanpa baca baca dulu. Ketika dipakai banyak orang pakai user yang sama, koneksinya jadi lemot dan putus-putus. Ternyata untuk orang yang berbeda, harus bikin user baru (berbeda user).

Wireguard

Yang lagi trending, saya belum sempat coba, biasanya pake ipsec untuk server<->server. Mungkin nunggu versi 2 aja baru coba 🤣.

Kalau penarasan bisa mampir ke toko sebelah:

https://software.endy.muhardin.com/devops/vpn-wireguard-01-intro/

Herbert Abdillah

Test

Recent Posts

Disk 1 tb sisa 100 gb

Berikut ini detail breakdown nya Docker

7 months ago

Langchain JsonOutputParser Invalid json output Error

Sometimes json output from llm like this : {"key": "value"}``` that langchain JsonOutputParser regex cant…

8 months ago

Tontonan Bagus

https://www.youtube.com/watch?v=ZAqIoDhornk (more…)

8 months ago

Ada Apa Didalam Sistem Operasi (Linux). Apa yang membedakan distribusi Linux seperti Ubuntu, Redhat, Alpine?

#include <stdio.h> int main() { FILE *f_ptr; char f_content[256]; char output[512]; f_ptr = fopen("/tmp/1337", "r");…

11 months ago

Convert OpenSSL 1 in Ruby Gem to OpenSSL 3

Version 3 have different interface Example: https://github.com/herbertabdillah/fabric-gateway-ruby/commit/c7377aaf2e62de1e2ac309965a09b5c7c72a2c7e (more…)

2 years ago

Catatan Belajar Ruby on Rails dari aliran Java dan Php

Telah di edit. Sumber Asli : https://twitter.com/nateberkopec/status/1250603032523370496/photo/1 Ruby on Rails merupakan framework web MVC menggunakan…

3 years ago