Ubuntu'da pg_Audit Kurulumu

aliiiiyldzzzz

Ali

Posted on January 9, 2024

Ubuntu'da pg_Audit Kurulumu
  • Ubuntu’nun son çıkardığı güncel sürüm olan 22.04 LTS işletim sistemi üzerinden Postgresql 15 kurulumunu yapıp.

  • Gerekli bir kaç ayar ile DB’nin uzaktan erişim için bir kaç yetkilendirmesini yapacağız.

  • SQL komutlarımızı psql üzerinden yürüteceğiz.

  1. Postgresql paketlerinin yüklenmesini sağlıyoruz.
  • root kullanıcısına geçiş yapılır.
sudo su - postgres
Enter fullscreen mode Exit fullscreen mode
  • Postgresql paketleri işletim sistemi paketleri reposuna eklenir.
sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Enter fullscreen mode Exit fullscreen mode
  • Apt Key eklenir.
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
Enter fullscreen mode Exit fullscreen mode
  • Repoya eklenen Postgresql paketlerinin eklenmesi için paket güncelleme komutunu çalıştırıyoruz.
apt-get update
Enter fullscreen mode Exit fullscreen mode

Image description

2.Paketlerin yüklendiğini gördükten sonra Postgresql 15 kurulumuna
geçiyoruz. Ardından işletim sistemindeki “postgres” kullanıcısı ile psql geçiş sağlıyoruz.Veritabanında tanımlı olan “postgres” kullanıcısının şifresini değiştiriyoruz.

  • Postgresql 15 ve Psql kullanımı için postgresql-client kuralım.
apt install postgresql-15 postgresql-client -y

Enter fullscreen mode Exit fullscreen mode
  • Postgresql kullanıcısına geçiş sağlanır.
su - postgres
Enter fullscreen mode Exit fullscreen mode
  • psql giriş yapılır.
psql
Enter fullscreen mode Exit fullscreen mode
  • Kullanıcıları Listeliyoruz.
\du
Enter fullscreen mode Exit fullscreen mode
  • postgres kullanıcısının şifresini değiştiriyoruz.
ALTER USER postgres PASSWORD '123456';
Enter fullscreen mode Exit fullscreen mode
  • Postgresql postgresql.conf dosyasının nerede olduğu bulunur.
show config_file;
Enter fullscreen mode Exit fullscreen mode
  • Postgresql pg_hba.conf dosyasının nerede olduğu bulunur.
show hba_file;
Enter fullscreen mode Exit fullscreen mode
  • psql'den çıkış yapılır.
\q 
Enter fullscreen mode Exit fullscreen mode

Image description

  1. Postgresql servisimize dışardan erişimler için aşağıdaki ayarları tanımlıyoruz.
  • postgresql.conf dosyasını düzenleyerek. “listen_addresses” değişkeninin değerini “*”
    olarak tanımlıyoruz. Kayıt edip çıkıyoruz.

  • postgresql.conf dosyasını düzenle.

nano /etc/postgresql/15/main/postgresql.conf
            veya
vi /etc/postgresql/15/main/postgresql.conf
Enter fullscreen mode Exit fullscreen mode
  • pg_hba.conf dosyasını düzenleyerek. Bütün ip lere erişimini sağlıyoruz. Siz sadece bazı
    makinelerin erişimini istiyorsanız “0.0.0.0/0” adresi yerine istediğiniz IP
    tanımlayabilirsiniz.

  • pg_hba.conf dosyasını düzenle.

nano /etc/postgresql/15/main/pg_hba.conf
         veya
vi /etc/postgresql/15/main/pg_hba.conf
Enter fullscreen mode Exit fullscreen mode

Image description

Image description

  1. Şimdi tanımladığımız ayarların geçerli olması için postgresql servisini yeniden başlatıyoruz ve çalıştığına emin oluyoruz.
  • root kullanıcısına geçiş sağlayın.
exit
Enter fullscreen mode Exit fullscreen mode
  • Postgresql servisini yeniden başlat.
systemctl restart postgresql-15
Enter fullscreen mode Exit fullscreen mode
  • Postgresql servisinin durumunu kontrol et.
