Linux Güvenlik Duvarı (iptables) Temel Kullanımı ve Güvenlik İpuçları
Linux sistemlerde güvenlik, bir dizi farklı katmanın bir araya gelmesiyle sağlanır ve bu katmanlardan biri de güvenlik duvarıdır. iptables, Linux çekirdeğinin netfilter çerçevesi ile etkileşim kuran güçlü ve esnek bir kullanıcı alanı programıdır. Bu araç, gelen ve giden ağ paketlerini yönetmek için kurallar tanımlamanıza olanak tanır.
iptables Nedir?
, ağ trafiğini filtrelemek için kullanılan bir komut satırı aracıdır. Paket filtreleme kurallarını "zincirler" halinde düzenler ve bu zincirler "tablolar" içinde gruplandırılır. En yaygın kullanılan tablolar şunlardır:
Temel iptables Komutları
Mevcut Kuralları Listeleme:
Bu komut, tüm mevcut kuralları sayısal formatta ve detaylı (verbose) bir şekilde listeler.
Tüm Kuralları Temizleme:
`F` (Flush) tüm zincirleri temizler, `X` (Delete) kullanıcı tanımlı zincirleri siler, `Z` (Zero) sayaçları sıfırlar. Genellikle yeni bir yapılandırmaya başlamadan önce kullanılır.
Varsayılan Politikaları Belirleme:
Bu komutlar, belirtilen zincirler için varsayılan politikayı ayarlar. Yukarıdaki örnek, gelen ve iletilen tüm trafiği engellerken, giden trafiğe izin verir. Giden trafiği de kısıtlamak daha güvenli olabilir ancak dikkatli yapılandırılmalıdır.
Kural Ekleme Örnekleri
Belirli Bir Porta İzin Verme:
SSH (Port 22) bağlantılarına izin vermek için:
Bu kural, TCP protokolü üzerinden gelen 22 numaralı porta yapılan tüm bağlantılara izin verir. `-A` (Append) kuralı zincirin sonuna ekler.
Giden Bağlantılara İzin Verme (DNS Örneği):
Giden DNS sorgularına (UDP, Port 53) izin vermek için:
Belirli IP Adreslerinden Gelen Bağlantılara İzin Verme:
Örneğin, 192.168.1.100 adresinden gelen tüm trafiğe izin vermek için:
`-s` (Source) kaynak IP adresini belirtir.
Loopback Arayüzüne İzin Verme:
Yerel sistem içi iletişimin düzgün çalışması için loopback arayüzüne izin verilmelidir:
`-i` (Input interface) ve `-o` (Output interface) giriş ve çıkış arayüzlerini belirtir.
Halihazırda Kurulmuş Bağlantılara İzin Verme:
Güvenlik duvarınız, başlattığınız bağlantıların yanıtlarına izin vermelidir:
Bu kural, zaten kurulmuş veya ilgili (örneğin, FTP veri bağlantıları) bağlantıların girişine izin verir. Bu kural genellikle diğer izin verme kurallarından önce gelmelidir.
Kuralları Kalıcı Hale Getirme
kuralları varsayılan olarak yeniden başlatmadan sonra kaybolur. Kuralları kalıcı hale getirmenin birkaç yolu vardır:
Debian/Ubuntu sistemlerde:
Bu paket, kuralları kaydetmenize ve sistem başlangıcında otomatik olarak yüklemenize olanak tanır. Kaydedilen kurallar genellikle `/etc/iptables/rules.v4` ve `/etc/iptables/rules.v6` dosyalarında bulunur.
CentOS/RHEL sistemlerde:
Bu komutlar,
servisini etkinleştirir ve mevcut kuralları belirtilen dosyaya kaydeder.
Önemli İpuçları:
ile ilgili daha fazla bilgi için resmi belgelere veya kapsamlı çevrimiçi kaynaklara başvurabilirsiniz.
Netfilter Projesi (iptables)
Linux sistemlerde güvenlik, bir dizi farklı katmanın bir araya gelmesiyle sağlanır ve bu katmanlardan biri de güvenlik duvarıdır. iptables, Linux çekirdeğinin netfilter çerçevesi ile etkileşim kuran güçlü ve esnek bir kullanıcı alanı programıdır. Bu araç, gelen ve giden ağ paketlerini yönetmek için kurallar tanımlamanıza olanak tanır.
iptables Nedir?
Kod:
iptables
- filter: Paket filtreleme için varsayılan tablodur (ACCEPT, DROP, REJECT).
- nat: Ağ adresi çevirisi (NAT) için kullanılır (örneğin, port yönlendirme).
- mangle: Paket başlıklarını değiştirmek için kullanılır.
- raw: Bağlantı izleme (connection tracking) işlemlerinden önce kullanılır.
Temel iptables Komutları
Mevcut Kuralları Listeleme:
Kod:
sudo iptables -L -n -v
Tüm Kuralları Temizleme:
Kod:
sudo iptables -F
sudo iptables -X
sudo iptables -Z
Varsayılan Politikaları Belirleme:
Kod:
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
Kural Ekleme Örnekleri
Belirli Bir Porta İzin Verme:
SSH (Port 22) bağlantılarına izin vermek için:
Kod:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Giden Bağlantılara İzin Verme (DNS Örneği):
Giden DNS sorgularına (UDP, Port 53) izin vermek için:
Kod:
sudo iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
Belirli IP Adreslerinden Gelen Bağlantılara İzin Verme:
Örneğin, 192.168.1.100 adresinden gelen tüm trafiğe izin vermek için:
Kod:
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
Loopback Arayüzüne İzin Verme:
Yerel sistem içi iletişimin düzgün çalışması için loopback arayüzüne izin verilmelidir:
Kod:
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
Halihazırda Kurulmuş Bağlantılara İzin Verme:
Güvenlik duvarınız, başlattığınız bağlantıların yanıtlarına izin vermelidir:
Kod:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Kuralları Kalıcı Hale Getirme
Kod:
iptables
Debian/Ubuntu sistemlerde:
Kod:
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
CentOS/RHEL sistemlerde:
Kod:
sudo yum install iptables-services
sudo systemctl enable iptables
sudo systemctl start iptables
sudo iptables-save > /etc/sysconfig/iptables
Kod:
iptables
Önemli İpuçları:
- Dikkatli Olun: Yanlış yapılandırılmış bir güvenlik duvarı, kendinizi sunucunuzdan kilitlemenize neden olabilir. Özellikle uzak sunucularda işlem yaparken dikkatli olun.
- Test Edin: Herhangi bir büyük değişiklik yapmadan önce, kuralları bir test ortamında denemeniz önerilir.
- En Az Yetki Prensibi: Yalnızca gerçekten ihtiyaç duyulan portlara ve protokollere izin verin.
- Günlükleri İzleyin: Güvenlik duvarı günlüklerini düzenli olarak kontrol ederek olası saldırı girişimlerini veya hatalı yapılandırmaları tespit edebilirsiniz.
Kod:
iptables
Netfilter Projesi (iptables)
Bu makale, iptables'ın temel kullanımını ve bazı yaygın senaryoları kapsar. Daha karmaşık senaryolar (örn. NAT, PREROUTING, POSTROUTING) ayrıntılı bir ağ bilgisi gerektirir.