En iyi 5 SSH Uygulaması
Giriş
Secure Shell (SSH) protokolünüzdeki güvenlik açıklarını en aza indirmek, Linux ortamınızın güvenliğini sağlamanın anahtarıdır.
Bu makalede, sunucularınızı daha güvenli hale getirmek için alabileceğiniz en yaygın Linux SSH güvenlikönlemlerini ele alıyoruz. Varsayılan SSH bağlantı noktasını değiştirerek, anahtar çiftlerini kullanarak ve önerilen diğer en iyi uygulamaları izleyerek, sisteminizin genel güvenliğini önemli ölçüde artırabilirsiniz.
SSH nedir?
Secure Shell (SSH) protokolü kriptografik etkinleştirir uzaktan sistem yönetimi korumalı güvensiz ağlar üzerinden ve dosya transferleri. SSH, birden çok şifreleme yöntemi kullanarak, bir istemci ile sunucu arasındaki bağlantıyı, kullanıcıların komutlarını, kimlik doğrulamasını ve çıktılarını yetkisiz erişim ve saldırılara karşı koruyarak güvence altına alır.
SSH protokolü artık veri merkezlerinde ve UNIX türevlerinden herhangi biri üzerinde çalışan hemen hemen her büyük kuruluş tarafından yaygın olarak kullanılmaktadır.
Güvenlik önlemleri söz konusu olduğunda, bunları birleştirmek, katmanlar halinde uygulamak ve yalnızca birini seçip yalnızca bu çözüme güvenmek çok önemlidir.
SSH bağlantıları hakkında daha fazla bilgi edinmek için SSH'nin nasıl çalıştığı hakkındaki makalemizi ziyaret edin .
1. Varsayılan SSH Bağlantı Noktasını Değiştirin
SSH bağlantısı için standart olmayan bir bağlantı noktası kullanmak, sunucunuza otomatik saldırılardan kaçınmanıza yardımcı olur. Ayrıca, bir bilgisayar korsanının radarında görünme şansını azaltmaya yardımcı olur ve onu daha az belirgin bir hedef haline getirir.
Not : OpenSSH sunucularını arayan bilgisayar korsanlarının çoğu, varsayılan SSH bağlantı noktası 22'yi hedefleyecektir .
Bu durumda, kullandıkları komut dosyaları yalnızca 22 numaralı bağlantı noktasındaki IP adreslerini arayacaktır . Sunucunuz bu gruba girerse, bu tür her otomatik saldırı günlük dosyalarınız üzerinde bir etki yaratacaktır. Sonuç olarak, birçok SSH sunucusu açıkları her sunucunun kapısını çalarak 24 saat çalıştığından, sunucunuzdaki yük önemli ölçüde artabilir.
Varsayılan SSH bağlantı noktasını değiştirmenin sunucunuzun güvenliğini artırmadığını unutmamak önemlidir. Ancak, otomatik saldırıları uzak tutmaya yardımcı olur.
Port Numarası Nasıl Değiştirilir
Başlamadan önce, varsayılan bağlantı noktası 22 yerine hangi bağlantı noktasını kullanacağınıza karar vermelisiniz. Karar vermeden önce birkaç şeyi göz önünde bulundurmalısınız:
Linux sunucunuzdaki bağlantı noktasını değiştirmek için şu adımları izleyin:
- Normalde yaptığınız gibi sunucuya SSH aracılığıyla bağlanın.
- Sizden sunucu şifresini girmenizi isteyen su komutunu kullanarak kök kullanıcıya geçin.
- Dizinde bulunan sshd yapılandırma dosyasını düzenlemek için seçtiğiniz bir metin düzenleyicisini kullanın
etc/ssh/
. Terminal içinde hiç metin editörü kullanmadıysanız, Nano kullanmanız tavsiye edilir . Aksi takdirde, günümüzde en çok kullanılan editörler oldukları için vi veya vim kullanın. Herhangi bir değişiklik yapmadan önce orijinal dosyayı yedeklemenizi tavsiye ederiz. - Yapılandırma dosyasını düzenlemek için bu komutu çalıştırın:
nano /etc/ssh/sshd_config
- Sshd_config dosyasının çıktısında "
Port 22
" yazan satırı bulun .
- Bağlantı noktası numarasını seçtiğiniz değere değiştirin.
#
Satırın başında " " olmadığından emin olun . - Düzenleyiciden çıkın ve değişiklikleri kaydetmek istediğinizi onaylayın.
- Değişikliklerin etkili olması için sshd hizmetini şu komutla yeniden başlatın :
service sshd restart
- SSH'nin, ona bağlanarak belirttiğiniz bağlantı noktasını dinlediğini doğrulayın.
İstemciniz aksi belirtilmedikçe her zaman varsayılan SSH bağlantı noktasını kullanacağından, artık bağlanırken bağlantı noktasını belirtmeniz gerekeceğini unutmayın.
Faydaları
Varsayılan SSH bağlantı noktasını değiştirme prosedürü, güvenlik düzeyini artırmazken, sizi en yaygın taramaların radarından uzaklaştırır. Bunu test etmenin kolay bir yolu, sunucunuzun varsayılan bağlantı noktasında sshd dinleyerek birkaç gün çalışmasına izin vermek ve ardından bunu standart olmayan bir bağlantı noktasına değiştirmektir. Sunucunuzdaki başarısız oturum açma sayısını karşılaştırın ve önemli ölçüde azaldığını göreceksiniz.
SSH için standart olmayan bir bağlantı noktası kullanarak:
- Rastgele taramalarla görülmekten kaçınırsınız.
- Sunucunuzu bulmak daha zordur. Saldırıların çoğu varsayılan bağlantı noktasını veya bazı varyantlarını tarayacak, ancak bağlantı reddedildiğinde devam edecek.
- SSH arka plan programı, komut dosyalı saldırılardan bağlantı istekleri almayacağı için ara verebilir. Sunucu yükü azaltılır ve günlük dosyası temiz kalarak gözden geçirirken size zaman kazandırır.
- Başarısız girişler için çok fazla uyarı almazsınız. Standart olmayan bir bağlantı noktası kullanıyorsanız ve birisi yine de sunucunuza erişmeye çalışıyorsa, bu muhtemelen sunucunuzun özellikle hedef alındığı ve alarmın komut dosyalı bir saldırıdan gelmediği anlamına gelir.
- Sshd'deki hatalar veya zayıf özel anahtarlar nedeniyle saldırıya uğramaya daha az maruz kalırsınız.
- Çoğu bilgisayar korsanı, varsayılan bağlantı noktasını kullanmadığınızı görürlerse kovulacaktır. Sunucunun uygun şekilde korunduğunun ve muhtemelen başka güvenlik önlemlerinin de alındığının bir işareti olacak ve sunucunuzu istenmeyen bir hedef haline getirecektir.
Dezavantajlar
SSH için varsayılan bağlantı noktasını değiştirmeye karar vermeden önce aklınızda bulundurmanız gereken bazı önlemler vardır. Standart olmayan bir bağlantı noktası çalıştırmanın dezavantajları şu anlama gelebilir:
- Sunucunuza bağlanması gereken herkesin değişiklik hakkında bilgilendirilmesi gerekecek ve yeni bağlantı noktasını kullanmaya başlaması gerekecektir.
- Sunucunuz için dış kaynaklı izleme kullanıyorsanız, onları değişiklikten haberdar etmeniz de gerekir. Aksi takdirde, bunu, sunucunun kapalı kalma süresine yol açabilecek potansiyel bir tehdit olarak değerlendirebilirler.
- SSH hizmetiyle ilgili güvenlik duvarı kuralları, yaptığınız değişikliklere göre incelenmeli ve değiştirilmelidir.
Bu dezavantajlardan bazıları muhtemelen sizin kullanım durumunuz için geçerli olmayacak, ancak dikkate alınmalıdır. Bağlantı noktasını değiştirmenin faydaları dezavantajlardan ağır basar ve sunucunuz için iyi bir ek güvenlik katmanı olduğunu kanıtlar.
2. Anahtar Çiftlerini Kullanarak Linux SSH Güvenliğini Geliştirin
İstemcilerin sunuculara kimlik doğrulaması için en güvenli yöntemlerden biri SSH anahtar çiftlerinin kullanılmasıdır . Sunucunuzu güvende tutmak için güçlü parolalar yeterli olabilir, ancak kalıcı kaba kuvvet saldırıları yine de onları kırabilir. Bu nedenle, anahtar çiftleriyle ek SSH sağlamlaştırmaya ihtiyacınız var.
SSH anahtarları bu tür saldırılara karşı dirençlidir ve şifresini çözmek neredeyse imkansızdır. Bir SSH anahtar çifti, gizli tutulan bir özel anahtar ve güvenli bir şekilde paylaşılabilen bir genel anahtar olmak üzere iki uzun karakter dizisinden oluşur . Amaçları parolalara benzer ve bir parola girmenize gerek kalmadan otomatik olarak bir SSH oturumu oluşturmanıza izin verir .
Anahtar Çifti Nasıl Oluşturulur
To SSH anahtarlarını kurmak , sunucuya bağlanmak için kullanılacak istemci bilgisayarda bir anahtar çifti oluşturmak gerekecektir. Böyle yaparak:
- Terminali başlatın ve standart OpenSSH aracıyla kullanılabilen SSH keygen yardımcı programını çalıştırın .
ssh-keygen –t rsa
- " Genel / özel RSA anahtar çifti oluşturuluyor " mesajını alacaksınız . Anahtarı varsayılan konuma kaydetmek istiyorsanız,
Enter
istendiğinde tuşuna basın . Anahtar, ana kullanıcının dizininde,~/.ssh
dizinde kaydedilecektir. Konumu değiştirmek için yeni yolu yazmanız yeterlidir. Öneri, varsayılan konuma bağlı kalmanızdır, böylece SSH istemcinizde herhangi bir değişiklik yapmanız gerekmez. Özel veya kimlik anahtarı olarakid_rsa
ve ilgili genel anahtar olarak kaydedilecektirid_rsa.pub
. - İsteğe bağlı olarak, bir parola ekleyebilirsiniz . Birini kullanmak istemiyorsanız,
Enter
devam etmek için tuşuna basın . Parola, yerel makinedeki özel anahtarı şifreleyerek ek bir güvenlik katmanı sağlar. Parolayı kırmak için, bir bilgisayar korsanının önce sisteme erişmesi gerekir, çünkü özel anahtar ağda açığa çıkmaz. O zaman bile, başarılı olmak zaman alacak ve bilgisayar korsanı diğer sunuculara erişim sağlamadan önce kullanılan anahtarı değiştirmenize izin verecektir. Olumsuz yanı, bu anahtarı kullanarak her bağlanmaya çalıştığınızda girmeniz gerekecek olmasıdır.
Bir anahtar çifti oluşturma süreci tamamlanmıştır.
Son ekran şuna benzer görünecektir:
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
8b:cd:0b:f7:38:4a:3f:ed:24:18:8d:54:34:2c:63:56 your_username@host
The key's randomart image is:
+--[ RSA 2048]----+
| ..o. |
| . E.o |
| + . o |
| . = = . |
| ..S |
| = + = + |
| . o + o . |
| . + + o |
| .. |
| |
+-----------------+
Not: Varsayılan 2048 bit yerine daha büyük 4096 bit anahtarlar oluşturarak kimlik doğrulama / yetkilendirmeyi daha da güvenli hale getirebilirsiniz. Bunu yapmak –b 4096
için ssh-keygen
komuta ekleyin . Bunun gibi görünecek:
ssh-keygen -t rsa -b 4096
Genel Anahtarın Kopyalanması
Makinenizde oluşturduğunuz anahtar çiftini SSH kimlik doğrulaması amacıyla kullanmak için, genel anahtarı istenen sunucuya yerleştirmeniz gerekir. Bunu yapmanın en basit yolu, OpenSSH'de bulunan aracı kullanmaktır:
ssh-copy-id
Prosedür kolaydır:
- Yazın
ssh-copy-id username@your_host_address
. - Bu ana bilgisayara ilk kez bağlanıyorsanız, bir orijinallik mesajı alacaksınız. Devam
Yes
etmek için yazın. - İstendiğinde şifrenizi girin ve araç,
~/.ssh/ id_rsa.pub
anahtarın içeriğini sunucudaki ana dizininauthorized_keys
altındaki dosyaya kopyalayacaktır~/.ssh
.
- Yazın
Not: Güvenlik nedeniyle, şifreyi yazarken hiçbir karakter görünmeyecektir.
- Bir mesaj alacaksınız:
Genel anahtarınız uzak sunucuya yerleştirildi ve artık hesabın şifresini girmeden oturum açabilirsiniz.
- Anahtarlarla kimlik doğrulamanın çalışıp çalışmadığını test etmek için sunucunuza ile bağlanın
ssh username@your_host_address
. Başarılı olursa, otomatik olarak oturum açarsınız. Daha önce bir parola belirlediyseniz, sunucuya erişim izni vermeden önce bu parolayı girmeniz gerekecektir.
- Anahtarlarla kimlik doğrulamanın çalışıp çalışmadığını test etmek için sunucunuza ile bağlanın
Anahtarlar Nasıl Çalışır?
Esasen, genel anahtar bir anahtar değildir. Başka bir makinede bir SSH hesabına koyabileceğiniz bir asma kilit gibi davranır. Eğer, 'ssh-keygen' programı çalıştırdığınızda, asma kilit ve onu açan, anahtar hem üretmek id_rsa.pub
ve id_rsa
sırasıyla.
Asma kilidin gerektiği kadar kopyasını oluşturabilir, bunları istediğiniz herhangi bir sunucuya dağıtabilir ve bunların tümünün kilidini açmak için doğru anahtara yalnızca siz sahip olacaksınız. Bu nedenle, özel anahtarı güvende tutmak önemlidir, çünkü dağıttığınız asma kilitlerin tüm kopyalarının kilidini açar .
Ana anahtar tehlikeye atılmadığı sürece genel anahtarınızı nereye koyduğunuz önemli değildir. Başka hiç kimse özel anahtara sahip olmadığından, yetkilendirme ve kimlik doğrulama için bu yöntem muhtemelen piyasadaki en güvenli yöntemdir ve şiddetle tavsiye edilir.
3. Sunucu SSH Kök Girişini Devre Dışı Bırakın
Linux sunucu dağıtımlarında varsayılan olarak etkin dış kök erişimi vardır. Bilgisayar korsanları şifreyi kaba kuvvet saldırılarıyla kırmaya çalışabileceğinden, bu ciddi bir güvenlik tehdidi olabilir. Kök oturum açmayı devre dışı bırakmanız ve normal bir hesap ve kök kullanıcıya geçmek için bir komut kullanmanız önerilir . su
–
Kök girişini devre dışı bırakmadan önce, kök erişimi sağlayabilecek bir hesap eklediğinizden emin olun. Bunu yapmak için aşağıdaki adımları izleyin:
- Sunucuda kök olarak oturum açmak için SSH'yi kullanın .
- Ana yapılandırma dosyasını açmak için bir metin düzenleyici kullanın. Bu sefer vi editörünü kullanacağız .
vi /etc/ssh/sshd_config
- "
PermitRootLogin_yes
" Yazan satırı bulun ve olarak değiştirinPermitRootLogin_no
. Bulmak için birkaç satır aşağı kaydırmanız gerekebilir. - Giriş yapmak için kullanacağınız kullanıcı hesabını eklemeniz önemlidir . Söz konusu kullanıcı adıyla başka bir satır eklemeniz yeterlidir:
AllowUsers your_username_here
- Yaptığınız değişiklikleri kaydedin ve ardından metin düzenleyiciden çıkın .
- Yeniden başlatın SSH hizmetini ama yok henüz yakın kök oturumu. İçin Ubuntu ve Debian kullanım
sudo service ssh restart
Fedora ve lehte / CentOS kullanmakservice ssh restart
komutu. - Yeni bir terminal penceresi açın ve artık eklediğiniz kullanıcı olarak oturum açabileceğinizi doğrulayın. Çalıştığını onayladıktan sonra , aktif kök oturumundan çıkın .
4. Sunucunuzda Şifre Tabanlı Girişleri Devre Dışı Bırakın
SSH kimlik doğrulaması için SSH anahtarları kullanıyorsanız, sunucu şifre kimlik doğrulamasını tamamen devre dışı bırakabilirsiniz. Bu, sunucunuzu kaba kuvvet saldırılarına ve parolanızı kırma girişimlerine karşı korumanın başka bir yoludur. Devam etmeden önce, SSH anahtar tabanlı kimlik doğrulamasının sunucudaki kök hesap için veya sudo erişimi olan bir hesap için çalışıp çalışmadığını iki kez kontrol edin .
Hazır olduğunuzda şu adımları tamamlayın:
- Sunucuda kök olarak veya sudo ayrıcalıklarıyla oturum açmak için SSH anahtarlarını kullanın .
- Sshd_config dosyasını açmak için bir metin düzenleyici kullanın . Vi kullanacağız :
vi /etc/ssh/sshd_config
- Yazan
PasswordAuthentication
ve değiştiren satırı arayınPasswordAuthentication_no
. Varsa satırın açıklamasını kaldırdığınızdan emin olun#
. - Yaptığınız değişiklikleri kaydedin ve ardından metin düzenleyiciden çıkın .
- Değişiklikleri uygulamak için SSH hizmetini yeniden başlatın . Ubuntu / Debian kullanımı için
sudo service ssh restart
ve Fedora / CentOS içinservice ssh restart
komutu kullanın.
- Yazan
Tebrikler, hesap şifrelerini kullanarak SSH üzerinden oturum açma seçeneğini başarıyla devre dışı bıraktınız. SSH Daemon, özel / genel anahtar çiftleri içermeyen tüm kimlik doğrulama isteklerini göz ardı edecektir.
5. iptables Kullanarak SSH Erişimini Kısıtlayın
Iptables, güvenlik duvarı kurallarını yapılandırmak ve sunucunuza gelen ve giden trafiği izlemek / filtrelemek için kullanılan bir Linux yardımcı programıdır . Varsayılan olarak çoğu Linux dağıtımına dahildir.
İptables ile, IP adresi, bağlantı noktası veya ağ protokolü ile farklı hizmet türleri için trafiği sınırlayan veya buna izin veren kurallar tanımlayabilir ve böylece sunucunuzun güvenliğini önemli ölçüde artırabilirsiniz. Bizim durumumuzda, gelen SSH trafiğini bir IP adresi veya alt ağ hariç herkes için kısıtlamak üzere güvenlik duvarı kuralları belirleyeceğiz.
Bu şekilde, bağlantı noktası 22'yi engellemek yalnızca sunucularınıza yetkisiz erişimi durdurmakla kalmaz, aynı zamanda DDoS saldırılarını da durdurabilir veya önleyebilir .
Bu adımı atarken, SSH trafiğini tamamen engelleyerek kendinizi kilitlemediğinizden emin olmalısınız. Gelen SSH bağlantıları için belirli bir IP adresine veya alt ağa izin vermek için yalnızca birkaç komut kullanmanız gerekecektir.
Not : Komutlar büyük / küçük harfe duyarlıdır.
- Bu kural, yazdığınız IP adresini beyaz listeye alır. Lütfen komuttaki örnek IP'yi IP'nizle değiştirin. 10.10.10.0/24 gibi bir alt ağ da kullanabilirsiniz.
sudo iptables -A INPUT -p tcp -s 123.456.78.90 –dport 22 -j ACCEPT
- Kuralları kaydetmeniz gerekir, böylece yeniden başlattıktan sonra onları kaybetmezsiniz:
sudo iptables-save
Tüm iptables kurallarının listesini görmek isterseniz, komutu kullanabilirsiniz . Paket, bayt ve hedef bilgileri gibi daha fazla ayrıntı eklemek için yukarıdaki komuta ekleyin . Hepsine ekleyin ve çıktı sayısal formatta görüntülenecektir.iptables
–L
–v
-n
Tüm kuralları sıfırlamak ve temiz başlamak istiyorsanız, flush komutunu kullanın . Bu, her şeyin istediğiniz gibi ayarlanıp ayarlanmadığından emin değilseniz, kullanışlı olan iptables yapılandırmasını temizleyecektir.iptables
–F
Iptables parametreleri ve Seçenek Tanımları
Yukarıdaki örneklerde kullanılan iptables parametreleri, seçenekleri ve değerlerinin yanı sıra daha önce bahsedilmeyen birkaçı için bazı açıklamalar.
Değer | Açıklama |
KABUL ETMEK | Paketlerin geçmesine izin verir |
DÜŞÜRMEK | Paketleri engeller |
DÖNÜŞ | Mevcut zinciri atlamayı ve önceki (çağıran) zincirdeki bir sonraki kurala devam etmeyi söyler |
> Parametre | Açıklama |
-c | sayaçlar - belirli bir kuralın paket ve bayt sayaçlarını ayarlamaya izin verir |
-d | hedef - adres, ana bilgisayar adı veya adres vb. olabilir. |
-f | parça - kuralı ikinciye ve onu izleyen parçalara uygular |
-g | git zinciri - eylemin kullanıcı tanımlı bir zincirde devam edeceğini belirtir |
-ben | arabirim içi - paketlerin geldiği arabirimin adını belirtir |
-j | atlama - bir paket kuralla eşleşirse eylemi belirtir |
-Ö | out-interface - giden bir paketin arabiriminin adı |
-p | protokol - SSH, TCP, UDP ve FTP gibi mevcut herhangi bir protokol |
-s | kaynak - bir adres, ana bilgisayar adı veya adres vb. olabilir. |
Zincir | Açıklama |
GİRİŞ | Gelen paketleri kontrol eder |
İLERİ | Sunucunuza gelen ancak başka bir yere giden paketleri iletir |
ÇIKTI | Sunucunuzdan çıkan paketleri filtreler |
Seçenek | Açıklama |
-A | ekle - seçili zincirin bir (veya daha fazla) kuralı ekler |
-C | kontrol - seçili zincirdeki kriterlere uyan bir kuralı kontrol eder |
-D | sil - seçili zincirden yalnızca bir kuralı siler |
-F | flush - tanımlanmış tüm iptables kurallarını siler |
-BEN | ekle - seçili zincire bir kural ekle |
-L | liste - seçilen zincirin kurallarını görüntüler |
-n | sayısal - IP adresini / ana bilgisayar adını ve dönüş değerini sayısal bir biçimde gösterir |
-N | new-chain <name> - yeni bir kullanıcı tanımlı zincir oluşturur |
-v | ayrıntılı - ek bilgi sağlamak için -L ile kombinasyon halinde kullanılır |
-X | delete-chain <name> - kullanıcı tanımlı zinciri siler |
Sonuç, SSH Güvenliği ve Güçlendirme En İyi Uygulamaları
İster yeni bir sunucu, ister sanal bir makine oluşturuyor olun, ortamınızda birden çok güvenlik katmanı uygulamak iyi bir uygulamadır. İşletmeler genellikle altyapılarını mümkün olan en kısa sürede kurmaya isteklidir, ancak gerekli güvenlik önlemlerinin en başından itibaren uygulanması gerekir.
Yukarıda listelenen Linux SSH güvenlik yöntemlerini kullanırsanız , buluttaki yaygın güvenlik tehditlerindenkaçınabilmeniz gerekir .
Bilgisayar korsanlarının sunucularınıza girmesini ve herhangi bir hasarı sınırlamasını zorlaştırın. Sunucunuzu ağda kullanılabilir hale getirmeden önce bu en iyi uygulamalardan olabildiğince çoğunu uyguladığınızdan emin olun.
Yorumlar
Yorum Gönder