Network Ayarları (Network Configuration)

PostgreSQL’in Network ayarları (Network Configuration), sunucunun dış dünyadan nasıl erişileceğini ve istemci bağlantılarının nasıl yönetileceğini kontrol eder. Güvenlik ve performans açısından bu ayarlar büyük önem taşır. Bu bölümde PostgreSQL’in temel ağ ayarları, güvenli bağlantı yöntemleri ve yapılandırmalarını ele alacağız.

1. PostgreSQL’in Bağlantıya Açılması

PostgreSQL’in Network ayarları yapılandırırken varsayılan olarak, PostgreSQL yalnızca yerel makineden (localhost) gelen bağlantıları kabul eder. Ancak, dış bağlantılara izin vermek için bazı ayarların değiştirilmesi gerekir.

• listen_addresses Ayarı:
PostgreSQL’in hangi IP adreslerinden gelen bağlantıları dinleyeceğini belirler. Bu ayar, postgresql.conf dosyasında yapılır.

listen_addresses = ‘localhost’

• Tüm bağlantılara izin vermek için:

listen_addresses = ‘*’

• Belirli bir IP adresine izin vermek için:

listen_addresses = ‘192.168.1.100’

• port Ayarı:
PostgreSQL’in hangi port üzerinden dinleme yapacağını belirler. Varsayılan olarak 5432 portu kullanılır.

port = 5432

Not: Bu ayarları değiştirdikten sonra PostgreSQL hizmetini yeniden başlatmanız gerekir:

sudo systemctl restart postgresql

2. Bağlantıların Doğrulanması (pg_hba.conf)

PostgreSQL istemci bağlantıları için doğrulama kurallarını pg_hba.conf dosyasında tanımlar. Bu dosya, istemci bağlantılarının kaynağına ve kullanılan doğrulama yöntemine göre bağlantıya izin verilip verilmeyeceğini belirler.

• pg_hba.conf Formatı:
Dosya aşağıdaki formatta yapılandırılır:

# TYPE DATABASE USER ADDRESS METHOD

Örnek:
• Yerel bağlantılar için:

local all all trust

• Belirli bir IP adresinden bağlantıya izin vermek için:

host all all 192.168.1.100/32 md5

• Tüm IP adreslerinden bağlantıya izin vermek için:

host all all 0.0.0.0/0 scram-sha-256

• Doğrulama Yöntemleri:
PostgreSQL’in bağlantıları doğrulamak için kullandığı yöntemler:
trust: Şifre gerekmeden bağlanılır. Güvensizdir.
md5: Şifre doğrulama için MD5 hash yöntemi kullanılır.
scram-sha-256: Daha güvenli bir şifreleme yöntemidir. Yeni sistemlerde tercih edilmelidir.
peer: Linux kullanıcı kimlik doğrulaması.

3. Güvenli Bağlantılar (SSL Kullanımı)

Veri tabanı sunucularına güvenli bağlantı (şifreli iletişim) sağlamak için SSL kullanılır.

• SSL’i Etkinleştirme:
PostgreSQL’de SSL’i etkinleştirmek için postgresql.conf dosyasını düzenleyin:

ssl = on
ssl_cert_file = ‘/path_to_certificate/server.crt’
ssl_key_file = ‘/path_to_certificate/server.key’

Not: Sertifika dosyasının izinlerinin güvenli olduğundan emin olun:

⇒ chmod 600 server.key

• pg_hba.conf ile SSL Ayarı:
SSL gerektiren bağlantılar için hostssl tanımlanır:

hostssl all all 0.0.0.0/0 scram-sha-256

Not: Sertifika oluşturma ve yönetimi için OpenSSL kullanılabilir:

⇒ openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key

4. Performans ve Zaman Aşımı Ayarları

Ağ üzerinden bağlantılar sırasında oluşabilecek gecikme ve kopmaları kontrol etmek için aşağıdaki ayarlar yapılabilir:

• tcp_keepalives_idle:
TCP bağlantılarının kullanılmama süresini belirler.

tcp_keepalives_idle = 60 # saniye

• tcp_keepalives_interval:
Keepalive paketleri arasındaki süreyi belirler.

tcp_keepalives_interval = 30

• tcp_keepalives_count:
Keepalive sinyalleri gönderilmeden önce bağlantının kopmasını bekleyecek maksimum paket sayısı.

tcp_keepalives_count = 5

5. Güvenlik Duvarı ve Erişim Kontrolü

PostgreSQL’in ağ üzerinden erişimi açıkken güvenlik duvarı ayarlarının da yapılandırılması gerekir.

• iptables Ayarları:
Belirli bir IP’den PostgreSQL’in varsayılan portuna erişime izin vermek:

⇒ sudo iptables -A INPUT -p tcp -s 192.168.1.100 –dport 5432 -j ACCEPT

• FirewallD Kullanımı:
Belirli bir portu açmak için:

⇒sudo firewall-cmd –permanent –add-port=5432/tcp
⇒sudo firewall-cmd –reload

Sonuç

PostgreSQL’in ağ ayarlarını yapılandırmak, hem performans hem de güvenlik açısından kritik öneme sahiptir. IP tabanlı doğrulama, SSL kullanımı ve güvenlik duvarı entegrasyonu ile veritabanı bağlantılarının güvenliğini artırabilirsiniz.

Hasanipek.org

Bir yanıt yazın

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