CodeGym /Kurslar /SQL SELF /IP üzrə girişin məhdudlaşdırılması və pg_hba.conf<...

IP üzrə girişin məhdudlaşdırılması və pg_hba.conf sazlanması

SQL SELF
Səviyyə , Dərs
Mövcuddur

pg_hba.conf — PostgreSQL üçün konfiqurasiya faylıdır, hansı ki, qoşulmalara və autentifikasiyaya nəzarət etmək üçündür. HBA açılışı Host-Based Authentication (host əsaslı autentifikasiya) deməkdir. Bu fayl şəbəkə "şlaqbaumu" kimi çıxış edir və müəyyən edir:

  • Kimlərə serverə qoşulmağa icazə verilir (IP ünvanlar, rol, verilənlər bazası).
  • Qoşulma üçün hansı autentifikasiya metodu tələb olunur.

Əgər bunu real həyatla müqayisə etsək, pg_hba.conf — binanın girişində duran mühafizəçi kimidir. O, kimləri içəri buraxmaq, kimləri yox, qərar verir, sənədlərini (parolunu) yoxlayır, həm də qeydiyyatını (IP ünvanını) da yoxlayır.

pg_hba.conf faylının strukturu

pg_hba.conf faylı sətirlərdən ibarətdir, hər sətir giriş qaydasını təsvir edir. Sətirin strukturu belədir:

<qoşulma tipi> <verilənlər bazası> <istifadəçi> <mənbə> <autentifikasiya metodu>

Komponentləri izah edək:

Qoşulma tipi (connection type): Müştərinin necə qoşulacağını müəyyən edir.

  • local: Unix-socketlər vasitəsilə qoşulma (Linux serverində lokal istifadəçilər üçün).
  • host: TCP/IP vasitəsilə qoşulma.
  • hostssl: TCP/IP ilə, amma yalnız SSL istifadə olunanda qoşulma.
  • hostnossl: TCP/IP ilə, amma SSL olmadan qoşulma.

Verilənlər bazası: Hansı verilənlər bazalarına girişə icazə verildiyini göstərir. Konkret verilənlər bazasını, bir neçə bazanı vergüllə, ya da açar sözləri göstərə bilərsən:

  • all: Bütün verilənlər bazalarına girişə icazə ver.

İstifadəçi: Hansı istifadəçilərə qoşulmağa icazə verildiyini göstərir.

  • Konkret istifadəçi adını göstərə bilərsən və ya all yazıb hamıya icazə verə bilərsən.

Mənbə (address): Müştərinin IP ünvanını və ya ünvan aralığını göstərir.

  • IPv4 üçün x.x.x.x və ya x.x.x.x/y (burada /y — subnet maskası, məsələn, /24) formatı istifadə olunur.
  • IPv6 üçün ::/y formatı istifadə olunur.
  • all açar sözü bütün IP ünvanlarına icazə verir.

Autentifikasiya metodu: Hansı autentifikasiya üsulunun istifadə olunduğunu göstərir.

Nümunələr:

  • trust: Parolsuz qoşulmağa icazə ver (təhlükəsiz deyil, yalnız test üçün).
  • md5: Parol istifadə et (hash-lanmış).
  • scram-sha-256: SHA-256 ilə daha təhlükəsiz autentifikasiya.
  • reject: Girişi qadağan et.

pg_hba.conf faylında sətir nümunələri

Faylın sazlanması çevik ola bilər. Bir neçə nümunə:

  1. Unix-socket ilə lokal qoşulmalara icazə ver

    local   all             all                                     trust
    

    Lokal serverdə bütün istifadəçilərə bütün verilənlər bazalarına parolsuz qoşulmağa icazə verilir.

  2. Bir IP ünvanından qoşulmalara icazə ver

    host    my_database     my_user        192.168.1.100/32         md5
    

    my_user istifadəçisi yalnız 192.168.1.100 IP ünvanından my_database bazasına parolla qoşula bilər.

  3. Bütün subnetdən verilənlər bazasına girişə icazə ver

    host    my_database     all            192.168.1.0/24           scram-sha-256
    

    192.168.1.0/24 subnetindən istənilən istifadəçi my_database bazasına yalnız SHA-256 autentifikasiyası ilə qoşula bilər.

  4. Müəyyən subnetdən qoşulmaları qadağan et

    host    all             all            192.168.2.0/24           reject
    

    192.168.2.0/24 subnetindən qoşulmalar tamamilə qadağandır.

