Bloğa geri dön

Bir Iptables Güvenlik Duvarını Yapılandırma: Temel Kurallar ve Komutlar

Bir Iptables Güvenlik Duvarını Yapılandırma: Temel Kurallar ve Komutlar

Giriş

Iptables​ bir komut satırı ​güvenlik duvarı ​aracıdır. Bu, sisteminizde bir güvenlik duvarı yapılandırmanıza olanak tanıyan bir yazılım olduğu anlamına gelir. Genellikle varsayılan olarak ​Linux​ sistemlerinde bulunur. Bu kılavuzda, ​iptables​ güvenlik duvarı ile birlikte gelen bazı yaygın kuralları ve komutları ele alacağız. Sisteminizle bir bağlantı kurulmaya çalışıldığında, güvenlik duvarı bir sonraki adımın ne olması gerektiğini belirlemek için bu kurallara başvuracaktır.

Iptables Komutları

Bu kılavuz, en temel iptables komutlarından bazılarını tanıtacaktır. Kılavuzu takip etmek için iptables'ın ne olduğu ve nasıl çalıştığı konusunda temel bir anlayışa sahip olmanız gerekir. Bu, aşağıdaki komutlarla uyguladığınız kuralları daha iyi kavramanıza yardımcı olacaktır. Unutmayın, aşağıda verilen komutların her biri tek başına kullanılabilir. Diğer yandan, bunları özel ihtiyaçlarınıza göre karıştırıp eşleştirebilirsiniz.

Aklınızda Bulundurmanız Gerekenler

Okumaya devam etmeden önce, aklınızda bulundurmanız gereken bazı şeyler şunlardır:

  • iptables'daki kuralların sırası önemlidir.
  • Bir zincirin sonuna yeni bir kural eklemek için, ​iptables komutunuzun ​-A seçeneğini kullanması gerekecektir.​​
  • Kuralı başka bir konuma eklemek istiyorsanız, ​-I seçeneğini kullanmalısınız. Bu seçenek, kuralın tam konumunu belirtmenize olanak tanır. Kuralı zincirin başına yerleştirmek istiyorsanız, bir kural numarası belirtmemeniz yeterlidir.
  • Sunucunuza kesintisiz erişim sağlamak için, varsayılan olarak port 22 üzerindeki SSH trafiğini engelleyin.
  • Bunu yapamaz ve sunucunuza erişimi kaybederseniz, konsolu kullanarak yeniden bağlanabilirsiniz. Güvenlik duvarı ayarlarını değiştirmek için SSH trafiğine izin verin.
  • Şu anda yürürlükte olan kural kümesini incelemek isterseniz, şu komutları kullanın: sudo iptables -S​ ve ​ ​sudo iptables -L.

Ayrıca, ​iptables güvenlik duvarı kurallarını nasıl listeleyeceğiniz ve sileceğiniz konusunda ayrıntılı bir kılavuzumuz​ bulunmaktadır; bu da iptables güvenlik duvarınızdan en iyi şekilde yararlanmanıza daha fazla yardımcı olacaktır.

Ön koşulları aradan çıkardığımıza göre, şimdi ​yaygın iptables komutlarından bazılarına göz atalım​:

Kurallarınızı Nasıl Kaydedersiniz?

Kurallarınızı nasıl kaydedebileceğinizi belirleyerek başlayacağız. iptables kurallarının geçici olduğunu unutmamak önemlidir. Bu, kuralları kaydetmediğiniz sürece sisteminizi yeniden başlattıktan sonra kaybolacakları anlamına gelir. Yeni kurallarınızı sırasıyla ​Ubuntu​ ve ​CentOS​ sunucularında manuel olarak nasıl kaydedebileceğiniz aşağıda açıklanmıştır:

  • Ubuntu

Bir Ubuntu sunucusunda yeni kurallarınızı kaydetmenin en kolay yolu iptables-persistent​ paketini kullanmaktır. Bu öğreticiyi takip ederek kolayca bir ​Ubuntu sunucusu oluşturabilirsiniz​.