systemctl status postgresql-15
Enter fullscreen mode Exit fullscreen mode
  1. pg_Audit
  • Postgresql Loglarını incelemek veritabanları üstünde ne işlemlerin yapıldığını izlemek, veritabanın üstündeki hataları görmek incelemek sistemin sağlıklı işlediğini kontrol etmek önemlidir. Ayrıca kimin ne zaman hangi makine üzerinden hangi sorguyu çalıştırdığı gibi bir çok logların tutulması da bir yanlışlık yapıldığında suçluyu bulmak için önemlidir :)
  1. İlk olarak logları nasıl izleriz onun üzerinde kısa duralım.
  • Ubuntu sisteminde Postgresql paketleri genelde /var/log dizinin altına atmaktadır.
cd /var/log/postgresql
Enter fullscreen mode Exit fullscreen mode
  • Dizinin içeriğini listeliyoruz.
ls -l
Enter fullscreen mode Exit fullscreen mode
  • tail komutu ile file dosyasının son loglarını basıyoruz.-f komutu ile log file canlı olarak izliyoruz.
tail -123f postgresql-15-main.log
Enter fullscreen mode Exit fullscreen mode

Image description

  • Gördüğünüz gibi önceki yazıda yaptığım hataları otomatik olarak ERROR tagı başlığı altında loglamakta.Bu hataların zamanla izlenmesi tespit edilmesi önemlidir.
  1. Log dosyasını biraz daha kendimize göre kişiseleştirelim.
  • postgres kullanıcısına geçin.
sudo su - postgres
Enter fullscreen mode Exit fullscreen mode
  • psql giriş yapıyoruz.
psql
Enter fullscreen mode Exit fullscreen mode
  • conf dosyasını buluyoruz.
show config_file;
Enter fullscreen mode Exit fullscreen mode
  • psql çıkış yapın.
\q
Enter fullscreen mode Exit fullscreen mode
  • conf dosyasnı düzenliyoruz.
nano /etc/postgresql/15/main/postgresql.conf
        veya
vi  /etc/postgresql/15/main/postgresql.conf
Enter fullscreen mode Exit fullscreen mode
  • Logları daha etkin yönetmek için logging_collector etkinleştiriyoruz.
logging_collector = on;
Enter fullscreen mode Exit fullscreen mode
  • 10 saniyenin üstünde süren sorguları listele.
log_min_duration_statement = 10s;
Enter fullscreen mode Exit fullscreen mode
  • Logların başında hangi veriler bulunsun. Biz şu şekilde sıralayacağız. Zaman - Bağlantıyı Yapan IP - Kullanıcı - DB Adı - Proses ID
log_line_prefix = '%m %h %u %d [%p]';
Enter fullscreen mode Exit fullscreen mode
  • Loglama seviyesini belirtiyoruz. Yukarından aşağıya kritiklik seviyesini belirtir.

  • debug5, debug4, debug3, debug2, debug1, info, notice, warning, error, log, fatal, panic

log_min_error_statement = NOTICE;
Enter fullscreen mode Exit fullscreen mode
  • Log dizinin nereye basılacağını belirtiyoruz.
log_directory = /var/log/postgresql
Enter fullscreen mode Exit fullscreen mode
  • File kayıt edip çıkıyoruz.

  • postgres kullanıcısından çıkın.

exit
Enter fullscreen mode Exit fullscreen mode
  • Postgresql restart ediyoruz.
systemctl restart postgresql
Enter fullscreen mode Exit fullscreen mode
  • Postgresql çalıştığına emin oluyoruz.
systemctl status postgresql
Enter fullscreen mode Exit fullscreen mode

Image description

  1. Loglara şimdi bir göz atalım. Ama ilk önce syntax hatası yapalım.
  • psql giriş yapın.
psql
Enter fullscreen mode Exit fullscreen mode
  • hatalı bir sorgu yazın.
selectt 1;
Enter fullscreen mode Exit fullscreen mode
  • psql den çıkış yapın
\q
Enter fullscreen mode Exit fullscreen mode
  • Log dizinine gidin.
