Linux/Unix Sistem Güvenliği

Linux/Unix Sistem Güvenliğine Giriş

Günümüzde dünyanın en büyük veri merkezleri ve bulut servis sağlayıcıları da dahil olmak üzere birçok kuruluş, faaliyetlerini Linux ve Unix tabanlı sunucular üzerinde yürütmektedir. Bu işletim sistemleri özelleştirilebilirlik, uyumlu maliyet yapısı ve esneklik özellikleriyle öne çıkıyor. Bu geniş kullanım, Linux sistemlerini çeşitli güvenlik tehditlerine karşı savunmasız hale getirmektedir. Linux güvenliği, sistemleri bu tehditlere karşı korumak için kullanılan bir dizi strateji ve aracı içerir. Ancak bu sistemler güvenlik açısından dikkat ve bilgi gerektiren karmaşık yapılardır.

Ancak Linux güvenliği yalnızca araçlar ve stratejilerden ibaret değildir. Aynı zamanda Linux’un doğası ve işleyişi hakkında bilgi sahibi olmayı da gerektirir. Linux dosya izinleri, kullanıcı ve grup yönetimi, sistem ve ağ hizmetleri, güncelleme, yükseltme, günlük altyapısı, Linux güvenliğinin önemli yönleridir ve bunların nasıl çalıştığını ve nasıl yönetileceğini anlamak, güvenli bir Linux sistemi oluşturmanın temelini oluşturur.

Kısacası, artan dijital tehditlere karşı genel sisteminizin ve veri güvenliğinizin sağlanması için Linux güvenliği şarttır. Linux güvenliğine ilişkin bilgi ve beceriler, hem yeni başlayanlar hem de deneyimli profesyoneller için günümüzün dijital dünyasında başarılı ve güvenli olmak için gereklidir.

Linux Dağıtımları

Linux açık kaynaklı bir işletim sistemidir; bu, herkesin bir Linux çekirdeğini değiştirmesine ve onu kendi ihtiyaçlarına uyacak şekilde özelleştirmesine açık olduğu anlamına gelir. Bu özelleştirilmiş sürümlere genellikle “Linux dağıtımları” veya kısaca “dağıtımlar” adı verilir. Bir Linux dağıtımı, Linux çekirdeğine ek olarak uygulamaları, kitaplıkları, komut satırı araçlarını, bir pencere sistemini ve çoğunlukla bir grafik kullanıcı arayüzünü (GUI) içerir.

Linux dağıtımları, genellikle önderlik ettikleri paket yönetim sistemi ve felsefeye dayalı olarak birkaç ana dalda sınıflandırılır. En büyük iki dal Red Hat ve Debian tabanlı dağıtımlardır. Bu iki dal, Linux’un en popüler ve en yaygın kullanılan sürümleridir ve diğer birçok dağıtım, bu iki ana dağıtımdan birinin üzerine kurulmuştur.

Debian Tabanlı Dağıtımlar

Debian son derece kararlı, güvenilir ve geniş bir yazılım deposuna sahip bir Linux dağıtımıdır. Debian, APT (Gelişmiş Paket Aracı) adı verilen paket yönetim sistemini kullanır ve DEB paket formatını destekler. Debian tabanlı dağıtımlar genellikle güvenilirliğe ve kararlılığa odaklanır. Debian aynı zamanda kullanıcı dostu Ubuntu dağıtımının da temelini oluşturur. Ubuntu ise kendi türevlerine sahipti ve Linux Mint, Elementary OS, Pop!_OS gibi popüler dağıtımların temelini oluşturdu.

Red Hat Tabanlı Dağıtımlar

Red Hat, ticari ve kurumsal kullanım için tasarlanmış bir Linux dağıtımıdır. Red Hat, RPM (Red Hat Paket Yöneticisi) paket yönetim sistemini kullanıyor ve genellikle sunucu ve kurumsal çözümlerde tercih ediliyor. Red Hat’in en büyük türevi, ticari desteği olmayan ve topluluk tarafından yönetilen CentOS’tur. CentOS’un yanı sıra Fedora da Red Hat tarafından desteklenen ve genellikle en son teknolojileri test etmek ve kullanıcılardan geri bildirim toplamak için kullanılan bir başka popüler dağıtımdır.

İşte en popüler Linux dağıtımlarından bazıları ve bunların temel özelliklerinden bazıları:

ubuntu

