DBAtlas · Veritabanı operasyon atlası

PostgreSQL güvenlik sıkılaştırma (durum denetimi, ağ, TLS, kimlik, yetki, audit, şifreleme)

PostgreSQLSeviye: OrtaSüre: 5 dk (denetim) – 3 saat (tam sıkılaştırma)

Kurulum rehberi değildir: çalışan bir PostgreSQL sunucusunun açıklarını bulur ve kapatır. Önce salt-okur Durum denetimi açıkları önem sırasıyla listeler ve her bulgunun hangi karta götürdüğünü söyler; sonra alanları tek tek ya da hepsini sırayla kapatırsınız: dinleme adresi, firewall ve pg_hba; TLS ve istemcide sslmode=verify-full; scram-sha-256 ve postgres'in ağdan girişinin kapatılması; rol tasarımı ve PUBLIC yetkileri; pgaudit ve merkezi log; LUKS / pgcrypto; şifreli yedek; işletim sistemi; sürüm takibi. Sonda denetim tekrar çalışır ve kapanan bulgular listeden düşer.

Yapı: Tek PostgreSQL sunucusu + uygulama sunucusu (istemci doğrulaması); replica'lı/Patroni ortam notlarda

Senaryolar

  • Durum denetimi: açıklarım neler? (salt-okur) — İlk çalıştırılacak tarama: pg_hba, dinleme adresi, TLS, md5 parolalar, süper kullanıcılar, PUBLIC yetkileri, audit, dosya izinleri ve firewall; hiçbir şeyi değiştirmez.
  • Tam sıkılaştırma (hepsi sırayla) — Yeni kurulmuş ya da hiç sıkılaştırılmamış sunucu: tüm alanlar güvenli sırayla uygulanır; PostgreSQL bir-iki kez yeniden başlatılır (bakım penceresi gerekir).
  • Ağ ve bağlantı: kim nereden bağlanabilir? (listen, firewall, pg_hba) — PostgreSQL tüm arayüzlerde dinliyor, pg_hba'da 0.0.0.0/0 ya da trust var, port herkese açık. listen_addresses değişirse yeniden başlatma gerekir.
  • Bağlantıyı şifrele (TLS, sslmode=verify-full) — ssl = off ya da istemciler sertifikayı doğrulamıyor; sunucu sertifikası, hostssl ve istemcide verify-full. Yalnız reload gerekir, kesinti yok.
  • Kimlik doğrulama ve parola (scram-sha-256, postgres uzaktan girişi) — md5/password yöntemi, md5 özetli parolalar, postgres kullanıcısının ağdan girebilmesi; scram-sha-256'ya geçiş ve kişisel DBA hesabı. Kesinti yok, parolalar yeniden verilir.
  • En az yetki: roller, PUBLIC ve uygulama hesabı — Uygulama hesabı tabloların sahibi ya da süper kullanıcı, public şemaya herkes yazabiliyor; okuma/yazma/sahip rolleri ve yetki raporu. Kesinti yok.
  • Audit: kim ne yaptı? (pgaudit, merkezi log) — Denetçi ya da güvenlik ekibi DDL/rol değişikliklerinin kaydını istiyor; pgaudit kurulumu ve log'un merkezi sunucuya gönderilmesi. Bir kez yeniden başlatma gerekir.
  • Veriyi diskte şifrele (LUKS / pgcrypto) — Diskin ya da yedeğin çalınmasına karşı koruma isteniyor. PostgreSQL'de yerleşik TDE yoktur: disk düzeyinde LUKS (taşıma için kesinti) ya da sütun düzeyinde pgcrypto.
  • Yedeklerin güvenliği (şifreli yedek, izinler) — Yedek dosyaları şifresiz ya da herkesin okuyabileceği dizinde; pgBackRest repo şifrelemesi ya da pg_dump + GPG, .pgpass ve dizin izinleri. Kesinti yok.
  • İşletim sistemi tarafı (servis hesabı, izinler, core dump, SELinux) — postgres hesabının parolası açık, veri dizini izinleri gevşek, SELinux Permissive/Disabled. Core dump ayarı bir sonraki yeniden başlatmada geçerli olur.
  • Yama ve sürüm: desteklenen sürümde miyim? — Sürüm, destek bitiş tarihi ve bekleyen minor güncelleme kontrolü; uygulama için patch rehberine bağlanır. Salt-okur.

