Takip et

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

CentOS 8 Üzerinde SSH İçin Çok Faktörlü Kimlik Doğrulama (MFA) Kurulumu Giriş Günümüzün dijital dünyasında, sunucu güvenliği her zama

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

Giriş

Günümüzün dijital dünyasında, sunucu güvenliği her zamankinden daha kritik bir öneme sahiptir. Özellikle uzaktan erişim için kullanılan Secure Shell (SSH) protokolü, sunuculara ve kritik verilere açılan bir kapı görevi görür. Varsayılan olarak SSH, genellikle parola tabanlı veya SSH anahtarı tabanlı kimlik doğrulama yöntemlerini kullanır. Her iki yöntem de güçlü parolalar veya güvenli anahtarlar kullanıldığında oldukça güvenli olsa da, tek bir kimlik doğrulama faktörüne dayanmak, potansiyel güvenlik açıklarına davetiye çıkarabilir. Brute-force saldırıları, parola tahminleri veya ele geçirilmiş anahtarlar, yetkisiz erişime yol açabilir.

İşte tam da bu noktada Çok Faktörlü Kimlik Doğrulama (MFA) devreye girer. MFA, 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 yöntemidir. Bu faktörler genellikle üç kategoriden birine girer:
1. Bildikleriniz: Parola, PIN gibi bilgiler.
2. Sahip Olduklarınız: Akıllı telefon, donanım token’ı, USB anahtarı gibi fiziksel cihazlar.
3. Olduğunuz Şeyler: Parmak izi, yüz tanıma, retina taraması gibi biyometrik veriler.

SSH için MFA uygulandığında, bir saldırganın sadece parolayı bilmesi veya anahtarı ele geçirmesi yeterli olmaz. Aynı zamanda, kullanıcının sahip olduğu ikinci bir faktöre de (genellikle akıllı telefonundaki bir uygulama tarafından üretilen tek kullanımlık kod) sahip olması gerekir. Bu, yetkisiz erişim riskini önemli ölçüde azaltır ve sunucu güvenliğini katmanlı bir şekilde artırır.

Bu makalede, CentOS 8 işletim sistemi üzerinde çalışan bir SSH sunucusu için Google Authenticator tabanlı Zaman Tabanlı Tek Kullanımlık Parola (TOTP) kullanarak Çok Faktörlü Kimlik Doğrulama’nın nasıl kurulacağını adım adım ele alacağız. Bu yöntem, yaygın olarak kullanılan ve nispeten kolayca yapılandırılabilen bir çözümdür.

Ön Gereksinimler

MFA kurulumuna başlamadan önce aşağıdaki ön gereksinimlerin karşılandığından emin olun:

* CentOS 8 Sunucusu: Kurulum yapacağınız aktif bir CentOS 8 sunucusu.
* SSH Erişimi: Sunucuya SSH üzerinden erişim sağlayabilen bir kullanıcı hesabınız olmalı. Bu hesap sudo yetkilerine sahip olmalı veya doğrudan root kullanıcısı olmalısınız. Ancak güvenlik açısından root kullanıcısı ile doğrudan SSH erişimi önerilmez.
* Temel Linux Komut Bilgisi: yum veya dnf paket yöneticisi, dosya düzenleme (vi, nano), servis yönetimi (systemctl) gibi temel Linux komutlarına aşina olmanız beklenir.
* EPEL Deposu: google-authenticator paketi EPEL (Extra Packages for Enterprise Linux) deposunda bulunur. Kurulumdan önce bu deponun sunucunuzda etkinleştirilmiş olması gerekir. Eğer etkin değilse, kurulum adımlarında nasıl etkinleştirileceği anlatılacaktır.
* NTP Senkronizasyonu: TOTP tabanlı MFA, zaman senkronizasyonuna dayandığı için sunucunuzun doğru zamanı gösterdiğinden emin olmanız kritik öneme sahiptir. Yanlış zaman ayarları, doğrulama kodlarının geçersiz olmasına neden olabilir. Sunucunuzun NTP (Network Time Protocol) ile senkronize olduğundan emin olun.
* Akıllı Telefon: Google Authenticator veya benzeri bir TOTP uygulamasını (Authy, Microsoft Authenticator vb.) kurabileceğiniz bir akıllı telefonunuz olmalı.

Adım 1: Gerekli Paketlerin Kurulumu

