Takip et

Ubuntu 20.04 Üzerinde SSH İçin Çok Faktörlü Kimlik Doğrulama (MFA) Kurulumu

Ubuntu 20.04 Üzerinde SSH İçin Çok Faktörlü Kimlik Doğrulama (MFA) Kurulumu Siber güvenlik, günümüzün dijital dünyasında her zamankinde

Ubuntu 20.04 Üzerinde SSH İçin Çok Faktörlü Kimlik Doğrulama (MFA) Kurulumu

Siber güvenlik, günümüzün dijital dünyasında her zamankinden daha kritik bir öneme sahiptir. Özellikle sunuculara uzaktan erişim sağlayan SSH (Secure Shell) gibi protokoller, potansiyel güvenlik açıkları nedeniyle hedef haline gelebilir. Varsayılan olarak yalnızca parola veya SSH anahtarı ile kimlik doğrulama, belirli senaryolarda yeterli güvenliği sağlamayabilir. İşte bu noktada Çok Faktörlü Kimlik Doğrulama (MFA) devreye girer. MFA, bir kullanıcının kimliğini doğrulamak için iki veya daha fazla bağımsız kimlik doğrulama faktörü gerektiren bir güvenlik sistemidir. Bu makalede, Ubuntu 20.04 işletim sistemi üzerinde SSH erişimi için MFA’nın nasıl kurulacağını adım adım ele alacağız.

Çok Faktörlü Kimlik Doğrulama (MFA) Nedir ve Neden Önemlidir?

Çok Faktörlü Kimlik Doğrulama (MFA), bir kullanıcının bir sisteme veya uygulamaya erişim sağlamak için birden fazla kimlik doğrulama türü sunmasını gerektiren bir güvenlik mekanizmasıdır. Geleneksel olarak, kimlik doğrulama genellikle “bildiğiniz bir şey” (örneğin, bir parola) veya “sahip olduğunuz bir şey” (örneğin, bir SSH anahtarı) olmak üzere tek bir faktöre dayanır. MFA ise bu faktörlerden en az ikisini birleştirerek güvenlik seviyesini önemli ölçüde artırır. Bu faktörler genellikle şunlardır:

* Bildiğiniz bir şey: Parola, PIN, güvenlik sorusunun cevabı.
* Sahip olduğunuz bir şey: Akıllı telefon (OTP uygulaması), donanım anahtarı (YubiKey), akıllı kart.
* Olduğunuz bir şey: Biyometrik veriler (parmak izi, yüz tanıma, retina taraması).

SSH bağlantılarında MFA kullanmak, özellikle uzaktan erişilen sunucular için hayati öneme sahiptir. Bir saldırganın parolanızı veya özel SSH anahtarınızı ele geçirmesi durumunda bile, ikinci faktöre (genellikle akıllı telefonunuzdaki bir OTP uygulaması tarafından üretilen tek kullanımlık kod) sahip olmadıkça sisteme erişim sağlayamaz. Bu, kaba kuvvet saldırılarına, kimlik avı saldırılarına ve diğer kimlik bilgisi hırsızlığı girişimlerine karşı ek bir savunma katmanı oluşturur. Kurumsal ortamlarda ise, PCI DSS, HIPAA, GDPR gibi çeşitli düzenleyici uyumluluk standartları da güçlü kimlik doğrulama mekanizmalarını zorunlu kılmaktadır ve MFA bu gereksinimleri karşılamak için temel bir araçtır. Bu makalede, en yaygın ve uygulaması kolay yöntemlerden biri olan Google Authenticator (PAM modülü aracılığıyla) kullanarak SSH için MFA kurulumunu detaylandıracağız.

Ön Gereksinimler

Bu kurulum rehberine başlamadan önce aşağıdaki maddelerin hazır olduğundan emin olmalısınız:

* Ubuntu 20.04 Sunucusu: SSH erişimine sahip, güncel bir Ubuntu 20.04 işletim sistemi kurulu bir sunucu.
* Sudo Yetkileri: Sunucuda sudo komutunu kullanabilen bir kullanıcı hesabına sahip olmalısınız.
* Temel Linux Bilgisi: Komut satırı kullanımı ve temel dosya düzenleme (nano veya vi gibi metin düzenleyiciler) konusunda bilgi sahibi olmanız faydalı olacaktır.
* SSH İstemcisi: Sunucunuza bağlanmak için bir SSH istemcisi (örneğin, Linux/macOS’ta terminal, Windows’ta PuTTY veya PowerShell).
* Akıllı Telefon ve Authenticator Uygulaması: Google Authenticator, Authy, Microsoft Authenticator gibi TOTP (Time-based One-Time Password) destekleyen bir mobil uygulama yüklü bir akıllı telefon.

