Belirli müşterilere SSH erişimini IP adresine göre sınırlayın


22

Bazı Özel IP'lerin SSH oturum açma (RSA anahtar çifti) aracılığıyla Linux Sunucusuna girmesine nasıl izin veririz?


3
Güvenlik duvarı kuralları normal bir eylemdir
Raman Sailopal

2
Güvenlik duvarı veya /etc/hosts.allow, eğer ssh / TCP sarmalayıcıları veya / etc / ssh / sshd_config dosya kurallarını derlerse
Rui F Ribeiro

yapmanın birden fazla yolu , her şeyi açıklayan linux.die.net/man/5/sshd_config'e bakın/etc/ssh/sshd_config
ron

Yanıtlar:


42

TCP paketleyicileri yapılandırarak  veya iptables kullanarak ağ trafiğini (güvenlik duvarı) filtreleyerek hangi ana makinelerin bağlanabileceğini sınırlayabilirsiniz . İstemci IP adresine bağlı olarak farklı kimlik doğrulama yöntemleri kullanmak istiyorsanız, bunun yerine SSH arka planını yapılandırın (seçenek 3).

Seçenek 1: IPTABLES ile filtreleme

Iptables kuralları ilk eşleşmeye kadar sırayla değerlendirilir.

Örneğin, 192.168.0.0/24 ağından gelen trafiğe izin vermek ve trafiği bırakmak için (22 numaralı bağlantı noktasına). DROPSenin iptables varsayılan ilke şekilde yapılandırılmışsa kural gerekli değildir DROP.

iptables -A INPUT -p tcp --dport 22 --source 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

Daha fazla ağ / ana bilgisayarla eşleştirmek için bırakma kuralından önce daha fazla kural ekleyebilirsiniz. Çok sayıda ağınız veya ana bilgisayar adresiniz varsa, ipset modülünü kullanmalısınız . Herhangi bir IP adresi aralığının kullanılmasına izin veren iprange modülü de vardır .

Iptables yeniden başlatmalar arasında kalıcı değildir. IPtable açılışta geri yüklemek için bazı mekanizmaları yapılandırmanız gerekir.

iptablessadece IPv4 trafiğine uygulanır. IPv6'yı dinleyen ssh dinleyen sistemler ile gerekli konfigürasyon yapılabilir ip6tables.

Seçenek 2: TCP sarmalayıcılarını kullanma

Ayrıca TCP sarmalayıcıları kullanarak hangi ana makinelerin bağlanabileceğini de yapılandırabilirsiniz. TCP sarmalayıcılarıyla, IP adreslerine ek olarak, ana bilgisayar adlarını da kurallarda kullanabilirsiniz.

Varsayılan olarak, tüm ana bilgisayarları reddet.

/etc/hosts.deny:

sshd : ALL

Ardından hosts.allow içindeki izin verilen ana bilgisayarları listele. Örneğin, 192.168.0.0/24 ve localhost ağına izin vermek için .

/etc/hosts.allow:

sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]

Seçenek 3: SSH arka plan programı yapılandırması

İstemci adresine / ana bilgisayar adına bağlı olarak farklı kimlik doğrulama yöntemini kullanmak için ssh daemon'u sshd_config içinde yapılandırabilirsiniz. Yalnızca diğer ana makinelerin bağlanmasını engellemek istiyorsanız, bunun yerine iptables veya TCP sarmalayıcıları kullanmalısınız.

İlk önce varsayılan kimlik doğrulama yöntemlerini kaldırın:

PasswordAuthentication no
PubkeyAuthentication no

Ardından Match Address, dosyanın sonuna bir sonra istenen kimlik doğrulama yöntemlerini ekleyin . MatchDosyanın sonuna yerleştirmek önemlidir, çünkü tüm konfigürasyon satırları bir sonraki Matchsatıra kadar koşullu bloğun içine yerleştirilir . Örneğin:

Match Address 127.0.0.*
    PubkeyAuthentication yes

Diğer istemciler hala bağlanabiliyor, ancak kullanılabilir kimlik doğrulama yöntemleri olmadığından girişler başarısız olacak.

Eşleşme argümanları ve izin verilen koşullu yapılandırma seçenekleri sshd_config man sayfasında yazılmıştır . Eşleşme kalıpları ssh_config man sayfasında yazılmıştır .


/ Etc / ssh / sshd_config içine bir ListenAddress yönergesi eklemeye ne dersiniz?
jerome

Ağ yapılandırmanıza ve hangi ana bilgisayarlara izin vermek istediğinize bağlı olarak belirli durumlarda (örneğin, özel ağ adresini dinlemek) mümkündür.
sebasth

2
Ayrıca filtreye "ek olarak, sshd_config AlowUsers yönergesi ile filterings ayarlayabilir ve ayrıca, authorized_keys IP veya alt ağ dan' ile ayarlanabilir.
tonioc

@ tonioc Kullanım davam için harika bir çözüm. Lütfen bu öneriyi bir cevap olarak genişletin.
saat

Her biri farklı bir ağa giden 4 bağlantı noktası olan bir NIC'niz varsa, varsayılan #ListenAddress ::olarak /etc/ssh/sshd_configSSH sunucusuna bu ağlardan herhangi birinden gelenleri kabul etmesi bildirilir. Aksi halde , izin vermek istediğiniz NIC bağlantı noktalarının ListenAddress <ip address>nerede <ip address>olduğunu yapın. Benim eth0ise 192.168.3.4nedenle ListenAddress 192.168.3.4, sadece ağda eth0 üzerinde 192.168.3.4 çalışan SSH sonuçlanır; ve eth1 eth2 eth3 reddedilir.
ron

5

SSH arka planının önceki yanıtı genişletmesi için bazı ek yapılandırmalar:

  • Dosyadaki AllowUsersseçenekle kullanıcı filtreleme ekle sshd_config:

    AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2
    

    Bu izin verir johndoe ve Admin2 sadece gelen 192.168.1.*adresleri ve otherid1 , otherid2 herhangi bir yerden.

  • Bir ssh anahtarını veya ca tabanlı anahtarı, .ssh/authorized_keysbelirli bir kullanıcının giriş dizininin dosyasındaki bir adres kümesiyle sınırla :

    from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
    

    Bu örnekte, useralias için açık anahtar sadece verilen adreslerden etkili olacaktır.

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.