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.