Ubuntu dünya çapında en popüler Linux dağıtımlarından biridir. Kullanıcı dostu bir arayüze sahip olması ve geniş bir topluluk tarafından desteklenmesi nedeniyle özellikle yeni başlayanlar için tavsiye edilir. Ubuntu masaüstü bilgisayarlar, sunucular ve bulut ortamları için kullanılabilir.

Fedora

Fedora, özellikle güncel açık kaynak teknolojilerini denemek isteyen kullanıcılar için bir başka popüler seçenektir. Fedora’nın güçlü yönlerinden biri, Red Hat Inc. tarafından sürdürülen ve desteklenen bir topluluk projesi olmasıdır. Bu, Fedora’nın Red Hat Enterprise Linux (RHEL) gibi profesyonel sistemlerde kullanılan teknolojileri denemesine olanak tanır.

Debian

Debian, kararlılığı ve yüksek standartlarıyla bilinen bir başka popüler Linux dağıtımıdır. Debian’ın çok geniş bir yazılım deposu vardır ve birçok farklı bilgisayar mimarisi için kullanılabilir. Bu, Debian’ı çok çeşitli uygulamalarda kullanılabilir kılar.

ArchLinux

Arch Linux, kullanıcıların sistemi tamamen özelleştirmesine olanak tanır. Bu, kullanıcının yalnızca ihtiyaç duyduğu yazılımı yükleyebileceği anlamına gelir, böylece oldukça hafif ve hızlı bir sistem oluşturulur. Ancak Arch Linux’un bu esnekliği, kullanıcının Linux ve sistem yönetimi hakkında daha fazla bilgi sahibi olmasını gerektirir.

CentOS

CentOS, Red Hat Enterprise Linux’un (RHEL) bir kopyasıdır ve bu nedenle sıklıkla sunucu ortamlarında kullanılır. CentOS, Red Hat’in profesyonel düzeydeki özelliklerini ve performansını sunar, ancak Red Hat’in ticari desteği olmadan.

Kali Linux

Kali Linux, siber güvenlik ve sızma testi konusunda uzman kişiler tarafından kullanılan açık kaynaklı bir Linux dağıtımıdır. Debian tabanlı Kali Linux, birçok güvenlik aracını içeren geniş bir yazılım yelpazesi sunmakta olup bilgisayar korsanları, penetrasyon test uzmanları ve ağ güvenliği profesyonelleri tarafından tercih edilmektedir. Kali Linux, kullanıcılarına ağdaki güvenlik açıklarını tespit etmek, güvenlik açıklarını tespit etmek ve sızma testleri gerçekleştirmek için gerekli araçları sağlar.

Çözüm

Bu dağıtımlar sadece başlangıç. Yüzlerce farklı Linux dağıtımı mevcut.

Aşağıdaki bağlantı diğer Linux dağıtımlarıyla güncel kalmanız için iyi bir kaynaktır:

Linux Dağıtımları : https://distrowatch.com/

Her Linux dağıtımı belirli bir kullanıcı tabanına, belirli bir kullanım durumuna veya belirli bir felsefeye hitap eder. Linux dağıtımlarının çeşitliliği, Linux’un gücünün ve esnekliğinin bir kanıtıdır ve her kullanıcı, ihtiyaçlarını karşılayan bir dağıtım bulabilir. Bu nedenle, Linux’a yeni başlayanlar için en iyi dağıtım genellikle kişinin neyi başarmak istediğine, hangi donanımı kullandığına ve ne düzeyde bilgiye sahip olduğuna bağlıdır.

Linux/Unix’te Güncelleme ve Yükseltme

Her işletim sisteminin düzenli ve etkili bir şekilde güncellenmesi bilgi güvenliğinin kritik bir parçasıdır ve Linux işletim sistemi de bu kuralın dışında değildir. Linux’un ‘güncelleme’ ve ‘yükseltme’ komutları, sisteminizin yazılımını güncel ve güvenli tutarken olası güvenlik açıklarını kapatmada önemli bir rol oynar.

Linux işletim sistemlerinde yazılım güncellemeleri genellikle komut satırı üzerinden gerçekleştirilir ve bu genellikle güncelleme ve yükseltme komutlarıyla yapılır. Bu konuya daha yakından bakalım:

Güncelleme

Güncelleme komutu genellikle paket yöneticisine tüm yazılım depolarını yeni sürümler ve güncellemeler için kontrol etmesini söyler. Bu, depolardaki paketlerin listesini günceller, ancak mevcut yazılım sürümlerinizi yükseltmez; bu, güncelleme komutunun sisteminizdeki hiçbir şeyi değiştirmediği veya yükseltmediği anlamına gelir; yalnızca yeni güncellemelerin varlığını kontrol eder ve bunları indirilmeye hazır hale getirir.