IP ünvanlar üzrə girişin sazlanması

Artıq faylın strukturunu başa düşdük, indi isə qoşulmalara necə nəzarət etməyi baxaq.

Gəlin serverə yalnız müəyyən IP ünvanlardan girişə icazə verək. Tutaq ki, PostgreSQL serverimiz var və biz istəyirik ki, yalnız lokal hostdan (127.0.0.1) və ofis subnetindən (192.168.10.0/24) giriş olsun. Bunun üçün pg_hba.conf faylına belə sətirlər əlavə edirik:

# Lokal giriş
host    all             all            127.0.0.1/32             trust

# Ofisdən giriş
host    all             all            192.168.10.0/24          md5

# Qalan hər şeyi qadağan et
host    all             all            0.0.0.0/0                reject

Burada 0.0.0.0/0 qaydası "bütün IP ünvanları" deməkdir. Biz açıq şəkildə göstəririk ki, yalnız yuxarıda göstərilən ünvanlardan başqa heç bir yerdən giriş olmasın.

Uzaq istifadəçilər üçün girişin sazlanması

Əgər PostgreSQL serverin buludda və ya uzaq serverdə işləyirsə, bəzən yalnız müəyyən xarici IP-lərə girişə icazə vermək lazım olur. Məsələn:

# Evdən admin üçün giriş
host    all             admin_user     203.0.113.10/32          md5

Bu nümunədə yalnız admin_user istifadəçisi 203.0.113.10 IP ünvanından qoşula bilər.

Konfiqurasiyanın yenilənməsi

pg_hba.conf faylında dəyişiklik etdikdən sonra PostgreSQL onları tətbiq etməlidir. Bunun üçün bu əmri istifadə et:

sudo systemctl reload postgresql

Yeniləmə təhlükəsizdir və serverin dayanmasına səbəb olmayacaq.

Əgər birdən pg_hba.conf harada yerləşdiyini unutdunsa, SQL ilə yolunu öyrənə bilərsən:

SHOW hba_file;

pg_hba.conf ilə işləyərkən tipik səhvlər

pg_hba.conf ilə işləmək asandır, amma yeni başlayan adminlər bəzən səhvlər edirlər. Məsələn:

  1. Serveri yeniləməyi unutmaq. pg_hba.conf-da bütün dəyişikliklər yalnız konfiqurasiya yeniləndikdən sonra qüvvəyə minir.
  2. Qaydalarda konflikt. PostgreSQL qaydaları yuxarıdan aşağıya oxuyur. İlk uyğun qayda işləyir, qalanları nəzərə alınmır. Daha ümumi qaydalar aşağıda olmalıdır.
  3. Subnet maskasını səhv yazmaq. Məsələn, /0 yazsan, hamıya giriş açıq olur, bu isə ciddi zəiflikdir.

Real istifadə ssenariləri nümunələri

Lokal serverdə tətbiqin test edilməsi.

Yalnız lokal hostdan girişə icazə ver:

local   all   all   trust

Uzaq müştərilərlə işləmək.

Müəyyən IP-dən müştəriyə girişə icazə ver:

host    all   client_user   203.0.113.42/32   scram-sha-256

Publik şəbəkədə girişin məhdudlaşdırılması.

İnternetdən qoşulmaları qadağan et (amma ofisə icazə ver):

host    all   all   0.0.0.0/0   reject
host    all   all   192.168.10.0/24   md5

Bu mərhələdə artıq pg_hba.conf ilə PostgreSQL-ə girişin necə məhdudlaşdırılacağını başa düşməlisən. Bu fayl — verilənlər bazasının təhlükəsizliyi üçün əsas alətlərdən biridir. Ayarların məntiqli, yoxlanılmış və biznes ehtiyaclarına uyğun olduğuna əmin ol. Axı, biz hamımız istəyirik ki, məlumatlarımız hakerlərdən qorunsun, düzdür? Əlbəttə, əgər haker özünsə, başqa məsələ :)

1
Sorğu/viktorina
, səviyyə, dərs
Əlçatan deyil
Girişə nəzarət və təhlükəsizlik
Girişə nəzarət və təhlükəsizlik
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION