Pengguna MikroTik VPN menjangkau terlalu jauh: batasi ke satu host dan satu port
Profil PPP dapat menaruh alamat tunnel yang diberikan ke dalam daftar alamat, dan satu rantai lompat dapat mengizinkan satu host dan port sebelum penurunan.
Tunnel naik, login berhasil, dan setiap host di jaringan menjawab. Itu bukan VPN rusak; itu VPN tanpa model izin. RouterOS mengautentikasi akun lalu merutekan paketnya seperti paket siapa pun, jadi firewall harus menyediakan batasnya. Menambahkan batas itu tanpa merusak login adalah seluruh pekerjaannya.
Autentikasi berakhir di tempat izin dimulai
Begitu sesi PPP aktif, paket dari klien masuk ke rantai forward seperti lalu lintas dari antarmuka mana pun. Jika kebijakan forward router permisif, konsultan mewarisi keperisifan itu saat login. Akun tidak pernah membawa cakupan, jadi tidak ada yang bisa diubah pada akun. Himpunan aturan ditulis untuk karyawan dan sesi baru begitu saja bergabung.
Periksa jalur mana yang dimaksud permintaan sebelum menulis apa pun. Lalu lintas ke host di belakang router melewati forward, sedangkan lalu lintas ke router itu sendiri, termasuk winbox dan SSH, melewati input. Cakupan yang hanya mencakup forward membiarkan perangkat terbuka bagi klien yang sama.
Kedua rantai perlu keputusan, meskipun keputusannya membiarkan input tertutup. Pilihan itu termasuk dalam permintaan akses, bukan renungan belakangan.
Lampirkan sesi ke daftar bernama
Profil PPP dapat menaruh alamat yang dibagikannya ke daftar alamat bernama saat sesi dimulai. Itu mengubah alamat tunnel sementara menjadi sesuatu yang dapat dicocokkan firewall berdasarkan nama, dan entri itu hilang saat sesi berakhir. Akun lalu mewarisi cakupan dari profilnya, bukan dari aturan yang mengodekan alamat secara kaku.
Buat profil lebih dulu, lalu ikat secret ke sana secara eksplisit. Secret yang masih menunjuk ke profil bawaan mereproduksi masalah semula.
Beri nama profil dan daftar sehingga tugasnya jelas, dan beri komentar pada keduanya dengan rujukan permintaan. Satu profil dapat melayani beberapa orang dengan cakupan yang sama, sementara daftar tetap mengenali setiap sesi yang hidup. Itu lebih murah untuk ditinjau daripada satu aturan per orang.
/ppp profile add name=scoped-consultant remote-address=consultant-pool address-list=vpn-scoped-clients
/ppp secret add name=consultant password=... service=ovpn profile=scoped-consultant
Catat layanan yang diizinkan dalam satu daftar
Taruh server yang diizinkan di daftar alamatnya sendiri alih-alih menyematkan alamat ke aturan filter. Daftar itu dapat diaudit, diperluas, dan dikomentari, dan aturan yang memakainya tidak berubah saat server berpindah. Satu entri terlihat berlebihan sampai host kedua datang, yang biasanya terjadi.
Cocokkan daftar saat alamat dinamis atau seimbang beban, dan cocokkan alamat langsung saat alamat dicadangkan dan stabil. Pilihan mana pun terbaca jelas jika komentar menyebut layanan dan pemiliknya.
Batasi protokol dan port selain host. Sebuah accept untuk host tanpa batasan port membuka setiap layanan yang dijalankan host itu, yang lebih luas daripada maksud sebagian besar permintaan akses. Port adalah bagian dari izin, bukan detail yang ditambahkan kemudian.
/ip firewall address-list add list=vpn-targets address=10.0.0.10 comment="consultant RDP target"
Urutkan lompatan sebelum accept lebar mana pun
Aturan lompat mengirim lalu lintas yang diteruskan dari daftar terbatas ke rantai privat tempat seluruh kebijakan muat dalam tiga baris. Aturan pertama menerima tujuan dan port yang diizinkan, dan aturan terakhir menurunkan semua yang lain. Lompatan harus berada di atas accept lebar mana pun di forward, karena accept yang lebih awal berarti lompatan tidak pernah berjalan. Pertahankan accept untuk established dan related sebelum lompatan agar lalu lintas balasan tetap mengalir.
Periksa bahwa tidak ada aturan fasttrack yang dapat membawa lalu lintas ini melewati rantai terbatas. Fasttrack melewati sisa jalur filter, dan sesi terbatas yang difasttrack sama sekali tidak terbatas.
Ulangi keputusan untuk rantai input jika layanan router sendiri harus tidak terjangkau. Cakupan yang memblokir lalu lintas yang diteruskan dan membiarkan winbox terbuka baru setengah selesai.
/ip firewall filter
add chain=forward action=jump jump-target=scoped-vpn src-address-list=vpn-scoped-clients
add chain=scoped-vpn action=accept protocol=tcp dst-address-list=vpn-targets dst-port=3389
add chain=scoped-vpn action=drop
Verifikasi dengan penghitung dan keanggotaan daftar
Dari klien, uji layanan yang diizinkan dan satu yang harus gagal, lalu baca statistik aturan di router. Penghitung accept dan drop menunjukkan jalur mana yang diambil tiap paket, yang tidak dapat dilihat klien. Pastikan juga alamat sesi yang hidup muncul di daftar terbatas.
Daftar kosong berarti akun berada di profil lain atau profil kehilangan pengaturan daftar alamatnya. Penghitung drop yang naik saat layanan yang diizinkan gagal berarti tujuan atau port tidak cocok dengan yang dikirim klien.
Uji layanan yang sama berdasarkan nama dan berdasarkan alamat sebelum menyimpulkan apa pun. Kegagalan resolusi nama terlihat persis seperti port yang diblokir dari sisi klien. Lalu catat profil, kedua daftar, dan satu-satunya layanan yang diizinkan dalam permintaan akses agar tinjauan berikutnya membandingkan, bukan membangun ulang.
/ip firewall filter print stats where chain=scoped-vpn
/ip firewall address-list print where list=vpn-scoped-clients