Takip et

Belirli Bir Linux Kullanıcısı İçin Giden Trafiği iptables ile Engelleme: Dinleme Portlarını Çalışır Tutma Rehberi

Belirli Bir Linux Kullanıcısı İçin Giden Trafiği iptables ile Engelleme: Dinleme Portlarını Çalışır Tutma Rehberi Linux sistemlerde güvenlik, k…

Belirli Bir Linux Kullanıcısı İçin Giden Trafiği iptables ile Engelleme: Dinleme Portlarını Çalışır Tutma Rehberi

Linux sistemlerde güvenlik, kullanıcıların ve servislerin birbirlerinden izole edilmesiyle önemli ölçüde artırılabilir. Özellikle belirli bir kullanıcının veya bu kullanıcı altında çalışan bir servisin sadece ihtiyaç duyduğu ağ bağlantılarını kurmasına izin vermek, olası güvenlik ihlallerinin etkisini sınırlamak için kritik bir adımdır. Bu makalede, iptables kullanarak belirli bir Linux kullanıcısının giden (outbound) ağ trafiğini nasıl engelleyeceğimizi, ancak aynı zamanda bu kullanıcının dinleme (listening) portları üzerinden gelen bağlantılara yanıt verebilmesini nasıl sağlayacağımızı detaylıca inceleyeceğiz. Bu sayede, güvenlikten ödün vermeden servis sürekliliğini sağlamanın yollarını keşfedeceğiz.

Neden Belirli Bir Kullanıcının Giden Trafiğini Kısıtlamalıyız?

Bir Linux sisteminde kullanıcı bazlı ağ trafiği kısıtlamaları uygulamak, güvenlik duruşunu önemli ölçüde güçlendiren proaktif bir yaklaşımdır. Bu tür kısıtlamalar, sistemin genel bütünlüğünü korumak ve potansiyel tehditlerin yayılmasını engellemek için hayati öneme sahiptir.

Güvenlik İzolasyonu

Kullanıcı bazlı trafik engelleme, bir güvenlik ihlali durumunda hasarın yayılmasını sınırlar. Örneğin, bir web uygulamasının güvenlik açığı nedeniyle ele geçirilmesi durumunda, bu uygulamanın çalıştığı kullanıcının giden trafiği kısıtlanmışsa, saldırganın sistemi dış dünyaya bağlamak (command and control sunucularına bağlanmak, veri sızdırmak vb.) için kullanabileceği kanallar daralır veya tamamen kapanır. Bu, saldırganın hareket alanını kısıtlayarak ihlalin etkisini minimize eder.

Kaynak Kontrolü ve Kötüye Kullanımı Önleme

Bazı uygulamalar veya servisler, beklenmedik veya istenmeyen ağ bağlantıları kurma potansiyeline sahiptir. Örneğin, bir test kullanıcısının yanlışlıkla veya kötü niyetle internete erişerek sistem kaynaklarını tüketmesini veya hassas verilere ulaşmasını engelleyebilirsiniz. Bu tür kısıtlamalar, sistem kaynaklarının verimli kullanılmasını sağlar ve yetkisiz erişim denemelerini engeller.

Politika Uygulama ve Uyumluluk

Kurumsal ortamlarda veya belirli uyumluluk standartlarına (GDPR, HIPAA vb.) tabi sistemlerde, kullanıcıların veya servislerin belirli ağ kaynaklarına erişimi katı kurallarla belirlenmelidir. iptables kuralları, bu politikaların teknik düzeyde uygulanmasını sağlar. Örneğin, bir veritabanı kullanıcısının sadece veritabanı sunucusuna bağlanmasına izin verilirken, diğer tüm giden bağlantıları engellenebilir. Bu, veri bütünlüğünü ve gizliliğini korumak için kritik bir adımdır.

Örnek Senaryolar

