WordPress kullanıcı rolleri güvenliği: yönetici hesapları
WordPress kullanıcı rolleri güvenliği: yöneticileri bulun, eski personel ve ajans hesaplarını kaldırın, uygulama parolalarını iptal edin, üç ayda bir kontrol edin.
Diğer diller: English Deutsch Français Español Italiano Polski Português
Çoğu WordPress sitesinde gerekenden fazla yönetici hesabı vardır. Bu hesapların her biri eklenti kurabilir, eklenti kurmak da sunucunuzda kod çalıştırmak demektir. WordPress kullanıcı rolleri güvenliği tek bir kurala dayanır: en az yetki. Herkes kendi adına açılmış bir hesap kullanır ve işini görmeye yetecek en düşük rolü alır.
WordPress kullanıcı rolleri güvenliği, yönetici sayısıyla başlar
Önce yöneticileri sayın. Panelde Kullanıcılar > Tüm Kullanıcılar sayfasına gidin ve listenin üstündeki "Yönetici" filtresine tıklayın. Sayıyı ve isimleri bir yere not edin.
WP-CLI ile aynı listeyi kayıt tarihleriyle birlikte alabilirsiniz:
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
Multisite ağında ayrıca ağın tamamı üzerinde kimin yetkili olduğuna bakın:
wp super-admin list
Her hesap için basit bir soru sorun: arkasındaki gerçek kişinin adını söyleyebiliyor musunuz ve bu kişinin hâlâ tam yetkiye ihtiyacı var mı? Cevap net değilse hesap gözden geçirme listenize girer. Bu yazıda kullanılan tüm seçenekler WP-CLI kullanıcı komutları belgesinde listelenmiştir.
Varsayılan beş rol ve kime hangisi verilmeli
WordPress çekirdeği beş rolle gelir; multisite kurulumlarında buna Süper Yönetici eklenir. Tam yetki listesi resmî Roles and Capabilities sayfasındadır. Özetle:
| Rol | Yapabilecekleri | Tipik kişi |
|---|---|---|
| Süper Yönetici (Super Admin) | Multisite ağındaki her şey | Ağ işletmecisi |
| Yönetici (Administrator) | Eklentiler, temalar, kullanıcılar, ayarlar | Site sahibi, ajans sorumlusu |
| Editör (Editor) | Tüm yazı ve sayfaları düzenleme ve yayımlama | Pazarlama çalışanı |
| Yazar (Author) | Kendi yazılarını yayımlama, dosya yükleme | Düzenli yazar |
| Katkıda Bulunan (Contributor) | Kendi taslaklarını yazma, yayımlayamama | Konuk yazar |
| Abone (Subscriber) | Kendi profilini düzenleme | Üye, mağaza müşterisi |
Eklentiler kendi rollerini ve yetkilerini de ekler. Örneğin WooCommerce "Shop Manager" ve "Customer" rollerini getirir; Shop Manager ise müşterilerin kişisel verileriyle dolu siparişleri görebilir. SEO, e-öğrenim (LMS) ve üyelik eklentileri de çoğu zaman benzer şeyler yapar. Kullanıcılar ekranındaki rol filtresine bakın, tanımadığınız her rol için ilgili eklentinin belgelerinde neler yapabildiğini kontrol edin.
Önerim şu: günlük içerik işi Editör hesabıyla yürüsün. Yönetici hesabı yalnızca güncelleme ve bakım için kullanılsın. Tek siteli kurulumda Editörler yine de filtrelenmemiş HTML yayımlayabilir; yani bu, güvenmediğiniz kişilere karşı gerçek bir sınır değildir. Ama kimlik avına düşürülmüş bir pazarlama hesabıyla artık eklenti kurulamaz.
Kaldırılacak veya düşürülecek hesaplar: eski çalışanlar, ajanslar, ortak girişler
Hemen her küçük işletme sitesinde aynı birkaç hesap türü çıkar:
- Eski çalışanlar: işten ayrıldıklarında hesapları hiç kaldırılmamıştır.
- Önceki ajans: sözleşme yıllar önce bitmiş olsa da hâlâ yönetici olarak listelenir.
- Tek seferlik proje freelancer'ı: yeniden tasarım ya da mağaza taşıma gibi bir iş için eklenmiştir.
- Ortak "ofis" veya "info" hesabı: birden fazla kişi aynı girişi kullanır.
- "admin" kullanıcı adı: ilk kurulumdan kalmıştır.
Ortak hesapları savunmak en zor olanıdır. Beş kişi aynı hesabı kullanıyorsa bir ayarı kimin değiştirdiğini ya da müşteri verisini kimin dışa aktardığını anlayamazsınız. Tek bir kişinin erişimini kesmek için de herkesin parolasını değiştirmeniz gerekir. Herkese kendi adıyla bir hesap verin.
Ajanslar da aynı şekilde çalışmalıdır. Her çalışanın adıyla açılmış bir hesabı olur ve bu hesaplar sözleşmenin bittiği gün kaldırılır. Kişisel veri barındıran bir sitede ajansın yönetici erişimi varsa, ajans genellikle GDPR (AB Genel Veri Koruma Tüzüğü) Madde 28 kapsamında veri işleyen konumundadır. Erişimi, veri işleme sözleşmesiyle birlikte tuttuğunuz kayıtlara yazmalısınız. Kanıt tarafı için güvenlik denetim raporunda nelerin saklanması gerektiğine bakın.
"admin" kullanıcı adı panelden değiştirilemez; WordPress profil ekranında "Kullanıcı adları değiştirilemez" uyarısını gösterir. Bunun yerine kişisel bir kullanıcı adıyla yeni bir yönetici oluşturun:
wp user create jane.doe jane@example.com --role=administrator
Yeni kullanıcıyla giriş yapın, ardından eski "admin" hesabını silin ve içeriğini bir sonraki bölümde anlatıldığı gibi başka bir kullanıcıya devredin.
Güvenli silme: içeriği devredin, çalışan bir yönetici bırakın
wp user delete 7 --reassign=2
Silmek yerine rolü düşürmek için, örneğin hâlâ yazı yazan bir çalışan için:
wp user set-role mark.writer editor
Rolü düşürmek çoğu zaman daha güvenli ilk adımdır. İki hafta boyunca kimse şikâyet etmezse hesabı silin.
Uygulama parolaları: parola değişse de geçerli kalan girişler
Uygulama Parolaları (Application Passwords) WordPress 5.6'dan beri çekirdeğin parçasıdır. Mobil uygulama, raporlama aracı ya da otomasyon servisi gibi uygulama ve entegrasyonların REST API'ye kimlik doğrulaması yapmasını sağlarlar. Tuzak şurada: kullanıcının ana parolası değişse bile çalışmaya devam ederler. Eski bir ajansın parolasını sıfırlayıp uygulama parolasına dokunmazsanız ajansın erişimi sürer.
Her yönetici için kontrol edin: Kullanıcılar > Tüm Kullanıcılar sayfasından kullanıcıyı düzenleyin ve Uygulama Parolaları bölümüne inin. WP-CLI ile:
wp user application-password list jane.doe
Liste, her parolanın ne zaman oluşturulduğunu ve en son ne zaman kullanıldığını gösterir. Güncel bir entegrasyonla eşleştiremediğiniz her parolayı iptal edin:
wp user application-password delete jane.doe <uuid>
Yeni oluşturduğunuz her uygulama parolasına, kullanan entegrasyonun adını verin (örneğin "Zapier – sipariş dışa aktarımı"); böylece bir sonraki kontrol hızlı geçer. Sitede kimse bu özelliği kullanmıyorsa birçok güvenlik eklentisi ve bazı hosting firmaları özelliği tamamen kapatabilir.
Saldırı sonrası gizli yönetici hesapları: nasıl fark edilir
İçeri giren saldırganlar bazen kendilerine bir yönetici hesabı açar ve kullanıcı sorgusunu filtreleyen kodla bu hesabı gizler. Hesap Kullanıcılar sayfasında görünmez; WP-CLI de aynı eklentileri yüklediği için wp user list çıktısında da çıkmayabilir. Veritabanına doğrudan sorgu atmak bu kodu devre dışı bırakır:
wp db query "SELECT u.ID, u.user_login, u.user_email, u.user_registered FROM wp_users u JOIN wp_usermeta m ON m.user_id = u.ID WHERE m.meta_key = 'wp_capabilities' AND m.meta_value LIKE '%administrator%'"
wp_ öneki yalnızca varsayılandır. Önce wp db prefix komutunu çalıştırın ve hem iki tablo adındaki hem de meta anahtarındaki wp_ ifadesini değiştirin. Öneki xy7_ ise anahtar xy7_capabilities olur. Multisite'ta her sitenin kendi anahtarı vardır, örneğin wp_2_capabilities.
Sonucu paneldeki sayıyla karşılaştırın. Sonra yakın tarihli user_registered değerlerine ve çalıştığınız hiçbir kuruma ait olmayan e-posta alan adlarına bakın. Gizli ya da açıklanamayan bir yönetici, temizlik işi değil, ele geçirilmenin işaretidir. Sadece silmeyin. WordPress sitenizin hacklendiğini gösteren belirtiler yazısındaki adımları izleyin.
secaudit.eu eklentisinin ele geçirilme göstergesi taraması, denetiminin bir parçası olarak gizli yöneticileri de kontrol eder.
NIS2 ve GDPR kanıtı için üç aylık erişim gözden geçirmesi
Bir gözden geçirme yaklaşık 15 dakika sürer. Her üç ayda bir, ayrıca biri ayrıldığında ya da ajans sözleşmesi değiştiğinde yapın:
- Yönetici listesini dışa aktarın (multisite'ta Süper Yöneticileri de).
- Her hesap için kişiyi ve rolü doğrulayın. Gerisinin rolünü düşürün veya hesapları kaldırın.
- Shop Manager gibi eklentilerin eklediği rolleri kontrol edin.
- Her yönetici için uygulama parolalarını listeleyin ve gereksizleri silin.
- Tüm yöneticilerin iki faktörlü kimlik doğrulama kullandığını doğrulayın.
- Panelin dosya düzenleyicisinin devre dışı olduğunu doğrulayın.
- Tarihi, kontrolü yapan kişiyi ve neyi değiştirdiğinizi kaydedin.
Alışkanlığı kanıta dönüştüren şey, son maddedeki kayıttır. NIS2 Direktifi Madde 21(2)(i), insan kaynakları güvenliğini, erişim kontrolünü ve varlık yönetimini asgari önlemler arasında sayar (Direktif (AB) 2022/2555). Fiilî yükümlülükler her ülkenin kendi mevzuatına aktarımından doğar; bu yüzden ülkenizin ulusal NIS2 düzenlemesine bakın. GDPR'da erişim kontrolü, Madde 32'deki "uygun teknik ve organizasyonel önlemlerin" parçasıdır; Madde 5(2) ise bunları kanıtlayabilmenizi şart koşar (Tüzük (AB) 2016/679).
Akılda tutulması gereken bir sınır var: WordPress çekirdeği bir kullanıcının en son ne zaman giriş yaptığını kaydetmez. Kullanılmayan hesapları bulmak için bir etkinlik günlüğü eklentisine ya da sunucunuzun erişim günlüklerine ihtiyacınız var. Aksi halde insanlara doğrudan sormaktan başka yol kalmaz.
secaudit.eu'nun Security Audit & Compliance eklentisi, işin tekrarlayan kısmında yardımcı olur. Gizli yöneticileri, zayıf veya varsayılan parolaları ve etkin dosya düzenleyicisi gibi sıkılaştırma eksiklerini işaretler, bulguları GDPR Madde 32 ve NIS2 Madde 21 ile eşleştirir ve gözden geçirme notlarınızla birlikte dosyalayabileceğiniz bir rapor üretir.
Sık sorulan sorular
"admin" kullanıcı adını değiştirmek saldırıları durdurmaya yeter mi?
Hayır. Kolay bir tahmini ortadan kaldırır, ama kullanıcı adları çoğu zaman başka yollarla da öğrenilebilir. Güçlü ve benzersiz parolalar ile iki faktörlü kimlik doğrulama çok daha fazla işe yarar.
Bir ajans, çalışanları arasında tek bir yönetici girişini paylaşabilir mi?
Hayır. Herkesin adına açılmış bir hesap olmalı; böylece kimin ne yaptığını görebilir, birinin erişimini diğerlerini etkilemeden kaldırabilirsiniz.
Bir kullanıcıyı sildiğimde WooCommerce siparişleri veya yazılar ne olur?
İçeriği devretmezseniz yazılar ve sayfalar silinir. Eklentiler verilerini farklı şekillerde saklar; bu yüzden müşteri ya da mağaza personeli hesaplarını silmeden önce eklentinin belgelerine bakın. Emin değilseniz önce hesabın rolünü düşürün.
Bu makale genel bilgilendirme amaçlıdır, hukuki danışmanlık değildir.
Kendi sitenizi kontrol edin
Security Audit & Compliance, secaudit.eu’nun WordPress eklentisidir: zararlı yazılımları, gizli spam’i, değiştirilmiş çekirdek dosyalarını ve açıklı kodu tarar; bulguları GDPR Md. 32, NIS2 Md. 21 ve OWASP Top 10 ile eşleştirir.
Eklentinin neleri kontrol ettiğini görün