Debian tabanlı dağıtımlarda bu genellikle “sudo apt update” komutuyla yapılır. Red Hat tabanlı dağıtımlarda “sudo yum check-update” komutu kullanılır.

Ubuntu Güncelleme Süreci

“Sudo apt update” komutu ile güncellenmesi gereken paketlerin listesini kontrol ederek güncellemeye hazır hale getirir.


Centos Güncelleme Süreci

“Yum check-update” komutu ile güncellenmesi gereken paketlerin listesini kontrol eder ve güncellemeye hazır hale getirir.

Güncelleme

Yükseltme komutu sisteminizdeki paketleri güncellenen paket listesine göre daha yeni veya son sürümlere yükseltir. Bu komut genellikle güncelleme komutunu çalıştırdıktan sonra kullanılır.

Bu işlem Debian tabanlı sistemlerde “sudo apt update” komutu, Red Hat tabanlı sistemlerde ise “sudo yum update” komutu ile gerçekleştirilir.

Bu iki komut genellikle birlikte kullanılır, önce paket listesini update ile günceller, daha sonra bu paketleri yükseltme ile en yeni sürümlere yükseltir. Debian tabanlı sistemlerde bu iki komut genellikle birlikte çalıştırılır:

Komut:

sudo apt update && sudo apt upgrade

Bunlar Linux’ta yazılım güncellemelerini yönetmek için kullanılan temel komutlardır. Ancak bazı durumlarda, örneğin işletim sistemi yükseltmesi gibi daha karmaşık güncellemeler gerekebilir. Bu durumda genellikle daha spesifik komutlar kullanılır ve bu tür güncellemeler daha fazla dikkat ve önlem gerektirir.

Ubuntu Yükseltme Süreci

“apt update” komutu ile güncellenmesi gereken paketleri güncelleyebilirsiniz. Paketleri güncellemek için yükseltme sorulan soruda “YES” için “Y” tuşuna basmamız yeterli.


Centos Yükseltme Süreci

Güncellenmesi gereken paketleri “yum update” komutu ile güncelleyebilirsiniz. Paketleri güncellemek için yükseltme istenen soruda “YES” için “Y” tuşuna basmamız yeterli.

Sonuç / Özet

Sonuç olarak, Linux işletim sisteminizi düzenli olarak güncellemek ve yükseltmek, sisteminizin güvenliği açısından hayati öneme sahiptir. Bu işlemler sisteminizi en son özellikler ve iyileştirmelerle güncel tutmanın yanı sıra olası güvenlik açıklarını kapatarak sistemlerinizi siber tehditlere karşı korur. Ancak bu işlemleri gerçekleştirirken dikkatli olmak da önemlidir. Kritik bir sistem dosyasının yanlışlıkla silinmesi veya bir güncellemenin uyumsuzluğu nedeniyle sistemde sorun yaratılması ciddi sorunlara yol açabilir. Bu nedenle, öncelikle güncellemeleri test etmek ve önemli verilerin yedeklerini almak her zaman en iyisidir.

Linux/Unix’te kimlik doğrulama

Linux işletim sisteminde kimlik doğrulama, sistem güvenliği ve kullanıcı kontrolünün bir diğer önemli noktasıdır.

Kimlik doğrulama, kullanıcının kim olduğunu doğrulama sürecini ifade eder. Genellikle kullanıcı adı ve şifre kombinasyonuyla yapılır ve bu bilgiler genellikle PAM (Takılabilir Kimlik Doğrulama Modülleri) aracılığıyla yönetilir. Gelişmiş kimlik doğrulama mekanizmaları, kimlik doğrulama sürecini daha güvenli hale getiren iki faktörlü kimlik doğrulama (2FA) gibi teknikleri içerir.

Kimlik doğrulama

Kimlik doğrulama, kullanıcının kim olduğunu doğrulama işlemidir. Linux’ta kimlik doğrulama genellikle kullanıcı adı ve şifre kombinasyonuyla yapılır. Bu bilgiler sistemde tanımlı olan kullanıcı listesi ile kontrol edilir ve doğru ise kullanıcı sisteme erişebilir. Kullanıcılar işletim sistemine giriş yapmak için bir kullanıcı adı ve şifre girerler. Linux, “/etc/passwd” dosyasında kullanıcı adını ve “/etc/shadow” dosyasında karşılık gelen şifre karmasını arar. Girilen şifrenin sistemde kayıtlı olan hash ile eşleşmesi durumunda kullanıcı sisteme giriş yapabilir.