İlk adım olarak, Google Authenticator modülünü ve varsa eksik olan PAM (Pluggable Authentication Modules) bileşenlerini kurmamız gerekiyor.

EPEL Deposunun Etkinleştirilmesi

Eğer EPEL deposu sunucunuzda etkin değilse, aşağıdaki komutla etkinleştirebilirsiniz:

sudo dnf install epel-release -y

Bu komut, EPEL deposunu sisteminize ekleyecektir.

Google Authenticator ve PAM Geliştirme Paketlerinin Kurulumu

Şimdi google-authenticator paketini ve PAM modülleri için gerekli olabilecek geliştirme paketlerini kuralım. pam-devel paketi genellikle PAM modüllerinin derlenmesi için gerekli olsa da, google-authenticator paketi genellikle önceden derlenmiş modülü içerir. Yine de, eksiklik durumunda kurulmasında fayda vardır.

sudo dnf install google-authenticator pam pam-devel -y

Bu komutlar, google-authenticator uygulamasını ve ilgili PAM modülünü sisteminize kuracaktır.

Adım 2: PAM Modülünün Yapılandırılması

PAM (Pluggable Authentication Modules), Linux sistemlerinde kimlik doğrulama, hesap yönetimi, oturum yönetimi ve parola yönetimi gibi güvenlik işlemlerini modüler bir şekilde yöneten bir çerçevedir. Bu sayede, farklı kimlik doğrulama yöntemleri (parola, parmak izi, tek kullanımlık kodlar vb.) sisteme kolayca entegre edilebilir. SSH servisi de kimlik doğrulaması için PAM’i kullanır.

sshd servisi için PAM yapılandırmasını düzenleyerek Google Authenticator modülünü devreye alacağız.

sshd PAM Yapılandırma Dosyasının Yedeklenmesi

Herhangi bir yapılandırma değişikliği yapmadan önce, orijinal dosyayı yedeklemek iyi bir uygulamadır.

sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.bak

sshd PAM Dosyasının Düzenlenmesi

Şimdi sshd için PAM yapılandırma dosyasını (/etc/pam.d/sshd) bir metin düzenleyici ile açın:

sudo nano /etc/pam.d/sshd

Bu dosyanın içine aşağıdaki satırı eklememiz gerekiyor:

auth required pam_google_authenticator.so

Bu satırın eklenme yeri önemlidir. Genellikle, kullanıcıdan parola istenmeden önce veya parola doğrulamasından hemen önce eklenir. Eğer SSH anahtarı ile giriş yapılıyorsa ve MFA da isteniyorsa, auth sufficient pam_unix.so satırından sonra veya auth include password-auth satırından önce eklemek uygun olabilir. Ancak en basit ve yaygın senaryoda, MFA’yı zorunlu kılmak için dosyanın en üstüne veya auth substack password-auth satırından hemen önce eklemek genellikle işe yarar.

Önerilen yerleştirme, dosyanın başında, #%PAM-1.0 satırının hemen altına veya auth substack password-auth satırının önüne eklemektir:

#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
auth       required     pam_google_authenticator.so  # Bu satırı ekleyin

... dosyanın geri kalanı ...

Bazı durumlarda, auth substack password-auth satırı yerine auth include common-auth veya benzeri bir yapılandırma görebilirsiniz. Önemli olan, Google Authenticator modülünün, kullanıcının kimlik doğrulaması sırasında çağrıldığından emin olmaktır. required anahtar kelimesi, bu modülün başarılı olması gerektiğini belirtir. Eğer bu modül başarısız olursa (örneğin yanlış kod girilirse), kimlik doğrulama işlemi de başarısız olur.

Ek PAM Seçenekleri:
pam_google_authenticator.so modülüne bazı seçenekler ekleyebilirsiniz:
* nullok: Kullanıcıların ~/.google_authenticator dosyası yoksa, PAM modülünün başarılı olmasına izin verir. Bu, MFA’yı isteğe bağlı hale getirmek için kullanılabilir, ancak güvenlik açısından önerilmez. Genellikle kurulum sırasında test amaçlı kullanılabilir, ancak daha sonra kaldırılmalıdır.
* user_token_only: Bu seçeneği kullanırsanız, kullanıcıdan sadece TOTP kodu istenir, parola istenmez. Bu, SSH anahtarı ile giriş yapan ve ardından MFA ile ek doğrulama yapmak isteyen kullanıcılar için kullanışlı olabilir. Ancak bu senaryoda SSH anahtarı kimlik doğrulamasını doğru yapılandırmanız gerekir.
* secret=/path/to/secret: Varsayılan olarak sırlar kullanıcının ~/.google_authenticator dosyasında saklanır. Bu seçenek ile farklı bir yol belirtebilirsiniz.

