Takip et

Ubuntu 16.04’te SSH için Çok Faktörlü Kimlik Doğrulamayı Kurma

Ubuntu 16. 04’te SSH için Çok Faktörlü Kimlik Doğrulamayı Kurma Sunucularınıza SSH üzerinden erişimin güvenliğini artırmak, günümüzün siber tehdit ortamında kritik öneme sahiptir.

Ubuntu 16.04’te SSH için Çok Faktörlü Kimlik Doğrulamayı Kurma

Sunucularınıza SSH üzerinden erişimin güvenliğini artırmak, günümüzün siber tehdit ortamında kritik öneme sahiptir. Standart şifre tabanlı kimlik doğrulama, zayıf şifreler, kaba kuvvet saldırıları veya kimlik bilgisi hırsızlığı gibi çeşitli zafiyetlere açıktır. Çok Faktörlü Kimlik Doğrulama (MFA), SSH erişimini önemli ölçüde güçlendirerek, saldırganların yalnızca bir şifreye sahip olmalarının yeterli olmadığını garanti eder. Bu makalede, Ubuntu 16.04 üzerinde SSH için MFA’yı nasıl kuracağınızı adım adım açıklayacağız. Bu süreçte, popüler ve güvenilir bir MFA çözümü olan Google Authenticator’ı (veya benzeri TOTP tabanlı uygulamaları) kullanacağız.

Neden SSH’de MFA Kullanmalısınız?

SSH, sunucularla etkileşim kurmak için en yaygın ve güçlü protokoldür. Ancak, varsayılan olarak yalnızca kullanıcı adı ve şifreye dayanır. Bu, aşağıdaki riskleri beraberinde getirir:

* Kaba Kuvvet Saldırıları: Saldırganlar, yaygın şifreleri veya otomatik araçları kullanarak tekrar tekrar giriş yapmaya çalışabilir.
* Kimlik Bilgisi Hırsızlığı: Phishing veya diğer yöntemlerle ele geçirilen şifreler, yetkisiz erişime yol açabilir.
* Zayıf Şifreler: Kullanıcıların tahmin edilmesi kolay veya tekrar kullanılan şifreler seçmesi, güvenlik açığını artırır.
* İç Tehditler: Yetkilendirilmiş ancak kötü niyetli bir kullanıcının erişimini kontrol etmek zorlaşır.

MFA, bu riskleri azaltmak için ikinci bir doğrulama katmanı ekler. Bu, genellikle kullanıcının bildiği bir şey (şifre), sahip olduğu bir şey (cep telefonu veya donanım token’ı) ve olduğu bir şey (biyometrik) kombinasyonunu içerir. SSH bağlamında, genellikle şifreye ek olarak, zaman tabanlı tek kullanımlık şifre (TOTP) üreten bir uygulama (Google Authenticator, Authy vb.) kullanılır.

Gereksinimler

Bu kılavuzu takip etmek için aşağıdaki gereksinimlere sahip olmanız gerekir:

* Ubuntu 16.04 LTS yüklü bir sunucu.
* Sunucuya SSH erişimi olan bir kullanıcı hesabı.
* Root veya sudo ayrıcalıkları olan bir kullanıcı.
* Akıllı telefonunuzda yüklü bir TOTP uygulaması (Google Authenticator, Authy, FreeOTP vb.).
* İnternet bağlantısı (paket kurulumları için).

Adım 1: Gerekli Paketleri Kurma

İlk adım, SSH’nin PAM (Pluggable Authentication Modules) ile entegrasyonunu sağlayacak ve Google Authenticator desteğini ekleyecek gerekli paketleri kurmaktır.

1. Paket Listesini Güncelleyin:

sudo apt update

2. libpam-google-authenticator Paketini Kurun:
Bu paket, PAM modülünü ve Google Authenticator uygulamasını yapılandırmak için gerekli araçları sağlar.

sudo apt install libpam-google-authenticator

Adım 2: Kullanıcı Bazında Google Authenticator’ı Yapılandırma

MFA’yı etkinleştirmek için, her bir kullanıcı için Google Authenticator’ı ayrı ayrı yapılandırmanız gerekir. Bu, kullanıcının kendi kimlik bilgileriyle etkileşimde bulunmasını sağlar.

1. MFA’yı Yapılandırmak İstediğiniz Kullanıcı Olarak Oturum Açın:
Eğer root olarak bağlanıyorsanız, MFA’yı etkinleştirmek istediğiniz kullanıcıya geçiş yapın.