/etc/passwd: Bu dosya kullanıcı hesabı bilgilerini içerir. Her kullanıcının kullanıcı adı, kullanıcı ve grup ID’si, ana dizin ve kabuk bilgileri burada saklanır.

/etc/shadow: Bu dosya, şifrelemeyle saklanan kullanıcıların şifrelerini içerir. Parolaları /etc/passwd dosyasından ayrı tutmak sistem güvenliğini artırır.

Aşağıdaki görselde “/etc/passwd” ve “/etc/shadow” dosya içeriklerinin detayları gösterilmektedir.


Linux’ta kimlik doğrulama işlemi daha gelişmiş yeteneklere sahip PAM (Takılabilir Kimlik Doğrulama Modülleri) aracılığıyla da yapılabilir. PAM, sistemdeki çeşitli hizmetler ve uygulamalar arasındaki kimlik doğrulama süreçlerini standartlaştırır ve yönetir.

PAM, bu genel ve yeniden kullanılabilir yapıya, doğrulama sürecini “modüllere” bölerek ulaşır. Bir modül genellikle belirli bir kimlik doğrulama mekanizmasını temsil eder. Örneğin, bir modül geleneksel UNIX parola kimlik doğrulamasını temsil edebilir ve başka bir modül LDAP, RADIUS veya NIS gibi ağ tabanlı bir kimlik doğrulama hizmetini temsil edebilir. Bu, bir sistem yöneticisinin, bir hizmetin ne tür kimlik doğrulaması kullanması gerektiğini belirlemek için modülleri karmaşık bir şekilde yapılandırmasına olanak tanır.

Aşağıda bazı PAM modüllerini bulabilirsiniz:

pam_unix.so: UNIX parola kimlik doğrulamasını sağlar.

pam_cracklib.so: Güçlü şifreler gerektirir.

pam_securetty.so: Root kullanıcısının yalnızca güvenli terminallerden giriş yapmasına izin verir.

pam_nologin.so: nologin dosyası mevcutsa normal kullanıcıların oturum açmasını engeller.

PAM modüllerini “/etc/pam.d/” veya “/etc/pam.conf” dosyasında yapılandırabilirsiniz. Bu yapılandırmalar hizmet tabanlıdır; yani her hizmet için farklı PAM politikaları ayarlayabilirsiniz.

Ayrıca daha güvenli kimlik doğrulama yöntemleri de mevcuttur. Örneğin, iki faktörlü kimlik doğrulama (2FA) sistemlerinde, kullanıcı yalnızca kullanıcı adı ve şifre bilgileriyle değil, aynı zamanda başka bir bilgi veya cihazla (örneğin telefon) kimlik doğrulaması yapar.

PAM’in yeteneklerini daha iyi anlamak için bir örnek verelim. (Örnek CentOS dağıtımı üzerinden yapılmıştır. Dağıtımlara göre adımlar farklılık gösterebilir.)

Not : Bu işlem her kullanıcı için ayrı ayrı yapılır. Bu örnekte işlem “root” kullanıcısı için yapılacaktır.

Adım-1: “google-authenticator” paketini aşağıdaki komutla yükleyin:

Komut : sudo yum install google-authenticator -y


Adım-2:
 Terminalden “google-authenticator” komutu çalıştırılarak uygulama açılır.

Komutu çalıştırdıktan sonra bazı soruları yanıtlamanız gerekecektir. Öncelikle zamana dayalı kimlik doğrulamayı etkinleştirmeniz istenecektir. Buna genellikle “Y” ile cevap verilir.

Daha sonra sizden bir acil durum şifresi (veya “önyükleme anahtarı”) oluşturmanızı ve kodların birden çok kez kullanılıp kullanılamayacağını, kodların 30 saniye sonra geçerliliğinin sona erip ermeyeceğini ve son 30 saniye içinde kullanılan bir kodun reddedilmesi gerekip gerekmediğini sorar. Bu soruların her birine durumunuza göre “E” veya “H” ile cevap verilmelidir.

Bu eylem aynı zamanda bir QR kodu oluşturacaktır. Google Authenticator uygulamasını telefonunuza yüklediğinizde bu kodu tarayabilirsiniz.


