Linux sunucularda CSF (ConfigServer Security & Firewall) kullanırken bazen DHCP ile ilgili beklenmeyen network sorunları yaşanabilir.
Sunucu ilk açılışta IP adresini alabilir ve bağlantı sorunsuz çalışabilir. Ancak DHCP lease süresi yenilenmesi gerektiğinde firewall DHCP trafiğini engellerse bağlantı kopmaları veya IP yenileme problemleri meydana gelebilir.
Bu yazıda CSF üzerinde DHCP iletişimini güvenli şekilde izinli hale getirmeyi, doğru csfpost.sh dosyasını bulmayı ve yapılan ayarları kontrol etmeyi anlatacağız.
DHCP UDP 67 ve UDP 68 Portları Ne İçin Kullanılır?
DHCP protokolü iki temel UDP portu kullanır:
| Görev | Port |
|---|---|
| DHCP Server | UDP 67 |
| DHCP Client | UDP 68 |
Normal DHCP iletişimi:
DHCP Client
UDP 68
|
|
UDP 67
DHCP Server
şeklindedir.
Sunucu DHCP lease yenileme sırasında:
Client:
Kaynak Port : 68
Hedef Port : 67
Server:
Kaynak Port : 67
Hedef Port : 68
iletişimini gerçekleştirir.
DHCP Sorununun Belirtileri
CSF tarafından DHCP trafiği engellendiğinde genellikle şu belirtiler görülür:
- Sunucu reboot sonrası çalışır.
- IP adresi ilk açılışta alınır.
- Bir süre sonra DHCP lease yenileme başarısız olur.
- Network bağlantısı kesilebilir.
- NetworkManager loglarında DHCP timeout görülebilir.
Kontrol etmek için:
journalctl -u NetworkManager | grep -Ei "dhcp|lease"
Başarılı bir DHCP işlemi örneği:
dhcp4: state changed new lease
şeklinde görünür.
En Kritik Nokta: Önce csfpost.sh Dosya Yolunu Kontrol Edin
CSF üzerinde yapılan en yaygın hata, yanlış dosyayı düzenlemektir.
Birçok kullanıcı direkt olarak:
/etc/csf/csfpost.sh
dosyasını değiştirir.
Ancak bazı kurulumlarda CSF öncelikle şu dosyayı kullanır:
/usr/local/csf/bin/csfpost.sh
Bu nedenle ilk yapılması gereken aktif dosyanın bulunmasıdır.
Kontrol:
grep -R "csfpost.sh" /etc/csf /usr/local/csf /usr/sbin 2>/dev/null
CSF çalışma sırası genellikle:
1. /usr/local/csf/bin/csfpost.sh
2. /etc/csf/csfpost.sh
şeklindedir.
Eğer:
/usr/local/csf/bin/csfpost.sh
mevcutsa, /etc/csf/csfpost.sh içine eklenen kurallar çalışmayabilir.
Bu nedenle firewall ayarlarında değişiklik yapmadan önce mutlaka gerçek kullanılan dosya kontrol edilmelidir.
Aktif csfpost.sh Dosyasını Kontrol Etme
Şu komut ile kontrol edilebilir:
ls -l /usr/local/csf/bin/csfpost.sh /etc/csf/csfpost.sh 2>/dev/null
Örneğin:
-rwx------ root root /usr/local/csf/bin/csfpost.sh
görülüyorsa kullanılacak dosya:
/usr/local/csf/bin/csfpost.sh
olacaktır.
DHCP Portlarını Güvenli Şekilde Açmak
UDP 67 ve UDP 68 portlarını tüm internete açmak önerilmez.
Yanlış yapılandırma:
WAN -> UDP 67 açık
WAN -> UDP 68 açık
Bu gereksiz bir erişim alanı oluşturur.
Daha doğru yöntem:
- Sadece DHCP sunucusuna izin vermek.
- Genel internet erişimini kapalı bırakmak.
Örnek:
iptables -I OUTPUT -p udp -d DHCP_SERVER_IP --sport 68 --dport 67 -j ACCEPT
iptables -I INPUT -p udp -s DHCP_SERVER_IP --sport 67 --dport 68 -j ACCEPT
Burada:
DHCP_SERVER_IP
yerine altyapınızın gerçek DHCP sunucu adresi yazılmalıdır.
csfpost.sh İçinde Kalıcı Hale Getirme
Kuralın reboot sonrası kaybolmaması için aktif kullanılan:
csfpost.sh
dosyasına eklenmelidir.
Örnek:
#!/bin/bash
iptables -I OUTPUT -p udp -d DHCP_SERVER_IP --sport 68 --dport 67 -j ACCEPT
iptables -I INPUT -p udp -s DHCP_SERVER_IP --sport 67 --dport 68 -j ACCEPT
Dosya izinleri:
chmod 700 /path/to/csfpost.sh
CSF Yeniden Yükleme
Değişikliklerden sonra:
csf -r
çalıştırılır.
Ardından kurallar kontrol edilir.
Firewall Kural Kontrolü
OUTPUT kontrol:
iptables -S OUTPUT | grep -E "sport 68|dport 67"
Beklenen:
udp --sport 68 --dport 67 ACCEPT
INPUT kontrol:
iptables -S INPUT | grep -E "sport 67|dport 68"
Beklenen:
udp --sport 67 --dport 68 ACCEPT
Reboot Sonrası Kesin Test
Sunucu yeniden başladıktan sonra:
NetworkManager durumu:
systemctl status NetworkManager
Beklenen:
Active: active (running)
DHCP Log Kontrolü:
journalctl -u NetworkManager -b | grep -Ei "dhcp|lease"
Başarılı sonuç:
dhcp4: state changed new lease
Route Kontrolü:
ip route
DHCP üzerinden gelen varsayılan route görünmelidir.
iptables ve nftables Kontrolü
Yeni Linux sistemlerinde:
iptables -V
çıktısı:
iptables v1.8.x (nf_tables)
olabilir.
Bu durumda iptables komutları nftables altyapısını kullanır.
Kontrol:
nft list ruleset | grep -E "67|68"
yapılabilir.
Sık Yapılan Hata
Yanlış dosyayı değiştirmek
En sık karşılaşılan problem:
/etc/csf/csfpost.sh
dosyasına kural eklenir ancak CSF:
/usr/local/csf/bin/csfpost.sh
dosyasını çalıştırdığı için hiçbir değişiklik uygulanmaz.
Sonuç:
- Firewall değişti sanılır.
- Saatlerce test yapılır.
- DHCP sorunu devam eder.
Bu nedenle ilk kontrol her zaman:
CSF hangi csfpost.sh dosyasını kullanıyor?
olmalıdır.
Son Sözler:
CSF üzerinde DHCP kaynaklı network sorunlarını çözmenin ana noktası sadece UDP 67 ve 68 portlarını açmak değildir.
Doğru yöntem:
- Önce aktif
csfpost.shdosyasını tespit etmek. - DHCP trafiğini sadece gerçek DHCP sunucusuna izin verecek şekilde sınırlandırmak.
- Kuralları CSF’nin kalıcı çalıştırdığı dosyaya eklemek.
- Firewall kurallarını kontrol etmek.
- Reboot sonrası DHCP lease yenilemesini test etmek.
UDP 67 ve 68 portlarını tamamen internete açmak yerine sadece gerekli DHCP sunucusu ile sınırlandırmak hem güvenliği korur hem de DHCP yenileme problemlerini çözer.
Özellikle cloud ve dedicated sunucularda CSF kullanan yöneticiler için “önce doğru csfpost.sh dosyasını bul” adımı, gereksiz zaman kaybını önleyen en önemli kontroldür.
