Sshd'nin belirli bir arayüzü dinlemesini sağlayın


15

Makinemde tun0 arayüzünü kullanan OpenVPN kullanıyorum. Sshd'nin sadece bu arayüzde dinlemesini istiyorum.

Dinlemek için IP adresini belirtebilirim

/etc/ssh/sshd_config

Birlikte

ListenAddress 0.0.0.0

direktif. Ancak IP adresim değişecek, bu yüzden burada her zaman geçerli olan bir IP seçemiyorum. Daemon'u sadece VPN açıkken başlatabileceğimi biliyorum - sorun bu değil.

Sshd'nin yalnızca belirli bir arabirimi (tun0) dinlemesini nasıl sağlayabilirim?


2
Güvenlik duvarı kapalı olmayan 22 numaralı bağlantı noktasında tun0mı?
NickW

Yanıtlar:


7

Sshd sadece IP adreslerini anladığı için bunu doğrudan yapamazsınız. Openvpn up betiği kullanarak birlikte bir şeyler vurabilirsiniz

-up cmd Başarılı TUN / TAP cihazı açıldıktan sonra çalıştırılacak Shell komutu (kullanıcı öncesi UID değişikliği). Up betiği, VPN bağlantısının diğer ucunda bulunan özel alt ağlar için hedeflenen IP trafiğini tünele yönlendiren rota komutlarını belirtmek için kullanışlıdır ...

Ayrıca --downtemizleme seçeneğine ve komut dosyası güvenliğini detaylandıran belgelerin ilgili bölümlerine bakın.

Tun cihazının IP adresinin betiğe bir ortam değişkeni olarak aktarıldığını göreceksiniz. Ayrıca sshd, formun komut satırında seçenekler alır

-oSomeOption=SomeValue

-o seçeneği Yapılandırma dosyasında kullanılan formatta seçenekler vermek için kullanılabilir. Bu, ayrı bir komut satırı bayrağı olmayan seçenekleri belirtmek için kullanışlıdır. Seçeneklerin ve değerlerinin tüm ayrıntıları için bkz. Sshd_config (5)

Böylece kullanabilirsiniz

-o ListenAddress=<some address>

Muhtemelen VPS'nizle konuşmak için bant dışı bir yönteminiz var, böylece bu koptuğunda sunucuyla iletişime geçebilirsiniz.


1
Deneyin:-o ListenAddress=$(ip addr | awk '/inet/ && /tun0/{sub(/\/.*$/,"",$2); print $2}')
pjz

@pjz Cihazın IP adresinin up script için bir ortam değişkeni olarak kullanılabileceğinden oldukça emin olduğum için bunu yapmanız gerektiğini düşünmüyorum. Test edecek elim yok.
user9517

1
Mükemmel! IP, yukarı komut dosyasına ifconfig_local = 10.xx.xx.xx olarak iletilir. Bir sürü başka veri (dev_type = tun, common_name = myservername, ifconfig_remote, route_gateway_1, unrusted_ip, ifconfig_local, proto_1, tls_serial_1, tls_serial_0 ...) iletilir.
Philipp

Evet biliyorum ve şimdi siz de yapıyorsunuz :)
user9517

3
Belki cevabınızı düzenlemek ve ilgili env değişken adını eklemek istersiniz? (gelecekteki okuyucular için)
Philipp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.