Şimdi, yeni iptables kurallarınızı kaydetmenin ilk adımı, apt-get kullanarak iptables-persistent ​paketini yüklemektir. Paketi şu şekilde edinebilirsiniz:

Iptables Firewall 1

Kurulum işlemi sırasında, şu anda yürürlükte olan güvenlik duvarı kurallarını kaydetmek isteyip istemediğinize karar vermeniz gerekir. Bunun yerine kuralları güncellemek ve değişiklikleri kaydetmek için şu komutu kullanın:

Iptables Firewall 2

Yukarıdaki komut genellikle 16.04'ten sonraki Ubuntu sürümleri için çalışır. Daha eski bir sürüm kullanıyorsanız, bunun yerine şu komutu kullanın:

  • CentOS

CentOS 6 veya daha eski sürümlerde güvenlik duvarınızı iptables ile yapılandırabilirsiniz. CentOS 7 ise bunun yerine FirewallD kullanır. CentOS 7'de FirewallD'nin nasıl kurulacağını öğrenmek için bu öğreticiyi takip edin.

CentOS'ta yeni kurallarınızı ​iptables başlatma betiğini (init script) kullanarak kaydedebilirsiniz. Aşağıdaki komuta bakın:

Bu komut, iptables güvenlik duvarı için yeni kurallarınızı kaydedecektir. Şu anda aktif olan iptables kuralları /etc/sysconfig/iptables​ dosyasında bulunabilir.

Yararlı Iptables Komutları

Şimdi, sunucunuzda kullanmanız gerekebilecek çok yararlı bazı iptables güvenlik duvarı komutlarına geçelim.

  • Geri Döngü (Loopback) Bağlantıları

İlk olarak, geri döngü (loopback) bağlantılarına nasıl izin verebileceğinizi inceleyeceğiz. Sisteminiz, kendisine bağlantı göndermek için bir geri döngü arayüzü kullanır. Örneğin, şu komutu çalıştırdığınızı hayal edin: ​ping localhost​ veya ​ping 127.0.0.1​. Sunucunuz bir geri döngü (loopback) arayüzü veya bir lo​ kullanacaktır, bu da esasen kendi kendine ping atması anlamına gelir. Diğer durumlarda, uygulama sunucunuz 'localhost' adresine bağlanacak şekilde yapılandırılmışsa sunucu bunu kullanabilir.

Durum ne olursa olsun, iptables güvenlik duvarınızın bu bağlantıları engellemediğinden emin olmanız gerekir. Bu nedenle, bu işlevlerin gerçekleşebilmesi için geri döngü (loopback) bağlantılarına izin vermeniz gerekecektir.

Geri döngü (loopback) arayüzüne gelen tüm trafiğe izin vermek için çalıştıracağınız komutlar şunlardır:

Iptables Firewall 3

  • Yerleşik ve İlişkili Gelen Bağlantılar

İzin vermeniz gerekebilecek başka bir bağlantı türü de giden bağlantıdır. Sunucunuzun sırasıyla hem gelen hem de giden trafiği aldığından ve gönderdiğinden emin olmak için yerleşik ve ilişkili gelen bağlantılara izin vermeniz gerekir. Bu, sunucunun giden bağlantılara dönüş trafiği göndermesini sağlar. Hem yerleşik hem de ilişkili gelen bağlantılara izin vermek için bu komutu kullanın:

Established and Related Incoming Connections

  • Yerleşik Giden Bağlantılar

Sunucu genellikle gelen bağlantılara, yerleşik bağlantıların giden trafiği şeklinde yanıtlar gönderir. Bunlara izin vermek için aşağıdaki komutu kullanın:

Established Outgoing Connections

  • İçeriden Dışarıya