Başlamadan önce

  • PostgreSQL … çalışıyor ve postgres kullanıcısıyla sunucunun kendisinden (sudo -iu postgres psql) parolasız bağlanılabiliyor (pg_hba'da local all postgres peer). Kurulum PostgreSQL kurulum rehberi ile yapıldıysa bu hazırdır.
  • Veri dizini …, yapılandırma dizini …; psql, pg_dump … altında. postgres kullanıcısının login shell'inde PATH'e eklidir; root'tan çağırırken tam yol yazın.
  • Sunucuya iki ayrı SSH oturumu açık: biriyle adımları uygularsınız, diğeri (sudo -iu postgres psql açık) yanlış bir kural sizi dışarıda bırakırsa geri almak içindir. Erişimi kısan her adımdan sonra yeni bağlantıyı üçüncü bir oturumda deneyin; eski oturumları başarı görene kadar kapatmayın.
  • Bakım penceresi: seçtiğiniz alanlarda PostgreSQL yeniden başlatılacak (listen_addresses, shared_preload_libraries, core dump sınırı, disk taşıma). Uygulama ekibi bilgilendirildi.
  • Veritabanına bağlanan tüm uygulamaların listesi ve bağlantı bilgisi (sunucu IP'leri, kullanıcılar, sürücü sürümleri) elinizde. Kısıtlamadan önce kim nereden bağlanıyor sorusunun cevabı denetim adımında görülür; listede olmayan istemci kısıtlamadan sonra bağlanamaz.
  • Güncel ve geri dönüşü denenmiş bir yedek var (pgBackRest ya da pg_dump). Sıkılaştırma veriye dokunmaz ama rol/yetki değişiklikleri ve disk taşıma geri alınamaz hatalara açıktır.

Rehberin aşamaları

  • Durum denetimi (salt-okur) — Veritabanı içi bulguları listele · Her veritabanında şema ve fonksiyon bulgularını listele · İşletim sistemi tarafını denetle
  • Başlamadan: geri dönüş noktası — Mevcut yapılandırmanın ve rollerin kopyasını al · Ek yapılandırma dizinini (conf.d) etkinleştir
  • Yetki — 1. Teşhis — Rolleri, sahiplikleri ve PUBLIC yetkilerini göster
  • Yetki — 2. Güvenlik ağı — Mevcut yetkilerin dökümünü al
  • Yetki — 3. Uygulama — Grup rollerini ve giriş hesaplarını oluştur · Yeni giriş hesaplarına parola ver · Veritabanı ve şema yetkilerini kur · Uygulama hesabının sahip olduğu nesneleri sahip rolüne devret · Yetki raporu
  • Yetki — 4. Doğrulama — Uygulama hesabının DDL yapamadığını ve veri yazabildiğini doğrula
  • Yetki — 5. Sonrası — Migration aracını sahip rolüne geçir
  • Kimlik — 1. Teşhis — Parola özetlerini, yöntemleri ve hesapları göster
  • Kimlik — 2. Güvenlik ağı — Sürücü uyumluluğunu kontrol et
  • Kimlik — 3. Uygulama — Yeni parolalar scram-sha-256 ile saklansın · Ayarı yükle ve md5 hesaplarının parolasını yeniden ver · pg_hba'da md5/password yöntemini scram-sha-256 yap · postgres süper kullanıcısının ağdan girişini kapat · Kişisel DBA hesabını oluştur
  • Kimlik — 4. Doğrulama — Özetleri ve ağdan süper kullanıcı reddini doğrula · Uygulama sunucusundan scram ile giriş ve postgres reddi
  • Kimlik — 5. Sonrası — Kullanılmayan ve süresi geçen hesapları gözden geçir
  • TLS — 1. Teşhis — Mevcut SSL durumunu ve şifresiz istemcileri göster
  • TLS — 2. Güvenlik ağı — Sertifika dizinini hazırla
  • TLS — 3. Uygulama — Test CA'sı ve sunucu sertifikası oluştur · Anahtar ve imza isteğini (CSR) oluştur · İmzalı sertifikayı ve CA zincirini yerine koy · Sertifika, anahtar ve zinciri doğrula · Sunucuda TLS'i aç · Ayarları yükle ve TLS'in açıldığını doğrula …
  • TLS — 4. Doğrulama — Şifresiz bağlantının reddedildiğini doğrula
  • TLS — 5. Sonrası: sertifika yenileme — Sertifikayı yenileme yordamı
  • Ağ — 1. Teşhis: kim nereden bağlanıyor? — Dinleme adresini, pg_hba kurallarını ve aktif istemcileri göster
  • Ağ — 2. Güvenlik ağı — Geri dönüş oturumunu açık tut
  • Ağ — 3. Uygulama — Dinleme adresini daralt · pg_hba.conf'u en az erişimle yeniden yaz · Kuralları kontrol et ve yükle · Firewall'da portu yalnız izinli ağlara aç · Dinleme adresi için PostgreSQL'i yeniden başlat
  • Ağ — 4. Doğrulama — Uygulama sunucusundan izinli ve reddedilen bağlantıyı dene
  • Ağ — 5. Sonrası — Reddedilen bağlantıları izle
  • Audit — 1. Teşhis — Audit ve log ayarlarını göster
  • Audit — 2. Güvenlik ağı — Log diskinin yerini ve boş alanını kontrol et
  • Audit — 3. Uygulama — pgaudit yazılımını kur · pgaudit'i ön yüklenen kütüphanelere ekle ve ayarları yaz · pgaudit'i etkinleştirmek için yeniden başlat · pgaudit eklentisini oluştur · Log'u merkezi sunucuya ilet (rsyslog) · Yerel audit dosyasının saklama süresi (logrotate) …
  • Audit — 4. Doğrulama — Bir DDL ve rol değişikliği yap, log'da gör
  • Audit — 5. Sonrası — Audit'in kapatılmasını izle
  • Yedek — 1. Teşhis — Yedeklerin şifreleme durumunu ve izinlerini göster
  • Yedek — 2. Güvenlik ağı — Şifreleme anahtarının saklanacağı yeri hazırla
  • Yedek — 3. Uygulama — Şifreli yeni repo'yu tanımla · Şifreli repo'yu oluştur ve ilk tam yedeği al · GPG açık anahtarını sunucuya al · Şifreli yedek betiği · Yedek dizini, izinler ve elle deneme · Şifreli yedeği zamanla (cron) …
Ortamına göre adım adım planı aç →