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). 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.
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 . 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 .
#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.
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.