Rehber Nginx ile TCP proxy sunucu yapılandırması

r00ts

Hectopat
Katılım
11 Mart 2022
Mesajlar
361
Makaleler
1
Çözümler
5
Yer
Frankfurt
Daha fazla  
Cinsiyet
Erkek
Adım 1: Nginx'i yüklemek
İlk olarak, Nginx'i sisteminize kurmanız gerekiyor. Bunun için terminal üzerinden aşağıdaki komutu çalıştırabilirsiniz:

Kod:
sudo apt update.
sudo apt install nginx

Bu komut, Nginx'i sisteminize kurar.

Adım 2: Nginx'i TCP proxy olarak yapılandırmak
Nginx varsayılan olarak HTTP (web) ve HTTPS için çalışacak şekilde ayarlanmıştır. Bizim amacımız ise TCP protokolünü yönlendirmek (proxy yapmak). Bunun için Nginx'in 'stream' modülünü kullanacağız. Bu modül, TCP ve UDP trafiğini yönlendirmeye imkan tanır.
Stream modülünü etkinleştirme:
1. nginx konfigürasyon dosyasını düzenleme.
- Nginx'in ana konfigürasyon dosyasını düzenlemek için şu komutu kullanın:

Kod:
sudo nano /etc/nginx/nginx.conf

Bu komut, dosyayı açar ve düzenlemeler yapmanıza olanak tanır.
2. stream bloğunu ekleyin.
- Dosyanın içine aşağıdaki gibi bir 'stream' bloğu ekleyin. Bu blok, TCP proxy için yapılandırmayı yapmamıza olanak sağlar.

Kod:
stream {
 # TCP Proxy Ayarları.
 }

3. stream içine TCP proxy konfigürasyonunu ekleyin.
- 'Stream' bloğu içerisine, Nginx'in TCP trafiğini nasıl yönlendireceğini belirten aşağıdaki konfigürasyonu ekleyin:

Kod:
stream {
 upstream backend {
 server 192.168.1.10:3306; # Burada bağlantı kurulacak sunucuyu belirtiyoruz.
 }

 server {
 listen 3306; # Nginx, bu port üzerinden gelen TCP bağlantılarını dinleyecek.
 proxy_pass backend; # Gelen bağlantıları 'backend' tanımındaki sunucuya yönlendir.
 proxy_timeout 10s; # Proxy bağlantısı için zaman aşımı süresi.
 proxy_connect_timeout 5s; # Bağlantı kurma süresi.
 }
 }

- Detaylı açıklama:
- upstream backend: Bu kısım, trafik yönlendireceğimiz sunucuyu tanımlar. Burada '192.168.1.10:3306' IP adresine ve portuna yönlendireceğiz. Bu örnekte MySQL sunucusunu ele aldık, ancak başka bir TCP servisi de olabilir.
- listen 3306: Nginx'in hangi portu dinleyeceğini belirler. Burada '3306' portu seçildi.
- proxy_pass backend: Gelen bağlantıları 'backend' adlı sunucuya yönlendirir.
- proxy_timeout ve proxy_connect_timeout: Proxy için zaman aşımı sürelerini belirler.

4. dosyayı kaydedin ve çıkın.
- Düzenlemeleri yaptıktan sonra dosyayı kaydedin ve çıkın. 'nano' editoründe kaydetmek için 'CTRL + o' tuşlarına basın, ardından çıkmak için 'CTRL + X' tuşlarına basın.

Adım 3: Nginx'i yeniden başlatmak
Yapılandırma dosyasını değiştirdikten sonra, Nginx'i yeniden başlatmanız gerekiyor. Bunun için şu komutu kullanın:

Kod:
sudo systemctl restart nginx

Bu komut, Nginx'in yeni yapılandırma ile çalışmasını sağlar.

Adım 4: Güvenlik duvarını ayarlamak
Eğer sisteminizde bir güvenlik duvarı varsa, Nginx'in dinleyeceği portu açmanız gerekebilir. Bu örnekte, TCP bağlantıları için '3306' portunu açmanız gerekecek:

Kod:
sudo ufw allow 3306/tcp

Eğer başka bir port kullanıyorsanız, o portu açmalısınız.
Adım 5: Proxy'nin çalıştığını test etmek.
Nginx'in TCP proxy olarak doğru çalışıp çalışmadığını test edebilirsiniz. Bu adımda, bir TCP istemcisi kullanarak bağlantıyı test edebilirsiniz. Örneğin, 'NC' (netcat) aracını kullanarak bağlantı testi yapabilirsiniz:

Kod:
nc -zv <sunucu_ip> 3306

Bu komut, '3306' portuna bağlantı testi yapacaktır. Eğer bağlantı başarılıysa, nginx TCP Proxy'nin düzgün çalıştığını anlayabilirsiniz.
 
sudo ufw allow 3306/tcp

Cok guzel rehber. Tek sorun ustteki komut. 3306 portunu her IP'ye acmak hic istemezsiniz. Konunun MySQL portuyla alakasiz oldugunun farkindayim ama copy paste edenler bilinclensin diye yaziyorum.

Dogrusu:
sudo ufw allow from 127.0.0.1 to 127.0.0.1 port 3306 proto tcp

Veritabani guvenligi cok onemli, sadece guvenilir IP adreslerinden erisilebilmeli, dogru guvenlik katmani ve sertifikayla korunmali ve asla plaintext kritik data icermemeli.
 
sudo ufw allow 3306/tcp

Cok guzel rehber. Tek sorun ustteki komut. 3306 portunu her IP'ye acmak hiç istemezsiniz. Konunun MySQL portuyla alakasiz oldugunun farkindayim ama copy paste edenler bilinclensin diye yaziyorum.

Dogrusu:
sudo ufw allow from 127.0.0.1 to 127.0.0.1 port 3306 proto tcp

Veri tabanı guvenligi cok onemli, sadece guvenilir IP adreslerinden erisilebilmeli, dogru guvenlik katmani ve sertifikayla korunmali ve asla plaintext kritik data icermemeli.

Teşekkür ederim, bu arada haklısınız, eğer MySQL'e sadece belirli bir IP veya localhost üzerinden erişim sağlamak istiyorsanız dediğiniz komut doğrudur.

Kod:
sudo ufw allow from 127.0.0.1 to 127.0.0.1 port 3306 proto tcp

Eğer belirli bir uzak sunucudan (örneğin, 192.168.1.100) erişim izni vermek istiyorsanız:

Kod:
sudo ufw allow from 192.168.1.100 to any port 3306 proto tcp

Komutunu kullanabilirsiniz.
 

Technopat Haberler

Yeni konular

Yeni mesajlar

Geri
Yukarı