PAM (Pluggable Authentication Modules) Nedir?

PAM (Pluggable Authentication Modules), Linux ve Unix benzeri işletim sistemlerinde kimlik doğrulama sürecini esnek ve modüler bir şekilde yönetmek için tasarlanmış bir çerçevedir. Geleneksel olarak, bir kullanıcı sisteme giriş yapmaya çalıştığında, kimlik doğrulama mantığı doğrudan oturum açma programına (örneğin, login veya sshd) gömülüydü. Bu durum, yeni kimlik doğrulama yöntemleri eklemek veya mevcut yöntemleri değiştirmek gerektiğinde, ilgili programın yeniden derlenmesini gerektiriyordu.

PAM, bu sorunu çözmek için bir soyutlama katmanı sunar. Bir uygulama (örneğin, SSH servisi) kimlik doğrulama, hesap yönetimi, parola değiştirme veya oturum açma/kapama gibi bir işlem gerçekleştirmesi gerektiğinde, doğrudan PAM kütüphanesini çağırır. PAM kütüphanesi ise, /etc/pam.d/ dizinindeki yapılandırma dosyalarına bakar ve hangi modüllerin hangi sırayla kullanılacağını belirler. Her bir modül (.so uzantılı dinamik kütüphane dosyası), belirli bir kimlik doğrulama yöntemini veya politikasını uygular.

Örneğin, SSH servisi bir kullanıcının kimliğini doğrulamak istediğinde, /etc/pam.d/sshd dosyasındaki kuralları izler. Bu kurallar, önce bir kullanıcının parolasını kontrol eden bir modülü, ardından bir kullanıcının hesabının kilitli olup olmadığını kontrol eden bir başka modülü ve son olarak da bizim MFA için ekleyeceğimiz pam_google_authenticator.so modülünü çalıştırabilir.

PAM’in en büyük avantajları şunlardır:

* Esneklik: Sistem yöneticileri, uygulamaları yeniden derlemeden veya değiştirmeden farklı kimlik doğrulama mekanizmalarını (parola, LDAP, Kerberos, MFA vb.) kolayca entegre edebilir.
* Modülerlik: Her bir kimlik doğrulama görevi, bağımsız bir modül tarafından yerine getirilir. Bu, geliştirme ve bakım süreçlerini basitleştirir.
* Merkezi Yönetim: Kimlik doğrulama politikaları /etc/pam.d/ altındaki yapılandırma dosyalarında merkezi olarak yönetilir.

SSH için MFA kurulumumuzda, libpam-google-authenticator paketi tarafından sağlanan pam_google_authenticator.so modülünü kullanacağız. Bu modülü /etc/pam.d/sshd dosyasına ekleyerek, SSH’in kullanıcı girişi sırasında Google Authenticator tarafından üretilen tek kullanımlık kodu istemesini sağlayacağız. Bu sayede, PAM’in modüler yapısından faydalanarak SSH’e ek bir güvenlik katmanı eklemiş olacağız.

Adım Adım Kurulum ve Yapılandırma

SSH için Çok Faktörlü Kimlik Doğrulama’yı kurmak, birkaç temel adımdan oluşur. Bu bölümde, Ubuntu 20.04 sunucunuzu hazırlamaktan, Google Authenticator’ı yapılandırmaya ve SSH servisini entegre etmeye kadar her adımı detaylı bir şekilde inceleyeceğiz.

1. Sunucuyu Hazırlama

İlk olarak, sunucunuzun güncel olduğundan ve gerekli PAM modülünü içerdiğinden emin olmalıyız.

1. Sistem Güncellemesi:
Sunucunuzdaki paket listesini güncelleyin ve yüklü paketleri en son sürümlerine yükseltin. Bu, olası güvenlik açıklarını kapatmak ve bağımlılık sorunlarını önlemek için iyi bir uygulamadır.

sudo apt update
    sudo apt upgrade -y

2. Gerekli Paketlerin Kurulumu:
Google Authenticator’ı SSH ile entegre etmek için libpam-google-authenticator paketini kurmanız gerekmektedir. Bu paket, Google Authenticator’ın PAM modülünü sağlar.