Basit bir kurulum için sadece auth required pam_google_authenticator.so satırı yeterlidir.

Dosyayı kaydedip kapatın (Ctrl+X, Y, Enter nano’da).

Adım 3: SSH Yapılandırmasının Ayarlanması

PAM modülünü etkinleştirdikten sonra, SSH daemon’ının (sshd) bu modülü kullanması için yapılandırma dosyasını (/etc/ssh/sshd_config) düzenlememiz gerekiyor.

sshd_config Dosyasının Yedeklenmesi

Yine, değişiklik yapmadan önce orijinal dosyayı yedekleyin:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

sshd_config Dosyasının Düzenlenmesi

Şimdi sshd_config dosyasını bir metin düzenleyici ile açın:

sudo nano /etc/ssh/sshd_config

Aşağıdaki satırları bulup değerlerini değiştirmemiz veya yorum satırı ise yorum işaretini kaldırıp değiştirmemiz gerekiyor:

1. ChallengeResponseAuthentication yes: Bu ayar, SSH sunucusunun kimlik doğrulama sırasında istemciden “challenge-response” (meydan okuma-yanıt) tabanlı kimlik doğrulamasını kabul etmesini sağlar. Google Authenticator gibi modüller bu mekanizmayı kullanır. Bu satırı bulun ve değerini yes olarak ayarlayın. Eğer yorum satırı (#) ise, yorum işaretini kaldırın.

ChallengeResponseAuthentication yes

2. UsePAM yes: Bu ayar, SSH daemon’ının kimlik doğrulaması için PAM’i kullanıp kullanmayacağını belirler. CentOS 8’de bu genellikle varsayılan olarak yes olarak ayarlanmıştır. Yine de kontrol edin ve yes olduğundan emin olun.

UsePAM yes

3. PasswordAuthentication no (İsteğe Bağlı ama Önerilen): MFA’yı zorunlu kılmak ve sadece parola ile girişi engellemek için PasswordAuthentication değerini no olarak ayarlayabilirsiniz. Ancak bu adımı, MFA kurulumunu başarılı bir şekilde test ettikten sonra yapmanız şiddetle tavsiye edilir. Aksi takdirde, MFA kurulumunda bir hata olursa sunucunuza erişemeyebilirsiniz.

PasswordAuthentication no

4. AuthenticationMethods (Gelişmiş, İsteğe Bağlı): Bu ayar, hangi kimlik doğrulama yöntemlerinin kabul edileceğini açıkça belirtmenizi sağlar. Güvenliği artırmak için belirli bir sıralama veya kombinasyon belirleyebilirsiniz. Örneğin, hem SSH anahtarı hem de MFA ile giriş yapmak için:

AuthenticationMethods publickey,keyboard-interactive

veya sadece MFA ile parola girişi için:

AuthenticationMethods password,keyboard-interactive

keyboard-interactive burada Google Authenticator’ı temsil eder. Eğer publickey ve keyboard-interactive kullanırsanız, kullanıcı önce SSH anahtarı ile doğrulanır, ardından MFA kodu istenir. Eğer password ve keyboard-interactive kullanırsanız, kullanıcı önce parolasıyla doğrulanır, ardından MFA kodu istenir.

Bu ayarı şimdilik eklemeyebilir veya sadece keyboard-interactive ekleyerek test edebilirsiniz. En basit senaryoda, ChallengeResponseAuthentication yes ve UsePAM yes yeterli olacaktır.

5. PermitRootLogin no (Güvenlik İpuçları): Root kullanıcısı ile doğrudan SSH erişimini kapatmak iyi bir güvenlik uygulamasıdır. Eğer açıksa, no olarak ayarlayın ve normal bir kullanıcı ile giriş yapıp sudo kullanın.

PermitRootLogin no

Yapılandırma dosyasını kaydedip kapatın.

SSH Servisini Yeniden Başlatma

Yaptığınız değişikliklerin etkin olması için SSH servisini yeniden başlatmanız gerekir:

sudo systemctl restart sshd

Servisin durumunu kontrol ederek herhangi bir hata olup olmadığını görebilirsiniz:

sudo systemctl status sshd

veya daha detaylı loglar için:

sudo journalctl -u sshd

Adım 4: Her Kullanıcı İçin Google Authenticator Kurulumu

PAM ve SSH yapılandırmalarını tamamladıktan sonra, MFA kullanmak isteyen her bir kullanıcının kendi hesabında Google Authenticator’ı yapılandırması gerekir. Bu adım, her kullanıcının kendi gizli anahtarını oluşturmasını ve bunu akıllı telefonundaki Google Authenticator uygulamasıyla eşleştirmesini sağlar.

MFA kurmak istediğiniz kullanıcı hesabına SSH ile bağlanın (henüz MFA aktif olmadığı için sadece parola veya anahtar ile giriş yapabilirsiniz):

ssh kullanici_adi@sunucu_ip_adresi

Oturum açtıktan sonra, aşağıdaki komutu çalıştırın:

google-authenticator

Komutu çalıştırdığınızda size bir dizi soru sorulacaktır:

1. Do you want authentication tokens to be time-based (y/n): Zaman Tabanlı Tek Kullanımlık Parola (TOTP) kullanmak için y yazıp Enter tuşuna basın. Bu, her 30 saniyede bir yeni kod üreten standart yöntemdir.

Do you want authentication tokens to be time-based (y/n) y

2. Bu adımdan sonra, terminalinizde bir QR kodu, gizli anahtar (Secret Key), doğrulama kodu (Verification Code) ve acil durum kurtarma kodları (Emergency scratch codes) görüntülenecektir.

* QR Kodu: Akıllı telefonunuzdaki Google Authenticator uygulamasını açın, yeni bir hesap ekleme seçeneğini seçin (genellikle ‘+’ simgesi) ve QR kodunu tarayın. Uygulama otomatik olarak sunucunuz için bir giriş oluşturacak ve kodları üretmeye başlayacaktır.
* Secret Key: Eğer QR kodunu tarayamıyorsanız (örneğin terminalden kopyalanamıyorsa), bu anahtarı manuel olarak uygulamaya girebilirsiniz.
* Emergency scratch codes: Bu kodlar çok önemlidir. Eğer akıllı telefonunuzu kaybeder, uygulamayı siler veya bir şekilde TOTP kodlarına erişiminizi kaybederseniz, bu kodlardan birini kullanarak tek seferlik giriş yapabilirsiniz. Bu kodları güvenli bir yerde saklayın ve asla kaybetmeyin! Her kod tek kullanımlıktır.

Ekran çıktısı örneği (gerçek kodlar farklı olacaktır):

Your new secret key is: ABCDEFGHIJKLMNOPQRSTUVWXYZ
    Your verification code is 123456
    Your emergency scratch codes are:
      12345678
      23456789
      34567890
      45678901
      56789012

    Do you want to update your "~/.google_authenticator" file (y/n)

3. Do you want to update your "~/.google_authenticator" file (y/n): Yapılandırma dosyasını kaydetmek için y yazıp Enter tuşuna basın. Bu, kullanıcının ev dizininde (~/.google_authenticator) gizli anahtarı ve diğer ayarları içeren bir dosya oluşturur.

Do you want to update your "~/.google_authenticator" file (y/n) y

4. Do you want to disallow multiple uses of the same authentication token (y/n): Aynı doğrulama kodunun birden fazla kullanımını engellemek için y yazıp Enter tuşuna basın. Bu, yeniden oynatma saldırılarına (replay attacks) karşı koruma sağlar. Şiddetle tavsiye edilir.

Do you want to disallow multiple uses of the same authentication token (y/n) y

5. Do you want to enable time-base throttling (y/n): Brute-force saldırılarını önlemek için zaman tabanlı kısıtlama (throttling) etkinleştirmek isteyip istemediğiniz sorulur. Örneğin, 30 saniye içinde 3’ten fazla yanlış kod girilirse, sistem 30 saniye boyunca kimlik doğrulama denemelerini reddedebilir. Güvenlik için y yazıp Enter tuşuna basın.

Do you want to enable time-base throttling (y/n) y

Bu adımları tamamladıktan sonra, kullanıcının Google Authenticator yapılandırması tamamlanmış olacaktır. Bu işlemi, MFA ile giriş yapmak isteyen her kullanıcı için tekrarlamanız gerekir.

Adım 5: MFA Kurulumunun Test Edilmesi

Tüm yapılandırmaları tamamladıktan sonra, MFA kurulumunun doğru çalıştığından emin olmak için test etmeniz çok önemlidir. Bu testi, mevcut SSH oturumunuzu kapatmadan yeni bir terminal penceresinde yapın. Böylece bir sorun çıkması durumunda mevcut oturumunuzdan geri dönüş yapabilirsiniz.

Yeni bir terminal penceresi açın ve MFA’yı yapılandırdığınız kullanıcı ile sunucuya SSH ile bağlanmaya çalışın:

ssh kullanici_adi@sunucu_ip_adresi

Bağlantı denemesinden sonra, aşağıdaki gibi bir sıra izlenmelidir:

1. Verification code: veya Password: (Eğer AuthenticationMethods ayarını yapmadıysanız ve PasswordAuthentication yes ise, önce parola veya kod sorulabilir. PAM dosyasındaki sıraya göre değişir.)
* Eğer ilk olarak Verification code: istenirse, akıllı telefonunuzdaki Google Authenticator uygulamasından geçerli TOTP kodunu girin.
* Eğer ilk olarak Password: istenirse, SSH parolanızı girin.

2. İkinci kimlik doğrulama faktörü istenecektir. Örneğin, eğer önce parola girdiyseniz, şimdi Verification code: istenecektir. Eğer önce TOTP kodu girdiyseniz, şimdi Password: istenecektir.

* İkinci faktörü doğru şekilde girin.

Eğer her iki faktörü de doğru girdiyseniz, başarılı bir şekilde sunucuya SSH ile bağlanmanız gerekir.

Olası Senaryolar ve Beklentiler:

* AuthenticationMethods password,keyboard-interactive kullanıldıysa: Önce parola, sonra TOTP kodu istenir.
* AuthenticationMethods publickey,keyboard-interactive kullanıldıysa: Önce SSH anahtarı ile kimlik doğrulama yapılır, başarılı olursa TOTP kodu istenir.
* Sadece ChallengeResponseAuthentication yes ve UsePAM yes ayarları yapıldıysa ve PAM dosyasında auth required pam_google_authenticator.so en üste yakınsa: Genellikle önce TOTP kodu, sonra parola istenir.

Eğer başarılı bir şekilde giriş yapabiliyorsanız, MFA kurulumunuz doğru çalışıyor demektir. Şimdi isterseniz sshd_config dosyasındaki PasswordAuthentication no ayarını etkinleştirerek sadece MFA ile giriş yapmayı zorunlu kılabilirsiniz (veya anahtar + MFA kombinasyonunu). Bu değişikliği yaptıktan sonra sudo systemctl restart sshd komutunu çalıştırmayı unutmayın ve tekrar test edin.

Gelişmiş Yapılandırmalar ve En İyi Uygulamalar

MFA kurulumunu tamamladıktan sonra, güvenliği daha da artırmak ve kullanım senaryonuza göre optimize etmek için bazı gelişmiş yapılandırmalar ve en iyi uygulamaları göz önünde bulundurabilirsiniz.

Yalnızca MFA ile Giriş

Eğer sunucunuza sadece SSH anahtarı ve/veya MFA ile erişilmesini istiyorsanız, sshd_config dosyasında PasswordAuthentication no ayarını kullanmak önemlidir.

# /etc/ssh/sshd_config
PasswordAuthentication no

Bununla birlikte, AuthenticationMethods ayarını da kullanarak belirli kimlik doğrulama kombinasyonlarını zorunlu kılabilirsiniz:

* Sadece SSH Anahtarı ve MFA (önerilen en güvenli yöntem):

AuthenticationMethods publickey,keyboard-interactive

Bu yapılandırmada, kullanıcı önce geçerli bir SSH anahtarı ile kimlik doğrulaması yapmalıdır. Başarılı olursa, ardından Google Authenticator tarafından üretilen TOTP kodu istenir. Her iki faktör de başarılı olursa erişim izni verilir.

* Sadece Parola ve MFA:

AuthenticationMethods password,keyboard-interactive

Bu, kullanıcının önce SSH parolasını girmesini, ardından TOTP kodunu girmesini gerektirir. PasswordAuthentication no ayarını yapmadığınız sürece, sadece parola ile giriş de mümkün olabilir. Bu nedenle, bu kombinasyonu kullanıyorsanız PasswordAuthentication no ayarı önemlidir.

Public Key Kimlik Doğrulaması ile Kombinasyon

SSH anahtarları, parola tabanlı kimlik doğrulamasına göre daha güvenli kabul edilir. MFA’yı SSH anahtarları ile birleştirmek, güvenlik seviyesini önemli ölçüde artırır. Yukarıda belirtildiği gibi, AuthenticationMethods publickey,keyboard-interactive ayarı bu kombinasyonu sağlar. Bu durumda, saldırganın hem kullanıcının özel SSH anahtarına hem de akıllı telefonuna erişmesi gerekir ki bu çok zordur.

Güvenlik İpuçları

* Acil Durum Kodlarını Güvenli Saklama: google-authenticator komutu tarafından verilen acil durum kurtarma kodlarını fiziksel olarak güvenli bir yerde (örneğin bir kasada veya şifreli bir depolama biriminde) saklayın. Bu kodlar tek kullanımlıktır ve erişiminizi kaybettiğinizde cankurtaranınız olacaktır. Dijital ortamda saklarken şifrelediğinizden emin olun.
* NTP Senkronizasyonunun Önemi: TOTP, zaman senkronizasyonuna dayandığı için sunucunuzun ve akıllı telefonunuzun zamanlarının doğru olduğundan emin olun. Sunucunuzda chronyd veya ntpd gibi bir NTP istemcisinin çalıştığından ve doğru zaman sunucularıyla senkronize olduğundan emin olun. Zaman farkı birkaç dakikadan fazla olursa kodlar geçersiz olacaktır.

timedatectl status

komutu ile zaman durumunu kontrol edebilirsiniz.
* Logları İzleme: SSH oturum açma denemelerini ve kimlik doğrulama hatalarını düzenli olarak /var/log/secure dosyasında izleyin. Bu, potansiyel saldırı girişimlerini veya yapılandırma sorunlarını tespit etmenize yardımcı olabilir.

sudo tail -f /var/log/secure

* Fail2ban Entegrasyonu: Fail2ban, başarısız oturum açma denemelerini izleyen ve belirli bir süre boyunca IP adreslerini engelleyen bir güvenlik aracıdır. MFA ile birlikte kullanıldığında, brute-force saldırılarına karşı ek bir koruma katmanı sağlar. google-authenticator modülü, başarısız denemeleri logladığı için Fail2ban bunu tespit edip engelleyebilir.
* Root ile Doğrudan SSH Erişimini Kapatma: Güvenlik açısından, root kullanıcısı ile doğrudan SSH erişimi sağlamak yerine, normal bir kullanıcı ile giriş yapıp sudo kullanarak yetki yükseltmek her zaman daha güvenlidir. PermitRootLogin no ayarını sshd_config dosyasında kullanın.
* Varsayılan SSH Portunu Değiştirme: Varsayılan SSH portu olan 22’yi değiştirmek, otomatik botların ve basit taramaların hedefi olmaktan kaçınmanıza yardımcı olabilir. Ancak bu, gelişmiş saldırılara karşı tek başına bir koruma değildir. Portu değiştirdikten sonra firewall (firewalld) ayarlarınızı güncellemeyi unutmayın.

Sorun Giderme

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

* Permission denied (keyboard-interactive) Hatası:
* Bu genellikle PAM yapılandırmasında (/etc/pam.d/sshd) veya SSH yapılandırmasında (/etc/ssh/sshd_config) bir sorun olduğunu gösterir.
* ChallengeResponseAuthentication yes ve UsePAM yes ayarlarının sshd_config dosyasında doğru olduğundan emin olun.
* /etc/pam.d/sshd dosyasındaki auth required pam_google_authenticator.so satırının doğru yerde olduğundan ve yazım hatası içermediğinden emin olun.
* sshd servisini yeniden başlattığınızdan emin olun: sudo systemctl restart sshd.
* Sunucu loglarını kontrol edin: sudo tail -f /var/log/secure veya sudo journalctl -u sshd.

* Yanlış TOTP Kodu Hatası:
* Zaman Senkronizasyonu: En yaygın nedenlerden biri zaman senkronizasyonu sorunlarıdır. Sunucunuzun ve akıllı telefonunuzun zamanlarının doğru olduğundan emin olun. Akıllı telefonunuzun otomatik zaman ayarlı olduğundan ve sunucunuzun NTP ile senkronize olduğundan emin olun (timedatectl status komutunu kontrol edin).
* Yanlış Kod: Google Authenticator uygulamasında doğru sunucu için doğru kodu girdiğinizden emin olun. Kodlar her 30 saniyede bir değişir, bu yüzden kodu hızlı bir şekilde girmeniz gerekir.
* Birden Fazla Deneme: google-authenticator kurulumunda disallow multiple uses ve time-base throttling ayarlarını etkinleştirdiyseniz, ardışık yanlış denemeler bir süre engellemeye neden olabilir. Birkaç dakika bekleyip tekrar deneyin.

* PAM Yapılandırma Hataları:
* /etc/pam.d/sshd dosyasında yanlış bir satır eklemek veya mevcut bir satırı silmek, SSH hizmetinin başlamamasına neden olabilir.
* Eğer SSH servisi başlamazsa, sudo systemctl status sshd komutu hata mesajını gösterecektir.
* Eğer bu dosyada bir hata yaptıysanız ve SSH ile giriş yapamıyorsanız, sunucuya fiziksel erişiminiz veya bir sanal konsol erişiminiz olması gerekebilir. Bu nedenle her zaman yedekleme yapın ve testleri mevcut oturumu kapatmadan yeni bir pencerede yapın.
* Yedeklediğiniz dosyayı geri yükleyebilirsiniz: sudo cp /etc/pam.d/sshd.bak /etc/pam.d/sshd.

* ~/.google_authenticator Dosyası Yok:
* MFA kurmak isteyen her kullanıcının kendi hesabında google-authenticator komutunu çalıştırması ve sorulara y yanıtı vererek dosyayı oluşturması gerekir.
* Dosyanın izinleri de önemlidir. Varsayılan olarak google-authenticator komutu dosyayı doğru izinlerle (0600) oluşturur. Eğer izinler yanlışsa, PAM modülü dosyayı okuyamayabilir.

* sshd Servisini Yeniden Başlatmayı Unutma:
* PAM veya SSH yapılandırma dosyalarında yaptığınız değişikliklerin etkin olması için sudo systemctl restart sshd komutunu çalıştırmanız gerektiğini unutmayın.

* Log Dosyaları:
* sudo tail -f /var/log/secure: SSH oturum açma denemeleri, kimlik doğrulama hataları ve PAM ile ilgili mesajlar burada bulunur.
* sudo journalctl -u sshd: SSH daemon’ının başlatma ve çalışma zamanı loglarını gösterir.
* Bu loglar, sorun giderme sürecinde size çok değerli bilgiler sağlayacaktır.

Sonuç

CentOS 8 üzerinde SSH için Çok Faktörlü Kimlik Doğrulama (MFA) kurulumu, 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, Google Authenticator tabanlı TOTP kullanarak, kullanıcıların sadece parola veya SSH anahtarı ile değil, aynı zamanda akıllı telefonlarındaki tek kullanımlık kodlarla da kimlik doğrulaması yapmalarını sağlayabilirsiniz.

Kurulum, gerekli paketlerin yüklenmesi, PAM modülünün yapılandırılması, SSH daemon’ının ayarlanması ve her kullanıcı için Google Authenticator’ın kişisel olarak yapılandırılmasını içerir. Bu adımları dikkatlice takip ederek, sunucularınızı potansiyel siber saldırılara karşı daha dirençli hale getirebilirsiniz.

MFA, özellikle parola zayıflıkları veya çalınan kimlik bilgileri gibi yaygın güvenlik tehditlerine karşı ek bir koruma katmanı sağlar. Ancak, MFA tek başına tam bir güvenlik çözümü değildir. Güçlü parolalar, SSH anahtarı tabanlı kimlik doğrulama, düzenli güvenlik güncellemeleri, güvenlik duvarı kuralları, Fail2ban gibi ek güvenlik araçları ve düzenli log izleme gibi diğer en iyi uygulamalarla birlikte kullanıldığında maksimum fayda sağlar.

Unutmayın, güvenlik bir süreçtir, tek seferlik bir kurulum değildir. Sunucularınızın ve kullanıcılarınızın güvenliğini sağlamak için sürekli dikkatli olmak ve güvenlik önlemlerini güncel tutmak hayati önem taşır. Bu rehber, CentOS 8 üzerindeki SSH güvenliğinizi bir sonraki seviyeye taşımanız için sağlam bir temel sunmaktadır.

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.