Giriş
Günümüz siber dünyasında şifre yönetimi, hem bireysel kullanıcılar hem de sunucu ortamları için kritik bir öneme sahiptir. KeePass, güçlü şifreleri güvenli bir şekilde depolamak için popüler, açık kaynaklı ve platformlar arası bir şifre yöneticisidir. Genellikle grafik arayüzlü masaüstü uygulamalarıyla bilinse de, başsız (headless) sunucular gibi GUI’nin olmadığı ortamlarda KeePass veritabanlarını yönetmek özel bir yaklaşım gerektirir.
İşte tam da bu noktada kpcli (KeePass Command Line Interface) devreye girer. kpcli, KeePass 2.x (.kdbx) formatındaki şifre dosyalarını komut satırından yönetmenize olanak tanıyan güçlü bir araçtır. Bu rehber, özellikle Ubuntu 14.04 sunucusu üzerinde kpcli kurulumunu ve kullanımını adım adım açıklayarak, sunucu ortamınızda şifrelerinizi güvenle yönetmenize yardımcı olmayı amaçlamaktadır. Eski bir işletim sistemi olan Ubuntu 14.04’te bile bu aracı nasıl etkin bir şekilde kullanabileceğinizi öğreneceksiniz.
Bu rehberde, kpcli‘nin kurulumundan KeePass veritabanınızı açmaya, yeni girişler eklemeye, mevcut girişleri düzenlemeye ve silmeye kadar temel işlemleri ele alacağız. Ayrıca, sunucu ortamında pratik kullanım senaryoları ve güvenlik ipuçları hakkında da bilgiler sunacağız.
kpcli Kurulumu
kpcli bir Perl betiği olduğundan, öncelikle Perl ve gerekli bağımlılıkların sisteminizde kurulu olması gerekmektedir. Ubuntu 14.04 üzerinde bu kurulumu adım adım gerçekleştireceğiz.
Bağımlılıkların Yüklenmesi
İlk olarak, sisteminizin paket listesini güncelleyelim ve kpcli‘nin ihtiyaç duyacağı temel Perl modülleri ile derleme araçlarını kuralım. libssl-dev paketi, Net::SSLeay gibi SSL ile ilgili Perl modüllerinin derlenmesi için gereklidir.
sudo apt-get update
sudo apt-get install -y perl build-essential libssl-dev
cpanminus ile kpcli Kurulumu
kpcli ve onun temel bağımlılığı olan KeePass::CLI modülünü kurmanın en kolay ve güvenilir yolu cpanminus kullanmaktır. cpanminus, CPAN (Comprehensive Perl Archive Network) modüllerini kolayca kurmanızı sağlayan hafif bir araçtır.
Öncelikle cpanminus‘ı kuralım:
curl -L https://cpanmin.us | perl - --sudo App::cpanminus
Bu komut, cpanminus betiğini indirir ve sistem genelinde (--sudo ile) kurar. Kurulumdan sonra, cpanm komutunu kullanarak App::kpcli paketini ve tüm bağımlılıklarını kurabiliriz:
sudo cpanm App::kpcli
Bu işlem biraz zaman alabilir, çünkü KeePass::CLI ve diğer şifreleme ile ilgili Perl modüllerini derleyip kuracaktır. Kurulum tamamlandığında, kpcli komutu artık sisteminizde kullanılabilir olacaktır.
Kurulumun başarılı olup olmadığını kontrol etmek için:
kpcli --version
Bu komut kpcli‘nin sürüm numarasını göstermelidir.
KeePass Veritabanına Erişim ve Temel Kullanım
kpcli başarıyla kurulduktan sonra, KeePass veritabanı (.kdbx) dosyalarınıza erişmeye başlayabiliriz.
Veritabanı Açma
Bir KeePass veritabanı dosyasını açmak için kpcli komutunu -f veya --file parametresiyle kullanmalısınız:
kpcli -f /path/to/your/database.kdbx
Komutu çalıştırdıktan sonra, kpcli sizden master şifrenizi isteyecektir:
Enter master password for /path/to/your/database.kdbx:
Şifrenizi doğru girdiğinizde, kpcli‘nin etkileşimli kabuğuna yönlendirileceksiniz. İstemi (prompt) genellikle kpcli> şeklinde olacaktır.
Eğer veritabanınız bir anahtar dosyası (.keyx) kullanıyorsa, bunu -k veya --keyfile parametresiyle belirtebilirsiniz:
kpcli -f /path/to/your/database.kdbx -k /path/to/your/keyfile.keyx
Temel Komutlar
kpcli etkileşimli kabuk içinde birçok UNIX benzeri komutu destekler. İşte bazı temel komutlar:
* ls: Geçerli gruptaki girişleri ve alt grupları listeler.
* cd : Başka bir gruba geçiş yapar. cd .. üst gruba döner, cd / kök gruba gider.
* pwd: Geçerli çalışma dizinini (grubu) gösterir.
* show : Belirtilen girişin tüm detaylarını gösterir.
* get : Belirtilen girişin belirli bir alanını (örneğin password, username, url, notes) alır.
* help: Kullanılabilir komutların listesini gösterir. help ile belirli bir komut hakkında bilgi alabilirsiniz.
* exit veya quit: kpcli kabuğundan çıkar ve veritabanını kapatır (eğer kaydedilmemiş değişiklikler varsa uyarı verir).
Örnek Kullanım:
kpcli> ls
[General]
[Web Sites]
[Servers]
MySSHLogin
kpcli> cd Servers
kpcli> ls
MyWebAppServer
DatabaseServer
kpcli> show MyWebAppServer
Title: MyWebAppServer
Username: admin
Password: [hidden]
URL: ssh://mywebapp.com
Notes: Production server login
Created: 2023-10-26 10:00:00
Modified: 2023-10-26 10:00:00
kpcli> get MyWebAppServer password
YourPassword123!
get komutunu kullanarak şifreleri doğrudan alabilir ve gerektiğinde diğer komutlarla borulayarak (pipe) kullanabilirsiniz. Ancak bu tür hassas bilgileri komut satırında görünür bırakmamaya dikkat edin.
Girişleri Yönetme
kpcli sadece mevcut girişleri görüntülemekle kalmaz, aynı zamanda yeni girişler eklemenize, mevcut girişleri düzenlemenize ve silmenize de olanak tanır.
Yeni Giriş Ekleme
Yeni bir şifre girişi eklemek için add komutunu kullanın. Komutu çalıştırdığınızda, kpcli sizden gerekli bilgileri etkileşimli olarak isteyecektir:
kpcli> add
Title: MyNewService
Username: myuser
Password: [new_password_here]
Verify password: [new_password_here]
URL: https://mynewservice.com
Notes: This is a new service entry.
Şifreyi girerken girdiğiniz karakterler ekranda görünmeyecektir. Tüm bilgileri girdikten sonra kpcli girişi veritabanına ekleyecektir. Ancak, bu değişiklikler henüz kalıcı değildir. Değişiklikleri kaydetmek için save komutunu kullanmanız gerekir.
Girişleri Düzenleme ve Silme
Mevcut bir girişi düzenlemek için edit komutunu, silmek için ise rm komutunu kullanın.
Bir girişi düzenlemek için:
kpcli> edit MyNewService
Bu komut, MyNewService girişinin mevcut bilgilerini gösterir ve her alan için yeni bir değer girmenizi veya mevcut değeri değiştirmeden bırakmak için Enter tuşuna basmanızı ister.
Bir girişi silmek için:
kpcli> rm MyNewService
kpcli sizden silme işlemini onaylamanızı isteyecektir. Onayladıktan sonra giriş veritabanından silinir.
Değişiklikleri Kaydetme:
add, edit veya rm gibi komutlarla yaptığınız tüm değişiklikler, save komutunu çalıştırana kadar kalıcı değildir.
kpcli> save
Database saved.
Veritabanını kaydetmeden exit yaparsanız, kpcli size kaydedilmemiş değişiklikler olduğunu bildirecek ve kaydetmek isteyip istemediğinizi soracaktır.
Pratik Kullanım Senaryoları ve Otomasyon
kpcli‘nin komut satırı arayüzü olması, onu sunucu ortamında otomasyon ve betikleme için ideal kılar.
Otomatik Şifre Alma
Bir betik içinde belirli bir servisin şifresini almak isteyebilirsiniz. kpcli‘yi etkileşimli olmayan modda çalıştırarak bu işlemi gerçekleştirebilirsiniz. Ancak, master şifrenizi betik içine doğrudan yazmak KESİNLİKLE TAVSİYE EDİLMEZ ve büyük bir güvenlik açığı oluşturur.
Bunun yerine, master şifreyi bir ortam değişkeninden okumak veya gpg ile şifrelenmiş bir dosyadan almak gibi daha güvenli yöntemler kullanmalısınız. En basit ama yine de dikkatli olunması gereken yöntemlerden biri, şifreyi bir ortam değişkenine atayıp kpcli‘ye -p parametresiyle geçirmektir (ancak bu şifre ps komutuyla görülebilir, bu yüzden çok kısa ömürlü işlemler için tercih edilebilir). Daha güvenli bir yaklaşım, read -s kullanarak şifreyi etkileşimli olarak almak veya bir anahtar dosyası kullanmaktır.
Örnek (Çok Kısa Ömürlü Betikler İçin ve Dikkatle Kullanın):
#!/bin/bash
KEEPASS_FILE="/home/user/passwords.kdbx"
ENTRY_TITLE="MyWebAppServer"
Master şifreyi güvenli bir şekilde alın (örneğin, bir GPG şifreli dosyadan veya ortam değişkeninden)
BU ÖRNEK SADECE GÖSTERİM AMAÇLIDIR, ŞİFREYİ DOĞRUDAN BETİĞE YAZMAYIN!
MASTER_PASSWORD="YourSuperSecureMasterPassword" # ASLA BÖYLE YAPMAYIN!
Daha güvenli bir yaklaşım: Şifreyi etkileşimli olarak isteyin
read -s -p "KeePass Master Şifresi: " MASTER_PASSWORD
echo
kpcli'yi etkileşimli olmayan modda çalıştırın ve şifreyi alın
SERVICE_PASSWORD=$(echo "$MASTER_PASSWORD" | kpcli -f "$KEEPASS_FILE" -p -c "get \"$ENTRY_TITLE\" password")
echo "Servis Şifresi: $SERVICE_PASSWORD"
Hassas bilgileri temizleyin
unset MASTER_PASSWORD
clear # Ekranı temizle
Bu betik, kpcli‘yi -p (master şifreyi stdin’den oku) ve -c (komutları çalıştır ve çık) parametreleriyle kullanarak belirli bir girişin şifresini alır.
Yedekleme ve Senkronizasyon
KeePass veritabanı dosyanız (.kdbx), tüm şifrelerinizi içerdiğinden son derece değerlidir. Düzenli yedeklemeler yapmak hayati önem taşır. kpcli‘nin kendisi yerleşik bir senkronizasyon özelliğine sahip değildir, ancak .kdbx dosyası standart bir dosya olduğu için, dosya sistemi araçlarıyla kolayca yedeklenebilir:
# Yerel yedekleme
cp /home/user/passwords.kdbx /home/user/backups/passwords_$(date +%F).kdbx
Uzak sunucuya rsync ile yedekleme (SSH anahtarları ile parola sormadan)
rsync -avz /home/user/passwords.kdbx user@remote_server:/path/to/remote/backups/
Veritabanı dosyanızın yetkisiz erişime karşı korunması için dosya izinlerini doğru ayarladığınızdan emin olun:
chmod 600 /home/user/passwords.kdbx
Bu, yalnızca dosyanın sahibinin okuma ve yazma iznine sahip olmasını sağlar.
Güvenlik İpuçları
* Güçlü Master Şifre: KeePass veritabanınızın master şifresi, tüm şifrelerinizin anahtarıdır. Uzun, karmaşık ve benzersiz bir şifre kullanın. Anahtar dosyası kullanmak güvenliği daha da artırır.
* Dosya İzinleri: .kdbx ve .keyx dosyalarınıza sadece yetkili kullanıcıların erişebildiğinden emin olun (chmod 600).
* Komut Geçmişi: kpcli‘den çıktıktan sonra shell geçmişinde hassas komutların (özellikle şifrelerin doğrudan göründüğü komutlar) kalmadığından emin olun. ~/.bash_history veya ~/.zsh_history gibi dosyaları kontrol edin ve gerekirse temizleyin.
* screen veya tmux Kullanımı: Uzun süreli kpcli oturumları için screen veya tmux gibi terminal multiplexer’ları kullanın. Bu, SSH bağlantınız kesilse bile oturumunuzun devam etmesini sağlar ve hassas bilgilerin ekranda kalmasını önler.
* Ekranı Temizleme: Hassas bir bilgiyi get komutuyla aldıktan sonra clear komutunu kullanarak ekranı temizleyin.
* Minimum Yetki Prensibi: kpcli‘yi sadece ihtiyaç duyan kullanıcıların kullanmasına izin verin.
Sonuç
Bu rehberde, Ubuntu 14.04 sunucunuzda kpcli‘yi kurmayı ve KeePass 2.x şifre dosyalarınızı komut satırından yönetmeyi öğrendiniz. kpcli, başsız sunucu ortamlarında şifre yönetimi için güçlü ve esnek bir çözüm sunar. Kurulumdan başlayarak, veritabanı erişimi, temel komutlar, giriş yönetimi ve otomasyon senaryoları gibi konuları ele aldık.
Unutulmamalıdır ki, sunucu ortamında şifre yönetimi yüksek düzeyde güvenlik bilinci gerektirir. Master şifrenizin korunması, dosya izinlerinin doğru ayarlanması ve otomasyon betiklerinin dikkatli bir şekilde yazılması, güvenli bir sistemin temel taşlarıdır. kpcli‘nin sunduğu esneklik sayesinde, sunucu iş akışlarınıza KeePass güvenliğini entegre edebilir ve hassas bilgilerinizi merkezi ve güvenli bir şekilde yönetebilirsiniz.
Sıkça Sorulan Sorular (SSS)
1. kpcli sadece .kdbx dosyalarını mı destekler?
Evet, kpcli sadece KeePass 2.x formatındaki .kdbx uzantılı veritabanı dosyalarını destekler. KeePass 1.x formatındaki .kdb dosyalarını desteklemez.
2. Master şifremi komut satırında doğrudan geçirebilir miyim?
kpcli‘ye master şifreyi -p parametresiyle stdin’den geçirebilirsiniz (echo "şifrem" | kpcli -f dosya.kdbx -p). Ancak, şifreyi komut satırı argümanı olarak doğrudan belirtmek (kpcli -f dosya.kdbx --password "şifrem") güvenlik açısından kesinlikle önerilmez, çünkü şifre sistemin işlem listesinde (ps komutuyla) görülebilir hale gelir. Mümkünse etkileşimli girişi veya anahtar dosyasını tercih edin.
3. kpcli ile anahtar dosyası kullanabilir miyim?
Evet, kpcli anahtar dosyalarını (.keyx) destekler. -k veya --keyfile parametresini kullanarak anahtar dosyanızın yolunu belirtebilirsiniz:
kpcli -f /path/to/database.kdbx -k /path/to/keyfile.keyx
4. Ubuntu 14.04 dışında başka sistemlerde çalışır mı?
Evet, kpcli Perl ile yazıldığı için, Perl’in ve gerekli modüllerin yüklü olduğu herhangi bir Unix benzeri sistemde (Ubuntu’nun daha yeni sürümleri, Debian, CentOS, macOS vb.) çalışabilir. Kurulum adımları işletim sistemine göre küçük farklılıklar gösterebilir.
5. Veritabanı otomatik kaydediliyor mu?
Hayır, kpcli içinde yaptığınız değişiklikler (ekleme, düzenleme, silme) otomatik olarak kaydedilmez. Değişikliklerin kalıcı olması için save komutunu çalıştırmanız gerekir.