Bazen, dâhili ağın harici ağa erişebilmesi için güvenlik duvarınızı yapılandırmanız bile gerekebilir. Varsayılan olarak, harici ağınız ​eth0​ ve ​eth1 dâhili ağınız olmalıdır. Eğer durum buysa, erişimi etkinleştirmek için bu komutu kullanın:

Internal to External

  • Geçersiz Paketleri Düşürme

Bazen bazı ağ trafiği paketleri geçersiz olarak etiketlenir. Çoğu zaman bu geçersiz paketleri doğrudan düşürebilirsiniz. Bunu yapmak için aşağıdaki komutu kullanın:

Dropping Invalid Packets

IP Adreslerini Engelleme Kuralları

Sırada, belirli IP adreslerinden gelen bağlantıları engellemek için kullanabileceğiniz bazı komutlara bakacağız. İşleri kolaylaştırmak için komutlarımızda örnek olarak 15.15.15.51 IP adresini kullanacağız. Bu değeri kendi özel IP adresinizle değiştirebilirsiniz.

-s 15.15.15.51 ifadesinde, ​​​-s​ ifadesi kaynağı temsil eder. Dolayısıyla komut, kaynak IP adresi olarak '15.15.15.51' adresini belirtmektedir. Benzer şekilde, herhangi bir güvenlik duvarı kuralında kaynak IP adresini belirtebilirsiniz. Buna izin verme ve reddetme kuralları da dahildir.

Bağlantıyı reddetmek istiyorsanız, komutta DROP yerine şu şekilde REJECT kullanırsınız:

Sonuç olarak, söz konusu IP adresi her bağlantı isteği gönderdiğinde sunucunuz 'bağlantı reddedildi' (connection refused) hatası verecektir.

  • Belirli Bir Arayüze Gelen Bağlantıları Engelleme

Belirli bir IP adresinden belirli bir ağ arayüzüne gelen tüm bağlantı isteklerini engellemeniz mümkündür. Örneğimizde IP adresi 15.15.15.51​ ve ağ arayüzü ise ​eth0​'dır. Bağlantıları engellemek için bu komutu kullanın:

En güzel yanı ise ağ arayüzünü herhangi bir kuralda belirtebilmenizdir. Bu, herhangi bir kuralın yalnızca belirli bir ağa uygulanabileceği ve bununla sınırlandırılabileceği anlamına gelir.

Hizmet Kuralları: SSH

SSH ​ bir bulut sunucusu kullanıyorsanız önem kazanır. Bu durumda, port 22 üzerinden gelen SSH bağlantılarına izin vermeniz gerekir. Bu bağlantıları etkinleştirmek, sunucunuza bağlanmanıza ve sunucunuzu yönetmenize olanak tanır. Burada, SSH ile ilgili bir dizi yaygın kuralı ele alacağız.

  • Tüm Gelen SSH Bağlantılarına İzin Verme

Aşağıdaki komutlar tüm gelen SSH bağlantılarını etkinleştirir:

Yukarıdaki kümede, ikinci komutu yalnızca ​OUTPUT​ politikası ​ACCEPT​ olarak ayarlanmamışsa kullanmanız gerekir. Kurulmuş SSH bağlantılarının giden trafiğine izin verir.

  • Belirli Bir Alt Ağdan Gelen SSH Bağlantılarına İzin Verme

Önceki komut tüm gelen bağlantılara izin verir. Yalnızca belirli bir IP adresinden veya alt ağdan gelen bağlantılara izin vermek için aşağıdaki komutları kullanabilirsiniz. Diyelim ki yalnızca şu alt ağdan gelen bağlantılara izin vermek istiyorsunuz: ​15.15.15.0/24​ alt ağı:

Daha önce olduğu gibi, ikinci komutu yalnızca ​OUTPUT​ politikası ​ACCEPT​ olarak ayarlanmamışsa kullanmanız gerekir. Kurulmuş SSH bağlantılarının giden trafiğine izin verir.

  • Giden SSH Bağlantılarına İzin Verme

