CentOS 6 VPS Üzerinde Parola Politikası Nasıl Ayarlanır?
Giriş: Parola Güvenliğinin Önemi ve CentOS 6 Bağlamı
Günümüzün dijital dünyasında, siber güvenlik tehditleri sürekli olarak evrim geçirmekte ve daha karmaşık hale gelmektedir. Bir sunucunun veya Sanal Özel Sunucunun (VPS) güvenliği, genellikle en zayıf halkası olan parolalarla başlar. Zayıf veya kolay tahmin edilebilir parolalar, yetkisiz erişim, veri ihlalleri ve sistemin kötüye kullanılması gibi ciddi sonuçlara yol açabilir. Bu nedenle, güçlü bir parola politikası uygulamak, herhangi bir sunucu yöneticisi için temel bir gerekliliktir.
CentOS 6, piyasaya sürülmesinin üzerinden uzun zaman geçmesine rağmen, bazı kurumsal ortamlar, eski uygulamaların uyumluluğu veya belirli donanım gereksinimleri nedeniyle hala bu işletim sistemini kullanmaya devam etmektedir. CentOS 6 için resmi destek sona ermiş olsa da, bu tür sistemlerin güvenliğini sağlamak kritik önem taşımaktadır. Bu makale, CentOS 6 VPS üzerinde parola politikalarını nasıl etkili bir şekilde ayarlayacağınızı, parola karmaşıklığı, yaşlandırma, geçmiş kontrolü ve hesap kilitleme mekanizmaları dahil olmak üzere ayrıntılı bir şekilde açıklayacaktır. Amacımız, sunucunuzu potansiyel parola tabanlı saldırılara karşı daha dirençli hale getirmektir.
Parola Güvenliğinin Temelleri: Neden Güçlü Parolalara İhtiyaç Duyarız?
Parolalar, bir sisteme erişim için ilk savunma hattıdır. Ne yazık ki, birçok kullanıcı kolay hatırlanabilen, ancak aynı zamanda kolayca tahmin edilebilir parolalar seçme eğilimindedir. Bu durum, siber saldırganlar için bir açık kapı bırakır.
Yaygın Parola Saldırı Türleri
* Brute Force Saldırıları: Saldırgan, olası her parola kombinasyonunu sistematik olarak dener. Parola ne kadar kısa ve basitse, bu saldırı o kadar hızlı başarılı olur.
* Sözlük Saldırıları: Saldırgan, yaygın olarak kullanılan kelimelerin, isimlerin ve sayı kombinasyonlarının bir listesini (sözlük) kullanarak parolaları dener.
* Kredensiyal Doldurma (Credential Stuffing): Başka bir web sitesinden veya hizmetten ele geçirilmiş kullanıcı adı ve parola çiftlerini kullanarak, aynı kombinasyonların diğer sistemlerde de çalışıp çalışmadığını deneme girişimidir.
* Gökkuşağı Tabloları (Rainbow Tables): Önceden hesaplanmış parola hash’lerinin bir tablosunu kullanarak, ele geçirilen parola hash’lerinden orijinal parolayı bulmaya çalışır.
Güçlü Bir Parolanın Özellikleri
Güçlü bir parola, yukarıda belirtilen saldırılara karşı dayanıklı olmalıdır. Temel özellikleri şunlardır:
* Uzunluk: En az 12-16 karakter uzunluğunda olmalıdır. Uzunluk, karmaşıklıktan daha önemlidir.
* Karmaşıklık: Büyük harfler, küçük harfler, sayılar ve özel karakterlerin bir kombinasyonunu içermelidir.
* Benzersizlik: Farklı hesaplar için farklı parolalar kullanılmalıdır.
* Tahmin Edilemezlik: Kişisel bilgilerden (doğum tarihi, evcil hayvan adı vb.) veya yaygın kelimelerden türetilmemelidir.
CentOS 6’nın varsayılan parola ayarları genellikle temel güvenlik gereksinimlerini karşılamaz. Bu nedenle, sistem yöneticilerinin bu ayarları manuel olarak güçlendirmesi gerekmektedir.
CentOS 6’daki Temel Yapılandırma Dosyaları ve Araçlar
CentOS 6’da parola politikasını yapılandırmak için birkaç ana dosya ve araç bulunmaktadır:
/etc/login.defs
Bu dosya, yeni kullanıcılar için geçerli olacak sistem çapında genel parola ve oturum açma ayarlarını içerir. Parola yaşlandırma (ömrü), minimum parola uzunluğu gibi parametreler buradan ayarlanabilir.
PAM (Pluggable Authentication Modules)
PAM, Linux sistemlerinde kimlik doğrulama hizmetlerini yapılandırmak için esnek bir çerçevedir. Parola karmaşıklığı, geçmiş kontrolü ve hesap kilitleme gibi gelişmiş parola politikaları PAM modülleri aracılığıyla yönetilir. CentOS 6’da ana PAM yapılandırma dosyaları şunlardır:
* /etc/pam.d/system-auth: Çoğu sistem hizmeti için varsayılan kimlik doğrulama yapılandırmasını tanımlayan ana PAM yapılandırma dosyasıdır.
* /etc/pam.d/password-auth: Parola kimlik doğrulaması için özel olarak kullanılan bir başka önemli PAM dosyasıdır. Genellikle system-auth ile benzer veya onunla bağlantılıdır.
Bu iki dosya genellikle sembolik bağlantılar veya doğrudan kopyalar aracılığıyla birbirine bağlıdır ve birinde yapılan değişikliklerin diğerini de etkilemesi beklenir.
pam_pwquality (veya pam_cracklib)
Bu PAM modülü, parolaların kalitesini ve karmaşıklığını kontrol etmek için kullanılır. CentOS 6’da genellikle pam_cracklib modülü kullanılırken, daha yeni sistemlerde pam_pwquality tercih edilir. Ancak, pam_pwquality CentOS 6 için de paket olarak mevcuttur ve daha gelişmiş özellikler sunar.
chage Komutu
chage (change age) komutu, kullanıcı parolalarının yaşlandırma bilgilerini (son değiştirilme tarihi, maksimum ömrü, uyarı süresi vb.) yönetmek için kullanılır. Bu komut, bireysel kullanıcılar için parola politikalarını özelleştirmeye olanak tanır.
/etc/login.defs ile Genel Parola Politikası Yapılandırma
/etc/login.defs dosyası, yeni oluşturulan kullanıcılar için varsayılan parola yaşlandırma ve diğer bazı güvenlik ayarlarını belirler. Bu ayarlar, PAM tarafından uygulanan karmaşıklık kurallarından bağımsızdır ancak onlarla birlikte çalışır.
Dosyayı düzenlemek için root yetkileriyle bir metin düzenleyici kullanın:
sudo vi /etc/login.defs
Aşağıdaki parametreleri bulup düzenleyebilirsiniz:
* PASS_MAX_DAYS: Bir parolanın geçerli olabileceği maksimum gün sayısı. Bu sürenin sonunda kullanıcıdan parolasını değiştirmesi istenir.
* Önerilen: 90 gün (3 ayda bir parola değişimi)
* Örnek: PASS_MAX_DAYS 90
* PASS_MIN_DAYS: Bir parolanın değiştirilmeden önce geçmesi gereken minimum gün sayısı. Bu, kullanıcıların parolalarını hemen değiştirmesini ve geçmişteki parolalarını tekrar kullanmasını engellemeye yardımcı olur (PAM’deki geçmiş kontrolü ile birlikte).
* Önerilen: 7 gün (bir hafta)
* Örnek: PASS_MIN_DAYS 7
* PASS_WARN_AGE: Parolanın süresi dolmadan kaç gün önce kullanıcıya uyarı verilmeye başlanacağını belirler.
* Önerilen: 14 gün
* Örnek: PASS_WARN_AGE 14
* ENCRYPT_METHOD: Parolaların şifrelenmesi için kullanılan algoritmayı belirler. Daha güçlü bir algoritma kullanmak, ele geçirilen parola hash’lerinin kırılmasını zorlaştırır.
* Önerilen: SHA512 (varsayılan genellikle SHA512‘dir, ancak emin olmak için kontrol edin).
* Örnek: ENCRYPT_METHOD SHA512
Bu değişiklikler, yeni oluşturulan kullanıcılar için geçerli olacaktır. Mevcut kullanıcılar için bu ayarları uygulamak veya değiştirmek için chage komutunu kullanmanız gerekecektir.
PAM ile Parola Karmaşıklığı ve Kalite Kontrolü
Parola karmaşıklığını zorunlu kılmak için Pluggable Authentication Modules (PAM) çerçevesini kullanırız. CentOS 6’da bu genellikle pam_cracklib.so veya daha gelişmiş olan pam_pwquality.so modülü ile yapılır. pam_pwquality daha modern ve esnek seçenekler sunduğundan, mümkünse bunu kullanmanızı öneririz. Eğer sisteminizde pam_pwquality paketi yüklü değilse, aşağıdaki komutla yükleyebilirsiniz:
sudo yum install pam_pwquality
PAM yapılandırması genellikle /etc/pam.d/system-auth ve /etc/pam.d/password-auth dosyalarında yapılır. Bu dosyalar, sembolik bağlantılar veya kopyalar aracılığıyla birbirine benzer veya aynı içeriğe sahip olabilir. En iyi uygulama, her iki dosyayı da düzenlemektir, ancak genellikle system-auth dosyasında yapılan değişiklikler diğerini de etkileyebilir.
Her iki dosyayı da düzenlemek için:
sudo vi /etc/pam.d/system-auth
sudo vi /etc/pam.d/password-auth
password yığını içinde pam_pwquality.so (veya pam_cracklib.so) modülünü arayın. Genellikle aşağıdaki gibi bir satır bulunur:
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
Bu satıra veya password requisite pam_unix.so satırının hemen üstüne/altına aşağıdaki parametreleri ekleyerek parola karmaşıklığını zorunlu kılabilirsiniz:
password requisite pam_pwquality.so authtok_type= minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=7 reject_username retry=3
Yukarıdaki parametrelerin anlamları:
* minlen=12: Parolanın minimum uzunluğu 12 karakter olmalıdır.
* lcredit=-1: Parola en az bir küçük harf içermelidir (eksikse -1 kredi puanı).
* ucredit=-1: Parola en az bir büyük harf içermelidir.
* dcredit=-1: Parola en az bir rakam içermelidir.
* ocredit=-1: Parola en az bir özel karakter içermelidir (örneğin, !, @, #, $).
* difok=7: Yeni parolanın eski paroladan en az 7 karakter farklı olması gerekir. Bu, kullanıcıların küçük değişikliklerle parolalarını değiştirmesini engeller.
* reject_username: Parolanın, kullanıcının adını (veya adının tersini) içermesini engeller.
* retry=3: Parola politikası gereksinimleri karşılanmadığında kullanıcıya 3 deneme hakkı tanır.
Bu ayarlar, kullanıcıların yeni bir parola belirlerken bu gereksinimleri karşılamasını sağlayacaktır.
chage ile Parola Yaşlandırma ve Süre Sonu Yönetimi
chage komutu, mevcut kullanıcı hesaplarının parola yaşlandırma ve sona erme tarihlerini yönetmek için kullanılır. /etc/login.defs dosyasındaki ayarlar yeni kullanıcılar için varsayılan değerleri belirlerken, chage mevcut kullanıcılar üzerinde bu ayarları değiştirmeye veya uygulamaya yarar.
Bir Kullanıcının Mevcut Parola Bilgilerini Görüntüleme
chage -l
Örnek:
chage -l denemeuser
Çıktı, kullanıcının parolasının son değiştirilme tarihi, süresinin dolacağı tarih, minimum ve maksimum günler, uyarı günleri ve hesap etkinliği hakkında bilgiler içerecektir.
Parola Yaşlandırma Ayarlarını Yapılandırma
* chage -M : Parolanın geçerli olabileceği maksimum gün sayısını ayarlar. Bu, /etc/login.defs içindeki PASS_MAX_DAYS parametresine karşılık gelir.
* Örnek: chage -M 90 denemeuser (denemeuser parolasının 90 gün sonra süresi dolar)
* chage -m : Parolanın değiştirilmeden önce geçmesi gereken minimum gün sayısını ayarlar. Bu, /etc/login.defs içindeki PASS_MIN_DAYS parametresine karşılık gelir.
* Örnek: chage -m 7 denemeuser (denemeuser parolasını 7 gün içinde değiştiremez)
* chage -W : Parolanın süresi dolmadan önce kaç gün uyarı verileceğini ayarlar. Bu, /etc/login.defs içindeki PASS_WARN_AGE parametresine karşılık gelir.
* Örnek: chage -W 14 denemeuser (denemeuser parolasının süresi dolmadan 14 gün önce uyarı alır)
* chage -E : Kullanıcı hesabının sona ereceği tarihi ayarlar. Bu tarihten sonra kullanıcı oturum açamaz.
* Örnek: chage -E 2025-12-31 denemeuser (denemeuser hesabı 31 Aralık 2025’te sona erer)
* chage -I : Parolanın süresi dolduktan sonra hesabın kilitlenmeden önce kaç gün aktif kalacağını ayarlar. Bu, kullanıcının süresi dolmuş bir parolayı değiştirmek için belirli bir süreye sahip olmasını sağlar.
* Örnek: chage -I 30 denemeuser (parola süresi dolduktan sonra 30 gün içinde değiştirilmezse hesap kilitlenir)
* chage -d 0 : Kullanıcının bir sonraki oturum açışında parolasını değiştirmesini zorunlu kılar.
* Örnek: chage -d 0 denemeuser
Bu komutları kullanarak, her bir kullanıcının parola politikası ayarlarını detaylı bir şekilde kontrol edebilirsiniz. Tüm mevcut kullanıcılar için bu ayarları toplu olarak uygulamak isterseniz, bir betik yazmanız gerekebilir.
Parola Geçmişini Zorunlu Kılma (Tekrar Kullanımını Engelleme)
Kullanıcıların eski parolalarını tekrar kullanmasını engellemek, parola güvenliğinin önemli bir yönüdür. Bu, PAM yapılandırması aracılığıyla pam_pwquality veya pam_unix.so modülünün remember seçeneği kullanılarak yapılır.
pam_pwquality.so modülünü kullanıyorsanız, remember seçeneğini doğrudan bu modüle ekleyebilirsiniz. Ancak, CentOS 6’da genellikle pam_unix.so modülü parola geçmişini yönetmek için kullanılır.
system-auth ve password-auth dosyalarında password sufficient pam_unix.so satırını bulun ve remember= seçeneğini ekleyin. , kaç önceki parolanın hatırlanacağını ve tekrar kullanılamayacağını belirtir.
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
Bu örnekte, kullanıcıların son 5 parolalarını tekrar kullanmaları engellenir. Bu satırın genellikle password requisite pam_pwquality.so satırının altında veya yakınında olması gerekir.
Önemli Not: remember seçeneği yalnızca yeni parolalar belirlendiğinde geçmişi kontrol eder. Mevcut parolaların geçmişini geriye dönük olarak kontrol etmez.
Hesap Kilitleme Politikası (Brute Force Koruması)
Brute force saldırılarına karşı korunmanın en etkili yollarından biri, belirli sayıda başarısız oturum açma girişiminden sonra hesabı kilitlemektir. CentOS 6’da bu, pam_faillock.so veya pam_tally2.so modülleri kullanılarak yapılandırılabilir. pam_faillock daha modern ve esnek olduğundan, onu kullanmayı tercih etmelisiniz.
pam_faillock modülünü yapılandırmak için system-auth ve password-auth dosyalarını düzenlemeniz gerekecektir.
sudo vi /etc/pam.d/system-auth
sudo vi /etc/pam.d/password-auth
Aşağıdaki satırları auth yığınına ekleyin:
1. En üste, auth required pam_env.so satırının altına veya yakınına ekleyin:
auth required pam_faillock.so preauth silent deny=5 unlock_time=600
Bu satır, kullanıcının kimlik doğrulaması başlamadan önce başarısız denemeleri kontrol eder ve hesabı kilitler. deny=5 5 başarısız denemeden sonra hesabı kilitler. unlock_time=600 hesabı 600 saniye (10 dakika) boyunca kilitli tutar. silent seçeneği, kilitleme durumunda kullanıcıya hata mesajı göstermez.
2. auth sufficient pam_unix.so satırının altına ekleyin:
auth [success=1 default=bad] pam_unix.so
auth required pam_faillock.so authfail deny=5 unlock_time=600
Bu satır, pam_unix.so modülü başarısız olursa (yani parola yanlış girilirse) başarısız denemeleri kaydeder. success=1 bir sonraki kurala atlar (yani pam_unix.so başarılı olursa). default=bad ise başarısız olursa pam_faillock.so kuralına geçilmesini sağlar.
Önemli: pam_faillock.so modülünü eklerken, auth yığınının sırasına dikkat etmek kritik öneme sahiptir. Yanlış yerleştirme, oturum açma sorunlarına neden olabilir.
Hesap kilitlendiğinde, faillock komutu ile kilitlenme durumunu görüntüleyebilir veya sıfırlayabilirsiniz:
* Bir kullanıcının kilitlenme durumunu görüntüleme:
faillock --user
* Bir kullanıcının kilitlenme sayacını sıfırlama (kilidi açma):
faillock --user --reset
Bu mekanizma, özellikle SSH gibi dışarıdan erişilebilen hizmetlerde brute force saldırılarına karşı önemli bir koruma katmanı sağlar.
Denetim ve İzleme
Parola politikasını ayarlamak sadece başlangıçtır. Uygulanan politikaların etkinliğini sürdürmek ve potansiyel güvenlik sorunlarını tespit etmek için düzenli denetim ve izleme yapmak hayati öneme sahiptir.
Yapılandırma Dosyalarını Kontrol Etme
Parola politikasıyla ilgili tüm yapılandırma dosyalarını (örneğin, /etc/login.defs, /etc/pam.d/system-auth, /etc/pam.d/password-auth) düzenli olarak gözden geçirin. Yetkisiz değişiklikler olup olmadığını kontrol edin.
/etc/shadow Dosyasını Analiz Etme
/etc/shadow dosyası, kullanıcı parolalarının hash’lerini ve parola yaşlandırma bilgilerini depolar. Bu dosyayı inceleyerek, her kullanıcının parola yaşlandırma ayarlarının beklediğiniz gibi olup olmadığını kontrol edebilirsiniz.
Örnek bir /etc/shadow satırı:
denemeuser:$6$saltsalt$hashedpassword:19700:7:90:14::30:
* denemeuser: Kullanıcı adı
* $6$saltsalt$hashedpassword: Parola hash’i (SHA512)
* 19700: Parolanın son değiştirildiği tarih (Epoch günleri cinsinden)
* 7: Minimum parola ömrü (gün)
* 90: Maksimum parola ömrü (gün)
* 14: Parola süresi dolmadan uyarı verilecek gün sayısı
* ::: Hesap sona erme tarihi (boşsa ayarlanmamış)
* 30: Parola süresi dolduktan sonra hesabın kilitlenmeden önce aktif kalacağı gün sayısı
Bu bilgiler, chage -l komutuyla da kolayca görüntülenebilir.
Log Kayıtlarını İzleme
Başarısız oturum açma girişimleri, /var/log/secure dosyasında kaydedilir. Bu log dosyasını düzenli olarak inceleyerek potansiyel brute force saldırılarını veya yetkisiz erişim girişimlerini tespit edebilirsiniz.
sudo tail -f /var/log/secure | grep "Failed password"
Log izleme araçları (örneğin, ELK Stack, Splunk, Graylog) veya intrusion detection system (IDS) gibi çözümler, bu tür olayları otomatik olarak tespit edip sizi uyarabilir.
En İyi Uygulamalar ve Dikkat Edilmesi Gerekenler
Parola politikası uygulaması, sadece teknik yapılandırmadan ibaret değildir. Kapsamlı bir güvenlik stratejisinin parçası olmalıdır.
* Kullanıcı Eğitimi: En güçlü parola politikaları bile, kullanıcılar güvenlik uygulamaları hakkında eğitilmezse zayıf kalabilir. Kullanıcılara neden güçlü parolalar kullanmaları gerektiğini, nasıl oluşturacaklarını ve parola güvenliğiyle ilgili en iyi uygulamaları öğretin.
* Güvenlik ve Kullanılabilirlik Dengesi: Çok katı parola politikaları, kullanıcıların parolalarını unutmasına veya not almasına yol açarak güvenlik risklerini artırabilir. Güvenlik ile kullanılabilirlik arasında bir denge kurmaya çalışın.
* Düzenli Politika Gözden Geçirme: Siber tehditler sürekli değiştiği için, parola politikanızı düzenli olarak gözden geçirin ve güncelleyin.
* SSH Anahtarları Kullanımı: Mümkün olduğunca, sunucuya SSH ile erişim için parola yerine SSH anahtarlarını kullanın. Bu, çok daha güvenli bir kimlik doğrulama yöntemidir ve brute force saldırılarını büyük ölçüde azaltır.
* Çok Faktörlü Kimlik Doğrulama (MFA): Parola tabanlı kimlik doğrulamasının üzerine bir katman daha eklemek için Çok Faktörlü Kimlik Doğrulama (MFA) uygulayın. Bu, bir saldırgan parolayı ele geçirse bile sisteme erişmesini engeller.
* Yapılandırma Dosyalarını Yedekleme: Herhangi bir kritik yapılandırma dosyasında değişiklik yapmadan önce daima bir yedek alın. Bu, yanlış bir yapılandırma durumunda kolayca geri dönmenizi sağlar.
sudo cp /etc/login.defs /etc/login.defs.bak
sudo cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
sudo cp /etc/pam.d/password-auth /etc/pam.d/password-auth.bak
* Değişiklikleri Test Etme: Parola politikası ayarlarında değişiklik yaptıktan sonra, farklı kullanıcı hesaplarıyla oturum açmayı deneyerek ve parola değiştirme işlemlerini test ederek ayarların beklediğiniz gibi çalıştığından emin olun. Özellikle kilitli kalma riskini önlemek için root veya başka bir yönetici hesabı ile test yaparken dikkatli olun.
Sonuç
CentOS 6 VPS üzerinde güçlü bir parola politikası ayarlamak, sunucunuzun güvenliğini sağlamak için atılması gereken temel bir adımdır. /etc/login.defs ile genel ayarları, PAM ile parola karmaşıklığını ve geçmiş kontrolünü, chage ile kullanıcı bazında yaşlandırmayı ve pam_faillock ile hesap kilitlemeyi yapılandırarak, sunucunuzu parola tabanlı saldırılara karşı önemli ölçüde güçlendirebilirsiniz.
Unutmayın ki güvenlik sürekli bir süreçtir. Sadece bir kez ayarlamak yeterli değildir; düzenli olarak denetlemeli, izlemeli ve gelişen tehdit ortamına göre politikanızı güncellemelisiniz. Kullanıcı eğitimi ve ek güvenlik katmanları (SSH anahtarları, MFA) ile entegre edildiğinde, parola politikanız daha dirençli ve güvenli bir VPS ortamı oluşturmanıza yardımcı olacaktır. CentOS 6’nın desteğinin sona ermiş olması, bu sistemlerin güvenliğine daha da fazla dikkat etme gerekliliğini ortaya koymaktadır.