sudo apt install libpam-google-authenticator -y

Bu komut, gerekli PAM modülünü sisteminize yükleyecektir.

2. Google Authenticator’ı Yapılandırma

Her SSH kullanıcısı için Google Authenticator’ı ayrı ayrı yapılandırmanız gerekir. Bu adım, kullanıcının ev dizininde .google_authenticator adlı bir dosya oluşturacak ve bu dosyada kullanıcının gizli anahtarını (secret key) saklayacaktır.

1. Google Authenticator Kurulum Komutunu Çalıştırma:
MFA ile giriş yapmasını istediğiniz her kullanıcı için kendi hesabıyla sunucuya SSH ile bağlanın ve aşağıdaki komutu çalıştırın:

google-authenticator

Bu komut, size bir dizi soru soracak ve bir QR kodu, gizli anahtar ve kurtarma kodları üretecektir. Sorulara genellikle y (yes) yanıtı vermeniz önerilir:

* Do you want authentication tokens to be time-based (y/n): y (Zaman tabanlı OTP’ler kullanmak için. Bu, en yaygın ve önerilen yöntemdir.)
* Do you want to update the .google_authenticator file (y/n): y (Yapılandırmayı kullanıcının ev dizinine kaydetmek için.)
* Do you want to disallow multiple uses of the same authentication token (y/n): y (Aynı OTP kodunun birden fazla kullanılmasını engeller, replay saldırılarına karşı koruma sağlar.)
* Do you want to enable time-based throttling (y/n): y (Belirli bir süre içinde çok sayıda yanlış OTP girişimi yapıldığında deneme sayısını sınırlar. Kaba kuvvet saldırılarına karşı koruma sağlar.)

Komutun çıktısı aşağıdaki gibi olacaktır (QR kodu ve anahtarlar farklılık gösterecektir):

Do you want authentication tokens to be time-based (y/n) y
    https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/kullanici_adi@sunucu_adi%3Fsecret%3DKXQXXXXXXX5K
    Your new secret key is: KXQXXXXXXX5K
    Your verification code is 123456
    Your emergency scratch codes are:
      87654321
      23456789
      ...
    Do you want to update the .google_authenticator file (y/n) y
    Do you want to disallow multiple uses of the same authentication token (y/n) y
    Do you want to enable time-based throttling (y/n) y

2. QR Kodunu Mobil Uygulamaya Ekleme:
Çıktıdaki QR kodunu akıllı telefonunuzdaki Google Authenticator (veya benzeri) uygulamasıyla tarayın. Eğer tarayamıyorsanız, “Your new secret key is:” ile başlayan gizli anahtarı uygulamaya manuel olarak girebilirsiniz. Uygulama, her 30 saniyede bir değişen 6 haneli bir kod üretmeye başlayacaktır.

3. Kurtarma Kodlarını Güvenli Bir Yere Kaydetme:
Your emergency scratch codes are: başlığı altında listelenen kodlar, telefonunuzu kaybetmeniz veya OTP uygulamanıza erişememeniz durumunda sisteme giriş yapmanızı sağlayacak tek kullanımlık kurtarma kodlarıdır. Bu kodları yazdırın veya güvenli, çevrimdışı bir yerde saklayın. Bu kodları dijital ortamda saklamanız önerilmez. Her kod yalnızca bir kez kullanılabilir.

Bu adımı, MFA ile korunmasını istediğiniz her kullanıcı için tekrarlamanız gerektiğini unutmayın.

3. PAM’i SSH İçin Yapılandırma

Şimdi, SSH’in Google Authenticator PAM modülünü kullanmasını sağlamak için /etc/pam.d/sshd dosyasını düzenlememiz gerekiyor.

1. PAM Yapılandırma Dosyasını Düzenleme:
sudo yetkileriyle /etc/pam.d/sshd dosyasını bir metin düzenleyici ile açın:

sudo nano /etc/pam.d/sshd

2. PAM Modülünü Ekleme:
Dosyanın sonuna veya genellikle auth required pam_unix.so satırının hemen altına aşağıdaki satırı ekleyin:

auth required pam_google_authenticator.so

Bu satır, Google Authenticator modülünün kimlik doğrulama için gerekli olduğunu belirtir. Yani, kullanıcı hem diğer kimlik doğrulama faktörlerini (parola veya SSH anahtarı) hem de Google Authenticator kodunu sağlamak zorunda kalacaktır.