* Web Sunucusu Kullanıcıları: nginx veya apache gibi web sunucularının genellikle www-data veya apache gibi özel kullanıcılar altında çalıştırılması yaygındır. Bu kullanıcıların, web içeriği sunmak dışında dışarıya bağlantı kurmaları genellikle gereksizdir. Giden trafiği engellemek, olası bir web shell saldırısının dışarıya komut göndermesini zorlaştırır.
* Veritabanı Kullanıcıları: mysql veya postgresql gibi veritabanı servisleri, genellikle kendi özel kullanıcıları altında çalışır. Bu kullanıcıların sadece veritabanı dosyalarına ve gerektiğinde diğer veritabanı sunucularına erişmesi yeterlidir. Dışarıya olan tüm diğer bağlantıların engellenmesi, veritabanı sunucusunun güvenliğini artırır.
* Kapsayıcı (Container) Ortamları: Docker veya Kubernetes gibi kapsayıcı teknolojileri, uygulamaları izole etmek için kullanıcı bazlı kısıtlamaları tamamlayıcı bir güvenlik katmanı olarak kullanabilir.

iptables Temelleri ve Durum Takibi (Connection Tracking)

iptables, Linux çekirdeğinin netfilter çerçevesi için bir kullanıcı alanı programıdır ve ağ paketlerini filtrelemek, değiştirmek veya yönlendirmek için kullanılır. Belirli bir kullanıcının trafiğini yönetmek için iptables‘ın temel bileşenlerini ve özellikle durum takibi özelliğini anlamak önemlidir.

iptables Zincirleri (Chains)

iptables kuralları, belirli noktalarda ağ paketlerine uygulanan “zincirler” halinde düzenlenir. En yaygın kullanılan zincirler şunlardır:
* INPUT: Sisteme gelen paketler için.
* OUTPUT: Sistemden çıkan paketler için.
* FORWARD: Sistem üzerinden yönlendirilen (başka bir hedefe iletilen) paketler için.
Bizim senaryomuzda, belirli bir kullanıcının giden trafiğini engellemek istediğimiz için OUTPUT zinciri kritik öneme sahiptir.

iptables Hedefleri (Targets)

Bir kural eşleştiğinde, iptables pakete ne yapacağını belirten bir “hedef” uygular:
* ACCEPT: Paketin geçmesine izin verir.
* DROP: Paketi sessizce düşürür (paketi gönderene herhangi bir bildirim göndermez).
* REJECT: Paketi düşürür ve gönderene bir hata mesajı (örneğin, “Connection refused”) gönderir. Güvenlik açısından genellikle DROP tercih edilir, çünkü saldırganlara daha az bilgi verir.
* LOG: Paketi sistem günlüğüne kaydeder ve bir sonraki kurala geçilmesine izin verir.

Durum Takibi (Connection Tracking – conntrack)

iptables‘ın en güçlü özelliklerinden biri durum takibidir (connection tracking). Bu özellik sayesinde iptables, TCP, UDP ve ICMP gibi protokoller için ağ bağlantılarının durumunu izleyebilir. Durum takibi, güvenlik duvarının yalnızca tek tek paketleri değil, aynı zamanda bağlantının genel bağlamını da anlamasına olanak tanır. Durum modülü (-m state) ile dört ana bağlantı durumu vardır:
* NEW: Yeni bir bağlantı başlatmaya çalışan bir pakettir (örneğin, bir TCP SYN paketi).
* ESTABLISHED: Halihazırda kurulmuş bir bağlantının parçası olan bir pakettir.
* RELATED: Mevcut bir bağlantıyla ilişkili, ancak yeni bir bağlantı başlatan bir pakettir (örneğin, bir FTP veri bağlantısı veya ICMP hata mesajı).
* INVALID: Tanınmayan veya geçersiz bir bağlantı durumu olan bir pakettir.