Adım-3:
 PAM, Google Authenticator’ı kullanacak şekilde yapılandırılmalıdır. Bu ayar sshd PAM yapılandırma dosyası düzenlenerek yapılır. “/etc/pam.d/sshd” dosyasını metin düzenleyiciyle açın ve aşağıdaki satırı ekleyin:

auth required pam_google_authenticator.so

Adım-4: Son olarak SSH’nin 2FA kullanacak şekilde yapılandırılması gerekmektedir. Bunun için SSH konfigürasyon dosyası “/etc/ssh/sshd_config” bir metin editörü ile açılır ve dosyadaki “ChallengeResponseAuthentication” değeri “yes” olarak ayarlanır.

Adım-5: Ayarların aktif olabilmesi için ssh servisi yeniden başlatılır.

Adım-6: SSH ile erişim denemesi yapılarak şifre sonrasında 2FA kodu istendiği ve bilgiler girildikten sonra giriş bilgilerinin girildiği görülmektedir.

Linux/Unix’te Yetkilendirme

Linux işletim sisteminde yetkilendirme, sistem güvenliği ve kullanıcı kontrolünün bir diğer önemli noktasıdır.

Yetkilendirme, kullanıcının ne yapabileceğini belirler. Bir kullanıcının yetkileri genellikle grup üyeliklerine ve bu grupların yetki düzeylerine bağlıdır. Linux’un dosya sisteminde belirli bir dosya veya dizinde kimin ne yapabileceğini belirleyen yetki ayarları vardır. Kimlik doğrulama ve yetkilendirme, Linux sistemlerinin güvenli ve düzgün çalışmasını sağlamak için birlikte çalışır.

Yetkilendirme, kullanıcının sistem üzerinde ne tür eylemler gerçekleştirebileceğini kontrol etme işlemidir. Linux’ta yetkilendirme, belirli kullanıcılara veya gruplara dosyalara, dizinlere veya komutlara erişim verme işlemidir. Bu işlem sistemin güvenliğinin arttırılması, kullanıcıların neler yapabileceğinin kontrol edilmesi ve verilerin bütünlüğünün korunması açısından önemlidir. Yetkilendirme konusu temel olarak 2 farklı başlık altında detaylandırılacaktır:

Sudo yetkilendirmesi

Bir kullanıcının yetkileri genellikle grup üyeliklerine göre belirlenir. Örneğin sudo grubuna dahil olan kullanıcılar genellikle sistem üzerinde root ayrıcalıklarına sahiptir ve sistem üzerinde tam kontrol sahibi olurlar. “Sudo” (süper kullanıcı do) aracı, belirli kullanıcıların veya kullanıcı gruplarının hangi komutları ve hangi sistemlerde çalıştırabileceğini kontrol etmek için “/etc/sudoers” dosyasını kullanır.

Kullanıcıların sudo ile neler yapabileceğini belirlemek için aşağıdaki öğeleri kontrol edebilirsiniz:

Kullanıcılar: Sudo komutunu hangi kullanıcıların kullanabileceğini belirleyebilirsiniz.

Sistemler: Sudo komutunu hangi sistemlerde çalıştırabileceklerini belirtebilirsiniz.

Komutlar: Sudo ile hangi komutları çalıştırabileceklerini belirleyebilirsiniz.

Sudo yetkilendirmesinin yönetimi “visudo” komutu kullanılarak yapılır. Bu komut “/etc/sudoers” dosyasını düzenlemenin güvenli bir yolunu sağlar. Çakışmaları önlemek için Visudo, başka biri dosyayı düzenlerken düzenlemeyi kilitler ve sözdizimi hatalarını kontrol eder.

İşte sudo tanımlarından bazı örnekler;

Yukarıdaki örnekler “/etc/sudoers” dosyasının nasıl yapılandırılacağını göstermektedir. Bu dosya “sudo” komutunun nasıl kullanıldığını kontrol eder ve bu nedenle güvenlik açısından önemlidir. Yanlışlıkla yapılan bir değişiklik, kullanıcının sistem üzerinde tam kontrol sahibi olmasına veya sudo komutunun çalışmamasına neden olabilir. Bu nedenle visudo komutu kullanılarak düzenlenmesi gerekir.

Dosya/Dizin Yetkilendirmesi