cd /var/log/postgresql/
Enter fullscreen mode Exit fullscreen mode
  • Dizini listeleyin. Farklı bir dosya oluşturacaktır.

  • Son oluşturulan dosyayı listeleyeceğiz.

ls -ltr
Enter fullscreen mode Exit fullscreen mode
  • Son 123 kaydı listeleyelim.
tail -123f postgresql-2023-05-20_144715.log
Enter fullscreen mode Exit fullscreen mode
  • Görüldüğü gibi artık (Zaman — Bağlantıyı Yapan IP — Kullanıcı — DB Adı — Proses ID) şeklinde listelenmektedir.

Image description

  1. pg_Audit Kurulumu ve Ayarlanması
  • Pgaudit Postgresql kurulum paketleri ile gelen bir extensiondır. Temel amacı Postgresql üzerinde özelleştirerek logların yapılandırmasını sağlamaktadır. Sistem üzerinde logların izlenerek sistem üzerinde oluşabilecek kötü niyetli sorguları izleyerek tespit edilebilir. pgaudit.log parametresinin detayları için.

  • pg_Audit paketini kuruyoruz.

  • Siz kullandığınız Postgresql versiyonuna göre "apt search pgaudit" komutu ile bulabilirsiniz.

apt install postgresql-15-pgaudit
Enter fullscreen mode Exit fullscreen mode
  • conf dosyasnı düzenliyoruz.
nano /etc/postgresql/15/main/postgresql.conf
        veya 
vi  /etc/postgresql/15/main/postgresql.conf
Enter fullscreen mode Exit fullscreen mode
  • shared_preload_libraries parametresini düzenliyoruz.
shared_preload_libraries = 'pgaudit'
Enter fullscreen mode Exit fullscreen mode
  • File kayıt edip çıkıyoruz.

  • Postgresql restart ediyoruz.

systemctl restart postgresql
Enter fullscreen mode Exit fullscreen mode
  • Postgresql çalıştığına emin oluyoruz.
systemctl status postgresql
Enter fullscreen mode Exit fullscreen mode
  • postgres kullanıcısına geçin.
su – postgres
Enter fullscreen mode Exit fullscreen mode
  • psql giriş yapıyoruz.
psql
Enter fullscreen mode Exit fullscreen mode
  • extension kuruyoruz.
CREATE EXTENSION pgaudit;
Enter fullscreen mode Exit fullscreen mode
  • Sistemdeki bütün logları listeleyecek şekilde ayarlıyoruz.
alter system set pgaudit.log = 'all';
Enter fullscreen mode Exit fullscreen mode
  • psql çıkış yapın.
\q
Enter fullscreen mode Exit fullscreen mode
  • Postgresql restart ediyoruz.
systemctl restart postgresql
Enter fullscreen mode Exit fullscreen mode
  • Postgresql çalıştığına emin oluyoruz.
systemctl status postgresql
Enter fullscreen mode Exit fullscreen mode

Image description

  1. Şimdi son olarak log file izleyelim.
  • psql giriş yapıyoruz.
psql
Enter fullscreen mode Exit fullscreen mode
  • Sıradan bir sorgu atıyoruz.
SELECT 1;
Enter fullscreen mode Exit fullscreen mode
  • psql çıkış yapın.
\q
Enter fullscreen mode Exit fullscreen mode
  • Log dizinine gidin.
cd /var/log/postgresql/
Enter fullscreen mode Exit fullscreen mode
  • Dizini listeleyin. Farklı bir dosya oluşturacaktır.

  • Son oluşturulan dosyayı listeleyeceğiz.

ls -ltr
Enter fullscreen mode Exit fullscreen mode
  • Son 10 kayıtı listeleyin.
tail -n 10 postgresql-2023-05-20_151745.log
Enter fullscreen mode Exit fullscreen mode
  • Artık her bir adım loglanmaktadır. Ancak bu logların boyutu için sağlıklı olmayacaktır. Disk doldurma gibi durumlar için arada bir log file “du -sh” komutu ile izlemeyi unutmayın.
💖 💪 🙅 🚩
aliiiiyldzzzz
Ali

Posted on January 9, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related