Buat sshd mendengarkan antarmuka tertentu

15

Di komputer saya, saya menggunakan OpenVPN yang menggunakan antarmuka tun0. Saya ingin sshd hanya mendengarkan pada antarmuka ini.

Saya tahu, saya bisa menentukan alamat IP untuk didengarkan

/etc/ssh/sshd_config

dengan

ListenAddress 0.0.0.0

pengarahan. Tetapi alamat IP saya akan berubah, jadi saya tidak bisa memilih IP di sini yang selalu valid. Saya tahu bahwa saya dapat memulai daemon hanya ketika VPN menyala - bukan itu masalahnya.

Bagaimana saya bisa membuat sshd hanya mendengarkan pada antarmuka tertentu (tun0)?

Philipp
sumber
2
Matikan port 22 pada port apa saja yang bukan tun0?
NickW

Jawaban:

7

Anda tidak dapat melakukan itu secara langsung karena sshd hanya memahami alamat IP. Anda mungkin dapat mengetuk sesuatu menggunakan skrip openvpn

-up cmd perintah Shell untuk dijalankan setelah perangkat TUN / TAP berhasil terbuka (pra-pengguna ganti UID). Skrip up berguna untuk menentukan perintah rute yang merutekan lalu lintas IP yang ditujukan untuk subnet pribadi yang ada di ujung lain koneksi VPN ke dalam terowongan ...

Lihat juga --downopsi untuk membersihkan dan bagian-bagian yang relevan dari dokumentasi yang merinci keamanan skrip dll.

Anda akan menemukan alamat IP perangkat tun dilewatkan ke skrip sebagai variabel lingkungan. Juga sshd mengambil opsi pada baris perintah formulir

-oSomeOption=SomeValue

Opsi -o Dapat digunakan untuk memberikan opsi dalam format yang digunakan dalam file konfigurasi. Ini berguna untuk menentukan opsi yang tidak ada flag baris perintah terpisah. Untuk detail lengkap opsi, dan nilainya, lihat sshd_config (5)

Jadi bisa digunakan

-o ListenAddress=<some address>

Agaknya Anda memiliki beberapa metode band keluar untuk berbicara dengan VPS Anda sehingga ketika ini istirahat Anda dapat menghubungi server.

user9517
sumber
1
Coba:-o ListenAddress=$(ip addr | awk '/inet/ && /tun0/{sub(/\/.*$/,"",$2); print $2}')
pjz
@ pjz Saya tidak berpikir Anda perlu melakukan itu karena saya cukup yakin bahwa alamat IP perangkat tersedia sebagai variabel lingkungan ke skrip up. Saya hanya tidak punya barang untuk mengujinya.
user9517
1
Luar biasa! IP diteruskan ke skrip ke atas sebagai ifconfig_local = 10.xx.xx.xx. Sejumlah besar data lain (dev_type = tun, common_name = myservername, ifconfig_remote, route_gateway_1, untrusted_ip, ifconfig_local, proto_1, tls_serial_1, tls_serial_0 ...) diteruskan.
Philipp
Ya saya tahu dan sekarang Anda juga :)
user9517
3
Mungkin Anda ingin mengedit jawaban Anda dan menambahkan nama variabel env yang relevan? (untuk pembaca masa depan)
Philipp