Güvenlik duvarı ​OUTPUT​ politikası ​ACCEPT​ olarak ayarlanmamışsa ve SSH bağlantılarını etkinleştirmek istiyorsanız bu komutları kullanın. Bu, sunucunuzun diğer sunuculara SSH bağlantıları başlatmasına izin verecektir:

Bulut sunucularınızda SSH'den daha fazla yararlanmak için şu kılavuzlarımıza göz atın: ​ Ubuntu'da uzak bir sunucuya bağlanmak için SSH nasıl kullanılır ​ve Linux sunucunuzu SSH anahtar tabanlı kimlik doğrulaması kullanacak şekilde nasıl yapılandırabilirsiniz​.

  • Belirli Bir Alt Ağdan Gelen Rsync Bağlantılarına İzin Verme

Rsync​, bir sistemden diğerine dosya aktarmak için kullanabileceğiniz bir özelliktir. 873 numaralı bağlantı noktasında çalışır. Dolayısıyla, belirli bir IP adresinden veya alt ağdan 873 numaralı bağlantı noktasında gelen Rsync bağlantılarına izin vermek istiyorsanız aşağıdaki komutları kullanın:

Gördüğünüz gibi, hedef bağlantı noktasıyla birlikte kaynak IP adresini de belirttik. İkinci komutu yalnızca güvenlik duvarı ​OUTPUT​ politikası ​ACCEPT​ olarak ayarlanmamışsa kullanacaksınız. Kurulmuş Rsync bağlantılarının giden trafiğine izin verir. Ayrıca, ​bir VPS üzerindeki yerel ve uzak dizinleri eşitlemek için Rsync'ten yararlanma kılavuzumuza göz atabilirsiniz​.

Hizmet Kuralları: Web Sunucusu

HTTP bağlantıları genellikle 80 numaralı bağlantı noktasından alınır. Benzer şekilde, HTTPS genellikle 443 numaralı bağlantı noktasından gelir. ​Apache​ ve ​Nginx​ gibi web sunucuları, bağlantı isteklerini yakalamak için bu bağlantı noktalarını dinler. Bazen varsayılan ayarlar sunucunuzun bu gelen istekleri reddetmesine veya düşürmesine neden olabilir. Bu nedenle, trafiğe izin vermek için yeni kurallar belirlemeniz gerekecektir.

  • Tüm Gelen HTTP Bağlantılarına İzin Verme

Bu komutlarla 80 numaralı bağlantı noktasındaki tüm gelen HTTP bağlantılarına izin verebilirsiniz:

İkinci komutu yalnızca güvenlik duvarı ​OUTPUT​ politikası ACCEPT​ olarak ayarlanmamışsa kullanacaksınız. Kurulmuş HTTP bağlantılarının giden trafiğine izin verir.

  • Tüm Gelen HTTPS Bağlantılarına İzin Verme

443 numaralı bağlantı noktasındaki tüm gelen HTTPS bağlantı isteklerine izin vermek için bu komutları kullanın:

İkinci komutu yalnızca iptables güvenlik duvarı ​OUTPUT​ politikası ACCEPT​ olarak ayarlanmamışsa kullanacaksınız. Bu komut, kurulmuş HTTP bağlantılarının giden trafiğine izin verir.

  • HTTP ve HTTPS'ten Gelen Tüm Bağlantılara İzin Verme

Hem HTTP hem de HTTPS bağlantı noktalarından gelen trafiğe izin vermek istiyorsanız multiport modülünü kullanabilirsiniz. Bu durum geçerliyse şu komutları kullanın:

İkinci komutu yalnızca güvenlik duvarı ​OUTPUT​ politikası ACCEPT​ olarak ayarlanmamışsa kullanacaksınız. Bu komut, kurulmuş HTTP ve HTTPS bağlantılarının giden trafiğine izin verir.