Dosyanızın bir kısmı şöyle görünebilir:

# Standard Un*x authentication.
    @include common-auth
    # here's the fallback if no module succeeds
    auth    requisite       pam_deny.so
    # This includes settings that are common to the SSH daemon.
    # auth required pam_unix.so try_first_pass # Bu satırın altında olabilir
    auth required pam_google_authenticator.so # Bu satırı ekleyin

Değişiklikleri kaydedin (nano’da Ctrl+O, Enter, sonra Ctrl+X).

4. SSH Servisini Yapılandırma

Son olarak, SSH servisini MFA’yı kullanacak şekilde yapılandırmamız gerekiyor. Bu, /etc/ssh/sshd_config dosyasında bazı değişiklikler yapmayı içerir.

1. SSH Servis Yapılandırma Dosyasını Düzenleme:
sudo yetkileriyle /etc/ssh/sshd_config dosyasını bir metin düzenleyici ile açın:

sudo nano /etc/ssh/sshd_config

2. Gerekli Parametreleri Ayarlama:
Dosya içinde aşağıdaki satırları bulun ve değerlerini belirtilen şekilde ayarlayın veya ekleyin:

* ChallengeResponseAuthentication: Bu parametre, SSH sunucusunun PAM modüllerinden gelen sorgu-yanıt (challenge-response) kimlik doğrulamasını kullanmasına izin verir. Bu, Google Authenticator kodunun istenmesi için gereklidir.

ChallengeResponseAuthentication yes

* UsePAM: Bu parametre, SSH sunucusunun kimlik doğrulama için PAM’i kullanıp kullanmayacağını belirler. Zaten yes olarak ayarlanmış olmalıdır, ancak kontrol etmekte fayda var.

UsePAM yes

* AuthenticationMethods: Bu parametre, kullanıcıların hangi kimlik doğrulama yöntemlerini kullanarak giriş yapabileceğini belirler. MFA’yı etkinleştirdiğimizde, bu parametreyi kullanarak SSH anahtarı veya parola ile birlikte keyboard-interactive (bu, PAM aracılığıyla OTP kodunu isteyecek yöntemdir) yöntemini belirtmeliyiz.

* Sadece SSH Anahtarı + MFA: Bu en güvenli yaklaşımdır. Kullanıcılar önce SSH anahtarlarıyla kimlik doğrulaması yapar, ardından OTP kodunu girer.

PasswordAuthentication no
            AuthenticationMethods publickey,keyboard-interactive

* Sadece Parola + MFA: Kullanıcılar önce parolalarını girer, ardından OTP kodunu girer.

PasswordAuthentication yes
            AuthenticationMethods password,keyboard-interactive

* SSH Anahtarı veya Parola + MFA (En Esnek): Kullanıcılar hem SSH anahtarı hem de parola ile MFA’yı kullanabilir. Bu, en esnek ancak potansiyel olarak daha az güvenli bir seçenektir (parola güvenliğine bağlı olarak).

PasswordAuthentication yes
            AuthenticationMethods publickey,keyboard-interactive,password,keyboard-interactive

Makalenin geri kalanında, en esnek olan publickey,keyboard-interactive,password,keyboard-interactive seçeneğini kullanarak devam edeceğiz. Bu, kullanıcıların SSH anahtarı veya parola ile ilk faktörü sağladıktan sonra, ikinci faktör olarak TOTP kodunu girmelerini sağlar. Eğer AuthenticationMethods satırı yorum satırı olarak (başında # işaretiyle) bulunuyorsa, # işaretini kaldırın ve yukarıdaki değeri ekleyin. Yoksa, dosyanın sonuna ekleyebilirsiniz.

* İsteğe Bağlı: Root Girişini Kısıtlama: Güvenlik için, root kullanıcısının doğrudan SSH ile giriş yapmasını engellemek iyi bir uygulamadır. Bunun yerine, normal bir kullanıcıyla giriş yapıp sudo kullanabilirsiniz.

PermitRootLogin no

Değişiklikleri kaydedin (nano’da Ctrl+O, Enter, sonra Ctrl+X).

3. SSH Servisini Yeniden Başlatma:
Yaptığınız değişikliklerin etkili olması için SSH servisini yeniden başlatmanız gerekir:

sudo systemctl restart sshd

ÖNEMLİ GÜVENLİK UYARISI: SSH servisini yeniden başlatmadan önce mevcut SSH oturumunuzu açık tutun. Eğer yapılandırmada bir hata yaptıysanız ve SSH servisi başlamazsa veya giriş yapamazsanız, açık oturumunuz üzerinden düzeltmeleri yapabilirsiniz. Aksi takdirde, sunucuya fiziksel erişiminiz yoksa kilitlenebilirsiniz.

5. Kurulumu Test Etme

Şimdiye kadar yaptığınız tüm yapılandırmaların doğru çalıştığından emin olmak için yeni bir SSH bağlantısı kurarak test edelim.

1. Yeni Bir Terminal Açın:
Mevcut SSH oturumunuzu açık bırakarak, bilgisayarınızda yeni bir terminal veya komut istemcisi açın.

2. SSH ile Bağlanmaya Çalışın:
MFA’yı yapılandırdığınız kullanıcı hesabıyla sunucunuza bağlanmaya çalışın:

ssh kullanıcı_adı@sunucu_ip_adresi

3. Kimlik Doğrulama Sürecini Takip Edin:
* İlk olarak, sunucu sizden SSH anahtarınızın parolasını (eğer kullanıyorsanız) veya kullanıcı parolanızı isteyecektir. Bu, ilk kimlik doğrulama faktörüdür.
* Parolanızı veya anahtarınızı girdikten sonra, sunucu sizden “Verification code” veya “Google Authenticator code” gibi bir ifadeyle ikinci bir faktör isteyecektir.
* Akıllı telefonunuzdaki Google Authenticator uygulamasını açın ve sunucunuz için üretilen 6 haneli kodu buraya girin.

4. Başarılı Girişi Doğrulayın:
Eğer her şey doğru yapılandırıldıysa, OTP kodunu girdikten sonra sunucuya başarılı bir şekilde giriş yapmalısınız. Bu, MFA’nın başarıyla kurulduğunu ve çalıştığını gösterir.

Unutmayın: Eğer herhangi bir sorunla karşılaşırsanız ve giriş yapamazsanız, açık bıraktığınız mevcut SSH oturumunuz üzerinden yapılandırma dosyalarını tekrar kontrol edip düzeltmeleri yapabilirsiniz. Sorun giderme bölümündeki adımlara da başvurabilirsiniz.

Gelişmiş Yapılandırma ve İpuçları

MFA kurulumunuzu daha da optimize etmek ve güvenliği artırmak için bazı gelişmiş yapılandırma seçenekleri ve ipuçları bulunmaktadır.

1. Farklı Kimlik Doğrulama Yöntemleri

Yukarıda AuthenticationMethods parametresini farklı şekillerde ayarlayabileceğinizi belirtmiştik. İşte bu seçeneklerin detaylı açıklamaları ve kullanım senaryoları:

* Sadece SSH Anahtarı ile MFA: Bu, genellikle en güvenli yöntem olarak kabul edilir. Kullanıcı, sunucuya bağlanmak için özel bir SSH anahtarına sahip olmalı ve ardından Google Authenticator kodunu sağlamalıdır. Parola kimlik doğrulaması tamamen devre dışı bırakılır.

PasswordAuthentication no
    AuthenticationMethods publickey,keyboard-interactive

Bu yapılandırmada, bir saldırganın hem SSH özel anahtarınıza hem de mobil cihazınızdaki OTP koduna erişmesi gerekir.

* Sadece Parola ile MFA: Kullanıcı, sunucuya bağlanmak için parolasını girmeli ve ardından Google Authenticator kodunu sağlamalıdır. SSH anahtar tabanlı kimlik doğrulama devre dışı bırakılır (veya kullanılmaz).

PasswordAuthentication yes
    AuthenticationMethods password,keyboard-interactive

Bu yöntem, parolanın güçlü olması durumunda ek bir güvenlik katmanı sağlar.

* SSH Anahtarı veya Parola ile MFA (En Esnek): Kullanıcı, SSH anahtarı veya parola kullanarak ilk kimlik doğrulamasını yapabilir, ardından Google Authenticator kodunu girer. Bu, kullanıcılara esneklik sunar ancak her iki ilk faktörün de güvenli olmasını gerektirir.

PasswordAuthentication yes
    AuthenticationMethods publickey,keyboard-interactive,password,keyboard-interactive

Bu, makalede önerilen varsayılan yapılandırmadır. Kullanıcılar, tercihlerine göre SSH anahtarı veya parola ile giriş yapabilirler.

* Root Girişini Kısıtlama (PermitRootLogin no): Güvenlik açısından, root kullanıcısının doğrudan SSH ile giriş yapmasını engellemek şiddetle tavsiye edilir. Bunun yerine, normal bir kullanıcı ile giriş yapıp, gerektiğinde sudo komutunu kullanarak yükseltilmiş ayrıcalıklar elde etmek çok daha güvenlidir. Bu, kaba kuvvet saldırılarının doğrudan root hesabını hedeflemesini engeller.

2. Kurtarma Kodları

Google Authenticator’ı yapılandırırken üretilen “emergency scratch codes” (kurtarma kodları) son derece önemlidir.

* Önemi: Telefonunuzu kaybetmeniz, OTP uygulamanızın bozulması veya bir şekilde OTP kodlarına erişiminizi kaybetmeniz durumunda, bu kodlar sunucunuza erişmenin tek yolu olabilir.
* Güvenli Saklama: Bu kodları kesinlikle bilgisayarınızda veya sunucunuzda dijital olarak saklamayın. Bir saldırgan bu kodlara erişirse, MFA korumasını atlayabilir. En iyi uygulama, kodları yazdırıp güvenli bir kasada, kilitli bir çekmecede veya başka bir çevrimdışı, fiziksel yerde saklamaktır. Her kod yalnızca bir kez kullanılabilir.

3. PAM Modülü Seçenekleri

/etc/pam.d/sshd dosyasına eklediğimiz auth required pam_google_authenticator.so satırı için bazı ek seçenekler mevcuttur. Bu seçenekler, pam_google_authenticator.so modülünün davranışını özelleştirmenize olanak tanır:

* nullok: Bu seçenek, bir kullanıcının .google_authenticator dosyasına sahip olmaması durumunda bile kimlik doğrulamasının başarılı olmasına izin verir. Başka bir deyişle, kullanıcılar MFA’yı yapılandırmamış olsalar bile giriş yapabilirler. Bu, özellikle geçici bir geçiş süreci için veya bazı kullanıcılar için MFA’yı isteğe bağlı hale getirmek istediğinizde kullanışlı olabilir. Ancak, bu seçeneğin MFA’nın güvenlik faydalarını azalttığını unutmayın. Güvenlik açısından dikkatli kullanılmalıdır.

auth required pam_google_authenticator.so nullok

* secret=/path/to/secret: Varsayılan olarak, pam_google_authenticator kullanıcının ev dizinindeki .google_authenticator dosyasını arar. Bu seçenekle, gizli anahtar dosyasının farklı bir konumunu belirleyebilirsiniz. Bu, özel durumlar veya merkezi bir yapılandırma için faydalı olabilir.
* user_specific: Bu seçenek, her kullanıcı için ayrı bir gizli anahtar dosyası kullanılmasını sağlar. Bu varsayılan davranıştır ve genellikle değiştirilmesine gerek yoktur.
* forward_pass: Bu seçenek, kullanıcının girdiği parolayı (eğer parola kimlik doğrulaması kullanılıyorsa) sonraki PAM modüllerine iletir. Bu, birden fazla kimlik doğrulama adımının tek bir parola girişiyle tamamlanmasını sağlayabilir.

Bu seçenekleri kullanırken, güvenlik etkilerini dikkatlice değerlendirmeniz önemlidir. Yanlış yapılandırma, beklediğinizden daha az güvenli bir duruma yol açabilir.

4. Güvenlik İpuçları

SSH erişiminizin genel güvenliğini artırmak için MFA’ya ek olarak uygulayabileceğiniz bazı ek ipuçları:

* Mobil Cihaz Güvenliği: OTP kodlarını üreten akıllı telefonunuzu PIN, parmak izi veya yüz tanıma gibi güçlü bir kilitle koruyun. Cihazınızın kaybolması veya çalınması durumunda yetkisiz erişimi engellemek için bu hayati öneme sahiptir.
* SSH Anahtarlarını Parola ile Koruma: Eğer SSH anahtarları kullanıyorsanız, özel anahtarınıza bir parola (passphrase) atayarak ek bir güvenlik katmanı ekleyin. Bu, anahtarınız ele geçirilse bile bir saldırganın onu hemen kullanamayacağı anlamına gelir.
* Güvenlik Duvarı (UFW): Sunucunuzda bir güvenlik duvarı (örneğin, UFW – Uncomplicated Firewall) etkinleştirin ve yalnızca belirli IP adreslerinden veya ağlardan SSH erişimine izin verin. Bu, gereksiz bağlantı denemelerini azaltır.

sudo ufw enable
    sudo ufw allow ssh # veya sudo ufw allow 22/tcp
    sudo ufw allow from 192.168.1.0/24 to any port 22 # Belirli bir ağdan erişim

* Fail2ban: Fail2ban gibi bir araç kurarak, başarısız giriş denemelerini izleyebilir ve belirli bir sayıda başarısız denemeden sonra kaynak IP adreslerini otomatik olarak engelleyebilirsiniz. Bu, kaba kuvvet saldırılarına karşı ek bir koruma sağlar.

sudo apt install fail2ban -y
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban

* Minimum Ayrıcalık Prensibi: Sunucunuzda her kullanıcıya yalnızca işini yapmak için ihtiyaç duyduğu minimum ayrıcalıkları verin. Tüm yönetim görevlerini root yerine sudo ile normal bir kullanıcı üzerinden yapın.

Bu gelişmiş yapılandırmalar ve güvenlik ipuçları, sunucunuzun SSH erişim güvenliğini MFA ile birleştirerek çok daha sağlam bir savunma hattı oluşturmanıza yardımcı olacaktır.

Sorun Giderme

MFA kurulumu sırasında veya sonrasında bazı sorunlarla karşılaşabilirsiniz. İşte yaygın sorunlar ve olası çözümleri:

1. Giriş Yapamıyorum

Bu, en yaygın ve en kritik sorundur. Eğer SSH ile giriş yapamıyorsanız, aşağıdaki adımları kontrol edin:

* Mevcut SSH Oturumunu Kullanın: Eğer kurulum sırasında açık bıraktığınız bir SSH oturumu varsa, onu kullanarak sunucuya erişebilir ve yapılandırma dosyalarını kontrol edebilirsiniz. Bu, sunucuya fiziksel erişiminiz olmadığında hayat kurtarıcıdır.
* Konsol/VM Erişimi: Eğer sunucuya fiziksel erişiminiz veya bir sanal makine (VM) konsolunuz varsa, doğrudan sunucuya bağlanarak yapılandırma dosyalarını düzeltebilirsiniz.
* /etc/pam.d/sshd Dosyasını Kontrol Edin:
* auth required pam_google_authenticator.so satırının doğru bir şekilde eklendiğinden emin olun.
* Yazım hatası olmadığından emin olun.
* Satırın başında # işareti olmadığından emin olun (yorum satırı olmamalı).
* /etc/ssh/sshd_config Dosyasını Kontrol Edin:
* ChallengeResponseAuthentication yes olarak ayarlandığından emin olun.
* UsePAM yes olarak ayarlandığından emin olun.
* AuthenticationMethods satırının doğru bir şekilde yapılandırıldığından ve sizin giriş yönteminizle uyumlu olduğundan emin olun (örneğin, publickey,keyboard-interactive veya password,keyboard-interactive).
* Yanlış veya çakışan başka bir AuthenticationMethods satırı olmadığından emin olun.
* SSH Servis Durumunu Kontrol Edin:
SSH servisinin çalışıp çalışmadığını kontrol edin:

sudo systemctl status sshd

Eğer servis başlamadıysa veya hata veriyorsa, çıktıyı dikkatlice inceleyin.
* Günlük Dosyalarını Kontrol Edin:
Hata mesajları için SSH servis günlüklerini kontrol edin:

sudo journalctl -u sshd -n 50 --no-pager

Veya genel kimlik doğrulama günlüklerini inceleyin:

sudo tail -f /var/log/auth.log

Bu günlükler, neden giriş yapamadığınıza dair ipuçları sağlayabilir.

2. Yanlış Kod Hatası (Verification code mismatch)

OTP kodunu doğru girdiğinizi düşündüğünüz halde “Verification code mismatch” veya benzeri bir hata alıyorsanız:

* Saat Senkronizasyonu (Mobil Cihaz): Akıllı telefonunuzun saatinin doğru ve otomatik olarak ayarlandığından (NTP senkronizasyonu) emin olun. TOTP algoritmaları zaman tabanlı olduğu için, mobil cihazınız ve sunucunuz arasındaki saat farkı birkaç saniyeden fazla olduğunda kodlar geçersiz hale gelebilir.
* Saat Senkronizasyonu (Sunucu): Sunucunuzun saatinin de doğru olduğundan emin olun. Sunucuda saati kontrol etmek için:

timedatectl

Eğer sunucunuzun saati yanlışsa, NTP servisi ile senkronize etmeniz gerekebilir:

sudo apt install ntp -y
    sudo systemctl enable ntp
    sudo systemctl start ntp

Veya timedatectl set-ntp true komutuyla sistem saatini otomatik olarak senkronize edebilirsiniz.
* Doğru Kodu Girdiğinizden Emin Olun: Google Authenticator uygulamasında birden fazla hesap varsa, doğru sunucuya ait kodu girdiğinizden emin olun. Kodun süresi dolmadan (genellikle 30 saniye) girmeniz gerekir.
* google-authenticator Ayarlarını Kontrol Edin: google-authenticator komutunu çalıştırırken “time-based” seçeneğine y yanıtını verdiğinizden emin olun. Eğer yanlışlıkla n yanıtı verdiyseniz, MFA zaman tabanlı çalışmayacaktır. Bu durumda, .google_authenticator dosyasını silip (veya içeriğini temizleyip) google-authenticator komutunu tekrar çalıştırmanız gerekebilir.

3. .google_authenticator Dosyası Yok veya Yanlış İzinler

Eğer bir kullanıcı için MFA yapılandırması yapıldıysa ancak pam_google_authenticator.so modülü dosyayı bulamıyorsa:

* Dosya Mevcut mu? Kullanıcının ev dizininde .google_authenticator dosyasının varlığını kontrol edin:

ls -la /home/kullanici_adi/.google_authenticator

Eğer dosya yoksa, ilgili kullanıcı olarak google-authenticator komutunu tekrar çalıştırmanız gerekir.
* Dosya İzinleri: .google_authenticator dosyasının izinleri 400 veya 600 olmalıdır (rw------- veya r--------). Yani sadece dosyanın sahibi tarafından okunabilir olmalıdır. Daha geniş izinler güvenlik riski oluşturur ve PAM modülü tarafından reddedilebilir.

chmod 600 /home/kullanici_adi/.google_authenticator

Sorun giderme adımlarını uygularken her zaman dikkatli olun ve kritik yapılandırma dosyalarını düzenlemeden önce yedeklemeyi unutmayın.

Sonuç

Ubuntu 20.04 üzerinde SSH erişimi için Çok Faktörlü Kimlik Doğrulama (MFA) kurmak, sunucularınızın güvenliğini önemli ölçüde artırmanın etkili ve nispeten basit bir yoludur. Bu makalede adım adım gösterildiği gibi, libpam-google-authenticator paketi ve PAM çerçevesi sayesinde, parola veya SSH anahtarı tabanlı kimlik doğrulamanın üzerine ek bir koruma katmanı ekleyebilirsiniz.

MFA’nın sunduğu en büyük avantaj, bir saldırganın ilk kimlik doğrulama faktörünüzü (parola veya SSH anahtarı) ele geçirmesi durumunda bile, ikinci faktöre (mobil cihazınızdaki tek kullanımlık kod) sahip olmadıkça sisteme erişim sağlayamayacak olmasıdır. Bu, kaba kuvvet saldırılarına, kimlik avı girişimlerine ve diğer kimlik bilgisi hırsızlığı tekniklerine karşı güçlü bir savunma hattı oluşturur.

Kurulum sürecinde sunucunuzu hazırladık, her kullanıcı için Google Authenticator’ı yapılandırdık, PAM’i ve SSH servisini entegre ettik ve son olarak kurulumu test ettik. Ayrıca, farklı kimlik doğrulama yöntemleri, kurtarma kodlarının önemi, PAM modülü seçenekleri ve genel güvenlik ipuçları gibi gelişmiş konulara da değindik. Karşılaşılabilecek yaygın sorunlara yönelik sorun giderme çözümleri de sunarak, sürecin mümkün olduğunca sorunsuz ilerlemesini hedefledik.

Siber güvenlik sürekli gelişen bir alandır ve sunucularınızı korumak için proaktif adımlar atmak hayati önem taşır. MFA, bu adımlardan sadece biridir, ancak en etkili olanlardan biridir. Bu kurulumla, Ubuntu 20.04 sunucularınızın güvenliğini artırmış ve dijital varlıklarınızı yetkisiz erişime karşı daha dirençli hale getirmiş olacaksınız. Güvenlik politikalarınızı düzenli olarak gözden geçirmeyi ve güncel güvenlik uygulamalarını takip etmeyi unutmayın.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version