Pardus/Linux iptables ile Güvenlik Duvarı Yönetimi

Varsayılan politikayı(default policy) değiştirmek

Daha evvel varsayılan politikanın konseptini açıklamıştık. Varsayılan olarak, zincirler tüm trafiği kabul etmek üzere ayarlanmıştır. Bunu kuralları listeleyerek basit bi şekilde görebiliriz:

Chain INPUT (policy ACCEPT)
...
Chain FORWARD (policy ACCEPT)
...
Chain OUTPUT (policy ACCEPT)
..

Varsayılan politikayı -P parametresiyle değiştirebiliriz. Özellikle ev bilgisayarlarında tüm trafiğin çalışan lokal programlar tarafından alınması istenmez. iptables üzerinde releated ve established paketleri kabul etmesini ayarladıktan sonra, INPUT zinciri için varsayılan politikayı şu şekilde değiştirebilirsiniz :

iptables -P INPUT DROP

Aklınızda tutmanız gereken öncelikle established ve releated bağlantılar için gerekli INPUT zincir kurallarını oluşturmanızdır, çünkü varsayılan politika gelen tüm paketleri engelleyecektir.

Arayüz Seçimi

iptables bir zincirdeki her kuralı gelen paketlere uygulayacağı için, pek çok kural olduğunda ağ trafiği farkedilir derecede yavaşlayacaktır. Bu tür durumlarda belirli trafik türlerini ayırt ederek ele almak çok daha faydalıdır.

Örneğin, tipik bir Nginx/PHP-FPM kurulumunu ele alırsak, Nginx PHP ile ve localhost ile iletişim kuracaktır. Bu durumda loopback arayüzünü kullancaktır. Benzer bir şekilde PHP , veritabanına bağlanırken (mysql ya da redis gibi .. ) yine loopback arayüzünü kullanacaktır. Böyle bir senaryoda loopback interface üzerinde oluşan trafiği filtrelemek son derece kullanışsız olacaktır. Loopback araüyü, genellikle lo  olarak adlandırılır, ve loopback arayüzü için INPUT zincirine aşağıdaki gibi bir kural girilebilir:

iptables -A INPUT -i lo -j ACCEPT

-i parametresi bunun bir veri girişi arayüzü olduğunu belirtmektedir. INPUT zincirinin boş olduğunu ve ilk kuralı yazdığınızı farzettik. Eğer bu ilk kuralınız değilse -I  parametresi ekleyerek, kuralı diğer kuralların üzerine yazdırmalısınız.

OUTPUT zinciri için ise,  -o  parametresini kullanmalısınız (output interface). Örneğin 111.222.111.111 adresindeki bir reklam kaynağını WiFi adaptörünüz üzerinde bloke etmek istiyorsunuz. Kaynağın 111.222.111.0/29 ve WiFi adaptörünüzün wlan0 olduğunu kabul edersek, şu şekilde bir kural eklemeniz gerekecektir:

iptables -A OUTPUT -o wlan0 -d 111.222.111.0/29 -j DROP

Negatif Şartlar

Bu noktada, pek çok örnek görerek paketlerin hangi şartlar altında nasıl karşılaştırıldığını inceledik. Buna rağmen bazı durumlarda, negatif şartlar eklenmesi gerekebilir. iptables bu tür durumlar için (!) negatif operatörünü kullanır.

Node.js ve Go web uygulamaları gibi  uygulamaları bir nginx web sunucusu arkasında çalıştırmak genel bir yaklaşımdır. Nginx ‘i trafiği uygulamaya yönlendirecek şekilde konfigure ettikten sonra, uygulamaya doğrudan erişimin engellenmesi gerekmektedir. Bir başka deyişle, TCP trafiği için bir kural yazarak HTTP, HTTPS ve SSH bağlantıları haricinin engellenmesi (drop) gerekmektedir:

iptables -A INPUT -p tcp -m multiport ! --dports 22,80,443 -j DROP

Buna rağmen öncelikle established ve releated etiketlenen paketleri de kabul etmemiz gerekir. Bunu yapmazsak , TCP tabanlı herhangi bir uygulamayı kullanamayız.

, , , , , , , ,