Sunucu güvenliği, modern ağ altyapılarında kritik bir öneme sahiptir.
Sunucu güvenliği, modern ağ altyapılarında kritik bir öneme sahiptir. Özellikle DDoS saldırıları, brute-force girişimleri ve yetkisiz erişim girişimlerinin belirli coğrafi bölgelerden kaynaklandığı durumlarda, iptables tabanlı güvenlik duvarı ile ülke bazlı IP engellemeleri etkili bir savunma stratejisi sunar. Bu makalede, Linux tabanlı sunucularda iptables kullanarak belirli ülkelerin IP aralıklarını nasıl engelleyeceğinizi adım adım inceleyeceğiz. GeoIP veritabanı entegrasyonu sayesinde, IP adreslerini ülkelere göre gruplayarak dinamik kurallar oluşturmak mümkündür. Bu yaklaşım, manuel IP listesi yönetiminin yarattığı yükü azaltır ve sunucunuzun performansını korurken güvenlik seviyesini yükseltir.
IPtables, Linux kernel’ının netfilter çerçevesi üzerine kurulu bir araçtır ve paket filtreleme, NAT ve diğer ağ işlemlerini yönetir. Ülke bazlı engelleme için, standart iptables kurallarının ötesinde GeoIP modülü ve ipset gibi yardımcı araçlar devreye girer. GeoIP, bir IP adresinin ait olduğu ülkeyi belirleyen bir veritabanıdır ve MaxMind GeoLite2 gibi ücretsiz kaynaklardan elde edilebilir. Bu entegrasyon, iptables zincirlerine dinamik setler ekleyerek binlerce IP’yi tek bir kural altında yönetmeyi sağlar.
Öncelikle, sisteminizin iptables ve ipset desteğini doğrulayın. Komut satırında iptables -V ve ipset v6 çalıştırarak sürümleri kontrol edin. Eğer xt_geoip modülü yüklü değilse, kernel modüllerini etkinleştirin: modprobe xt_geoip. Bu temel altyapı, ülke kodlarını (örneğin TR için Türkiye, RU için Rusya) IP setlerine eşleyerek engelleme işlemlerini otomatikleştirir. Pratikte, bu yöntem sunucunuzun giriş/çıkış trafiğini %20-30 oranında filtreleyerek kaynak tüketimini optimize eder.
MaxMind’in GeoLite2 veritabanını kullanmak için öncelikle bir hesap oluşturun ve GeoLite2-Country.tar.gz dosyasını indirin. Sunucunuzda mkdir /usr/share/xt_geoip ile dizin oluşturun, ardından tar -xzf GeoLite2-Country.tar.gz ile dosyaları çıkarın. geoipupdate aracını kurarak veritabanını otomatik güncel tutun: apt install geoipupdate (Debian/Ubuntu için). Konfigürasyon dosyasını /etc/GeoIP.conf‘da AccountID ve LicenseKey ile düzenleyin. Bu işlem, veritabanını haftalık olarak senkronize eder ve en az 70 kelimelik bir kurulum prosedürüne sahiptir; veritabanı boyutu yaklaşık 50 MB olup, ülke bazlı sorguları saniyeler içinde yanıtlar.
ipset kurmak için apt install ipset komutunu çalıştırın. Ardından, belirli bir ülke için set oluşturun: ipset create blocked_ru hash:ip geoip:RU. Bu komut, Rusya (RU) IP’lerini otomatik olarak set’e ekler. Benzer şekilde, ipset create blocked_cn hash:ip geoip:CN ile Çin’i engelleyin. Setleri kalıcı hale getirmek için /etc/ipset.conf‘a kaydedin ve ipset save > /etc/ipset.conf ile yedekleyin. Bu setler, iptables ile entegre edildiğinde dinamik güncellenir; örneğin yeni IP aralıkları eklendiğinde manuel müdahale gerekmez, bu da bakım yükünü önemli ölçüde azaltır.
INPUT zincirine engelleme kuralı ekleyin: iptables -I INPUT -m set --match-set blocked_ru src -j DROP. Bu, Rusya kaynaklı tüm giriş paketlerini düşürür. Çıkış trafiği için OUTPUT zincirine benzer kural: iptables -I OUTPUT -m set --match-set blocked_cn dst -j DROP. Kuralları kalıcı kılmak adına iptables-persistent paketini kurun ve iptables-save > /etc/iptables/rules.v4 ile kaydedin. Bu kurallar, protokol bağımsız çalışır (TCP/UDP/ICMP) ve loglama eklemek için -j LOG --log-prefix "Blocked: " kullanın; günlükleri /var/log/syslog‘da inceleyin.
Birden fazla ülkeyi engellemek için liste oluşturun: ipset create multi_block list:set, ardından ipset add multi_block blocked_ru ile ekleyin. iptables’te -m set --match-set multi_block src -j DROP. İstisnalar için whitelist seti: ipset create whitelist hash:ip ve iptables -I INPUT 1 -m set --match-set whitelist src -j ACCEPT. Bu yapı, belirli IP’leri (örneğin güvenilir VPN’ler) atlayarak esneklik sağlar. Kuralların önceliğini iptables -L -v -n ile doğrulayın.
Kuralları test etmek için curl --interface eth0 ifconfig.me ile kendi IP’nizi kontrol edin, ardından engellenen bir ülkeden proxy kullanarak erişim deneyin. tcpdump -i eth0 'src net 8.8.8.8' ile trafiği yakalayın. İzleme için watch -n 1 'iptables -L -v -n | grep blocked' komutunu kullanın; paket sayaçları engelleme etkinliğini gösterir. Haftalık bakımda veritabanını güncelleyin ve ipset flush blocked_ru; ipset restore ile yenileyin. Güvenlik politikalarınızı düzenli gözden geçirerek, yanlış pozitifleri önleyin.
Bu yöntemle sunucunuzu coğrafi tehditlere karşı proaktif olarak koruyabilirsiniz. Uygulama sonrası performans metriklerini izleyin ve gerektiğinde kuralları ince ayarlayın; böylece hem güvenlik hem de erişilebilirlik dengesini sağlayın.