Linux’ta dosya ve dizinlerin ayrıcalıkları üç kategoriye ayrılır: sahip, grup ve diğerleri. Her dosya ve dizin belirli bir kullanıcıya (sahibine) ve gruba aittir. Her biri için okuma (r), yazma (w) ve yürütme (x) izinleri ayrı ayrı ayarlanabilir. Bu ayrıcalıklar chmod ve chown komutlarıyla yönetilebilir.

Chmod, chown ve chgrp komutları Linux’ta dosya ve dizin yetkilendirmelerini yönetmek için yaygın olarak kullanılır. Bu komutlara bazı örnekler:

Dosya/Dizin İzinlerini Ayarlama (chmod kullanarak):

  • Belirli bir dosyaya kullanıcı (u), grup (g) ve diğerlerine (o) okuma (r), yazma (w) ve yürütme (x) izinleri verme:

Bu örnekte kullanıcı “dosyam” adlı dosyayı okur, yazar ve çalıştırır; grubu okuyun ve çalıştırın; Diğer kullanıcılara salt okuma izinleri verilir.

  • İzinlerin sayısal biçimde ayarlanması:

Bu örnekte “dosyam” isimli dosya kullanıcı tarafından okunmakta, yazılmakta ve çalıştırılmaktadır (7); okuyun ve gruba çalıştırın (5); diğer kullanıcılara (4) yalnızca okuma izni verilir.

Dosya/Dizin Sahibini Değiştir (chown kullanarak):

  • Bir dosyanın sahibini değiştirmek:


Bu örnekte “dosyam” isimli dosyanın sahibi “yenikullanıcı” olarak değiştirilmiştir.

  • Bir dizinin sahibini ve içeriğini değiştirmek:


Bu örnekte “dizinim” isimli dizin ve içeriği “yenikullanıcı” olarak değiştirilmiştir (-R parametresi eylemin dizinin tüm alt dizinlerine ve dosyalarına uygulanmasına neden olur).

Dosya/Dizin Grubunu Değiştirme (chgrp kullanarak):

  • Bir dosyanın grubunu değiştirme:

Bu örnekte “dosyam” isimli dosyanın grubu “yenigrup” olarak değiştirilmiştir.

  • Bir dizinin grubunu ve içeriğini değiştirme:


Bu örnekte “mydirectory” isimli dizinin grubu ve içeriği “newgroup” olarak değiştirilmiştir.

Yetkilendirme özellikle Linux sisteminin güvenliği açısından kritik öneme sahiptir. Yanlış yetkilendirme ayarları, yetkisiz kullanıcıların veya saldırganların sistemi tehlikeye atabilecek önemli dosyalara veya hizmetlere erişmesine neden olabilir.

Linux/Unix’te Parola Yönetimi

Linux işletim sistemindeki parola yönetimi, sistem güvenliğinin kritik bir unsurudur ve sistemleri yetkisiz erişime karşı korur. Şifreler kimlik doğrulamanın temelini oluşturur ve kullanıcıların sisteme ve çeşitli hizmetlere erişimini kontrol eder. Ancak zayıf veya standartlaştırılmış parolalar, saldırganların kolaylıkla yararlanabileceği hedeflerdir. Bu nedenle etkili şifre yönetiminin genel sistem güvenliği üzerinde büyük etkisi vardır.

Linux işletim sistemi, güvenli parola yönetimi için bir dizi araç ve politika sağlar. Parola yönetimi, bir kullanıcının kimliğini doğrulamak ve yetkisiz erişimi önlemek için çok önemli bir mekanizmadır. Linux sistemlerinde şifre yönetimine ilişkin bazı ayrıntılar şunlardır:

Şifre Yönetimi Araçları

Linux’ta şifreleri yönetmenize yardımcı olan çeşitli araçlar vardır. Örneğin, “passwd”, parolaları güvenli bir şekilde saklamanıza ve yönetmenize olanak tanıyan, komut satırı tabanlı bir parola yöneticisidir.

Önemli şifre yönetimi araçlarından bazıları şunlardır:

passwd: Şifreleri yönetmek için en sık kullanılan araçtır. passwd komutu ile kullanıcılar şifrelerini değiştirebilir ve sistem yöneticileri kullanıcıların şifrelerini sıfırlayabilir veya değiştirebilir.

chage: Bu araç kullanıcıların şifre ömrünü ayarlamak için kullanılır. Sistem yöneticisi, kullanıcının şifresinin ne sıklıkta değiştirilmesi gerektiğini, şifre uyarılarının ne zaman sona ereceğini ve hesabın ne zaman devre dışı bırakılması gerektiğini ayarlayabilir.

