Mehmet Yerli

Mehmet Yerli

Maden Mühendisi & Yazılım Geliştirme Uzmanı

Django Sunucusu Port Güvenlik Yapılandırması

Bu döküman, Django web uygulaması için yapılan güvenlik yapılandırmasını açık ve basit bir şekilde açıklamaktadır. Sunucunuzun internete açık olan portlarını nasıl güvenceye alacağınızı öğrenmek için bu rehberi takip edebilirsiniz.


Neden Port Güvenliği Önemlidir?

Bir sunucu çalışırken internete açık birçok port kullanabilir. Bu portlar, sunucunun dış dünyayla iletişim kurduğu kapılardır. Ancak bu kapılar saldırganlar için bir giriş noktası olabilir. Bu yüzden sadece ihtiyaç duyulan portları açık bırakmalı ve diğerlerini kapatmalıyız.

Örneğin: - Port 80: Web trafiği (HTTP) için kullanılır. - Port 443: Güvenli web trafiği (HTTPS) için kullanılır. - Port 22: SSH (uzaktan bağlantı) için kullanılır. - Port 5432: PostgreSQL veritabanı için kullanılır.


Başlangıç Durumu

Sunucunuzdaki güvenlik duvarı (firewall) başlangıçta devre dışı olabilir. Bu, tüm portların açık olduğu anlamına gelir ve güvenlik açısından büyük bir risktir.

Başlangıç durumunu kontrol etmek için şu komutu kullanabilirsiniz: ```bash sudo ufw status ``` Eğer şu şekilde bir çıktı alıyorsanız: ``` Status: inactive `` Bu, güvenlik duvarınızın aktif olmadığını gösterir.


Portların Yapılandırılması

Güvenlik duvarınızı (UFW) aktif hale getirip gerekli portları yöneterek sunucunuzu koruma altına alabilirsiniz.

1. Web Sunucusu Portları

Django web uygulamanızın çalışması için web trafiğini (HTTP ve HTTPS) kabul eden portları açmanız gerekir: ```bash sudo ufw allow 80/tcp # HTTP trafiği için sudo ufw allow 443/tcp # HTTPS trafiği için ```

Bu ayarlarla: - Port 80 (HTTP): Tarayıcınız üzerinden siteyi açarken kullanılır. - Port 443 (HTTPS): Güvenli web trafiği sağlar (SSL sertifikası kullanıyorsanız).


2. Veritabanı ve Cache Portları (Sadece Localhost)

Veritabanı (PostgreSQL) ve cache (Redis) gibi servislerin portları sadece sunucunun kendisinden erişilebilir olmalıdır. Bu, dışarıdan bu servislere erişimi engeller.

PostgreSQL (5432):

```bash sudo ufw allow from 127.0.0.1 to any port 5432 ```

Redis (6379):

```bash sudo ufw allow from 127.0.0.1 to any port 6379 ```

Bu kurallar şu anlama gelir: - Sadece 127.0.0.1 (localhost) adresinden bu portlara erişim yapılabilir. - Sunucunun dışındaki hiçbir cihaz bu servislere bağlanamaz.


3. SSH Port Güvenliği

SSH, sunucunuza uzaktan bağlanmak için kullanılan bir protokoldür. Varsayılan olarak port 22 üzerinden çalışır, ancak güvenlik nedeniyle port numarasını değiştirmek iyi bir fikirdir. Örneğin, portu 42922 olarak değiştirebiliriz.

Yeni SSH Portu Açma:

```bash sudo ufw allow 42922/tcp ```

Eski SSH Portunu Kapatma:

```bash sudo ufw delete allow 22/tcp ```

Bu işlem, saldırganların sunucunuza brute-force saldırısı yapma ihtimalini azaltır.

SSH Servisini Yeniden Başlatma:

```bash sudo systemctl restart sshd ```

Not: Port numarasını değiştirdiğinizde, bağlanmak için yeni port numarasını belirtmeniz gerekir: ```bash ssh -p 42922 kullanıcı_adı@sunucu_adresi ```


Güvenlik Duvarını Aktif Etme

Gerekli kuralları ekledikten sonra güvenlik duvarını aktif hale getirebilirsiniz: ```bash sudo ufw enable ```

Aktif olduğunda, güvenlik duvarınız sadece izin verdiğiniz portları açık tutacaktır.

Durumu kontrol etmek için: ```bash sudo ufw status verbose ```

Örnek çıktı: ``` Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed)

Açık Portlar: - 80/tcp : HTTP (Herkese açık) - 443/tcp : HTTPS (Herkese açık) - 42922/tcp : SSH (Herkese açık) - 5432 : PostgreSQL (Sadece localhost) - 6379 : Redis (Sadece localhost) ```


Güvenlik Durumu

  1. Varsayılan Kurallar:
  2. Gelen bağlantılar: Reddediliyor (deny)
  3. Giden bağlantılar: İzin veriliyor (allow)

  4. Açık Portlar:

  5. 80 (HTTP): Web tarayıcıları için.
  6. 443 (HTTPS): Güvenli web tarayıcıları için.
  7. 42922 (SSH): Sunucuya uzaktan bağlanmak için.
  8. 5432 (PostgreSQL): Sadece sunucudan erişilebilir.
  9. 6379 (Redis): Sadece sunucudan erişilebilir.

  10. Kapalı Portlar:

  11. Diğer tüm portlar kapalıdır ve dış dünyadan erişilemez.

Sonuç

Bu yapılandırmalar sayesinde: - Sunucunuz yalnızca gerekli portları açık tutar. - Veritabanı ve cache gibi hassas servisler dış erişime kapalıdır. - SSH için özel bir port kullanılarak brute-force saldırıları azaltılmıştır.

Eğer başka güvenlik ihtiyaçlarınız varsa veya bu ayarları genişletmek isterseniz, bana danışabilirsiniz! 😊

Create a simple and elegant flower design with soft, flowing petals. The flower should have a delicate appearance with thin black outlines and minimal details, placed on a clean white background.