sudo su - <kullanıcı_adı>

yerine ilgili kullanıcı adını yazın.

2. Google Authenticator’ı Başlatın:
Kullanıcının ev dizininde aşağıdaki komutu çalıştırın:

google-authenticator

Bu komut sizi bir dizi soruyla karşılayacaktır. Her soruyu dikkatlice okuyun ve aşağıdaki önerilere göre yanıtlayın:

* “Do you want authentication tokens to be time-based (y/n)”: y yazarak zaman tabanlı kimlik doğrulama (TOTP) istediğinizi belirtin. Bu, Google Authenticator gibi uygulamaların kullandığı standart yöntemdir.

* QR Kodu Görüntüleme: Komut, size bir QR kodu gösterecektir. Bu QR kodunu akıllı telefonunuzdaki Google Authenticator (veya seçtiğiniz başka bir TOTP uygulaması) ile taramanız gerekmektedir. QR kodu tarama işlemi, kimlik doğrulama uygulamanızın sunucunuzla senkronize olmasını sağlar.

* “Your new secret key is: [GİZLİ ANAHTAR]”: Bu gizli anahtar, QR kodunun temsil ettiği değerdir. Bu anahtarı güvenli bir yerde saklamanız önemlidir. Eğer QR kodunu tarayamazsanız, bu anahtarı manuel olarak TOTP uygulamanıza ekleyebilirsiniz.

* “Your verification code is [KOD] / “Your emergency scratch codes are:”: Komut size bir dizi kurtarma (scratch) kodu verecektir. Bu kodlar, TOTP uygulamanızın kaybolması, silinmesi veya telefonunuzun çalınması gibi durumlarda SSH’ye erişiminizi sağlamak için kullanılır. Bu kodları kesinlikle güvenli ve erişilebilir bir yerde (örneğin, bir şifre yöneticisinde veya basılı olarak güvenli bir ortamda) saklayın. Her kod yalnızca bir kez kullanılabilir.

* “Do you want me to update your “/home//.google_authenticator” file? (y/n)”: y yazarak devam edin. Bu, gizli anahtarınızı ve yapılandırma ayarlarınızı bu dosyaya kaydeder.

* “Do you want to disallow multiple uses of the same authentication token?…”: y yazarak devam edin. Bu, aynı doğrulama kodunun birden fazla kez kullanılmasını engelleyerek güvenliği artırır.

* “By default, tokens are good for 30 seconds… Do you want to enable rate-limiting?…”: y yazarak devam edin. Bu, saldırganların aynı kodu tekrar tekrar denemesini zorlaştırır.

* “By default, an accepted token is any token within a 30-second window… Do you want to enable time skew?…”: y yazarak devam edin. Bu, sunucu ve telefon saati arasındaki küçük farklılıkları tolere eder.

Bu adımlardan sonra, kullanıcısı için Google Authenticator yapılandırması tamamlanmış olur. Diğer kullanıcılar için de aynı adımları tekrarlayın.

Adım 3: SSH Yapılandırmasını Değiştirme

Şimdi, SSH’nin PAM aracılığıyla Google Authenticator’ı kullanmasını sağlamak için SSH sunucu yapılandırmasını değiştirmemiz gerekiyor.

1. SSH Yapılandırma Dosyasını Düzenleyin:
SSH sunucu yapılandırma dosyasını root veya sudo ayrıcalıklarıyla açın:

sudo nano /etc/ssh/sshd_config

2. Aşağıdaki Satırları Bulun veya Ekleyin ve Düzenleyin:
Dosya içinde aşağıdaki satırları bulun ve gerektiğinde aşağıdaki gibi düzenleyin. Eğer yoksa, dosyanın sonuna ekleyebilirsiniz:

* ChallengeResponseAuthentication yes: Bu satır, SSH’nin PAM tarafından sağlanan zorunlu yanıt kimlik doğrulamasını (challenge-response authentication) etkinleştirmesini sağlar. Google Authenticator bu mekanizmayı kullanır. Eğer bu satır varsa ve değeri no ise yes olarak değiştirin. Eğer yoksa, ekleyin.

* UsePAM yes: Bu satırın yes olarak ayarlandığından emin olun. Bu, SSH’nin kimlik doğrulama için PAM’ı kullanmasını sağlar. Genellikle varsayılan olarak etkindir.

* AuthenticationMethods publickey,password,keyboard-interactive (veya benzeri) gibi bir satır varsa, bu satırı düzenlemeniz gerekebilir. Bazı durumlarda, keyboard-interactive yöntemi Google Authenticator’ı tetikler. Ancak, daha güvenli bir yaklaşım, PasswordAuthentication no ve PubkeyAuthentication yes ile birlikte MFA’yı zorlamaktır. Eğer yalnızca şifre ile giriş yapıyorsanız ve MFA ekliyorsanız, PasswordAuthentication yes olmalıdır.

Önemli Not: Eğer SSH anahtarı tabanlı kimlik doğrulamayı (publickey authentication) kullanıyorsanız ve MFA’yı bu yöntemle birlikte kullanmak istiyorsanız, yapılandırma biraz daha karmaşık hale gelir. Bu makale, öncelikle şifre tabanlı kimlik doğrulama üzerine MFA eklemeyi odaklamaktadır. Anahtar tabanlı kimlik doğrulama ile MFA’yı birleştirmek için, AuthenticationMethods satırını publickey,keyboard-interactive şeklinde ayarlamanız gerekebilir.

* Güvenlik İpuçları:
* PasswordAuthentication no: Eğer SSH anahtar tabanlı kimlik doğrulamayı zaten kullanıyorsanız ve MFA’yı anahtarlarla birlikte kullanmak istiyorsanız, şifre tabanlı kimlik doğrulamayı kapatmak güvenliği artırır. Ancak, bu kılavuzun odak noktası şifre + MFA olduğundan, bu ayarı şimdilik yes olarak bırakmanız gerekebilir.
* PermitRootLogin no: Root hesabına doğrudan SSH erişimini kapatmak en iyi güvenlik uygulamalarından biridir.
* AllowUsers : Yalnızca belirli kullanıcıların SSH ile giriş yapmasına izin vermek için bu seçeneği kullanabilirsiniz.

Değişiklikleri yaptıktan sonra dosyayı kaydedin ve kapatın (nano’da Ctrl+X, Y, Enter).

3. SSH Servisini Yeniden Başlatın:
Yapılandırma değişikliklerinin etkili olması için SSH servisini yeniden başlatmanız gerekir:

sudo systemctl restart ssh

Adım 4: PAM Yapılandırmasını Değiştirme

Şimdi, SSH’nin kimlik doğrulama işlemi sırasında Google Authenticator PAM modülünü kullanmasını sağlamak için PAM yapılandırmasını ayarlamamız gerekiyor.

1. SSH PAM Dosyasını Düzenleyin:
SSH için PAM yapılandırma dosyasını root veya sudo ayrıcalıklarıyla açın:

sudo nano /etc/pam.d/sshd

2. Aşağıdaki Satırı Dosyanın Başına Ekleyin:
Dosyanın en üstüne aşağıdaki satırı ekleyin. Bu satır, kimlik doğrulama işleminin başında Google Authenticator’ı kontrol etmesini sağlar.

auth required pam_google_authenticator.so

Açıklama:
* auth: Bu bir kimlik doğrulama modülüdür.
* required: Bu modülün başarılı olması gerekmektedir. Eğer başarısız olursa, kullanıcı yine de giriş yapabilir ancak diğer modüllerin sonuçları dikkate alınır. Ancak, SSH bağlamında required genellikle MFA’nın zorunlu kılınmasını sağlar.
* pam_google_authenticator.so: Kullanılacak PAM modülünün adıdır.

Alternatif Yaklaşımlar (Daha Gelişmiş):
* Eğer MFA’yı yalnızca belirli koşullar altında zorunlu kılmak istiyorsanız (örneğin, yalnızca şifre tabanlı kimlik doğrulaması yapılıyorsa), sufficient veya optional gibi farklı kontrol tiplerini kullanabilirsiniz. Ancak, required en güvenli ve yaygın kullanılan seçenektir.
* Bazı sistemlerde, auth yerine auth required ile başlayan satırların yanına nullok eklenebilir. Bu, kullanıcının .google_authenticator dosyasının olmaması durumunda MFA’nın atlanmasına izin verir. Ancak, bu güvenlik açısından önerilmez. Bu makale, tüm kullanıcılar için MFA’yı zorunlu kılmayı hedefler.

3. Dosyayı Kaydedin ve Kapatın:
Nano’da Ctrl+X, Y, Enter tuşlarına basarak değişiklikleri kaydedin.

Adım 5: Test Etme

Artık MFA’nın çalıştığını test etme zamanı geldi.

