iptables

En Çok Kullanılan 17 Linux IPTables Kuralı

İlk sefer bakanlar için veya yeni yeni kurcalamaya başlayanlar için IPTables kuralları karışık gelebilir.

Bu makalede, genellikle ihtiyaç duyacağınız 17 pratik IPTables kuralını sizlerle paylaşıyorum. Sizde rahatlıkla kopyala/yapıştır yaparak faydalanabilirsiniz.

Aşağıdaki örneklerin kimisi temsili değerler göz önüne alınarak hazırlanmıştır. Siz kendi ihtiyaçlarınız doğrultusunda düzenleyiniz lütfen.

1. IPTables Kurallarını Silme

Yeni kurallarınızı oluşturmadan önce bütün IPTables kurallarınızı temizlemek en doğrusu olacaktır. Bu sayede çakışma vs. olmayacaktır. Bunun için flush komutunu kullanacağız.

iptables -F

veya

iptables --flush

2. Varsayılan Zincir Politikasını Ayarlama

Aslında bu başlık biraz google translate oldu. Orjinali Default Chain Policy.

Varsayılan zincir politikası ACCEPT‘tir.

iptables -P INPUT DROP
 iptables -P FORWARD DROP
 iptables -P OUTPUT DROP

INPUT ve OUTPUT‘un ikisini de DROP olarak ayarlarsanız her güvenlik duvarı kuralında ikisini de tanımlamak zorundasınız. Gelen ve giden bağlantılar…

Aşağıdaki örneklerin hepsinde INPUT ve OUTPUT ayrı ayrı tanımlanmıştır.

3. IP Adresi Engelleme

Belirli bir IP adresinin sunucunuza erişmesini istemiyorsanız onu engelleyebilirsiniz. Sunucunuzdaki hiç bir web adresine erişimi kalmayacaktır bu sayede. “x.x.x.x” kısmını düzenlemelisiniz.

BLOCK_THIS_IP="x.x.x.x"
 iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP

Log dosyalarınızda şüpheli eylemler gerçekleştiren IP adreslerini engellemek isteyebilirsiniz. İsterseniz kalıcı isterseniz geçici..

Ayrıca bu IP adresi için eth0 üzerindeki TCP trafiğini de engelleyebilirsiniz.

iptables -A INPUT -i eth0 -s "$BLOCK_THIS_IP" -j DROP
 iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

4. Bütün SSH Bağlantılarına İzin Ver

Aşağıdaki kural SSH bağlantısı kurmak isteyen eth0’dan herkesi kabul edecektir. Aslında 22 portunu açıyoruz.

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

5. SSH’a Sadece Kısmi Bir Ağdan Erişime İzin Verme

Aşağıdaki komut sadece 192.168.100.X IP’li kullanıcılara SSH erişimini açacaktır.

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

6. Gelen HTTP ve HTTPS Sorgularına İzin Ver

Aşağıdaki komut web trafiğine izin verecektir. Yani 80 portunu açacak. HTTP

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Aşağıdaki komut sayesinde ise 443 portu açılacak ve bu da HTTPS.

iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

7. MultiPort’u Kullanarak Birden Fazla Kuralı Birleştirme

Her port için ayrı ayrı kural yazmaktansa bütün portları MultiPort kullanarak tek kural ile yazabiliriz. Aşağıdaki kural ile HTTP, HTTPS ve SSH’a erişime izin veriyoruz.

iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT

8. Giden SSH’a İzin Verme

Sunucunuzdan başka bir sunucuya bağlanmanıza olanak sağlar.

iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Gelen SSH’dan farklı olduğunu incelerseniz görebilirsiniz.

9. Sadece Kısmi Bir Ağa (Giden)SSH İle Bağlanma

Aşağıdaki kural ile sunucunuzdan 192.168.100.0/24 ağındaki bir IP adresine bağlantı sağlayabilirsiniz.

iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

10. Giden HTTPS’ye İzin Verme

Sunucunuzdan https adreslerine istek yapabilmenizi sağlar. wget vs. ile dosya indirmek istediğinizde oldukça işinize yarayacaktır.

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

Not: HTTP için 443 portunu 80 olarak güncelleyin.

11. Sunucunuza Ping Yapılmasına İzin Verme

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
 iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

12. Sunucunuzda Ping Yapabilme

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
 iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

13. MySQL Sunucunuza Kısmi Bir Ağdan Erişime İzin Verme

MySQL kullanıyoruz sunucu dışından direk erişime izin vermek pek de mantıklı bir hamle değil.

Fakat geliştiriciler laptoplarından veya bilgisayarlarından kullandıkları MySQL yazılımları bağlanmak isteyebilirler. 192.168.100.0/24 ağına MySQL’i açalım.

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

14. Sendmail ve Postfix’e İzin Verme

Sendmail veya Postfix’e smtp portunu açarak izin veriyoruz.

iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

15. IMAP ve IMAP2’ye İzin Verme

iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 143 -m state --state ESTABLISHED -j ACCEPT

IMAPS’e izin vermek içinse:

iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT

16. POP3 ve POP3S’e İzin Verme

iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT

POP3S’e izin vermek içinse

iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT

17. DoS Ataklarını Engelleme

Aşağıdaki IPTables kuralı web sunucunuzu DoS ataklarını kısmen koruyacaktır.

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

Yukarıdaki örnekte:

-m limit: IPTables’ın limit eklentisini kullanır
–limit 25/minute: Dakikada 25 bağlantı kabul edileceğini belirtir
–limit-burst 100: 100 bağlantı sayısına ulaşıldığında limit/minute kuralını çalıştırır

Umarım işinize yarar, hepinize iyi çalışmalar dilerim,

Post Author: Oral ÜNAL

Web geliştirmeyi başta meslek olarak hayal eden fakat daha sonra bir hobi haline getiren birisiyim işte.

En Çok Kullanılan 17 Linux IPTables Kuralı” için bir yorum

  • Mert Atakan Cenikut

    (05 Haziran 2016 - 01:45)

    Aslında çoğu insan hep donanımsal firewall gerektiğini düşünüyor, Bizim sitemizde 1Gbps port var hocam. + 256GB ram bu ikisini kullanarak iptables ile yüksek korumalar elde edebiliyoruz. Tavsiye ederim herkese.

Yorum yazma sırası sizde!