Dinleme portlarının çalışır kalmasını sağlamak için ESTABLISHED ve RELATED durumları hayati öneme sahiptir. Bir sunucu bir dinleme portunda gelen bir bağlantıyı kabul ettiğinde, bu bağlantı ESTABLISHED durumuna geçer. Sunucunun bu bağlantıya yanıt göndermesi gerektiğinde, bu yanıt paketleri de ESTABLISHED durumunda kabul edilir ve giden trafik olarak sayılır.

Kullanıcı Kimliği ile Eşleştirme

iptables, owner modülü (-m owner) sayesinde paketi gönderen sürecin kullanıcı kimliğini (UID) veya grup kimliğini (GID) eşleştirebilir. Bu, bizim senaryomuz için temel taşıdır:
* --uid-owner : Belirtilen UID’ye sahip kullanıcının başlattığı paketleri eşleştirir.
* --gid-owner : Belirtilen GID’ye sahip grubun başlattığı paketleri eşleştirir.
Kullanıcı adını UID’ye çevirmek için id -u komutunu kullanabiliriz.

Temel Engelleme Kuralı ve Dinleme Portları Sorunu

Belirli bir kullanıcının giden trafiğini engellemek ilk bakışta basit görünebilir, ancak dinleme portlarının işlevselliğini korumak için dikkatli bir yaklaşım gerektirir.

Kullanıcı Bazlı Giden Trafiği Engelleme (İlk Deneme)

Bir kullanıcının giden trafiğini tamamen engellemek için kullanılabilecek en basit kural şudur:

iptables -A OUTPUT -m owner --uid-owner  -j DROP


Bu kural, 'ye sahip kullanıcının başlattığı tüm giden paketleri OUTPUT zincirinin sonuna ekler ve bu paketleri düşürür.
Örnek: webuser kullanıcısının UID'si 1001 ise:

iptables -A OUTPUT -m owner --uid-owner 1001 -j DROP


Bu kural uygulandığında, webuser artık dış dünyaya herhangi bir bağlantı kuramaz. ping google.com veya curl example.com gibi komutlar çalışmayacaktır.

Dinleme Portlarının Çalışma Prensibi ve Sorun

Bir servis (örneğin, bir web sunucusu) belirli bir portu dinlerken, dışarıdan gelen bağlantıları bekler. Bir istemci bu porta bağlandığında, sunucu gelen paketi alır ve bu bağlantıya yanıt verir. Sunucunun gönderdiği bu yanıt paketleri, teknik olarak sistemden çıkan "giden trafik" olarak kabul edilir.
Yukarıdaki basit DROP kuralı uygulandığında, webuser altında çalışan bir web sunucusu gelen bağlantıları kabul edebilir, ancak bu bağlantılara yanıt göndermeye çalıştığında, yanıt paketleri OUTPUT zincirindeki DROP kuralına takılacak ve düşürülecektir. Sonuç olarak, istemci hiçbir zaman sunucudan yanıt alamaz ve bağlantı kuramaz. Dinleme portu teknik olarak açık olsa da, pratik olarak işlevsiz hale gelir.

Sorunu Anlamak

Sorunun temelinde, iptables'ın kuralları yukarıdan aşağıya doğru işlemesi ve DROP kuralının ESTABLISHED durumundaki yanıt paketlerini de kapsıyor olması yatar. Dinleme portunun doğru çalışması için, gelen bağlantılara ait ESTABLISHED durumundaki giden yanıt paketlerine izin verilmesi gerekmektedir. Bu, DROP kuralından önce bu tür paketlere izin veren bir kuralın eklenmesiyle çözülebilir.

Çözüm: Durum Takibi ile Akıllı Engelleme

Dinleme portlarının çalışmasını sağlarken belirli bir kullanıcının giden trafiğini engellemek için, iptables'ın durum takibi (connection tracking) özelliğini kullanmamız gerekir. Bu yaklaşım, mevcut ve ilişkili bağlantıların devam etmesine izin verirken, kullanıcının yeni giden bağlantılar başlatmasını engeller.

Mevcut Bağlantılara İzin Verme

Anahtar nokta, belirli bir kullanıcı tarafından zaten kurulmuş veya kabul edilmiş bağlantılara ait giden trafiğe izin vermektir. Bu, ESTABLISHED ve RELATED durumlarını kullanarak yapılır:

iptables -A OUTPUT -m owner --uid-owner  -m state --state ESTABLISHED,RELATED -j ACCEPT


Bu kural, 'ye sahip kullanıcının başlattığı ve ESTABLISHED (kurulmuş) veya RELATED (ilişkili) durumda olan tüm giden paketlere izin verir. Bu kuralın, yeni giden bağlantıları engelleyecek DROP kuralından önce gelmesi çok önemlidir. iptables kuralları sıralı olarak işlendiği için, önce izin veren kuralın eşleşmesi gerekir.

Yeni Giden Bağlantıları Engelleme

Yukarıdaki ACCEPT kuralından sonra, aynı kullanıcının yeni giden bağlantılarını engelleyen bir kural eklenir:

iptables -A OUTPUT -m owner --uid-owner  -j DROP


Bu kural, ESTABLISHED veya RELATED durumunda olmayan (yani NEW durumunda olan) tüm giden paketleri düşürecektir. Bu sayede, kullanıcı dışarıya yeni bağlantılar başlatamaz.

Yerel (Loopback) Trafiğe İzin Verme

Birçok uygulama, yerel makine içindeki diğer servislerle iletişim kurmak için loopback arayüzünü (lo) kullanır. Bu trafiğin engellenmemesi genellikle istenir. Bu, genel bir kural olarak OUTPUT zincirinin başında eklenebilir:

iptables -A OUTPUT -o lo -j ACCEPT


Bu kuralı, kullanıcıya özel engelleme kurallarından önce eklemek, yerel iletişimin kesintiye uğramamasını sağlar.

DNS Çözümlemesine İzin Verme (İsteğe Bağlı)

Bazı durumlarda, kısıtlı kullanıcının DNS sorguları yapmasına izin vermek isteyebilirsiniz. Örneğin, bir web sunucusu bazen harici bir API'ye bağlanmak için DNS çözümlemesi yapması gerekebilir. DNS genellikle UDP port 53 üzerinden çalışır:

iptables -A OUTPUT -m owner --uid-owner  -p udp --dport 53 -j ACCEPT


Bu kuralı da DROP kuralından önce, ESTABLISHED,RELATED kuralından sonra ekleyebilirsiniz. Belirli DNS sunucularına (-d ) izin vermek daha güvenli bir yaklaşımdır.

Adım Adım Uygulama ve Örnek Senaryo

Şimdi, webuser adında bir kullanıcının giden trafiğini kısıtlarken, bu kullanıcının dinlediği portlara gelen bağlantıların sorunsuz çalışmasını sağlayan kuralları adım adım uygulayalım.

Kullanıcı ID'sini Bulma

İlk olarak, hedef kullanıcının UID'sini (User ID) bulmamız gerekiyor.

id -u webuser
# Örnek çıktı: 1001


Bu örnekte, webuser'ın UID'si 1001 olsun.

Örnek Kullanıcı: webuser İçin iptables Kuralları

Aşağıdaki komutları root olarak veya sudo ile çalıştırın. Kuralları uygulamadan önce mevcut iptables kurallarınızı yedeklemeniz iyi bir uygulamadır: iptables-save > /root/iptables.bak.

1. Yerel (Loopback) Trafiğe İzin Ver:

sudo iptables -A OUTPUT -o lo -j ACCEPT


Bu kural, OUTPUT zincirinin başına eklenecektir (veya mevcut kurallarınızın uygun bir yerine).

2. Mevcut ve İlişkili Bağlantılara İzin Ver:

sudo iptables -A OUTPUT -m owner --uid-owner $(id -u webuser) -m state --state ESTABLISHED,RELATED -j ACCEPT


Bu kural, webuser tarafından başlatılan veya kabul edilen mevcut bağlantıların devam etmesine izin verir. Bu, web sunucusunun gelen bağlantılara yanıt verebilmesini sağlar.

3. DNS Çözümlemesine İzin Ver (İsteğe Bağlı):
Eğer webuser'ın DNS sorguları yapması gerekiyorsa (örneğin, bir API'ye bağlanmadan önce alan adını çözümlemek için):

sudo iptables -A OUTPUT -m owner --uid-owner $(id -u webuser) -p udp --dport 53 -j ACCEPT
    # Veya belirli DNS sunucularına izin vermek için:
    # sudo iptables -A OUTPUT -m owner --uid-owner $(id -u webuser) -p udp --dport 53 -d 8.8.8.8 -j ACCEPT
    # sudo iptables -A OUTPUT -m owner --uid-owner $(id -u webuser) -p udp --dport 53 -d 8.8.4.4 -j ACCEPT

4. Yeni Giden Bağlantıları Engelle:

sudo iptables -A OUTPUT -m owner --uid-owner $(id -u webuser) -j DROP


Bu kural, webuser'ın yukarıdaki ACCEPT kurallarına uymayan tüm yeni giden bağlantılarını engelleyecektir.

Tüm Kurallar Bir Arada (Örnek Sıralama):

# Mevcut kuralları temizlemek isterseniz (DİKKATLİ OLUN!)
# sudo iptables -F OUTPUT

# 1. Yerel trafiğe izin ver
sudo iptables -A OUTPUT -o lo -j ACCEPT

# 2. 'webuser' için mevcut ve ilişkili bağlantılara izin ver
sudo iptables -A OUTPUT -m owner --uid-owner $(id -u webuser) -m state --state ESTABLISHED,RELATED -j ACCEPT

# 3. 'webuser' için DNS sorgularına izin ver (isteğe bağlı)
sudo iptables -A OUTPUT -m owner --uid-owner $(id -u webuser) -p udp --dport 53 -j ACCEPT

# 4. 'webuser' için diğer tüm giden bağlantıları engelle
sudo iptables -A OUTPUT -m owner --uid-owner $(id -u webuser) -j DROP

# Kuralları kontrol et
sudo iptables -L OUTPUT -v -n

Kuralları Kalıcı Hale Getirme

iptables kuralları varsayılan olarak yeniden başlatmada kaybolur. Kuralları kalıcı hale getirmek için:
* Debian/Ubuntu: sudo apt install iptables-persistent kurun ve sudo netfilter-persistent save komutunu çalıştırın.
* CentOS/RHEL: sudo yum install iptables-services kurun, sudo systemctl enable iptables ve sudo systemctl start iptables komutlarını çalıştırın, ardından sudo iptables-save > /etc/sysconfig/iptables komutuyla kaydedin.
* Diğer Yöntemler: firewalld (CentOS/RHEL için varsayılan), ufw (Ubuntu için basit arayüz) veya kendi başlangıç betiğinizi kullanabilirsiniz.

Test Etme