1. Mevcut SSH Oturumunuzu Kapatın:
Eğer hala sunucuda SSH oturumundaysanız, kapatın.

2. Yeni Bir SSH Bağlantısı Kurun:
MFA’yı yapılandırdığınız kullanıcı ile sunucunuza tekrar SSH ile bağlanmayı deneyin:

ssh <kullanıcı_adı>@<sunucu_ip_adresi>

3. Kimlik Doğrulama İsteklerini Gözlemleyin:
* Önce her zamanki gibi şifrenizi girmeniz istenecektir.
* Şifrenizi doğru girdikten sonra, SSH istemciniz sizden “Verification code:” veya benzeri bir şey isteyecektir.
* Bu noktada, akıllı telefonunuzdaki Google Authenticator uygulamasında görünen güncel 6 haneli kodu girin.

Eğer her şey doğru yapılandırıldıysa, MFA kodunu doğru girdiğinizde sunucuya başarıyla giriş yapmanız gerekir.

Sorun Giderme Senaryoları:

* “Permission denied (publickey,password).” Hatası: Bu genellikle sshd_config dosyasındaki ChallengeResponseAuthentication yes veya UsePAM yes ayarlarından birinin eksik veya yanlış olmasından kaynaklanır.
* “Access denied” veya Başka Bir Hata: PAM yapılandırmasındaki (/etc/pam.d/sshd) auth required pam_google_authenticator.so satırının eksik veya yanlış eklenmiş olması muhtemeldir. Ayrıca, google-authenticator komutunun her kullanıcı için doğru çalıştırıldığından emin olun.
* QR Kodu Taranamıyor: QR kodunu taramak yerine, google-authenticator komutunun gösterdiği gizli anahtarı (secret key) manuel olarak TOTP uygulamanıza ekleyebilirsiniz.
* Telefon Saati Senkronizasyonu: TOTP uygulamalarının doğru çalışması için telefonunuzun saatinin doğru ve otomatik olarak senkronize edilmiş olması çok önemlidir. Saatte birkaç dakikalık sapma bile kimlik doğrulama hatalarına yol açabilir.
* Kurtarma Kodları: Eğer telefonunuzu kaybeder veya TOTP uygulamanızı silemezseniz, google-authenticator komutunun ilk kurulumda verdiği kurtarma kodlarını kullanarak sunucuya giriş yapabilirsiniz. Bu kodları kaybetmemeniz kritik öneme sahiptir.
* ~/.google_authenticator Dosyası: Her kullanıcının ev dizininde (/home//.google_authenticator) bu dosyanın bulunması ve doğru izinlere sahip olması gerekir.

SSH Anahtar Tabanlı Kimlik Doğrulama ile MFA

Eğer SSH anahtar tabanlı kimlik doğrulamayı kullanıyorsanız ve MFA’yı bu yöntemle birleştirmek istiyorsanız, sshd_config dosyasındaki AuthenticationMethods ayarını aşağıdaki gibi yapmanız önerilir:

AuthenticationMethods publickey,keyboard-interactive

Bu ayar, önce SSH anahtarının doğrulanmasını, ardından ikinci bir doğrulama katmanı olarak Google Authenticator (keyboard-interactive) doğrulamasını gerektirir. PasswordAuthentication no olarak ayarlanmışsa, şifre girişi istenmeyecektir.

Ancak, bu yapılandırmayı yaparken dikkatli olunmalıdır. Yanlış bir AuthenticationMethods ayarı, sunucuya erişiminizi tamamen kaybetmenize neden olabilir. Bu nedenle, değişiklikleri yapmadan önce mutlaka bir konsol erişiminiz olduğundan emin olun veya dikkatli bir şekilde test edin.

Sonuç

Ubuntu 16.04 sunucularınızda SSH için Çok Faktörlü Kimlik Doğrulamayı (MFA) kurmak, sunucularınızın güvenliğini önemli ölçüde artırır. Google Authenticator gibi TOTP tabanlı çözümler, standart şifrelerin ötesinde ek bir güvenlik katmanı sağlayarak yetkisiz erişim riskini azaltır. Bu makalede açıklanan adımları takip ederek, sunucularınıza erişimi daha güvenli hale getirebilirsiniz. Unutmayın ki, güvenlik sürekli bir süreçtir ve düzenli olarak gözden geçirilmesi ve güncellenmesi önemlidir. Kurtarma kodlarınızı güvenli bir şekilde saklamayı ve telefonunuzun saatini senkronize tutmayı ihmal etmeyin.

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

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.