Zimbra’da İki Faktörlü Kimlik Doğrulama Kurulumu
Bir gün sabah 9’da telefon çalıyor, diğer ucta muhasebe departmanından bir kullanıcı: “Eposta şifremi değiştirmedim ama dün gece birisi hesabımdan mail göndermiş.” Bu senaryo, kurumsal Zimbra ortamlarında düşündüğümüzden çok daha sık karşılaşılan bir durum. Parola tek başına artık yeterli değil; bunu herkes biliyor ama uygulamaya geçmek hep “sonraya” kalıyor. İki faktörlü kimlik doğrulama (2FA) kurulumu tam da bu noktada devreye giriyor ve Zimbra bu konuda gayet yetenekli bir altyapı sunuyor.
Zimbra’da 2FA Nasıl Çalışır?
Zimbra, iki faktörlü kimlik doğrulama için TOTP (Time-based One-Time Password) standardını kullanıyor. Google Authenticator, Authy, Microsoft Authenticator gibi uygulamalarla doğrudan entegre çalışıyor. Kullanıcı normal şifresini girdikten sonra, telefon uygulamasından aldığı 6 haneli kodu da girmek zorunda kalıyor. Bu kod 30 saniyede bir yenileniyor.
Zimbra 8.7 ve sonrasında bu özellik zimbraAuthTokenLifetime ve TOTP altyapısıyla birlikte geliyor. Ancak kurulum sırasında bazı noktaları gözden kaçırmak son derece kolay. Özellikle çok sunuculu ortamlarda (multi-node Zimbra) senkronizasyon sorunları baş ağrısı yaratıyor. Bunların hepsine değineceğiz.
Önce ortamı tanımlayalım: Yazı boyunca örnek olarak Zimbra 8.8.15 veya 9.x üzerinde çalışan, Ubuntu 20.04 veya CentOS 7/8 tabanlı bir kurulum düşünüyoruz. Zimbra 10.x için de büyük ölçüde aynı adımlar geçerli, sadece birkaç komut farklılığı var.
Ön Hazırlık ve Gereksinimler
2FA kurulumuna geçmeden önce birkaç şeyi kontrol etmek lazım. Eksik bırakılan ön hazırlık, sonradan saatlerce hata ayıklamaya dönüşüyor.
Zimbra sürümünü doğrulayın:
su - zimbra
zmcontrol version
8.7.0 altındaki sürümlerde yerleşik TOTP desteği yok. Bu durumda ya yükseltme yapmanız ya da üçüncü parti bir çözüm değerlendirmeniz gerekiyor.
Sunucu saatini kontrol edin:
TOTP zaman bazlı çalıştığı için sunucu ile kullanıcının telefonu arasındaki saat farkı 30 saniyeyi aşarsa doğrulama başarısız oluyor. Bu basit görünen detay, kurulumdan sonra yaşanan sorunların yüzde ellisinin kaynağı.
timedatectl status
chronyc tracking
NTP servisi çalışmıyorsa hemen aktif edin:
systemctl enable chronyd
systemctl start chronyd
Zimbra servislerinin durumunu kontrol edin:
su - zimbra -c "zmcontrol status"
Tüm servisler ayakta olmalı. Özellikle mailboxd ve proxy servislerinde sorun varsa 2FA kurulumuna geçmeden önce bunları çözün.
Zimbra Yönetici Konsolundan 2FA Etkinleştirme
İlk yöntem, web tabanlı yönetici konsolunu kullanmak. Ancak deneyimlerime göre komut satırı üzerinden yapmak çok daha kontrollü ve tekrarlanabilir sonuç veriyor. Yine de konsoldan nasıl yapıldığını bilmek gerekiyor.
Yönetici konsoluna girin: https://sunucu-ip:7071
Buradan Admin Console > Configuration > Two-Factor Authentication yolunu izleyin. Ancak bu menünün görünmesi için önce TOTP özelliğinin lisans kapsamında açık olması gerekiyor. Network Edition kullananlar için bu özellik standart geliyor; Open Source Edition kullanıyorsanız durum biraz farklı, aşağıda açıklıyorum.
Komut Satırından 2FA Yapılandırması
Asıl işi komut satırında yapacağız. Zimbra kullanıcısına geçin ve aşağıdaki adımları sırayla uygulayın.
Global düzeyde 2FA özelliğini etkinleştirin:
su - zimbra
zmprov mcf zimbraFeatureTwoFactorAuthAvailable TRUE
Bu komut özelliği “kullanılabilir” hale getiriyor ama henüz zorunlu kılmıyor. Pilot uygulama için önce belirli bir gruba açmak mantıklı.
Belirli bir domain için 2FA’yı aktif edin:
zmprov md example.com zimbraFeatureTwoFactorAuthAvailable TRUE
2FA’yı kullanıcılar için zorunlu hale getirmek istiyorsanız:
zmprov md example.com zimbraRequireTwoFactorAuthentication TRUE
Dikkat: Bu komutu çalıştırdığınız anda o domain’deki tüm kullanıcılar bir sonraki girişlerinde 2FA kurulumu yapmak zorunda kalacak. Önceden kullanıcıları bilgilendirmeden bunu yapmak, yardım masasına ciddi yük bindiriyor. Önce FALSE olarak bırakıp seçili kullanıcılara açmayı öneririm.
Belirli bir kullanıcı için 2FA zorunlu kılmak:
zmprov ma [email protected] zimbraRequireTwoFactorAuthentication TRUE
Uygulama şifrelerini (app passwords) etkinleştirin:
2FA etkinleştirdiğinizde, IMAP/SMTP gibi protokollerle bağlanan eski mail istemcileri sorun yaşayacak. Outlook, Thunderbird veya mobil uygulamalar için uygulama şifresi altyapısını açmak şart:
zmprov mcf zimbraFeatureAppSpecificPasswordsEnabled TRUE
zmprov md example.com zimbraFeatureAppSpecificPasswordsEnabled TRUE
Kullanıcı Tarafında 2FA Kurulumu
Teknik altyapıyı hazırladıktan sonra kullanıcıların ne yapacağını bilmesi gerekiyor. Bunu bir kılavuz haline getirip dağıtmakta fayda var.
Kullanıcı Zimbra web arayüzüne (Webmail) girdiğinde:
- Sağ üst köşeden Tercihler (Preferences) menüsüne tıklar
- Hesap (Account) sekmesine geçer
- İki Faktörlü Kimlik Doğrulama bölümünü bulur
- Kurulumu Başlat butonuna basar
Ekranda bir QR kodu ve altında manuel giriş için bir gizli anahtar (secret key) belirir. Kullanıcı telefondaki authenticator uygulamasıyla QR’ı okutunca hesabı ekleniyor ve 6 haneli kodlar üretilmeye başlıyor.
Burada kullanıcılara mutlaka şunu söyleyin: Yedek kodları kaydedin. Zimbra kurulum sürecinde bir defaya mahsus gösterilen yedek kodları (scratch codes) kaybeden kullanıcı, telefona erişimi olmadığında hesabına giremez. Bu durumda admin müdahale etmek zorunda kalır.
Admin Olarak 2FA Sıfırlama
Telefonu kaybeden ya da değiştiren kullanıcı için 2FA’yı admin tarafından sıfırlamak gerekiyor. Bu işlem oldukça basit ama zaman zaman unutuluyor.
su - zimbra
zmprov ma [email protected] zimbraTwoFactorAuthEnabled FALSE
Bu komuttan sonra kullanıcı normal şifresiyle giriş yapabilir ve yeniden 2FA kurulumu başlatabilir. İşlem sonrasında güvenlik açığı oluşmaması için kullanıcıyı hemen bilgilendirin ve 2FA’yı yeniden kurmasını isteyin.
Eğer sadece TOTP sırını temizlemek, yani sıfırdan başlatmak istiyorsanız:
zmprov ma [email protected] zimbraTwoFactorAuthSecret ""
zmprov ma [email protected] zimbraTwoFactorAuthEnabled FALSE
Uygulama Şifresi Yönetimi
Bu konu genellikle göz ardı ediliyor ama 2FA geçişinin en kritik parçası burası. Zimbra 2FA aktif olduğunda IMAP, POP3 veya SMTP ile bağlanan istemciler normal şifreyle bağlanamaz hale geliyor. Bu yüzden uygulama şifresi mekanizmasını anlamak önemli.
Kullanıcılar Webmail üzerinden Tercihler > Hesap > Uygulama Şifreleri bölümünden her istemci için ayrı şifre üretebilir. Bu şifreler uzun ve rastgele olduğundan brute-force saldırılarına karşı güçlü.
Admin olarak bir kullanıcının uygulama şifrelerini listelemek için:
su - zimbra
zmprov ga [email protected] zimbraAppSpecificPassword
Belirli bir uygulamanın şifresini iptal etmek gerekiyorsa kullanıcı arayüzden yapabiliyor. Admin tarafında tüm uygulama şifrelerini temizlemek için:
zmprov ma [email protected] zimbraAppSpecificPassword ""
Toplu Kullanıcı Yönetimi ve Otomasyon
Onlarca ya da yüzlerce kullanıcısı olan bir ortamda tek tek işlem yapmak zaman kaybı. Aşağıdaki script, belirli bir domain’deki tüm kullanıcılara 2FA’yı açıp uygulama şifrelerini etkinleştiriyor:
#!/bin/bash
DOMAIN="example.com"
ZIMBRA_USER="zimbra"
# Domain'deki tüm kullanıcıları listele
su - $ZIMBRA_USER -c "zmprov -l gaa $DOMAIN" | while read hesap; do
echo "İşleniyor: $hesap"
su - $ZIMBRA_USER -c "zmprov ma $hesap zimbraFeatureTwoFactorAuthAvailable TRUE"
su - $ZIMBRA_USER -c "zmprov ma $hesap zimbraFeatureAppSpecificPasswordsEnabled TRUE"
done
echo "Tüm kullanıcılar güncellendi."
Bu scripti çalıştırmadan önce test ortamında deneyin. Üretim ortamında doğrudan çalıştırmak riskli; önce tek bir test kullanıcısıyla denenmesini şiddetle tavsiye ederim.
2FA durumunu toplu kontrol etmek için:
su - zimbra
zmprov -l gaa example.com | while read hesap; do
durum=$(zmprov ga $hesap zimbraTwoFactorAuthEnabled 2>/dev/null | grep zimbraTwoFactorAuthEnabled | awk '{print $2}')
echo "$hesap: $durum"
done
Bu çıktıyı bir dosyaya yönlendirirseniz hangi kullanıcıların 2FA kurduğunu, hangilerinin kurmadığını kolayca görebilirsiniz.
Zimbra Proxy ve Nginx Yapılandırması
Zimbra’da reverse proxy (Nginx) üzerinden gelen bağlantılarda 2FA’nın düzgün çalışması için proxy yapılandırmasının doğru olduğundan emin olmak gerekiyor.
Proxy servisinin durumunu kontrol edin:
su - zimbra
zmproxyctl status
Proxy üzerinden IMAP/SMTP bağlantılarında uygulama şifrelerinin kabul edilmesi için şu ayarı doğrulayın:
zmprov gcf zimbraReverseProxyUpstreamLoginServers
Birden fazla mailbox sunucusu olan ortamlarda tüm sunucular bu listede olmalı. Eksik sunucu varsa ekleyin:
zmprov mcf +zimbraReverseProxyUpstreamLoginServers mailbox2.example.com
Proxy yapılandırmasını yeniden oluşturun ve yeniden başlatın:
zmproxyconfgen
zmproxyctl restart
Gerçek Dünya Senaryosu: Aşamalı Geçiş Planı
Bir müşteride 300 kullanıcılı Zimbra ortamında 2FA geçişini yaşadım. “Hepsine aynı anda açalım” yaklaşımı büyük kaos yaratıyor. İşte işe yarayan aşamalı plan:
1. Hafta – Pilot Grup: IT departmanı ve yöneticilerden oluşan 15-20 kişilik grubu seçin. Bunlar hem teknik olarak daha hazır, hem de sorun çıkarsa çözümü daha hızlı bulabilirsiniz.
# Pilot grup için 2FA'yı açın (zorunlu değil, isteğe bağlı)
zmprov ma [email protected] zimbraFeatureTwoFactorAuthAvailable TRUE
zmprov ma [email protected] zimbraFeatureAppSpecificPasswordsEnabled TRUE
2. Hafta – Geri Bildirim Toplama: Pilot gruptan gelen sorunları listeleyin. En sık karşılaşılan durum: Outlook kullananların uygulama şifresi nasıl alacağını bilmemesi.
3. ve 4. Hafta – Departman Departman Açılış: Her departmana 2FA kurulum kılavuzu ve destek hattı bilgisini gönderin. Sonra o departman için 2FA’yı açın.
1. Ay Sonu – Zorunlu Hale Getirme: Hala 2FA kurmamış kullanıcıları tespit edip birebir destek verin. Ardından domain genelinde zorunlu kılın.
Sık Karşılaşılan Sorunlar ve Çözümleri
Sorun: “Invalid verification code” hatası
Neredeyse her zaman saat senkronizasyon sorunudur. Sunucu saati ile kullanıcı telefonu arasındaki fark 30 saniyeyi geçiyor olabilir.
# Sunucu saatini kontrol et
date
timedatectl show | grep NTP
# Chrony ile zorla senkronize et
chronyc makestep
Sorun: Kullanıcı webmail’e giriş yapıyor ama 2FA ekranı gelmiyor
zimbraFeatureTwoFactorAuthAvailable özelliğinin hem global hem de domain düzeyinde TRUE olduğunu doğrulayın:
zmprov gd example.com zimbraFeatureTwoFactorAuthAvailable
zmprov gcf zimbraFeatureTwoFactorAuthAvailable
Sorun: Outlook veya mobil uygulama bağlanamıyor
Uygulama şifresinin doğru oluşturulup oluşturulmadığını kontrol edin. Kullanıcı normal şifresiyle değil, uygulama şifresiyle bağlanıyor olmalı. Bunu anlatmak genellikle teknik destek süresinin yarısını alıyor.
Sorun: Yönetici hesabı 2FA kurulumundan sonra kilitlendi
Bu ciddi bir durum. Zimbra yönetici hesabı için 2FA’yı LDAP üzerinden doğrudan kaldırmak gerekiyor:
su - zimbra
ldapmodify -x -H ldap://localhost -D "cn=config" -w $(zmlocalconfig -s ldap_master_url | awk '{print $NF}') << EOF
dn: uid=admin,ou=people,dc=example,dc=com
changetype: modify
replace: zimbraTwoFactorAuthEnabled
zimbraTwoFactorAuthEnabled: FALSE
EOF
Bu komut doğrudan LDAP üzerinde değişiklik yapıyor, dikkatli olun. Öncesinde LDAP yetkilerinizi ve DN yapısını doğrulayın.
Güvenlik Notları ve İyi Uygulamalar
2FA kurulumunu yaparken sadece “açtım çalışıyor” deyip geçmemek lazım. Birkaç önemli nokta:
- Yönetici hesaplarına özel dikkat: Admin hesapları için 2FA hem zorunlu olmalı hem de bu hesapların yedek kodları güvenli bir kasada saklanmalı.
- Servis hesapları 2FA kapsamı dışında tutulmalı: Otomasyon için kullanılan hesaplara 2FA açmayın, bunun yerine bu hesaplara IP bazlı erişim kısıtlaması uygulayın.
- Log takibi: Başarısız 2FA denemelerini izlemek için
/opt/zimbra/log/mailbox.logdosyasını düzenli kontrol edin ya da SIEM aracınıza dahil edin.
# Başarısız 2FA denemelerini filtrele
grep "two.factor|2fa|TOTP" /opt/zimbra/log/mailbox.log | grep -i "failed|invalid" | tail -50
- Uygulama şifrelerinin geçerlilik süresini belirleyin: Sınırsız süre yerine belirli bir ömür tanıyın.
# Uygulama şifresi maksimum yaşını 365 gün olarak ayarla
zmprov mcf zimbraAppSpecificPasswordDuration 365d
zmprov md example.com zimbraAppSpecificPasswordDuration 365d
Sonuç
Zimbra’da 2FA kurulumu, görünenden biraz daha fazla katman içeriyor. Teknik adımlar aslında nispeten kısa ama asıl mesai kullanıcı eğitimi, aşamalı geçiş planlaması ve sonrasındaki destek süreçlerine gidiyor. Özellikle mail istemcileri için uygulama şifresi mekanizmasını iyi anlatmazsanız, geçiş günü yardım masasına ciddi yük biniyor.
Sonuçta bu kurulum tamamlandığında elde ettiğiniz şey somut: Çalınmış ya da tahmin edilmiş bir şifre tek başına hesap ele geçirmeye yetmiyor. Kurumsal mail sunucusu gibi kritik bir sistemde bu ekstra katman, yaşanabilecek bir güvenlik olayının önüne geçiyor ya da en azından etkisini ciddi ölçüde azaltıyor. Sabah 9’daki o telefon bir daha çalmıyor.
