Menurut posting ini , common_name
tidak bisa dipalsukan oleh pengguna.
Tambahkan ini ke openvpn server.conf
script-security 2
# untrusted state
auth-user-pass-verify /etc/openvpn/scripts/check_cn_on_connect.sh via-env
/etc/openvpn/scripts/check_cn_on_connect.sh
mengandung
#!/bin/bash
# username and common_name must be the same to allow access.
# users are not allowed to share their cert
if [ $username != $common_name ]; then
echo "$(date +%Y%m%d-%H%M%S) DENIED username=$username cert=$common_name" >> /var/log/openvpn-access.log
exit 1
fi
echo "$(date +%Y%m%d-%H%M%S) GRANTED username=$username cert=$common_name" >> /var/log/openvpn-access.log
exit 0
Memperbarui
Ini untuk OpenVPN 2.1.4. Di 2.2.0 minta mereka menambahkan banyak variabel baru yang dapat Anda lihat env >> /tmp/env
, di mana salah satu variabel baru ini adalah sidik jari / nomor seri sertifikat.
auth-user-pass-verify /etc/openvpn/scripts/connect.sh via-env
untuk mendapatkan nama pengguna. Apakah Anda tahu jika saya juga bisa mendapatkan ID dari sertifikat yang digunakan pengguna? Jika demikian, maka saya dapat menulis skrip Perl yang memeriksa file yaml dengan ID sertifikat yang dikenal.Saya bukan pro keamanan, saya ketat tentang keamanan. Pertanyaan Anda justru mencapai inti keamanan TI: kepercayaan. Seperti yang saya lihat, orang tidak boleh berasumsi bahwa Bob dapat dipercaya. Tentu, Bob mungkin pria yang sangat baik dan dapat dipercaya. Dia sudah bekerja di perusahaan Anda selama 20+ tahun. Namun, orang "Bob" sama sekali tidak relevan dalam infrastruktur TI Anda.
Bob menggunakan 'relay' sewenang-wenang yang mengizinkan akses. Relay dapat berupa apa saja: kata sandi, sertifikat, token perangkat keras, pemindaian iris, DNA. Itu adalah kunci yang memungkinkan akses ke sistem Anda. Jika pertanyaan Anda adalah tentang memverifikasi identitas orang yang menggunakan kunci, satu-satunya jawaban yang jujur mungkin adalah Anda harus berada di ruangan yang sama. Dalam semua kasus lain, saya pikir Anda tidak harus meyakinkan diri sendiri bahwa Bob benar-benar Bob dan saat ini tidak ditahan di bawah todongan senjata sambil mendapatkan aksesnya. Jadi dalam rencana desain infrastruktur TI Anda hal yang logis adalah tidak merujuk pada "Bob": entitas memperoleh akses ke situs Anda.
Karena Anda hanya dapat benar-benar mengetahui bahwa 'suatu entitas' memperoleh akses dengan kunci yang Anda bagikan di masa lalu, perspektif yang tepat mungkin adalah membatasi jumlah pintu yang dapat dibuka oleh kunci tersebut. Semakin banyak kunci yang Anda bagikan semakin sedikit pintu yang dibuka.
OpenVPN juga memiliki opsi untuk mengizinkan hanya satu koneksi bersamaan per kunci. Kemudian jika Alice memang login dengan kunci Bob ketika Bob sudah di dalam, Alice ditolak aksesnya. Sayangnya ini juga berarti bahwa Bob tidak dapat login ketika Alice login dengan kunci Bob. Jadi, Anda harus mengonfigurasi sistem Anda untuk memberi tahu Anda tentang upaya masuk bersamaan dari beberapa IP sumber. Dan memulai keduanya ketika beberapa pelanggaran terjadi sehingga Bob harus memanggil bantuan.
Intinya adalah: jangan meyakinkan diri sendiri tentang hal-hal yang tidak bisa Anda yakini dan ingatlah ini ketika merancang rencana keamanan Anda. Anggaplah selalu ada orang yang lebih pintar di luar sana, jauh di depan Anda, yang tidak sabar untuk membuktikan Anda salah ... hanya 'untuk lulz.' :-)
sumber