Hizmet Kuralları: MySQL

Bazen bir istemci, ​MySQL​ veritabanı sunucunuza erişmek için uzak bir sunucu kullanabilir. Bu durumda, ilgili bağlantı noktasından gelen trafiğe manuel olarak izin vermeniz gerekir. MySQL, 3306 numaralı bağlantı noktasından gelen bağlantı isteklerini dinler.

  • Bir Alt Ağdan Gelen MySQL Bağlantılarına İzin Verme

Belirli bir alt ağdan gelen MySQL bağlantılarına izin vermek istiyorsanız kaynağı belirtmeniz gerekir. Örneğimizde, şu komutları kullanarak 15.15.15.0/24​ alt ağından gelen trafiğe izin vereceğiz:

İkinci komutu yalnızca güvenlik duvarı ​OUTPUT​ politikası ACCEPT​ olarak ayarlanmamışsa kullanacaksınız. Bu komut, kurulmuş MySQL bağlantılarının giden trafiğine izin verir.

  • Bir Arayüze MySQL Bağlantılarını Etkinleştirme

MySQL bağlantılarını hangi ağ arayüzünün alacağını da belirtmek istiyorsanız şu komutları kullanabilirsiniz:

Bu durumda, eth1​.

adlı özel bir ağ arayüzüne yapılan bağlantılara izin veriyoruz. İkinci komutu yalnızca güvenlik duvarı ​OUTPUT​ politikası ACCEPT​ olarak ayarlanmamışsa kullanacaksınız. Bu komut, kurulmuş MySQL bağlantılarının giden trafiğine izin verir.

Sunucunuzda kolayca MySQL kurulumu yapmak için ​öğreticimizi takip edebilirsiniz​.

Hizmet Kuralları: PostgreSQL

İstemciniz, ​PostgreSQL​ veritabanı sunucunuza erişmek için uzak bir sunucu kullanabilir. Bu durumda, bu gelen bağlantılara izin vermeniz gerekir. Bu bağlantılar 5432 numaralı bağlantı noktası üzerinden gelecektir.

  • Bir Alt Ağdan Gelen PostgreSQL Bağlantılarına İzin Verme

Belirli bir alt ağdan veya IP adresinden gelen PostgreSQL bağlantılarına izin vermek için aşağıdaki komutları kullanabilirsiniz. Görebileceğiniz gibi, kaynak olarak ​15.15.15.0/24​ alt ağını belirttik.

İkinci komutu yalnızca güvenlik duvarı ​OUTPUT​ politikası ACCEPT​ olarak ayarlanmamışsa kullanacaksınız.. Kurulmuş PostgreSQL bağlantılarının giden trafiğine izin verir.

  • Belirli Bir Arayüze PostgreSQL Bağlantılarını Etkinleştirme

PostgreSQL bağlantılarına yalnızca belirli bir ağ arayüzü için izin vermek istiyorsanız, şu komutları kullanın:

Bu durumda, adlandırılmış özel bir ağ arayüzüne bağlantılara izin veriyoruz: eth1​. İkinci komutu yalnızca güvenlik duvarı ​OUTPUT​ politikası ​ACCEPT​ olarak ayarlanmamışsa kullanacaksınız. Kurulmuş PostgreSQL bağlantılarının giden trafiğine izin verir.

Bu ​Ubuntu sunucunuza PostgreSQL kurma kılavuzunu takip edin​.

Hizmet Kuralları: E-posta

Ayrıca güvenlik duvarınızı kullandığınız herhangi bir e-posta sunucusuna göre yapılandırmanız gerekebilir. Örneğin, ​Sendmail​ ve ​Postfix​ bir dizi farklı bağlantı noktasından bağlantı alabilir. Bu, e-posta teslimi için kullandığınız protokole bağlıdır. Belirli e-posta bağlantılarını engellemek ve bunlara izin vermek için hangi protokolü kullandığınızı bilmeniz gerekir.

  • Gelen SMTP Bağlantılarına İzin Verme

