iptables
IPtables, birçok farklı Linux Dağıtımında bulunan güvenlik duvarı servisidir. İlk başta düzenlemek, ele almak zor gibi görünse de, bu yazı size kullanımının ne kadar kolay olduğunu ve güvenlik duvarınızla ne kadar çabuk dolaştığını gösterecektir.
iptables (CHAINS) ZİNCİRLER
Iptables, her biri net filtrenin spesifik fonksiyonlarıyla ilişkili ve her tablonun fonksiyonelliğini belirten her biri birkaç “zincire” ayrılan 5 tablodur.
- INPUT – Gelen bağlantı isteklerini kontrol etmek için kullanılır.
- FORWARD – Yerel olarak teslim edilmeyen ancak derhal gönderilen bağlantıların davranışını kontrol etmek için kullanılır.
- OUTPUT – Giden bağlantı isteklerini kontrol etmek için kullanılır.
- YAYINLAMA : Bu zincir, herhangi bir paket göndermeden önce ( PRE ) yönlendirme ile ilgili kararları vermek için kullanılır . Örnek olarak, 80 numaralı bağlantı noktasındaki sunucuya henüz ulaşmış herhangi bir trafiği 8080 numaralı bağlantı noktasına yönlendiriyoruz:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
- FORWARD : Adından da anlaşılacağı gibi, Tablo
FORWARD
zinciriFILTER
paketleri bir kaynaktan bir hedefe iletmek için kullanılır. Burada, 80 nolu bağlantı noktasında , ana bilgisayara yönelik olan arabirimde alınanFORWARD
herhangi birTCP
trafiğin kabul edilip iletileceği bir zincir örneği verilmiştir :eth0
192.168.0.4
192.168.0.4
iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.0.4 -j ACCEPT
Nat’ın PREROUTING özelliğini sadece paketlerin hedef adresini değiştirmek için ve FORWARD’ın yalnızca filtreleri filtrelemek (paketleri bırakmak / kabul etmek) için kullanmanız gerekir.
iptables İşlemleri
- ACCEPT : Bağlantıya izin ver
- DROP : Bağlantıyı kes (sanki hiçbir bağlantı yapılmadı; sistemin ağda görünmemek istersen kullanışlıdır)
- Reddet : Bağlantıya izin verme, ancak bir hata geri gönder.
iptables Varsayılan Politika
Her linux sisteminde, zincir(chain), varsayılan politikanın ne olduğunu bilmek için, varsayılan ACTION(işlem) ile yapılandırılmıştır.
sudo iptables -L | grep policy Chain INPUT (policy ACCEPT) Chain FORWARD (policy ACCEPT) Chain OUTPUT (policy ACCEPT)
Varsayılan iptables İlkesi Nasıl Değiştirilir
Sysadmins varsayılan ilke tarafından değiştirebilir
iptables --policy <CHAIN> <ACTION>
Örneğin
iptables --policy INPUT DROP iptables --policy OUTPUT ACCEPT iptables --policy FORWARD DROP
iptables ana komut seçenekleri
iptables kuralları ile tanışın
iptables -h
, buradan başlamak iyi bir yer, bazı ipuçları:iptables -A
Sonuna kuralı ekleriptables -I
kuralı varsayılan olarak en üste ekleriptables -D
Bir kuralı silecek (bir kural numarası belirtin veya bu seçeneğin çalışması için kaldırmak istediğiniz tüm kuralı belirtin)iptables -C
bir kuralın varlığını kontrol edecekiptables -F
Zincirdeki veya tüm zincirlerdeki tüm kuralları sil
En yaygın IPtables kuralları
-
- iptables: Tüm Trafiklerin Engellenmesi
iptables -F iptables -A INPUT -j REJECT iptables -A OUTPUT -j REJECT iptables -A FORWARD -j REJECT
- iptables Sadece gelen trafiği engelleme
iptables -F INPUT iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -j REJECT
- iptables sadece giden trafiği engelle
iptables -F OUTPUT iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -j REJECT
- iptables: Belirli gelen bağlantı noktası veya hizmeti engellemeBu işlem http hizmeti tarafından gelen ağ trafiğini engelleyecektir.
iptables -A INPUT -p tcp --dport 80 -j REJECT
veya
iptables -A INPUT -p tcp --dport www -j REJECT
http için yalnızca yerel arabirimlere izin vermek için
iptables -A INPUT -p tcp --dport 80 -j REJECT
- iptables: Belirli bir host nasıl engellenir
- Bu işlem, ana bilgisayarın tüm erişimini engeller
iptables -A INPUT -s <remote_ip> -j REJECT
- iptables: Belirli ana bilgisayarlara gidenlerin engellenmesi
iptables -A INPUT -s <remote_ip> -j REJECT
- iptables: Sadece belirli mac adreslerine erişime izin verme
iptables -A INPUT -m mac --mac-source <mac_address> -j ACCEPT iptables -A INPUT -j REJECT
- iptables: Sadece SSH’ye nasıl izin verilir?
iptables -A INPUT -j REJECT iptables -A INPUT -p tcp --dport ssh -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -j REJECT
- iptables: örneğin tüm telnet bağlantısı nasıl engellenir
iptables -A OUTPUT -p tcp --dport telnet -j REJECT
- iptables: ping nasıl engellenir
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
veya
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
- iptables: Bağlantı beklemesini yapılandırma
- IPtable’ları, 22 numaralı bağlantı noktasındaki (SSH) aynı IP’den yeni bağlantılar arasında 15 saniye bekletir:
iptables -A INPUT -p tcp -i eth0 -m state --state NEW --dport 22 -m recent --update --seconds 15 -j DROP iptables -A INPUT -p tcp -i eth0 -m state --state NEW --dport 22 -m recent --set -j ACCEPT
- iptables: Smurf saldırıları nasıl engellenir
iptables -A INPUT -p icmp -m icmp --icmp-type address-mask-request -j DROP iptables -A INPUT -p icmp -m icmp --icmp-type timestamp-request -j DROP iptables -A INPUT -p icmp -m icmp -j DROP
- iptables: Smurf saldırıları önlemek için aşırı RST paketleri nasıl düşürülür
iptables -A INPUT -p tcp -m tcp --tcp-flags RST RST -m limit --limit 2/second --limit-burst 2 -j ACCEPT
- iptables: Port Yönlendirme nasıl yapılır
- Bu kurallar, 80 numaralı bağlantı noktasından gelen tüm istekleri 8080 numaralı bağlantı noktasına iletir.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Bu kurallar, 80 numaralı bağlantı noktasında gelen tüm istekleri yerel ana bilgisayardan 8080 numaralı bağlantı noktalarına iletir
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
- iptables Kurallar Nasıl Listelenir?
iptables -L iptables -t nat --line-numbers -n -L
- iptables: iptables’ta yapılan kural değişiklikleri nasıl kaydedilir
Ubuntu: sudo /sbin/iptables-save RedHat / Centos: /sbin/service iptables save Others: /etc/init.d/iptables save Generic: iptables-save > /etc/sysconfig/iptables
- İptables kurallarını dosyadan geri yükleme
- iptables: Tüm Trafiklerin Engellenmesi
sudo iptables-save | sudo tee /etc/iptables.conf sudo iptables-restore < /etc/iptables.conf
- Tüm iptables kurallarını temizleme
- Bu komut NAT kurallarını silmez
iptables -F
NAT kuralı varsa, onu temizleyin.
iptables -t nat -F
- iptables: PREROUTING NAT kuralını silme
- İlk önce hangi hattın olduğunu öğrenin
iptables -t nat -L --line-numbers
iptables -t nat -L --line-numbers Chain PREROUTING (policy ACCEPT) num target prot opt source destination 1 REDIRECT tcp -- anywhere anywhere tcp dpt:8082 redir ports 8083 2 REDIRECT tcp -- anywhere anywhere tcp dpt:8084 redir ports 8083 Chain INPUT (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination 1 REDIRECT tcp -- anywhere localhost tcp dpt:8084 redir ports 8083 2 REDIRECT tcp -- anywhere localhost tcp dpt:8082 redir ports 8083
Ardından kural numarasını silin
iptables -t nat -D PREROUTING 2
- iptables : iptables günlüğü nasıl yapılır, sırayla günlüğe giren ve açılan yeni bir kural zinciri oluşturun:
# Create a new chain called LOGGING iptables -N LOGGING #All the remaining incoming packets will jump to the LOGGING chain iptables -A INPUT -j LOGGING #Log the incoming packets to syslog (/var/log/messages) iptables -A LOGGING -m limit --limit 3/min -j LOG --log-prefix "iptables drop packets" --log-level 4 #Finally, drop all the packets that came to the LOGGING chain iptables -A LOGGING -j DROP
Tüm Bırakılan Giden Paketleri Günlüğe Kaydet
iptables -N LOGGING iptables -A OUTPUT -j LOGGING iptables -A LOGGING -m limit --limit 3/min -j LOG --log-prefix "iptables drop packets " --log-level 4 iptables -A LOGGING -j DROP
- iptables: DDoS Kuralı iptables’ta nasıl oluşturulur?
# Reject spoofed packets iptables -A INPUT -s 10.0.0.0/8 -j DROP iptables -A INPUT -s 169.254.0.0/16 -j DROP iptables -A INPUT -s 172.16.0.0/12 -j DROP iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP iptables -A INPUT -s 224.0.0.0/4 -j DROP iptables -A INPUT -d 224.0.0.0/4 -j DROP iptables -A INPUT -s 240.0.0.0/5 -j DROP iptables -A INPUT -d 240.0.0.0/5 -j DROP iptables -A INPUT -s 0.0.0.0/8 -j DROP iptables -A INPUT -d 0.0.0.0/8 -j DROP iptables -A INPUT -d 239.255.255.0/24 -j DROP iptables -A INPUT -d 255.255.255.255 -j DROP # Stop smurf attacks iptables -A INPUT -p icmp -m icmp --icmp-type address-mask-request -j DROP iptables -A INPUT -p icmp -m icmp --icmp-type timestamp-request -j DROP iptables -A INPUT -p icmp -m icmp -j DROP # Drop all invalid packets iptables -A INPUT -m state --state INVALID -j DROP iptables -A FORWARD -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state INVALID -j DROP # Drop excessive RST packets to avoid smurf attacks iptables -A INPUT -p tcp -m tcp --tcp-flags RST RST -m limit --limit 2/second --limit-burst 2 -j ACCEPT
- iptables Port taramaları nasıl engellenir
# Anyone who tried to portscan us is locked out for an entire day. iptables -A INPUT -m recent --name portscan --rcheck --seconds 86400 -j DROP iptables -A FORWARD -m recent --name portscan --rcheck --seconds 86400 -j DROP # Once the day has passed, remove them from the portscan list iptables -A INPUT -m recent --name portscan --remove iptables -A FORWARD -m recent --name portscan --remove # These rules add scanners to the portscan list, and log the attempt. iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:" iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:" iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP
Kaynak: 8gwifi.org