Gelen Paketler = INPUT
Giden Paketler = OUTPUT
DROP = (kesmek)
ACCEPT = (izin vermek )
REJECT = (geri bildirmek)
LOG = (loglamak)
Gelen Tüm Portları Kapatmak için ;
iptables -A INPUT -j DROP
Tüm Yazılan Kuralları Silmek İçin bu Komutu girebilirsiniz
iptables -F
Yazılan Tüm Kuralları Listeler
iptables -L
Bir ip'ye gelen tüm portları yasaklamak için;
iptables -A INPUT -j DROP -s 192.168.250.250
Bir ip'ye gelen spesifik bir portu yasaklamak için ;
iptables -A INPUT -j DROP -s 192.168.1.10 -p tcp --dport 21
Bir Ip için dışarı gidişte bir portu yasaklamak için ;
iptables -A OUTPUT -j DROP -d 192.168.1.20 -p tcp --sport 80
TCP 80 portunu içerden dışarı çıkışını yasaklamak için ; internet çıkışını
Bloklamış oluruz.
iptables -A OUTPUT -j DROP -p tcp --dport 80
Dışardan 80 port isteklerini bloklar. İnternet yine kesilir :)
iptables -A INPUT -j DROP -p tcp --sport 80
Tüm portları yasak- giriş-çıkış (başlangıçta tüm policyler accept durumdadır,
bu kurallarla drop yaptık. artık izin kuralları yazıcam)
iptables -P INPUT DROP
iptables -P OUTPUT DROP
80 portundan geliş için izin veren kural ;
iptables -A INPUT -j ACCEPT -p udp --dport 53
80 portundan gidiş için izin veren kural ;
iptables -A INPUT -j ACCEPT -p tcp --sport 80
80 portunun çıkışını sağlamak için ;
iptables -A OUTPUT -j ACCEPT -p tcp --dport 80
iptables -A INPUT -j ACCEPT -p tcp --sport 80
Kuralları numaralı şekilde listeler ;
iptables -L --line-numbers
Bir kuralı silmek için ;
iptables -D INPUT 1
iptables -D OUTPUT 3
Kuralların tx-rx paket trafiğini görmek için ;
iptables -L -v
Kuralların sırasını değiştirmek için ; (yazdığımız kuralı 1. sıraya atar)
iptables -I INPUT 1 -j ACCEPT -s 192.168.250.200 -p tcp --dport 21
Yazdığımız kurala birden fazla port eklemek için; (-m multiport)
iptables -A INPUT -j ACCEPT -m multiport -p tcp --sport 80,81,82
Herşeyin kapalı internete izin verme kuralı ;
iptables -A OUTPUT -j ACCEPT -p tcp --dport 80
iptables -A OUTPUT -j ACCEPT -p udp --dport 53
iptables -A INPUT -j ACCEPT -p udp --sport 53
iptables -A INPUT -j ACCEPT -p tcp --sport 80
NAT İŞLEMLERİ İÇİN
PREROUTING = (içeri geliş)
POSTROUTING = (dışarı çıkış)
FORWARD = (yönlendirme, filtreleme)
defaultta FORWARD işlemi disable'dır
/etc/sysctl.conf dosyası içerisinde
net.ipv4.ip_forward = 1 yapılır
network restart edilir
Nat filter policyleri görmek için ;
iptables -t nat -L
Birebir Nat Yazma
iptables -t nat -A PREROUTING -j DNAT -d 192.168.250.200 --to 10.1.1.5
iptables -t nat -A POSTROUTING -j SNAT -s 10.1.1.5 --to-source 192.168.250.200
80 portunun yönlendirilmesi ;
iptables -t nat -A PREROUTING -j DNAT -d 192.168.250.202 -p tcp --dport 80 --to 10.1.1.2:80
ptables -t nat -A PREROUTING -j SNAT -s 10.1.1.2 -p tcp --sport 80 --to-source 192.168.250.202
Bağlantıya kontrollü olarak izin veriyoruz.
SYN ACK FIN
0 0 1
iptables -A INPUT -j ACCEPT -m state --state NEW -p tcp --dport 80
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED -p tcp --sport 80
iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED -p tcp --dport 80
GELEN TÜM PORTLARA KARŞILIK TEK BİR GİDEN KURALI YAZDIK. KONTROLLÜ ERİŞİM VERMİŞ OLDUK.
(SYNFLOOD, FINFOOD ATAKLARI ENGELLEMEK İÇİN)
iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED -p tcp --dport 80
iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED -p tcp --dport 443
iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED -p tcp --dport 21
iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED -p tcp --dport 25
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED
Passive ftp için;
iptables -A INPUT -j ACCEPT -p tcp --dport 21 -m state --state NEW
iptables -A OUTPUT -j ACCEPT -p tcp --sport 21 -m state --state ESTABLISHED
iptables -A INPUT -j ACCEPT -p tcp --dport 1024:65535 -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -j ACCEPT -p tcp --sport 1024:65535 -m state --state ESTABLISHED,RELATED
iptables -A INPUT -j ACCEPT -p tcp --dport 21 -m state --state NEW,ESTABLISHED
Belli bir interface'e kural yazmak için;
iptables -A INPUT -j DROP -i eth1 -p icmp (gelen kurallarda -i kullanılır)
iptables -A OUTPUT -j DROP -o ethO -p icmp (giden kurallarda -o kullanılır)
İNTERNETE ÇIKARMAK İÇİN (eth0'ı maskeledik)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -j ACCEPT -p tcp --dport 80
iptables -A FORWARD -j ACCEPT -p tcp --sport 80
iptables -A FORWARD -j ACCEPT -p udp --sport 53
iptables -A FORWARD -j ACCEPT -p udp --dport 53
Bire Bir Nat ;
iptables -t nat -A PREROUTING -j DNAT -d 192.168.250.200 --to 10.1.1.5
iptables -t nat -A POSTROUTING -j SNAT -s 10.1.1.5 --to-source 192.168.250.200
iptables -A FORWARD -j ACCEPT -d 10.1.1.5
iptables -A FORWARD -j ACCEPT -s 10.1.1.5
iptables -A FORWARD -j ACCEPT -d 10.1.1.5 -m state --state NEW,ESTABLISHED
iptables -A FORWARD -j ACCEPT -s 10.1.1.5 -m state --state ESTABLISHED
Mac ADresi Bazlı Yasak Kuralı Girmek için;
iptables -A INPUT -j DROP -m mac --mac-source 00:99:88:99:88:77
BİRDEN FAZLA PORTU YASAK-İZİN VERMEK İÇİN ;
iptables -A INPUT -j DROP -m multiport -p tcp --dport 80,443,25,110
iptables -A OUTPUT -j DROP -m multiport -p tcp --sport 80,443,25,110
250 SUBNETİNDEN GELEN 80 PORT İSTEĞİNİ REJECT EDER ;
iptables -A INPUT -j REJECT --reject-with tcp-reset -s 192.168.250.0/24 -p tcp --dport 80
ICMP İSTEKLERİNİ host-unreachable MESAJIYLA REJECT EDER ;
iptables -A INPUT -j REJECT --reject-with icmp-host-unreachable
GELEN PAKETLERDE BOZUKLUK VARSA DROP EDER ;
iptables -I INPUT 1 -j DROP -m state --state INVALID
Gelen Tüm İstekleri Log'lamak için ; (var/log/messages)
iptables -I INPUT 1 -j LOG
YALNIZCA WEB İSTEKLERİNİ LOGLAYACAK, VE LOGUN BAŞINA WEB SERVER EKLEYECEK
iptables -A INPUT -j LOG -p tcp --dport 80 --log-prefix "web server"
SYSLOG İÇERİSİNE AŞAĞIDAKİ SATIRI EKLEYEREK İPTABLES LOGLARINI /VAR/LOG/FİREWALL.LOG'A ATICAK
kern.warn /var/log/firewall.log
SON OLARAK YAZDIĞIMIZ KURALLARI KALICI OLARAK KAYDETMEK için ;
iptables-save > /etc/sysconfig/iptables
Yorumlar
Yorum Gönder