SMTP bağlantıları genellikle 25 numaralı bağlantı noktasından gelir. Ancak SMTP, giden e-postalar için yaygın olarak 587 numaralı bağlantı noktasını da kullanır. Sunucunuzun bu bağlantılara yanıt vermesine izin vermek için aşağıdaki komutları kullanın:

İkinci komutu yalnızca güvenlik duvarı ​OUTPUT​ politikası ACCEPT​ olarak ayarlanmamışsa kullanacaksınız. Kurulmuş SMTP bağlantılarının giden trafiğine izin verir.

  • Tüm Gelen IMAP Bağlantılarına İzin Verme

Sunucunuzun 143 numaralı bağlantı noktasındaki tüm gelen IMAP bağlantılarına yanıt vermesine izin vermek için şunu yazıp çalıştırmanız yeterlidir:​

İkinci komutu yalnızca güvenlik duvarı ​OUTPUT​ politikası ACCEPT​ olarak ayarlanmamışsa kullanacaksınız. Kurulmuş IMAP bağlantılarının giden trafiğine izin verir.

  • Tüm Gelen IMAPS Bağlantılarına İzin Verme

Sunucunuzun 993 numaralı bağlantı noktasındaki IMAPS bağlantılarına yanıt vermesini sağlamak için bu komutları kullanın:

İkinci komutu yalnızca güvenlik duvarı ​OUTPUT​ politikası ACCEPT​ olarak ayarlanmamışsa kullanacaksınız. Kurulmuş IMAPS bağlantılarının giden trafiğine izin verir.

  • Tüm Gelen POP3 Bağlantılarına İzin Verme

Bu bağlantılar 993 numaralı bağlantı noktasından gelecektir. Sunucunuzun IMAPS bağlantı isteklerine yanıt vermesini istiyorsanız aşağıdaki komutları kullanın:

İkinci komutu yalnızca güvenlik duvarı ​OUTPUT​ politikası ACCEPT​ olarak ayarlanmamışsa kullanacaksınız. Kurulmuş POP3 bağlantılarının giden trafiğine izin verir.

  • Tüm Gelen POP3S Bağlantılarına İzin Verme

Sunucunuzun 995 numaralı bağlantı noktasından gelen POP3S istekleriyle bağlantı kurmasına izin vermek için bu komutları kullanın:

İkinci komutu yalnızca güvenlik duvarı ​OUTPUT politikası şu değere ayarlanmamışsa kullanırsınız: ACCEPT​. Bu komut, kurulmuş POP3S bağlantılarının giden trafiğine izin verir.

  • Giden SMTP Postaları Nasıl Engellenir

Gelen bağlantılara izin vermek ve sunucu yanıtını etkinleştirmek yerine, giden postaları tamamen engellemek isteyebilirsiniz. Bu komutu kullanarak 25 numaralı bağlantı noktasındaki tüm giden SMTP postalarını engelleyebilirsiniz:

Sonuç olarak, 25 numaralı bağlantı noktasındaki tüm giden trafik iptables güvenlik duvarı tarafından reddedilecektir. Başka bir hizmeti reddetmek istiyorsanız aynı komut yapısını kullanabilirsiniz. Tek yapmanız gereken 25 numaralı bağlantı noktasını ilgili bağlantı noktası numarasıyla değiştirmektir.

Sonuç

Bu kılavuz, temel iptables güvenlik duvarı komutlarını kapsamaktadır. İptables güvenlik duvarınızı etkili bir şekilde yapılandırmak için ihtiyacınız olan temel araçları sağlar. Her duruma uyan tek bir çözüm olmadığını unutmayın. Bu komutlar son derece esnektir. Bu, onları size ve gereksinimlerinize en uygun şekilde kullanabileceğiniz anlamına gelir.

Keyifli Çalışmalar!

author

Manpreet Singh

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.