Sisteminizi ve verilerinizi korumak için Linux sisteminizin SSH bağlantısını güvence altına alın. Sistem yöneticilerinin ve ev kullanıcılarının benzer şekilde internete bakan bilgisayarları sağlamlaştırması ve güvenliğini sağlaması gerekir, ancak SSH karmaşık olabilir. İşte SSH sunucunuzu korumanıza yardımcı olacak on kolay hızlı kazanç.
SSH Güvenliği Temelleri
SSH kısaltması Güvenli Kabuk . "SSH" adı, SSH protokolünün kendisi veya sistem yöneticilerinin ve kullanıcıların bu protokolü kullanarak uzak bilgisayarlara güvenli bağlantılar kurmasına olanak tanıyan yazılım araçları anlamında birbirinin yerine kullanılır.
SSH protokolü, internet gibi güvenli olmayan bir ağ üzerinden güvenli bir bağlantı sağlamak için tasarlanmış şifreli bir protokoldür. Linux'ta SSH, OpenSSH proje. Bir klasik istemci-sunucu modeli , SSH istemcilerinden gelen bağlantıları kabul eden bir SSH sunucusu ile. İstemci, sunucuya bağlanmak ve Görüntüle uzak kullanıcıya oturum. Sunucu bağlantıyı kabul eder ve yürütür oturum.
Varsayılan yapılandırmasında bir SSH sunucusu, İletim Kontrol Protokolü ( TCP ) bağlantı noktası 22. Çünkü bu standart bir tanınmış liman için bir hedef tehdit aktörleri ve kötü niyetli botlar .
Tehdit aktörleri, açık bağlantı noktaları arayan bir dizi IP adresini tarayan botları başlatır. Bağlantı noktaları daha sonra istismar edilebilecek güvenlik açıkları olup olmadığını görmek için incelenir. "Güvendeyim, kötü adamların hedef alması için benden daha büyük ve daha iyi hedefler var" diye düşünmek yanlış bir mantıktır. Botlar herhangi bir liyakate göre hedef seçmiyor; sistematik olarak ihlal edebilecekleri sistemleri arıyorlar.
Sisteminizin güvenliğini sağlamadıysanız, kendinizi kurban olarak aday gösterirsiniz.
Güvenlik Sürtünmesi
Güvenlik sürtüşmesi, güvenlik önlemlerini uyguladığınızda kullanıcıların ve diğerlerinin yaşayacağı rahatsızlıktır. Uzun anılarımız var ve yeni kullanıcıları bir bilgisayar sistemine tanıttığımızı ve onların dehşet bir sesle sorup sormadıklarını hatırlayabiliyoruz. Gerçekten mi bir şifre girmek zorunda kaldı her zaman ana bilgisayara giriş yaptılar. Onlara göre bu güvenlik sürtüşmesiydi.
(Bu arada, parolanın icadı, Fernando J. Corbató , bilgisayar bilimcileri panteonundaki bir başka figür, birleşik çalışmaları, Unix .)
Güvenlik önlemlerinin alınması genellikle birileri için bir tür sürtüşme içerir. İşletme sahipleri bunun bedelini ödemek zorundadır. Bilgisayar kullanıcılarının aşina oldukları uygulamaları değiştirmeleri veya başka bir kimlik doğrulama ayrıntıları kümesini hatırlamaları veya başarılı bir şekilde bağlanmak için fazladan adımlar eklemeleri gerekebilir. Sistem yöneticilerinin yeni güvenlik önlemlerini uygulamak ve sürdürmek için yapacak ek işleri olacaktır.
Linux veya Unix benzeri bir işletim sistemini sertleştirmek ve kilitlemek çok hızlı bir şekilde işin içine girebilir. Burada sunduğumuz şey, üçüncü taraf uygulamalara ihtiyaç duymadan ve güvenlik duvarınızı kazmadan bilgisayarınızın güvenliğini artıracak bir dizi uygulaması kolay adımdır.
Bu adımlar, SSH güvenliğinde son söz değildir, ancak sizi varsayılan ayarlardan çok fazla sürtünme olmadan çok ileriye taşıyacaklardır.
SSH Protokolü Sürüm 2'yi kullanın
2006 yılında, SSH protokolü sürüm 1'den versiyon 2 . Bu önemli bir yükseltmeydi. Versiyon 2'nin versiyon 1 ile geriye dönük olarak uyumlu olmadığı, özellikle şifreleme ve güvenlikle ilgili o kadar çok değişiklik ve gelişme oldu. Versiyon 1 istemcilerinden gelen bağlantıları önlemek için, bilgisayarınızın sadece versiyon 2 istemcilerinden gelen bağlantıları kabul edeceğini şart koşabilirsiniz.
Bunu yapmak için düzenleyin
/ etc / ssh / sshd_config
dosya. Bunu bu makale boyunca çokça yapacağız. Bu dosyayı düzenlemeniz gerektiğinde, kullanacağınız komut budur:
sudo gedit / etc / ssh / sshd_config
Satırı ekleyin:
Protokol 2
Ve dosyayı kaydedin. SSH arka plan programı sürecini yeniden başlatacağız. Yine, bunu bu makale boyunca sık sık yapacağız. Bu, her durumda kullanılacak komuttur:
sudo systemctl sshd'yi yeniden başlat
Yeni ayarımızın yürürlükte olup olmadığını kontrol edelim. Farklı bir makineye atlayacağız ve test makinemize SSH yapmaya çalışacağız. Ve biz kullanacağız
-1
(protokol 1) seçeneği
ssh
protokol sürüm 1'i kullanma komutu.
ssh -1 [email protected]
Harika, bağlantı talebimiz reddedildi. Yine de protokol 2 ile bağlantı kurabildiğimizden emin olalım.
-2
(protokol 2) gerçeği kanıtlama seçeneği.
ssh -2 [email protected]
SSH sunucusunun şifremizi istemesi, bağlantının yapıldığının ve sunucuyla etkileşimde bulunduğunuzun olumlu bir göstergesidir. Aslında, modern SSH istemcileri varsayılan olarak protokol 2'yi kullanacaklarından, istemcimiz güncel olduğu sürece protokol 2'yi belirtmemize gerek yoktur.
ssh [email protected]
Ve bağlantımız kabul edildi. Dolayısıyla reddedilenler yalnızca daha zayıf ve daha az güvenli olan 1. protokol bağlantılarıdır.
Bağlantı Noktası 22'den Kaçının
Bağlantı noktası 22, SSH bağlantıları için standart bağlantı noktasıdır. Farklı bir bağlantı noktası kullanırsanız, sisteminize belirsizlik yoluyla biraz güvenlik ekler. Belirsizlik yoluyla güvenlik hiçbir zaman gerçek bir güvenlik önlemi olarak görülmez ve ben başka makalelerde buna karşı çıktım. Aslında, daha akıllı saldırı botlarından bazıları, basit bir bağlantı noktası listesine güvenmek ve normal hizmetleri sağladıklarını varsaymak yerine, tüm açık bağlantı noktalarını araştırır ve hangi hizmeti taşıdıklarını belirler. Ancak standart olmayan bir bağlantı noktası kullanmak, 22 numaralı bağlantı noktasındaki gürültüyü ve kötü trafiği azaltmaya yardımcı olabilir.
Standart olmayan bir bağlantı noktasını yapılandırmak için SSH yapılandırma dosyanızı düzenleyin:
sudo gedit / etc / ssh / sshd_config
"Bağlantı Noktası" satırının başındaki karma numarayı kaldırın ve "22" yi seçtiğiniz bağlantı noktası numarasıyla değiştirin. Yapılandırma dosyanızı kaydedin ve SSH arka plan programını yeniden başlatın:
sudo systemctl sshd'yi yeniden başlat
Bunun nasıl bir etkisi olduğunu görelim. Diğer bilgisayarımızda kullanacağız
ssh
sunucumuza bağlanmak için komut.
ssh
komut varsayılan olarak 22 numaralı bağlantı noktasını kullanır:
ssh [email protected]
Bağlantımız reddedildi. Tekrar deneyelim ve -p (bağlantı noktası) seçeneğini kullanarak 470 numaralı bağlantı noktasını belirleyelim:
ssh -p 479 [email protected]
Bağlantımız kabul edildi.
TCP Wrappers Kullanarak Bağlantıları Filtreleme
TCP Wrappers, anlaşılması kolaydır erişim kontrol Listesi . IP adresi veya ana bilgisayar adı gibi bağlantı isteğinin özelliklerine göre bağlantıları dışlamanıza ve izin vermenize olanak tanır. TCP sarmalayıcıları, uygun şekilde yapılandırılmış bir güvenlik duvarı yerine değil, bununla birlikte kullanılmalıdır. Bizim özel senaryomuzda, TCP sarmalayıcıları kullanarak işleri önemli ölçüde sıkıştırabiliriz.
Bu makaleyi araştırmak için kullanılan Ubuntu 18.04 LTS makinesine TCP sarmalayıcılar zaten yüklenmişti. Manjaro 18.10 ve Fedora 30'a yüklenmesi gerekiyordu.
Fedora'ya yüklemek için şu komutu kullanın:
sudo yum install tcp_wrappers
Manjaro'ya yüklemek için şu komutu kullanın:
sudo pacman -Syu tcp-sarmalayıcılar
İlgili iki dosya var. Biri izin verilenler listesini, diğeri ise reddedilenler listesini tutar. Reddetme listesini aşağıdakileri kullanarak düzenleyin:
sudo gedit /etc/hosts.deny
Bu açacak
gedit
Reddet dosyasının yüklü olduğu düzenleyici.
Şu satırı eklemeniz gerekiyor:
TÜM: TÜM
Ve dosyayı kaydedin. Bu, yetkilendirilmemiş tüm erişimi engeller. Şimdi kabul etmek istediğiniz bağlantılara yetki vermemiz gerekiyor. Bunu yapmak için, izin dosyasını düzenlemeniz gerekir:
sudo gedit /etc/hosts.allow
Bu açacak
gedit
izin dosyası yüklü olan düzenleyici.
SSH arka plan programı adını ekledik,
SSHD
Ve bağlantı kurmasına izin vereceğimiz bilgisayarın IP adresi. Dosyayı kaydedin ve kısıtlamaların ve izinlerin yürürlükte olup olmadığını görelim.
İlk olarak, içinde olmayan bir bilgisayardan bağlanmaya çalışacağız.
hosts.allow
dosya:
Bağlantı reddedildi. Şimdi makineden 192.168.4.23 IP adresine bağlanmayı deneyeceğiz:
Bağlantımız kabul edildi.
Buradaki örneğimiz biraz acımasızdır - yalnızca tek bir bilgisayar bağlanabilir. TCP sarmalayıcıları oldukça çok yönlüdür ve bundan daha esnektir. Destekler ana bilgisayar adları, joker karakterler ve alt ağ maskeleri IP adresi aralıklarından gelen bağlantıları kabul etmek için. Teşvik edilirsin man sayfasına bakın .
Şifresiz Bağlantı Taleplerini Reddet
Kötü bir uygulama olmasına rağmen, bir Linux sistem yöneticisi parolasız bir kullanıcı hesabı oluşturabilir. Bu, o hesaptan gelen uzaktan bağlantı isteklerinin kontrol edilecek parolası olmayacağı anlamına gelir. Bu bağlantılar kabul edilecek ancak doğrulanmayacaktır.
SSH için varsayılan ayarlar, şifresiz bağlantı isteklerini kabul eder. Bunu çok kolay bir şekilde değiştirebilir ve tüm bağlantıların doğrulanmasını sağlayabiliriz.
SSH yapılandırma dosyanızı düzenlememiz gerekiyor:
sudo gedit / etc / ssh / sshd_config
Dosyada "#PermitEmptyPasswords no" yazan satırı görene kadar ilerleyin. Hash'i kaldırın
#
satırın başından itibaren dosyayı kaydedin. SSH arka planını yeniden başlatın:
sudo systemctl sshd'yi yeniden başlat
Parola Yerine SSH Anahtarlarını Kullanın
SSH anahtarları, bir SSH sunucusunda oturum açmak için güvenli bir yol sağlar. Parolalar tahmin edilebilir, kırılabilir veya kaba kuvvetli . SSH anahtarları bu tür saldırılara açık değildir.
SSH anahtarları oluşturduğunuzda, bir anahtar çifti oluşturursunuz. Biri genel anahtar, diğeri ise özel anahtardır. Ortak anahtar, bağlanmak istediğiniz sunuculara yüklenir. Özel anahtar, adından da anlaşılacağı gibi, kendi bilgisayarınızda güvende tutulur.
SSH anahtarları, parola olmadan — sezgiye aykırı olarak — parola doğrulaması kullanan bağlantılardan daha güvenli bağlantılar kurmanıza olanak tanır.
Bir bağlantı isteğinde bulunduğunuzda, uzak bilgisayar, bilgisayarınıza geri gönderilen şifreli bir mesaj oluşturmak için kendi genel anahtarınızın kopyasını kullanır. Genel anahtarınızla şifrelendiğinden, bilgisayarınız özel anahtarınızla şifresini çözebilir.
Bilgisayarınız daha sonra mesajdan bazı bilgileri, özellikle de oturum kimliğini çıkarır, şifreler ve sunucuya geri gönderir. Sunucu, sizin genel anahtarınızın kopyasıyla şifresini çözebilirse ve mesajın içindeki bilgiler sunucunun size gönderdiği bilgilerle eşleşirse, bağlantınızın sizden geldiği onaylanır.
Burada 192.168.4.11'de SSH anahtarlı bir kullanıcı tarafından sunucuya bağlantı yapılmaktadır. Parola istenmediğini unutmayın.
ssh [email protected]
SSH anahtarları bir makaleyi tamamen hak eder. Elbette, sizin için bir tane var. İşte SSH anahtarları nasıl oluşturulur ve yüklenir .
İLİŞKİLİ: Linux Kabuğundan SSH Anahtarları Nasıl Oluşturulur ve Kurulur
Parola Kimlik Doğrulamasını Tamamen Devre Dışı Bırak
Elbette, SSH anahtarlarını kullanmanın mantıksal uzantısı, tüm uzak kullanıcılar bunları benimsemeye zorlanırsa, parola kimlik doğrulamasını tamamen kapatabilmenizdir.
SSH yapılandırma dosyanızı düzenlememiz gerekiyor:
sudo gedit / etc / ssh / sshd_config
"#PasswordAuthentication yes" ile başlayan satırı görene kadar dosyada ilerleyin. Hash'i kaldırın
#
satırın başından itibaren "evet" i "hayır" olarak değiştirin ve dosyayı kaydedin. SSH arka planını yeniden başlatın:
sudo systemctl sshd'yi yeniden başlat
X11 Yönlendirmeyi Devre Dışı Bırak
X11 yönlendirme, uzak kullanıcıların bir SSH oturumu üzerinden sunucunuzdan grafik uygulamaları çalıştırmasına olanak tanır. Bir tehdit aktörünün veya kötü niyetli kullanıcının elinde, bir GUI arayüzü kötü niyetli amaçlarını kolaylaştırabilir.
Siber güvenlikte standart bir mantra, eğer onu açmak için iyi bir nedeniniz yoksa kapatın. Bunu SSH yapılandırma dosyanızı düzenleyerek yapacağız:
sudo gedit / etc / ssh / sshd_config
"# X11 Yönlendirme no" ile başlayan satırı görene kadar dosyada ilerleyin. Hash'i kaldırın
#
satırın başından itibaren dosyayı kaydedin. SSH arka planını yeniden başlatın:
sudo systemctl sshd'yi yeniden başlat
Boşta Kalma Zaman Aşımı Değeri Ayarlayın
Bilgisayarınıza kurulmuş bir SSH bağlantısı varsa ve üzerinde belirli bir süre herhangi bir etkinlik yoksa, bir güvenlik riski oluşturabilir. Kullanıcının masasından ayrılma ve başka bir yerde meşgul olma ihtimali vardır. Masasının önünden geçen herkes oturup bilgisayarını ve SSH aracılığıyla bilgisayarınızı kullanmaya başlayabilir.
Bir zaman aşımı sınırı belirlemek çok daha güvenlidir. Etkin olmayan süre zaman sınırına uyarsa SSH bağlantısı kesilecektir. Bir kez daha SSH yapılandırma dosyanızı düzenleyeceğiz:
sudo gedit / etc / ssh / sshd_config
"#ClientAliveInterval 0" ile başlayan satırı görene kadar dosyada ilerleyin. Karmayı kaldırın
#
Satırın başından itibaren 0 rakamını istediğiniz değere değiştirin. 5 dakika olan 300 saniye kullandık. Dosyayı kaydedin ve SSH arka plan programını yeniden başlatın:
sudo systemctl sshd'yi yeniden başlat
Parola Girişimleri İçin Bir Sınır Belirleyin
Kimlik doğrulama girişimlerinin sayısında bir sınır belirlemek, parola tahminini ve kaba kuvvet saldırılarını engellemeye yardımcı olabilir. Belirlenen kimlik doğrulama isteği sayısından sonra, kullanıcının SSH sunucusuyla bağlantısı kesilecektir. Varsayılan olarak, sınır yoktur. Ancak bu hızla giderildi.
Yine, SSH yapılandırma dosyanızı düzenlememiz gerekiyor:
sudo gedit / etc / ssh / sshd_config
"#MaxAuthTries 0" ile başlayan satırı görene kadar dosyada ilerleyin. Hash'i kaldırın
#
Satırın başından itibaren 0 rakamını istediğiniz değere değiştirin. Burada 3 kullandık. Değişikliklerinizi yaptığınızda dosyayı kaydedin ve SSH arka plan programını yeniden başlatın:
sudo systemctl sshd'yi yeniden başlat
Bunu, bağlanmaya çalışarak ve kasıtlı olarak yanlış bir şifre girerek test edebiliriz.
MaxAuthTries sayısının, kullanıcıya izin verilen deneme sayısından bir fazla göründüğünü unutmayın. İki kötü denemeden sonra test kullanıcımızın bağlantısı kesilir. Bu, MaxAuthTries'in üçe ayarlanmasıyla yapıldı.
Kök Oturum Açmayı Devre Dışı Bırak
Linux bilgisayarınızda kök olarak oturum açmak kötü bir uygulamadır. Normal bir kullanıcı olarak giriş yapmalı ve
sudo
kök ayrıcalıkları gerektiren eylemler gerçekleştirmek için. Dahası, root'un SSH sunucunuzda oturum açmasına izin vermemelisiniz. Yalnızca normal kullanıcıların bağlanmasına izin verilmelidir. Bir idari görevi yerine getirmeleri gerekiyorsa, kullanmaları gerekir
sudo
çok. Bir kök kullanıcının oturum açmasına izin vermek zorunda kalırsanız, en azından onu SSH anahtarlarını kullanmaya zorlayabilirsiniz.
Son kez, SSH yapılandırma dosyanızı düzenlememiz gerekecek:
sudo gedit / etc / ssh / sshd_config
"#PermitRootLogin yasak-şifre" ile başlayan satırı görene kadar dosyada ilerleyin. Karmayı kaldırın
#
satırın başından itibaren.
- Root'un oturum açmasını tamamen önlemek istiyorsanız, "yasak-şifre" yerine "hayır" yazın.
- Root'un oturum açmasına izin verecekseniz ancak onları SSH anahtarlarını kullanmaya zorlayacaksanız, "parola yasakla" yı yerinde bırakın.
Değişikliklerinizi kaydedin ve SSH arka planını yeniden başlatın:
sudo systemctl sshd'yi yeniden başlat
Nihai Adım
Elbette, bilgisayarınızda SSH'nin çalışmasına hiç ihtiyacınız yoksa, devre dışı bırakıldığından emin olun.
sudo systemctl stop sshd
sudo systemctl sshd'yi devre dışı bırak
Pencereyi açmazsanız kimse içeri giremez.