Apakah mungkin untuk mengakses server SSH dengan subnet yang salah konfigurasi?

18

Kami memiliki server di mana salah satu teknisi kami salah mengonfigurasi subnet dan sekarang kami dikunci dari server ini dan satu-satunya akses yang saya tahu akan berfungsi adalah konsol serial dari IDC (itu berarti meminta insinyur IDC untuk membantu kami dengan ini) .

Apa yang telah salah konfigurasi:

address 192.168.1.9 # Original address there was
netmask 255.255.255.254 # Misconfigured, originally should've been .240

Karena penasaran - apakah ada cara untuk menghindari panggilan IDC dan entah bagaimana terhubung ke host ini melalui SSH (maka kita dapat memperbaiki konfigurasi)?

Alexey Kamenskiy
sumber

Jawaban:

25

Anda harus dapat masuk ke host lain di segmen jaringan yang sama. Beberapa cara untuk mendapatkan akses ke host yang salah konfigurasi membutuhkan root pada host perantara, tetapi ada juga satu cara mudah untuk mendapatkan akses tanpa perlu root pada host perantara.

Cara mudah untuk mengakses host menggunakan IPv6

ssh -o ProxyCommand='ssh -W [fe80::42:ff:fe:42%%eth0]:%p user@intermediate-host' root@target-server

Contoh berikut nilai-nilai membutuhkan perintah di atas harus diganti dengan nilai-nilai yang benar untuk kasus penggunaan Anda: fe80::42:ff:fe:42, eth0, user, intermediate-host, dan target-server.

Penjelasan terperinci tentang cara kerjanya

ProxyCommandadalah fitur ssh untuk digunakan ketika Anda tidak dapat membuka koneksi TCP langsung ke host target. Argumen untuk ProxyCommandadalah perintah yang stdin / stdout untuk digunakan alih-alih koneksi TCP.

-Wdigunakan untuk membuka satu port forwarding dan menghubungkannya ke stdin / stdout. Ini cocok dengan baik bersama ProxyCommand.

fe80::42:ff:fe:42%%eth0adalah alamat tautan-lokal dari host target. Perhatikan bahwa karena ProxyCommandmenggunakan %sebagai karakter pelarian, perintah ssh yang diketik harus digunakan %%di lokasi itu. Anda dapat menemukan semua alamat tautan-lokal di segmen dengan menjalankan ssh user@intermediate-host ping6 -nc2 ff02::1%eth0.

Menggunakan alamat IP-link-lokal untuk tujuan ini biasanya merupakan cara termudah karena diaktifkan secara default pada semua sistem modern, dan alamat link-lokal tetap berfungsi bahkan jika tumpukan IPv4 dan IPv6 sangat tidak terkonfigurasi.

Kembali ke IPv4

Jika IPv6 sepenuhnya dinonaktifkan pada host yang salah konfigurasi (sama sekali tidak direkomendasikan), maka Anda mungkin harus menggunakan IPv4. Karena IPv4 tidak memiliki alamat tautan-lokal seperti halnya IPv6 maka mengakses host yang salah konfigurasi menggunakan IPv4 menjadi lebih rumit dan memerlukan akses root pada host perantara.

Jika host yang salah konfigurasi masih dapat menggunakan gateway default-nya, Anda akan dapat mengaksesnya dari luar. Mungkin netmask yang salah konfigurasi juga memecah gateway default karena stack menolak untuk menggunakan gateway di luar awalan yang dicakup oleh netmask. Jika memang demikian halnya, host yang salah konfigurasi hanya akan dapat berkomunikasi dengan 192.168.1.8 karena itulah satu-satunya alamat IP lain dalam subnet yang saat ini dapat diakses oleh host yang salah konfigurasi ini.

Jika Anda memiliki login di 192.168.1.8, Anda mungkin bisa ssh dari sana ke 192.168.1.9. Jika 192.168.1.8 saat ini tidak ditetapkan, Anda dapat sementara waktu memberikannya ke host mana pun di segmen di mana Anda memiliki akses root.

kasperd
sumber
Dan fe80::42:ff:fe:42apakah alamat ...? server saya yang salah konfigurasi, saya kira?
Alexey Kamenskiy
@AlexKey Ya, itu harus diganti dengan alamat IPv6 tautan-lokal dari server yang salah konfigurasi.
kasperd
1
Adakah contoh dengan mengakses melalui IPv4 (jika IPv6 dinonaktifkan)?
Alexey Kamenskiy
@AlexKey Dalam hal IPv6 dinonaktifkan, saya pikir Anda harus melalui 192.168.1.8 karena tampaknya hanya IP lain di bawah awalan yang dikonfigurasi.
kasperd
1
@Lenniey rupanya karena alasan seperti pertanyaan ini (setidaknya).
Alexey Kamenskiy
9

kasperdmemposting jawaban yang luar biasa cukup rinci bagi saya untuk belajar bagaimana saya dapat pulih dari situasi dalam pertanyaan. Jawaban ini adalah langkah demi langkah tepat bagaimana saya melakukannya.

  1. SSH ke server pada jaringan fisik yang sama
  2. Menggunakan arp -aatau ip neighbor listsebagai rootmenemukan alamat MAC server terkonfigurasi.
  3. Menggunakan MAC ke tautan-konverter lokal menemukan tautan-lokal untuk server yang salah konfigurasi
  4. Sekarang dapat SSH ke server sebagai pengguna ssh user@link-local%devmana pun melalui tempat:
    • pengguna - nama pengguna yang diizinkan untuk SSH
    • link-local - alamat IPv6 yang ditugaskan sendiri pulih pada langkah 3
    • dev adalah antarmuka fisik yang dapat dijangkau server ini (mis. eth0)
Alexey Kamenskiy
sumber
2

Anda perlu memuat alamat IP dalam subnet yang dikonfigurasi target Anda, bukan hanya dalam kisaran yang Anda inginkan.

Jika Anda mengirim paket ke 10.0.0.2 dengan subnet 255.255.255.248 dari, misalnya, 10.0.0.220, 10.0.0.2 akan melihat subnet mask-nya untuk mencari tahu bagaimana membalas. Karena .220 adalah WAAY dari subnet 255.255.255.248, .2 harus mengirim balasan ke gateway default sebagai gantinya.

Jadi jika Anda dapat memuat alamat IP dalam subnet yang sama dengan .2, mis. 10.0.0.3, maka itu akan berhasil.

Dalam kasus spesifik Anda, untuk 10.0.0.9, subnet 255.255.255.254 hanya memiliki 1 alamat IP tambahan , yaitu 10.0.0.8. Jadi, jika Anda dapat memuat alamat IP itu, Anda harus dapat SSH.

thelogix
sumber