usermod: Bu araç, sistem yöneticilerinin kullanıcı hesaplarını değiştirmek için kullanabileceği bir komuttur. Örneğin, “usermod -L” komutu bir kullanıcının şifresini kilitleyen komuttur ve “usermod -U” komutu da şifrenin kilidini açan komuttur.

PAM (Takılabilir Kimlik Doğrulama Modülleri): PAM, Linux’ta kimlik doğrulama yönetimi sağlar. PAM modülleri, parola karmaşıklığı, deneme süreleri ve oturum kontrolleri gibi politikaların belirlenmesine olanak tanır.

faillog: Bu araç, kullanıcının başarısız oturum açma girişimlerini izlemek için kullanılır.

last: Bu araç sisteme en son ne zaman ve hangi kullanıcıların giriş yaptığını gösterir.

sudoers: Bu, belirli kullanıcıların veya grupların sudo komutu üzerinde hangi ayrıcalıklara sahip olduğunu belirler. Bu, kullanıcıların hangi komutları hangi ayrıcalıklarla çalıştırabileceğini belirlemeye yardımcı olur.

Bu araçların her biri, Linux sistemlerinde güvenli şifre ve kullanıcı yönetimi sağlamak için kullanılır.

Şifre Ayarı

Linux’ta kullanıcı şifreleri “passwd” komutuyla ayarlanabilir. Bu komut, geçerli kullanıcının veya belirli bir kullanıcının (kök kullanıcı olarak çalıştırıldığında) şifresini değiştirmenize olanak sağlar. Linux dağıtımlarında şifreler güvenli bir şekilde /etc/shadow dosyasında saklanır. Bu dosyanın root kullanıcı tarafından okunmasına izin verilir. Bu, normal kullanıcıların dosyaya erişmesini ve şifreleri okumasını engeller. Şifreler düz metin biçiminde saklanmaz. Bunun yerine, şifreler ilk önce bir karma işlevinden geçirilir. Bu işlev parolayı alır ve onu belirli uzunlukta benzersiz bir dizeye dönüştürür. Bu dize daha sonra “/etc/shadow” dosyasında saklanır.

Örnek bir satır “/etc/shadow” dosya içeriği aşağıdaki gibidir:


Dosyanın her satırında “ : ” ile ayrılan alanların detayları aşağıdaki gibidir:

Kullanıcı Adı : Bu örnekte kullanıcı adı “root”tur.

Hash: Bu bölüm şifreyi içerir ve genellikle yukarıdaki görseldeki gibi $6$80Ch3whg$2FPi6KtjhgTUwgY2iy gibi hash fonksiyonundan geçirilen bir şifreyi içerir. $6$ değeri, parola karmasının SHA-512 karma algoritması kullanılarak hesaplandığını gösterir. Daha sonra tuz değeri ve şifrelenmiş şifre gelir.

Son Değişiklik Tarihi : Bu bölümde Unix saati olarak ifade edilen son şifre değişikliği tarihi görüntülenir.

Minimum Şifre Yaşı: Bu bölüm kullanıcının şifreyi ne sıklıkta değiştirebileceğini belirler. 0, kullanıcının istediği zaman şifreyi değiştirebileceğini gösterir.

Maksimum Şifre Süresi: Bu bölüm kullanıcının şifresini ne sıklıkta değiştirmesi gerektiğini belirler. 99999 genellikle şifrenin süresinin dolmayacağı anlamına gelir.

Uyarı Süresi: Bu bölüm, kullanıcının şifresinin süresi dolmadan önce alacağı uyarı süresi uyarısını belirler. Bu örnekte 7 gün önceden uyarı verilecektir.

Hareketsizlik Süresi: Şifrenin süresi dolduktan sonra hesabın ne kadar süre hareketsiz kalacağını belirler. Bu örnekte boştur, yani hesap otomatik olarak devre dışı bırakılmayacaktır.

Hesap Sona Erme Süresi: Bu bölüm hesabın süresinin ne zaman dolacağını belirler. Bu örnekte boştur, yani hesabın süresi otomatik olarak dolmayacaktır.

Ayrıca Linux’ta standart kullanıcıların kendi şifrelerini güncellemek istediklerinde mevcut şifrelerini bilmeleri gerekmektedir. Ancak “root” kullanıcının şifresini değiştirmek için mevcut şifreyi, root kullanıcısını kullanarak başka bir kullanıcının şifresini değiştirmek için mevcut şifreyi bilme zorunluluğu yoktur.

