Image

Bilgi Veritabanı → Linux'ta iptables aracılığıyla giden trafiğin sınırlandırılması ve kontrol edilmesi

[Virtual sunucular]
Yayın tarihi: 21.07.2025

Giden trafiği sınırlamak ve kontrol etmek birçok durumda faydalı olabilir, örneğin:

  • Saldırılardan korunma - sunucudaki hizmetler yanıt ürettiğinde
  • Veri koruma - sunucudan bilgi alınmasını zorlaştırma
  • Bilginiz olmadan bilgi toplayıp iletebilecek kapalı kaynaklı betiklerden koruma

Bu örnekte, bir sanal makine oluşturacağız ve bir yazılımın veri iletimini test etmemiz gerektiğini varsayacağız. Bu nedenle, yazılımı test edeceğimiz bir IP adresi hariç her şeyi engelleyeceğiz.

1. iptables'e kurallar ekleme

# Mevcut kuralları sıfırla (SSH ile bağlıysanız dikkatli olun)
iptables -F OUTPUT

# Loopback (localhost) izin ver
iptables -A OUTPUT -o lo -j ACCEPT

# DNS sorgularına izin ver (gerekirse, isteğe bağlı)
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

# IP 111.222.111.222'ye tüm giden bağlantılara izin ver
iptables -A OUTPUT -d 111.222.111.222 -j ACCEPT

# Diğer tüm giden bağlantıları engelle
iptables -A OUTPUT -j REJECT

Burada 111.222.111.222, test, veri gönderme ve alma için kullanacağımız IP adresidir.

2. Kuralları kontrol etme, sunucunun kendisinden SSH ile doğrulama

2.1 Ping kontrolü

ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 79.174.xx.xxx icmp_seq=1 Destination Port Unreachable
ping: sendmsg: İşlem izni yok
From 79.174.xx.xxx icmp_seq=2 Destination Port Unreachable
ping: sendmsg: İşlem izni yok
From 79.174.xx.xxx icmp_seq=3 Destination Port Unreachable
ping: sendmsg: İşlem izni yok

2.2 Telnet kontrolü

telnet google.com 443
Trying 209.85.233.101...
Connection failed: Bağlantı reddedildi
Trying 209.85.233.113...
Connection failed: Bağlantı reddedildi
Trying 209.85.233.139...
Connection failed: Bağlantı reddedildi
Trying 209.85.233.100...

Gördüğümüz gibi, kurallar çalışıyor ve betikler veya hizmetler bağlantı kurmaya çalıştığında internete veri aktarılmıyor.

3. Trafik ve bağlantı girişimlerinin izlenmesi

3.1 Bu örnek, PHP bağlantı verilerini her saniye güncelleyecektir

watch -n 1 'lsof -i -nP | grep php'

php-fpm8.  445 www-data   11u  IPv4 2405976614      0t0  TCP 127.0.0.1:9000 (LISTEN)
php-fpm8.  448 www-data   12u  IPv4 2405976614      0t0  TCP 127.0.0.1:9000 (LISTEN)
php-fpm8.  449 www-data   14u  IPv4 2405976614      0t0  TCP 127.0.0.1:9000 (LISTEN)
php-fpm8.  453 www-data   16u  IPv4 2405976614      0t0  TCP 127.0.0.1:9000 (LISTEN)

Dış bir düğüme bağlanma girişimi olduğunda, bağlantı (port ve IP adresi dahil) görünecektir.

PHP betiklerini izlerken, xdebug gibi ek modüller de vardır. Üretim modunda bunu etkin bırakmayın; yalnızca hata ayıklama için kullanın.

Bu şekilde, sanal bir sunucuda gerekli betikler için hızlıca bir kum havuzu oluşturabilir ve ağ etkinliğini izleyerek veri açığa çıkma riskini azaltabilirsiniz.





No Comments Yet