Menganonimkan OpenVPN Memungkinkan SSH Akses ke Server Internal

10

Saya menggunakan VPN anonim, tetapi ingin akses SSH ke komputer internal.

Bagaimana cara mengakses komputer internal saya melalui SSH? Ketika saya melakukan ssh 98.123.45.6 , koneksi mati.

  • Alamat IP dari penyedia kabel: 98.123.45.6
  • IP anonim melalui VPN: 50.1.2.3
  • Komputer internal: 192.168.1.123

Saat mencari di sekitar, saya menemukan rekomendasi untuk mengatur aturan iptables, aturan routing, atau menambahkan ListenAddress ke sshd_config. Manakah dari ini yang berlaku untuk kasus saya?

Inilah rute saya :

Tabel routing IP kernel
Destination Gateway Genmask Flags Metric Ref Use Iface
10.115.81.1 10.115.81.9 255.255.255.255 UGH 0 0 0 tun0
10.115.81.9 * 255.255.255.255 UH 0 0 0 tun0
50.1.2.3-sta ddwrt 255.255.255.255 UGH 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 202 0 0 eth0
169.254.0.0 * 255.255.0.0 U 204 0 0 vboxnet0
loopback * 255.0.0.0 U 0 0 0 lo
default 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
default ddwrt 0.0.0.0 UG 202 0 0 eth0
Lionel
sumber

Jawaban:

15

Untuk mengatasi masalah ini Anda akan perlu mengatur kedua iptables dan aturan routing. Masalah khusus yang Anda temui adalah bahwa paket SSH keluar sedang dialihkan melalui antarmuka terowongan VPN anonim Anda, bukan antarmuka Ethernet Anda. Ini terjadi karena perangkat lunak VPN Anda mengatur aturan perutean untuk mengirim semua dan semua lalu lintas yang tidak tertangani melalui antarmuka terowongan. Baik untuk menganonimkan lalu lintas jaringan Anda; buruk untuk membuat koneksi SSH ke komputer Anda.

Ada beberapa cara untuk memperbaiki masalah ini, tetapi saya akan membagikan kepada Anda cara yang berhasil untuk saya dalam situasi yang sama. Inilah yang perlu kita lakukan:

  1. Buat tabel aturan IP baru untuk menangani lalu lintas non-VPN
  2. Tambahkan aturan IP untuk mencari tabel no-VPN kami untuk setiap paket yang ditandai dengan masker netfilter tertentu
  3. Tambahkan rute IP yang mengarahkan semua lalu lintas di tabel no-VPN kami untuk menggunakan antarmuka Ethernet Anda alih-alih terowongan
  4. Tambahkan aturan iptables untuk menandai semua lalu lintas SSH dengan masker netfilter kami yang ditunjuk

Catatan: Saya bekerja dengan Raspbian saat melakukan hal berikut, jadi Anda mungkin perlu menyesuaikan sedikit perintah agar sesuai dengan distro Anda.

Membuat tabel aturan IP baru

Mulailah dengan memeriksa file definisi tabel iproute2. Kami ingin memastikan bahwa kami tidak menggunakan nama atau nomor tabel aturan yang ada.

cat /etc/iproute2/rt_tables

Anda mungkin akan melihat sesuatu seperti ini:

# reserved values
255      local 
254      main
253      default   
0        unspec
#
# local
#
#1      inr.ruhep

Pilih nomor acak dan nama untuk tabel aturan baru Anda - apa pun yang tidak digunakan di atas. Saya akan menggunakan nomor 201 dan nama novpnuntuk sisa jawaban ini.

Tambahkan definisi langsung ke file definisi atau edit dalam editor teks pilihan Anda:

echo "201 novpn" >> /etc/iproute2/rt_tables

Tambahkan aturan IP baru untuk mencari tabel no-VPN

Periksa aturan ip yang ada yang berhubungan dengan masker netfilter:

ip rule show | grep fwmark

Jika grep tidak menghasilkan apa-apa, berarti Anda aman. Jika mencetak beberapa baris, perhatikan nomor heksadesimal di sebelah kanan kata fwmarkdi setiap baris. Anda harus memilih nomor yang saat ini tidak digunakan. Karena saya tidak punya aturan fwmark yang ada, saya memilih nomor 65.

ip rule add fwmark 65 table novpn

Apa yang dilakukan adalah menyebabkan setiap paket dengan netfilter mask 65 mencari novpntabel baru kami untuk instruksi tentang cara merutekan paket.

Arahkan semua lalu lintas di tabel baru kami untuk menggunakan antarmuka Ethernet

ip route add default via YOUR.GATEWAY.IP.HERE dev eth0 table novpn

Yang penting untuk diperhatikan di sini adalah dev eth0. Ini memaksa semua lalu lintas yang melewati novpntabel untuk hanya menggunakan antarmuka Ethernet perangkat keras, alih-alih antarmuka terowongan virtual yang dibuat VPN Anda.

Sekarang adalah saat yang tepat untuk membersihkan cache iproute Anda, untuk memastikan aturan dan rute baru Anda segera berlaku:

ip route flush cache

Instruksikan aturan firewall untuk menandai semua lalu lintas SSH dengan masker netfilter yang ditunjuk

iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 65

Ada terlalu banyak opsi di sini untuk saya jelaskan secara mendalam. Saya sangat menyarankan Anda untuk membaca halaman manual untuk iptables untuk mengetahui apa yang terjadi di sini:

man iptables

Singkatnya: kita menambahkan aturan output ke tabel firewall mangle (untuk penanganan paket khusus) yang menginstruksikannya untuk menandai setiap paket TCP yang berasal dari port sumber 22 dengan netfilter mask 65 yang ditunjuk.

Apa selanjutnya?

Pada titik ini, Anda harus siap untuk menguji SSH. Jika semuanya berjalan dengan baik, Anda harus bertemu dengan prompt "login as".

Demi keamanan, saya sarankan Anda menginstruksikan firewall Anda untuk menjatuhkan semua permintaan SSH yang masuk dari antarmuka terowongan:

iptables -A INPUT -i tun0 -p tcp -m tcp --dport 22 -j DROP

Perhatikan bahwa semua instruksi di atas bersifat sementara (kecuali untuk pembuatan tabel aturan ID) - mereka akan menghapus waktu berikutnya Anda me-restart komputer Anda. Menjadikannya permanen adalah latihan yang saya serahkan kepada Anda.

Ben D.
sumber