Kuralları uyguladıktan sonra, beklenen davranışı test etmek önemlidir:
1. Giden Bağlantı Denemesi (webuser olarak):
sudo su - webuser ile webuser kullanıcısına geçin.
ping google.com veya curl example.com gibi komutları çalıştırın. Bunların başarısız olması gerekir (timeout veya bağlantı reddedildi hatası).
2. Dinleme Portu Denemesi (root veya başka bir kullanıcı olarak):
webuser altında bir web sunucusu (örneğin, Python'ın basit HTTP sunucusu) çalıştırın:
sudo su - webuser -c "python3 -m http.server 8000"
Başka bir terminalden veya dışarıdan bu porta bağlanmaya çalışın:
curl http://localhost:8000 (yerel makineden) veya curl http://:8000 (uzak makineden).
Bağlantının başarılı olması ve web sayfasının görüntülenmesi gerekir.

Dikkat Edilmesi Gerekenler ve İleri Seviye Konular

iptables kurallarını uygularken ve yönetirken bazı önemli noktaları göz önünde bulundurmak, beklenmedik sorunları önlemenize ve güvenliği daha da artırmanıza yardımcı olacaktır.

Kural Sırası

iptables kuralları, zincir içinde yukarıdan aşağıya doğru sırayla işlenir. Bir paket bir kurala eşleştiğinde, o kuralın hedefi uygulanır ve genellikle zincirdeki sonraki kurallar atlanır (LOG hedefi hariç). Bu nedenle, ACCEPT kurallarının DROP kurallarından önce gelmesi hayati önem taşır. Yanlış sıralama, dinleme portlarının çalışmamasına veya istenmeyen trafiğin geçmesine neden olabilir.

Varsayılan Politikalar

OUTPUT zincirinin varsayılan politikası genellikle ACCEPT'tir. Eğer varsayılan politikayı DROP veya REJECT olarak ayarlarsanız (iptables -P OUTPUT DROP), o zaman kullanıcılara özel izin kurallarının yanı sıra, sistemin genel işleyişi için gerekli olan (örneğin, DNS, NTP, SSH bağlantı yanıtları) tüm giden trafiğe açıkça izin veren kurallar eklemeniz gerekir. Bu daha güvenli bir yaklaşımdır ancak yönetimi daha karmaşıktır. Bu makaledeki örnekler, OUTPUT zincirinin varsayılan politikasının ACCEPT olduğunu varsaymaktadır.

Diğer Zincirler ile Etkileşim

Bu makale OUTPUT zincirine odaklanmış olsa da, sistemin genel güvenliği için INPUT zincirini de yapılandırmanız gerekebilir. Örneğin, bir web sunucusunun 80 ve 443 portlarına gelen bağlantılara izin vermek için INPUT zincirinde kurallarınız olmalıdır:

iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


Bu kurallar, gelen bağlantılara izin verirken, OUTPUT zincirindeki kurallar bu gelen bağlantılara yanıt verilmesini sağlar.

Loglama (Günlük Kaydı)

Engellenen veya kabul edilen paketleri görmek için LOG hedefini kullanabilirsiniz. Bu, sorun giderme ve güvenlik denetimi için çok değerlidir. DROP kuralından hemen önce bir LOG kuralı ekleyerek, hangi giden bağlantıların engellendiğini görebilirsiniz:

iptables -A OUTPUT -m owner --uid-owner $(id -u webuser) -j LOG --log-prefix "IPTABLES_BLOCKED_OUTBOUND: "
iptables -A OUTPUT -m owner --uid-owner $(id -u webuser) -j DROP


Günlük kayıtlarını dmesg veya /var/log/syslog (veya /var/log/messages) dosyalarında bulabilirsiniz.

Güvenlik Açıkları ve Sınırlamalar

iptables -m owner modülü, yalnızca paketi başlatan sürecin UID'sini kontrol edebilir. Eğer bir kullanıcı, setuid bitine sahip bir program aracılığıyla başka bir kullanıcının (örneğin, root) yetkileriyle kod çalıştırabilirse, bu iptables kuralı atlatılabilir. Bu nedenle, sistem genelinde kullanıcı yetkilendirmelerine ve program izinlerine dikkat etmek çok önemlidir. iptables tek başına bir güvenlik çözümü değildir; diğer güvenlik önlemleriyle (SELinux/AppArmor, iyi parola politikaları, düzenli güncellemeler) birlikte kullanılmalıdır.

Sonuç

Belirli bir Linux kullanıcısının giden trafiğini iptables ile engellerken, dinleme portlarının işlevselliğini korumak, sistem güvenliğini artırmak ve servis sürekliliğini sağlamak için kritik bir beceridir. iptables'ın owner modülü ve durum takibi (connection tracking) özelliklerini birleştirerek, bu dengeyi başarıyla kurabiliriz. Uygulanan kurallar sayesinde, kısıtlı kullanıcılar yalnızca mevcut bağlantılarına yanıt verebilirken, yeni ve potansiyel olarak tehlikeli giden bağlantılar kurmaları engellenir. Bu yaklaşım, özellikle web sunucuları, veritabanı servisleri veya diğer kritik uygulamalar için güçlü bir güvenlik katmanı sağlar. Unutmayın ki güvenlik sürekli bir süreçtir ve iptables kurallarınızı düzenli olarak gözden geçirmek ve test etmek, sisteminizin güvende kalmasını sağlayacaktır.

Sık Sorulan Sorular (SSS)

Bu kurallar sistemin diğer kullanıcılarını etkiler mi?

Hayır, --uid-owner parametresi sayesinde bu kurallar sadece belirtilen kullanıcı kimliğine sahip süreçler için geçerlidir. Sistemdeki diğer kullanıcıların veya root kullanıcısının giden trafiği etkilenmez.

Dinleme portu olan bir servis başlatamazsam veya bağlantı kuramazsam ne yapmalıyım?

Eğer servisiniz dinleme portunda başlatılamıyorsa, bu genellikle INPUT zincirindeki bir kuraldan veya servis yapılandırmasından kaynaklanır, OUTPUT zinciriyle doğrudan ilgili değildir. INPUT zincirinizin ilgili porta gelen bağlantılara izin verdiğinden emin olun. Eğer servis başlatılabiliyor ancak dışarıdan bağlantı kurulamıyorsa, yine INPUT zincirini veya ağ yapılandırmanızı kontrol edin.

Kuralları nasıl temizlerim veya devre dışı bırakırım?

Tüm OUTPUT zinciri kurallarını temizlemek için:

sudo iptables -F OUTPUT


Belirli bir kuralı silmek için, önce kuralın numarasını bulmanız gerekir:

sudo iptables -L OUTPUT --line-numbers


Ardından, silmek istediğiniz kuralın numarasını kullanarak silebilirsiniz:

sudo iptables -D OUTPUT 


Örneğin, 5. kuralı silmek için: sudo iptables -D OUTPUT 5.

Neden REJECT yerine DROP kullanmalıyım?

Güvenlik açısından DROP genellikle REJECT'e tercih edilir. DROP paketi sessizce düşürür ve gönderene hiçbir yanıt göndermez. Bu, bir saldırganın sisteminiz hakkında bilgi toplamasını (örneğin, bir portun açık olup olmadığını veya güvenlik duvarının varlığını anlamasını) zorlaştırır. REJECT ise bir hata mesajı göndererek, engellemenin varlığını ve nedenini (örneğin, bağlantının reddedildiğini) açığa çıkarır.

Belirli bir IP adresine veya porta izin vermek istersem ne yapmalıyım?

Eğer kısıtlı kullanıcının belirli bir IP adresine veya belirli bir porta (örneğin, bir veritabanı sunucusuna) bağlanmasına izin vermek istiyorsanız, DROP kuralından önce bir ACCEPT kuralı eklemeniz gerekir:

# Örnek: 'webuser'ın 192.168.1.100 adresindeki 3306 (MySQL) portuna bağlanmasına izin ver
sudo iptables -A OUTPUT -m owner --uid-owner $(id -u webuser) -d 192.168.1.100 -p tcp --dport 3306 -j ACCEPT

# Ardından genel engelleme kuralı
sudo iptables -A OUTPUT -m owner --uid-owner $(id -u webuser) -j DROP


Bu kuralı, ESTABLISHED,RELATED kuralından sonra ve genel DROP kuralından önce eklemelisiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version