Linux/Unix’te Şifre Politikaları

Parola politikaları, kullanıcıların belirli güvenlik standartlarını karşılayan parolaları seçmesine olanak sağlamak için kullanılır. Linux sistemlerinde parola politikaları genellikle PAM (Takılabilir Kimlik Doğrulama Modülleri) ve chage komutlarıyla yönetilir. Ayrıca, login.defs dosyası, sistem genelinde bazı varsayılan parola ilkelerini ayarlamak için kullanılır.

PAM ile Şifre Politikalarını Ayarlama

PAM bir dizi kural seti ve modülle birlikte gelir. Bu modülleri ve kural setlerini kullanarak karmaşıklık, süre ve geçmişi içeren şifre politikalarında ince ayarlar yapabiliriz. Bu modülleri ve kuralları düzenlemek için öncelikle “/etc/pam.d/common-password” dosyasını bir metin düzenleyiciyle açmalısınız.

Örneğin, bir şifrenin en az 10 karakter uzunluğunda olmasını ve hem büyük hem de küçük harf ve rakamlar içermesini istiyorsanız şöyle bir kural ekleyebilirsiniz:

Bu kuralda şifrenin;

minlen: minimum şifre uzunluğu

ucredit: en az bir büyük harf

lcredit: en az bir küçük harf

dcredit : en az bir basamaklı sayı

“chage” Komutu ile Şifre Politikalarını Ayarlama

“Chage” komutu, bir kullanıcının şifresinin ne kadar süreyle geçerli olacağını ve ne zaman değiştirilmesi gerektiğini belirleyen politikaları düzenlemenize olanak tanır.

Örneğin;

Bir kullanıcının şifresini maksimum 60 gün boyunca kullanmasına izin vermek istiyorsanız aşağıdaki komutu kullanabilirsiniz:

sudo chage -M 60 username

Bir kullanıcının şifre süresini sorgulamak için -l (liste) seçeneğini kullanabilirsiniz. Örneğin kullanıcı adındaki bir kullanıcının şifre süresini sorgulamak için:

sudo chage -l username

Chage komutuna ilişkin önemli parametreler aşağıda verilmiştir:

“login.defs” Dosyası ile Şifre Politikalarını Ayarlama

“/etc/login.defs” dosyası sistem çapında bazı varsayılan şifre politikalarını belirler. Bu dosyada kullanıcının şifresini ne kadar süre kullanabileceği, ne kadar süre şifresiz kalabileceği, şifresini ne zaman değiştirmesi gerektiği gibi bilgiler yer almaktadır. Bu dosyayı düzenlemek için bir metin düzenleyici kullanmanız gerekir.

Politika örneğini ele alalım. PASS_MAX_DAYS Varsayılan değer olan 99999, kullanıcı şifresinin süresiz olarak geçerli olacağını belirtir. Bu değeri 60 günle sınırlamak istiyorsanız şu şekilde değiştirebilirsiniz:

Aşağıda “/etc/login.defs” dosyasında ayarlanabilen şifre politikalarının bir özeti bulunmaktadır:

İki Faktörlü Kimlik Doğrulama

Parolalar kimlik doğrulamanın bir parçasıdır ancak tek başına kullanıldığında yeterli olmayabilir. Bu nedenle erişim güvenliğini sağlamak için İki Faktörlü Kimlik Doğrulamayı (2FA) ayarlamamız gerekebilir. 2FA, bir kullanıcının kimliğini doğrulamak için bir şifre ve başka bir faktör gerektirir. Linux’ta 2FA, Google Authenticator gibi araçlarla kurulabilir.

Not : “Linux/Unix’te Kimlik Doğrulama” dersinde Google Authenticator ile 2FA ile SSH erişiminin nasıl yapılacağı örneği anlatılmıştır.

Sonuç/Özet

Sonuç olarak, Linux’ta şifre yönetimi, kullanıcı şifrelerini güvenli ve etkili bir şekilde yönetmek için bir dizi araç ve politika sunar. Bu politikaların ve araçların doğru şekilde uygulanması, sistemlerin güvende kalmasına yardımcı olabilir. Bu yöntemler şifre politikalarınızı ayarlayarak kullanıcıları daha güçlü şifreler kullanmaya zorlar. Ancak şunu da belirtmek gerekir ki, şifre politikaları yalnızca bir güvenlik önlemidir ve kullanıcıları diğer güvenlik tehditlerine karşı korumaz.

Yorum bırakın

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

Scroll to Top