İ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.
1 |
iptables -F |
veya
1 |
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.
1 2 3 |
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.
1 2 |
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.
1 2 |
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.
1 2 |
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.
1 2 |
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
1 2 |
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.
1 2 |
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.
1 2 |
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.
1 2 |
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.
1 2 |
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.
1 2 |
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
1 2 |
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
1 2 |
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.
1 2 |
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.
1 2 |
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
1 2 |
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:
1 2 |
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
1 2 |
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
1 2 |
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.
1 |
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,
Yorumlar
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.
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.