FreeBSD üzerinde web server kurmak isteyenler için temel kurulum adımlarını bu rehberde toparladım. Metin2 server sahipleri genelde oyun serverını ayrı, web tarafını ayrı düşünmek zorunda kalıyor. Site, panel, kayıt sistemi, sıralama, market, destek sayfası derken sağlam bir web altyapısı şart oluyor.

Bu rehberde FreeBSD üzerinde MySQL 5.6, Apache24, PHP 5.6, PHP eklentileri, Varnish cache ve bazı güvenlik modüllerinin kurulum mantığını anlatacağım. Baştan söylemekte fayda var: PHP 5.6 artık eski bir sürüm. Bu tarz kurulumlar genelde eski Metin2 panelleriyle uyumluluk için tercih ediliyor. Yeni bir proje kuruyorsan daha güncel PHP sürümlerini düşünmek daha sağlıklı olur.
Kurulacak Ana Bileşenler
Bu kurulumda kullanılacak temel paketler şöyle:
| Bileşen | Ne İşe Yarar? |
|---|---|
| MySQL 5.6 Server | Veritabanı sistemi |
| Apache24 | Web server |
| PHP 5.6 | PHP tabanlı web dosyalarını çalıştırır |
| PHP 5.6 Extensions | Gerekli PHP eklentileri |
| PHP 5.6 Extra Extensions | Ek PHP modülleri |
| Varnish Cache | HTTP hızlandırma / cache |
| IP Filter / pf | Firewall tarafı |
| mod_security | Web uygulama güvenliği |
| mod_antiloris | Slowloris saldırılarına karşı koruma |
| mod_evasive | Basit DoS koruması |
PKG Kurulumu
FreeBSD üzerinde paketleri rahatça kurabilmek için önce pkg sisteminin aktif olması gerekiyor. Konsola şu komutu yaz:
pkg
Kurulum onayı geldiğinde:
Y
diyip Enter’a bas.
Ardından paket listesini güncelle:
pkg update
Bundan sonra gerekli paketleri kurmaya başlayabiliriz.
MySQL 5.6 Kurulumu
Önce MySQL server paketini kuruyoruz:
pkg install mysql56-server
MySQL’in sistem açılışında otomatik başlaması için:
echo 'mysql_enable="YES"' >> /etc/rc.conf
Servisi başlat:
service mysql-server start
MySQL Root Kullanıcısı Oluşturma
Şimdi MySQL’e root kullanıcısıyla giriş yap:
mysql -u root
Ardından root kullanıcısına yetki vermek için şu komutları gir:
GRANT ALL PRIVILEGES ON *.* TO root@"%"
IDENTIFIED BY 'password' WITH GRANT OPTION;
flush privileges;
exit
Buradaki password kısmını kendi belirlediğin güçlü bir şifreyle değiştirmen gerekiyor.
Apache24
Web dosyalarını yayınlamak ve panel tarafını çalıştırmak için ana web server görevi görür.
MySQL 5.6
Hesap sistemi, panel, market ve oyun veritabanı bağlantıları için kullanılır.
Varnish
Apache yükünü azaltır, yoğun trafikte web sayfalarının daha hızlı cevap vermesine yardımcı olur.
Ama burada küçük bir uyarı yapmak lazım. root@"%" kullanımı root kullanıcısının her IP’den bağlanmasına izin verir. Test ortamında iş görür ama canlı sistemde güvenlik açısından risklidir. Mümkünse sadece belirli IP’lere izin verilmeli ya da bağlantılar SSH tunnel üzerinden yapılmalı.
Apache24 Kurulumu
Apache web server paketini kurmak için:
pkg install apache24
Apache’nin sistem açılışında otomatik başlaması için:
echo 'apache24_enable="YES"' >> /etc/rc.conf
Apache ayar dosyası şu konumdadır:
/usr/local/etc/apache24/httpd.conf
Bazı eski rehberlerde apache22 dizini geçebilir ama Apache24 kullanıyorsan doğru yol apache24 olmalı.
Dosya içinde şu satırı bul:
# ServerName www.yourdomain.com:80
Başındaki # işaretini kaldırıp kendi domain veya IP bilgine göre düzenleyebilirsin:
ServerName www.yourdomain.com:80
Ardından Apache servisini başlat:
service apache24 start
Tarayıcıdan sunucu IP adresine girdiğinde şu yazıyı görüyorsan Apache çalışıyor demektir:
It Works!
PHP 5.6 Kurulumu
PHP 5.6 kurmak için şu paketleri yükle:
pkg install php56
pkg install mod_php56
Apache ayar dosyasını aç:
/usr/local/etc/apache24/httpd.conf
Şu satırın olup olmadığını kontrol et:
LoadModule php5_module libexec/apache24/libphp5.so
Yoksa manuel olarak ekleyebilirsin.
Sonra PHP ayar dosyasını oluştur:
cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
Apache İçinde PHP Çalıştırma
Apache’nin PHP dosyalarını tanıması için httpd.conf içinde şu satırı bul:
DirectoryIndex index.html
Bunu şu şekilde değiştir:
DirectoryIndex index.html index.php
Sonra dosyanın uygun bir yerine şu satırları ekle:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Eğer .htm veya .html dosyalarının içinde de PHP kodu çalıştırmak istiyorsan şu şekilde kullanabilirsin:
AddType application/x-httpd-php .php .htm .html
Çok dilli Apache desteği istiyorsan şu satırı aktif edebilirsin:
Include etc/apache24/extra/httpd-languages.conf
Sonrasında servisleri yeniden başlat:
service apache24 restart
service mysql-server restart
PHP Çalışıyor mu Test Etme
PHP’nin çalışıp çalışmadığını test etmek için Apache web dizinine bir index.php dosyası oluştur:
echo "<?php phpinfo(); ?>" >> /usr/local/www/apache24/data/index.php
Sonra tarayıcıdan şu adrese gir:
http://sunucu_ip_adresi/index.php
PHP bilgi sayfası geliyorsa PHP kurulumu doğru çalışıyor demektir.
PHP 5.6 Eklentileri
Metin2 panel, kayıt sistemi veya eski web scriptleri için genelde bazı PHP eklentilerine ihtiyaç olur. Temel eklentileri şu şekilde kurabilirsin:
pkg install php56-extensions
pkg install php56-mysqli
pkg install php56-mysql
pkg install php56-gd
pkg install php56-openssl
Bu paketler özellikle MySQL bağlantısı, görsel işlemleri ve SSL tarafında işe yarar.
Varnish Cache Kurulumu
Varnish, web siteleri için HTTP accelerator olarak kullanılan güçlü bir cache sistemidir. Özellikle yoğun trafik alan sitelerde Apache’nin yükünü azaltmak için kullanılabilir.
Kurulum:
pkg install varnish
Sistem açılışında aktif olması için:
echo 'varnishd_enable="YES"' >> /etc/rc.conf
Varnish’i başlat:
/usr/local/etc/rc.d/varnishd start
Durumunu kontrol et:
/usr/local/etc/rc.d/varnishd status
Eğer “varnishd is not running” gibi bir çıktı alırsan konfigürasyonu kontrol etmen gerekir.
Varnish Konfigürasyonu
Varsayılan Varnish config dosyası:
ee /usr/local/etc/varnish/default.vcl
Dosyada backend kısmı genelde şu şekilde görünür:
# backend default {
# .host = "127.0.0.1";
# .port = "8080";
# }Yorum satırlarını kaldırarak şu hale getir:
backend default {
.host = "127.0.0.1";
.port = "8080";
}Buradaki 127.0.0.1, Apache’nin çalıştığı makineyi ifade eder. Eğer farklı bir IP kullanıyorsan ona göre değiştirebilirsin.
Apache’yi 8080 Portuna Alma
Varnish genelde dışarıya 80 portundan cevap verir, Apache ise arkada 8080 portunda çalışır. Bunun için Apache ayar dosyasında:
Listen 80
satırını bulup şu şekilde değiştir:
Listen 8080
Apache’yi yeniden başlat:
service apache24 restart
Sonra Varnish’i tekrar başlat:
/usr/local/etc/rc.d/varnishd start
Durum kontrolü:
/usr/local/etc/rc.d/varnishd status
Varnish loglarını aktif etmek istersen:
echo 'varnishlog_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/varnishlog start
Güvenlik Bölümü
Web server kurduktan sonra iş bitmiyor. Özellikle Metin2 paneli, kayıt sayfası veya yönetim paneli gibi alanlar varsa güvenlik tarafına mutlaka dikkat etmek gerekiyor.
Bu bölümde temel olarak şu modüller öne çıkıyor:
- mod_antiloris
- mod_security
- mod_evasive
- firewall / IP Filter / pf
mod_antiloris Kurulumu
Slowloris saldırıları, düşük bant genişliğiyle web server üzerinde çok sayıda yarım bağlantı açarak Apache’yi meşgul etmeye çalışır. Bu saldırı tipi, serverın bağlantı havuzunu doldurup normal kullanıcıların siteye erişmesini zorlaştırabilir.
mod_antiloris kurulumu:
pkg install mod_antiloris
Apache config dosyasında şu satırın aktif olduğundan emin ol:
LoadModule antiloris_module libexec/apache24/mod_antiloris.so
Eğer satır yoksa manuel olarak ekleyebilirsin.
Apache’yi yeniden başlat:
service apache24 restart
ModSecurity Kurulumu
ModSecurity, Apache için kullanılan güçlü bir web application firewall modülüdür. SQL injection, path traversal, kötü niyetli requestler gibi birçok saldırı tipini tespit etmek veya engellemek için kullanılabilir.
Kurulum:
pkg install www/mod_security
OWASP Core Rule Set kullanmak için önce Git kur:
pkg install git
ModSecurity dizinini oluştur:
mkdir -p /usr/local/etc/modsecurity
cd /usr/local/etc/modsecurity
OWASP CRS reposunu indir:
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs crs
Varsayılan ModSecurity config dosyasını kopyala:
cp /usr/local/etc/modsecurity.conf-example modsecurity.conf
Gerekli mapping dosyasını indir:
fetch https://raw.github.com/SpiderLabs/ModSecurity/master/unicode.mapping
CRS setup dosyasını kopyala:
cp crs/modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf
Apache için ModSecurity config dosyası oluştur:
ee /usr/local/etc/apache24/modules.d/000_modsecurity.conf
İçine şu yapıyı ekleyebilirsin:
LoadModule security2_module libexec/apache24/mod_security2.so<IfModule security2_module>
Include etc/modsecurity/modsecurity.conf
Include etc/modsecurity/modsecurity_crs_10_setup.conf
Include etc/modsecurity/crs/base_rules/*.conf
</IfModule>
Apache’yi yeniden başlat:
service apache24 restart
Log dosyasını kontrol et:
/var/log/httpd-error.log
ModSecurity doğru yüklendiyse loglarda ModSecurity’nin aktif olduğuna dair satırlar görmen gerekir.
ModSecurity DetectionOnly ve Blocking Mode
ModSecurity varsayılan olarak bazı kurulumlarda sadece tespit modunda çalışabilir. Yani saldırı gibi görünen requestleri loglar ama engellemez. Bu aslında ilk kurulum için mantıklı bir davranıştır, çünkü yanlış ayar yapılırsa normal kullanıcıların siteye erişimi de kesilebilir.
Config dosyasında şu satır varsa:
SecRuleEngine DetectionOnly
Bu sadece tespit modudur.
Engelleme moduna almak için:
SecRuleEngine On
yapabilirsin.
Ama canlı bir sitede direkt On yapmak bazen sorun çıkarabilir. Önce birkaç gün DetectionOnly modunda logları izlemek, false positive var mı görmek daha sağlıklı olur.
Şüpheli requestleri görmek için audit log kontrol edilebilir:
/var/log/modsec_audit.log
Örneğin /etc/passwd benzeri şüpheli path denemeleri CRS tarafından yakalanabilir.
mod_evasive
mod_evasive basit DoS saldırılarına karşı kullanılan Apache modüllerinden biridir. Aynı IP’den çok kısa sürede fazla istek geldiğinde engelleme yapabilir.
Genelde şu ayar başlıklarıyla yapılandırılır:
| Ayar | Açıklama |
|---|---|
| DOSHashTableSize | Takip tablosunun boyutunu belirler |
| DOSPageCount | Aynı sayfaya izin verilen istek sayısı |
| DOSSiteCount | Site geneline izin verilen istek sayısı |
| DOSPageInterval | Sayfa istek aralığı |
| DOSSiteInterval | Site istek aralığı |
| DOSBlockingPeriod | IP’nin ne kadar süre engelleneceği |
| DOSEmailNotify | Bildirim e-postası |
| DOSSystemCommand | Engelleme anında çalışacak komut |
| DOSLogDir | Log dizini |
| Whitelisting IP Addresses | Güvenilir IP adresleri |
Bu modül tek başına büyük DDoS saldırılarını durdurmaz ama basit HTTP flood ve agresif isteklerde işe yarayabilir.
Genel Web Server Güvenlik Kontrol Listesi
| Kontrol | Durum |
|---|---|
| FreeBSD paketleri güncel mi? | Kontrol edilmeli |
| Apache sadece gerekli portlarda mı çalışıyor? | Kontrol edilmeli |
| MySQL dışarıya açık mı? | Açık olmamalı |
| PHP sürümü eski mi? | Eskiyse risk bilinmeli |
| ModSecurity aktif mi? | Önerilir |
| OWASP CRS yüklü mü? | Önerilir |
| mod_antiloris aktif mi? | Önerilir |
| mod_evasive yapılandırıldı mı? | Önerilir |
| Varnish doğru porta yönleniyor mu? | Kontrol edilmeli |
| SSH güvenliği yapıldı mı? | Mutlaka yapılmalı |
| Panel dizinleri korunuyor mu? | Kontrol edilmeli |
| Loglar düzenli takip ediliyor mu? | Önerilir |
Apache22 ve Apache24 Karışıklığına Dikkat
Eski FreeBSD rehberlerinde bazen Apache22 yolları geçer. Örneğin:
/usr/local/etc/apache22/httpd.conf
Ama Apache24 kurduysan doğru yol genellikle şudur:
/usr/local/etc/apache24/httpd.conf
Aynı şekilde modül yollarında da apache22 yerine apache24 kontrol edilmelidir. Rehberlerdeki komutları körlemesine uygulamak yerine kendi kurulu paket sürümüne göre dosya yollarını doğrulamak önemli.
PHP 5.6 Hakkında Uyarı
PHP 5.6 eski bir sürümdür ve modern güvenlik standartları için önerilmez. Ancak bazı eski Metin2 panelleri, kayıt sistemleri veya scriptler hâlâ PHP 5.6 ile çalışacak şekilde yazılmış olabilir.
Canlı projede kullanacaksan:
- Paneli public erişime tamamen açık bırakma.
- Admin dizinlerini koru.
- ModSecurity gibi ek katmanlar kullan.
- MySQL bağlantılarını sınırlı tut.
- Gereksiz PHP fonksiyonlarını kapatmayı düşün.
- Mümkünse scriptleri yeni PHP sürümlerine uyumlu hale getir.
FreeBSD üzerinde Apache, MySQL ve PHP kurulumu çok zor değil ama işin kritik tarafı güvenlik ve doğru yapılandırma. Özellikle Metin2 gibi eski panel sistemleriyle çalışıyorsan, sadece kurulumun tamamlanması yeterli değil. Hangi port açık, MySQL’e kim bağlanabiliyor, PHP hangi sürümde çalışıyor, ModSecurity gerçekten engelliyor mu, Varnish doğru yönleniyor mu; bunların hepsi kontrol edilmeli.
Metin2 server ve web panel tarafında daha fazlası için
FreeBSD kurulumları, Metin2 server dosyaları, panel geliştirmeleri ve teknik rehberler için geliştirici platformumuzu ziyaret edebilirsiniz.
Kısaca, önce sistemi kur, sonra test et, sonra güvenlik katmanlarını ekle. Web tarafını “nasıl olsa sadece panel” diye hafife almak, serverın en zayıf noktasını kendi elinle oluşturmak demek olur.
Paylaş :






