Bazı Özel IP'lerin SSH oturum açma (RSA anahtar çifti) aracılığıyla Linux Sunucusuna girmesine nasıl izin veririz?
/etc/ssh/sshd_config
Bazı Özel IP'lerin SSH oturum açma (RSA anahtar çifti) aracılığıyla Linux Sunucusuna girmesine nasıl izin veririz?
/etc/ssh/sshd_config
Yanıtlar:
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).
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). DROP
Senin 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.
iptables
sadece IPv4 trafiğine uygulanır. IPv6'yı dinleyen ssh dinleyen sistemler ile gerekli konfigürasyon yapılabilir ip6tables
.
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]
İ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 . Match
Dosyanın sonuna yerleştirmek önemlidir, çünkü tüm konfigürasyon satırları bir sonraki Match
satı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 .
#ListenAddress ::
olarak /etc/ssh/sshd_config
SSH 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 eth0
ise 192.168.3.4
nedenle 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.
SSH arka planının önceki yanıtı genişletmesi için bazı ek yapılandırmalar:
Dosyadaki AllowUsers
seç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_keys
belirli 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.