yeni başlayanlar için iptables, meraklı, ilgilenen (2. Bölüm)

Cuando DesdeLinux Henüz birkaç aylıktım ve iptables hakkında anlaşılması son derece basit bir eğitim yazdım: yeni başlayanlar için iptables, meraklı, ilgilenen (1. bölüm) . Bilgisayarımızı evimizle karşılaştırmak, güvenlik duvarımızı evin kapısı ile karşılaştırmak gibi metaforları ve diğer örnekleri kullanarak eğlenceli bir şekilde, bu kadar teknik detay veya karmaşık kavramlar olmadan, güvenlik duvarı nedir, iptables nedir ve kullanmaya nasıl başlanır ve yapılandırılır. Bu, önceki iptables öğreticisinin devamı, 2. bölümü 🙂

Birkaç gün önce Linksys AP'yi (Erişim Noktası) kullanarak kız arkadaşımın evine bir Wifi koydum, ancak bölge teknoloji açısından en bilgili olmasa da, yani çatlama tehlikesi pek yok. , Hem Wifi hem de bilgisayarlarda mükemmel güvenliğe sahip olmak her zaman iyi bir fikirdir.

Burada Wifi'nin güvenliği hakkında yorum yapmayacağım çünkü yazının amacı bu değil, şu anda dizüstü bilgisayarımda kullandığım iptables yapılandırmasına odaklanacağım.

Aşağıdaki komutlar bir terminalde yürütülür, yönetici ayrıcalıklarıyla yürütülmeleri gerekir, her komutun başına sudo ekleyeceğim, komutları doğrudan root olarak çalıştırarak aynı şeyi yapabilir veya sudo kullanmaktan kaçınabilirsiniz.

Bir önceki yazıda, bunun için bir güvenlik duvarında ilk olarak gelen tüm trafiği reddetmenin gerekli olduğunu açıklamıştım:

sudo iptables -P INPUT DROP

O zaman kendi bilgisayarımızın veri girmesine izin vermeliyiz:

sudo iptables -A INPUT -i lo -j ACCEPT

Bilgisayarımızdan gelen istek paketlerini kabul etmenin yanı sıra:

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Bu satırları daha iyi anlamak için önceki makalenin ilk yarısını okumanızı tavsiye ederim: yeni başlayanlar için iptables, meraklı, ilgilenen (1. bölüm)

Şimdiye kadar bilgisayarımız internette sorunsuz bir şekilde gezinebiliyor ancak başka hiçbir ortamdan (LAN, internet, Wifi vb.) Hiç kimse bilgisayarımıza hiçbir şekilde erişemiyor. İptables'ı ihtiyaçlarımıza göre yapılandırmaya başlayacağız.

İptables günlüklerini başka bir dosyaya çıkarmak için ulogd kullanma:

Varsayılan olarak iptables günlükleri çekirdek günlüğüne, sistem günlüğüne veya bunun gibi bir şeye gider ... Varsayılan olarak Arch'da, şu anda nereye gittiklerini bile hatırlamıyorum, bu yüzden kullanıyorum Ulogd böylece iptables günlükleri başka bir dosyadadır.

sudo iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ULOG

Özel sunucuma erişim izni veriyorum:

VirtualBox veya sanallaştırmaya benzer bir şey kullanmıyorum, özel sunucum ile sanallaştırıldım Qemu + KVM bu şekilde dizüstü bilgisayarıma bağlanabilmeli, yukarıda belirttiğim iptables kuralları ile yapamayacak, bu yüzden dizüstü bilgisayarıma erişebilmek için sanal sunucumun IP'sine izin vermem gerekiyor :

sudo iptables -A INPUT -i virbr0 -p tcp -s 192.168.122.88 -j ACCEPT

Bu satırı detaylandıracağız, her parametrenin ne anlama geldiğini anlamanız önemlidir, çünkü bundan sonra çokça tekrarlanacaklar:

-Bir GİRİŞ : Gelen trafik için bir kural ilan edeceğimi söylüyorum

-i virbr0 : Trafiği kabul edeceğim arayüzün etho (LAN) veya wlan0 (Wifi) olmadığını, özellikle virbr0 arayüzüm olduğunu, yani dizüstü bilgisayarımın iletişim kurduğu sanal ağ arayüzü (dahili) olduğunu beyan ederim. sanal sunucumla (ve tersi)

-p tcp : Protokolü belirtiyorum, en çok kullanılanlar UDP ve TCP, burada bunu koymamak gerçekten yeterliydi ama ... kabul edilecek protokol türünü belirtmek gelenekseldir

- 192.168.122.88 : Paketlerin kaynağı, kaynağı. Başka bir deyişle, kural, özellikle IP 192.168.122.88'den gelen paketlere atıfta bulunur.

-j KABUL : Zaten burada yukarıdakilerle eşleşen paketlerle ne yapmak istediğimi söylüyorum, bu durumda kabul et.

Başka bir deyişle, özet olarak, IP 192.168.122.88'den gelen paketleri kabul edeceğim, ancak bu IP'den gelen paketleri girmek istemeniz durumunda AMA! Virbr0 olmayan bir arayüzden giriyorlar yani IP 192.168.122.88'den paket girmeye çalışıyorlar ama Wifi ağımızdaki bir bilgisayardan geliyorlar, bu durumda paketler reddedilecek. neden? Evet, açıkça belirttiğimiz için, 192.168.122.88'den gelen paketleri evet, ancak ve yalnızca, ancak paketler başka bir arabirimden (LAN, RAS, Wifi, vb.) Daha sonra kabul edilmeyecektir. Gördüğünüz gibi arayüzü belirleyerek onu daha da kısıtlayabiliriz, bilgisayarımıza neyin girdiği (veya girmediği) üzerinde daha iyi bir kontrole sahip olabiliriz.

Ev Wifi'sinin herhangi bir IP'sinden ping kabul etme:

Wifi'ye bağlanan başka bir bilgisayardan, dizüstü bilgisayarıma ping atmaya çalışırsanız, buna izin vermek istiyorum. neden? Buradaki fikir aynı zamanda önümüzdeki birkaç hafta içinde evdeki bilgisayarı ağa bağlamaktır, bu nedenle bilgi paylaşımının daha az karmaşık, daha akıcı olacağı, masaüstünü Wifi'ye bağlamak için testler yapmaya başladığımda Bağlantıyı kontrol etmek için dizüstü bilgisayarıma ping atmam gerekiyor, eğer dizüstü bilgisayarım bana geri ping göndermiyorsa AP'nin başarısız olduğunu veya Wifi'ye erişirken bir hata olduğunu düşünebilirim, bu yüzden ping'e izin vermek istiyorum.

sudo iptables -A INPUT -i wlo1 -p icmp -s 192.168.1.0/24 -d 192.168.1.51 -j ACCEPT

-Bir GİRİŞ : Daha önce olduğu gibi gelen trafiğe atıfta bulunuyorum

-ben wlo1 : Öncekine benzer. Önceki durumda sanal arabirimi belirttim, bu durumda başka bir arabirim belirledim, kablosuz ağımın: wlo1

-p icmp : Icmp protokolü, icmp = ping. Yani, SSH veya benzeri bir şeye izin vermiyorum, yalnızca ping'e (icmp) izin veriyorum

-s 192.168.1.0/24 : Paketlerin kaynağı, yani paketler IP 192.168.1'den geldiği sürece. kabul edilecek

-d 192.168.1.51 : Hedef IP, yani benim IP'm.

-j KABUL : Yukarıdakilerle eşleşen paketlerle ne yapacağımı belirtiyorum, kabul et.

Yani ve bunu hızlı bir şekilde açıklamak için, 192.168.1 .__ gibi bir IP'den geldikleri sürece, hedefi spesifik olarak benim IP'm olan bana ping gönderdiklerini (icmp protokolü) kabul ediyorum, ancak aynı zamanda herhangi bir ağ arayüzünden, özellikle Wifi ağ arayüzümden (wlo1) girmeleri gerekir

SSH'yi yalnızca bir IP için kabul edin:

Bazen bağlanmam gerekiyor Dizüstü bilgisayarı kontrol etmek için akıllı telefonumdan SSH, bu nedenle dizüstü bilgisayarıma Wifi'imin IP'lerinden SSH erişimine izin vermeliyim, bunun için:

sudo iptables -A INPUT -i wlo1 -p tcp -s 192.168.1.0/24 -d 192.168.1.51 --dport 22 -j ACCEPT

Bu satırdan farklı olan veya vurgulanmayı hak eden tek şey şudur: -Dport 22 (Kullandığım SSH bağlantı noktası)

Yani, dizüstü bilgisayarıma 22 numaralı bağlantı noktasından bağlanma girişimlerini kabul ediyorum, kablosuz ağımın herhangi bir IP'sinden geldikleri sürece, IP'mi belirli bir hedef olarak almaları ve ayrıca wlo1 arabiriminden, yani benim kablosuz ağ (lan değil, vb.)

Web sitenizi görüntülemelerine izin vermek:

Benim durumum değil, ancak herhangi biriniz barındırılan bir web sitesine sahipseniz ve kimseye erişimi reddetmek istemiyorsanız, yani herhangi bir yerden herkesin bu web sitesine erişebileceğini düşündüğünüzden çok daha basittir:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Başka bir deyişle, burada 80 numaralı bağlantı noktası üzerinden gelen tüm trafiğe (tcp) izin veriyorlar. Gördüğünüz gibi, hangi IP'lerden veya ağdan erişime izin vereceğimi belirtmiyorum, izin verilecek bir IP aralığı belirtmeden, iptables istediğimi varsayıyor tüm mevcut IP aralıklarına, yani tüm dünyaya erişime izin vermek için 🙂

Diğer kombinasyonlar:

Örneğin, ev LAN'ımdan IP'ler için ping kabul etmek gibi birçok başka kuralım var (bunun için temelde yukarıdaki satırla aynı, IP aralıklarını değiştiriyor), bu da yukarıda açıkladığımla aynı. . dizüstü bilgisayarımda gerçekten karmaşık şeyler kullanmıyorum, bağlantıları sınırlandırmak, DDoS önleme, bunu sunucular için bırakıyorum, dizüstü bilgisayarımda buna ihtiyacım yok 🙂

Neyse, şimdiye kadar makale.

Gördüğünüz gibi, iptables ile çalışmak hiçbir şekilde o kadar karmaşık değil, kurallarınızı yazdığınız bir komut dosyası oluşturduğunuzda, onu değiştirmek, güvenlik duvarınıza kurallar eklemek veya kaldırmak çok basittir.

Kendimi konunun uzağında bir uzman olarak görmüyorum, şüphelerinize rağmen burada yorum yapıyorlar, elimden geldiğince size yardımcı olmaya çalışacağım.

selamlar


31 yorum, sizinkini bırakın

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   risketo dijo

    Çok iyi, çok iyi açıklanmış, harika.
    Bu tür gönderileri seviyorum.

    1.    KZKG ^ Gaara dijo

      Yorum yaptığınız için çok teşekkür ederim 🙂

      Bu gönderi uzun süredir sahip olduğum bir borçtu, sonunda ödeyebilmek hoş ve keyifli ^ _ ^

      selamlar

      1.    FIXOCONN dijo

        bir soru küba'da mısın?
        ... Birkaç gün önce bir Linksys AP'yi (Erişim Noktası) kullanarak kız arkadaşımın evine bir Wifi yerleştirdim.

        1.    KZKG ^ Gaara dijo

          Evet tabi ki Küba'da doğdum ve yaşıyorum. neden soru?

        2.    Sam burgos dijo

          @FIXOCONN: Merhaba arkadaşım ve sorunun konu dışı konusunu affedin ama Tarçın'ın kullanıcı aracısında bir masaüstü ortamı olarak görünmesini nasıl tanımlıyorsunuz? Tarçın ile Mint 13 kullanıyorum, ancak bu sitede her yorum yaptığımda kullanıcı aracımda Cinnamon logosunun görünmesini hiçbir şekilde alamıyorum

          Sorun olmayacaksa, kullanıcı aracısı ayrıntılarınızı bana iletir misiniz? Bu verileri kendim yerleştirmek için bilmek isterim =)

          İnceleyebilmeniz ve bana bilgi verebilmeniz için size bir sayfa bırakıyorum. Teşekkürler ve yöneticiler, bu bilgiyle benim açımdan "trolleme" yi (eğer öyle diyebilirseniz) affedin -> http://user-agent-string.info/

          1.    KZKG ^ Gaara dijo

            UserAgent'ın herhangi bir bölümüne "Tarçın" (tırnak işaretleri olmadan) ekleyin, ardından logo gelecekteki yorumlarda görünmelidir 🙂

  2.   Bruno cascio dijo

    Yazı çok iyi! çok net 😀

    1.    KZKG ^ Gaara dijo

      Okuduğunuz için teşekkürler ve yorumunuz için teşekkürler 🙂

  3.   elveda dijo

    Teşekkür ederim Bana gerçekten yardımcı oluyor!

  4.   Oscar Grenada dijo

    Merhaba, her şeyden önce blog için çok tebrikler, bence harika.
    Bahsetmek iyi olabilecek bir şey, ULOG ile oturum açma seçeneğinin ulogd2'ye sahip işletim sistemlerinde çalışmamasıdır, bu durumda kural şöyle olmalıdır:
    sudo iptables -A GİRİŞ -p tcp -m tcp –tcp-bayrakları FIN, SYN, RST, ACK SYN -j NFLOG

    1.    KZKG ^ Gaara dijo

      Öncelikle blog hakkında söyledikleriniz için çok teşekkür ederim 🙂

      Arch'a ulogd v2.0.2-2 yükledim ve koyduğum satır sorunsuz çalışıyor (/etc/ulogd.conf içine bir loglevel = 1 koymak zorunda kaldım, ancak günlükleri başka bir dosyaya sorunsuz bir şekilde alıyor.

      Ulogd v2 veya üstünü kullanıyorsanız, bıraktığım satır sizin için yanlış mı çalışıyor?

      Yorumunuz için saygı ve teşekkürler.

  5.   Şehir dijo

    Her zaman ikinci bölümü bekliyordum, ilk bölümü okuduğumda hatırlıyorum (güvenlik duvarlarındaki başlangıcımdı). Teşekkürler @ KZKG ^ Gaara, saygılar 🙂

    1.    KZKG ^ Gaara dijo

      Beni okuduğunuz için teşekkürler 😀
      Ve hehe evet dedim ... bu gönderi uzun zaman önce sahip olduğum bir borçtu ^ _ ^

  6.   Jose Luis Gonzalez bilgi alanı resmi dijo

    Saygılarımızla. Gönderi çok iyi. Kalamar'dan dansguardian'a trafiği yeniden yönlendirmek için iptables kurallarını yapılandırmaya çalışıyorum ve hala hedefe ulaşamıyor. Bu konuda biraz yardım almaktan memnun olurum.

    1.    KZKG ^ Gaara dijo

      bunun için iptables? Bu doğrudan Squid'deki ACL'lerle yapılmıyor mu?

  7.   isimsiz dijo

    "Benim gibi başka birçok kuralım var .."
    Ben buna paranoya derim oğlum
    Biraz daha ve modeminizdeki / yönlendiricinizdeki her açık bağlantı noktasına bir paket Rotwailer koyarsınız 🙂

    1.    KZKG ^ Gaara dijo

      HAHAHAHAHAHAHAHaha rottwailers ile kahkahadan ölüyorum hahahaha

  8.   Ivan dijo

    Selamlar dostum, IPTables'ı yapılandırmak için yardıma ihtiyacım var, böylece adresi özel ad sunucularımın tarayıcısına yazdığımda yalnızca bağlantı noktası 80 için erişimi reddediyor, yani örneğin ns1.mydomain.com ve ns2.mydomain yazdığımda com.tr (benim ad sunucularım olan) IPtables, 80 numaralı bağlantı noktasına erişimi reddeder, böylece tarayıcı sayfayı yüklemeye çalışır ancak bir süre sonra süresi dolar ve hiçbir zaman yüklenmez, zaten şu gibi komutları denedim:

    iptables -A GİRİŞ -d ns1.midomini.com -p tcp –dport 80 -j DROP
    iptables -A GİRİŞ -d ns2.midomini.com -p tcp –dport 80 -j DROP

    Ancak yaptığı tek şey, tüm etki alanlarımda 80 numaralı bağlantı noktasına girişi reddetmek (Sanal Konak ile aynı IP'yi paylaştıkları için), bunun yalnızca ad sunucularımın url'sinde ve ad sunucularımın işaret ettiği IP'de olmasını istiyorum. diğer bir deyişle, IP tabloları:

    ns1.midomini.com (İşaret A) -> 102.887.23.33
    ns2.midomini.com (İşaret A) -> 102.887.23.34

    ve ad sunucularının işaret ettiği IP'ler

    102.887.23.33
    102.887.23.34

    Bu sisteme sahip bir şirket örneği: Dreamhost
    Ad sunucuları: ns1.dreamhost.com ve ns2.dreamhost.com ve gösterdikleri IP'ler tarayıcının adres çubuğuna yazıldığında yanıt vermiyor

    İlginiz için şimdiden çok teşekkür ederim, bununla bana yardım etmenizi çok isterim, gerçekten ihtiyacım var ve acilen!

    İyi günler !!

    1.    KZKG ^ Gaara dijo

      Merhaba Ivan,

      Bana e-posta yoluyla ulaşın (kzkggaara[at]desdelinux[dot]net) bunun hakkında daha sakin konuşmak ve daha iyi açıklamak için, yarın size mutlaka cevap vereceğim (bugün geçiyorum)

      Yapmak istediğin şey basit, bana söylediğin satırların neden işe yaramadığını bilmiyorum, işe yarıyorlar, ama günlükleri ve burada çok uzun sürecek diğer şeyleri kontrol etmelisin.

      Selamlar ve e-postanı bekliyorum

  9.   Neysonv dijo

    teorik olarak iptables ile aircrack gibi programlardan bağlantı kesme istekleri gönderilmekten kaçınabilirdim. Haklıyım??? Pekala testler yapacağım ama eğer bana beni çok mutlu edeceğini söylersen XDDD

    1.    KZKG ^ Gaara dijo

      Teoride öyle düşünüyorum, şimdi, nasıl yapılacağını bilmiyorum, bunu hiç yapmadım ... ama tekrar ediyorum, teorik olarak, sanırım olabilir.

  10.   Alex dijo

    İptables kurallarını uyguladıktan sonra, yerel ağdaki paylaşılan Windows klasörlerine erişmem imkansız. Düzeltmek için hangi kuralı uygulamalıyım?
    Teşekkür ederim.

    1.    KZKG ^ Gaara dijo

      Hangi iptables kurallarını uyguladınız?
      Bu "yeni başlayanlar için iptables" ın 2. bölümü, ilkini okudunuz mu? Bundan önceki gönderide bulunan kuralları uygulayıp uygulamadığınızı soruyorum

      1.    Alex dijo

        Evet, her iki bölümü de okudum. Komut dosyası için, systemd ile kurallara başlama hakkında gönderdiğiniz başka bir gönderiye dayandım.

        #! / Bin / bash
        # - UTF 8 -

        # Iptables ikili
        iptables = »/ usr / bin / iptables»

        attı ""

        ## Masaları temizle ##
        $ iptables -F
        $ iptables -X
        $ iptables -Z
        #echo »- iptables'a FLUS yapıldı» && yankı »»

        ## ULOGD ile günlüklerin oluşturulması ##
        $ iptables -A GİRİŞ -p tcp -m tcp –tcp-bayrakları FIN, SYN, RST, ACK SYN -j ULOG

        ## Varsayılan DROP politikasını tanımlayın ##
        $ iptables -P INPUT DROP
        $ iptables -P FORWARD DROP
        #echo »- DROP politikası varsayılan olarak tanımlanmıştır» && echo »»

        ## Her şeyin localhost'a izin ver ##
        $ iptables -A GİRİŞ -i lo -j KABUL
        $ iptables -A ÇIKTI -o lo -j KABUL
        #echo »- Tümü localhost» && echo için izin verilir »»

        ## Başlattığım bağlantı paketlerini girmeme izin ver ##
        $ iptables -Bir GİRİŞ -m durum –devlet KURULU, İLGİLİ -j KABUL
        #echo »-» && echo »» tarafından başlatılan izin verilen bağlantı paketleri

        "###############################"
        echo »## IPTABLES YAPILANDIRILDI TAMAM! ## »
        "###############################"

        İnternette samba için senaryoda aşağıdaki kurallara sahip olmanız gerektiğini okudum:

        $ iptables -A GİRİŞ -p tcp –dport 139 -j KABUL
        $ iptables -A GİRİŞ -p tcp –dport 445 -j KABUL
        $ iptables -A GİRİŞ -p udp –spor 137 -j KABUL
        $ iptables -A GİRİŞ -p udp -dport 137 -j KABUL
        $ iptables -A GİRİŞ -p udp -dport 138 -j KABUL

        Ancak, onlarla bile Windows çalışma gruplarını göremiyorum. : S

      2.    Alex dijo

        Sorun çözüldü. Çalışma grubunu değiştirin ve ana bilgisayarlar samba yapılandırma dosyasındaki parametrelere izin verir.

  11.   osmanlı dijo

    Mükemmel makale, sadece harika !!!!
    Sadece okudum ve hem açıklama şeklinizi hem de iptable'ların gerçekten yararlı kullanımını seviyorum, onu nasıl daha derinlemesine kullanacağımı gerçekten öğrenmek istiyorum.
    Selamlar ve mükemmel makale, umarım Iptables hakkında daha fazla yayınlarsınız! ^^

  12.   LEO dijo

    Sayın;

    İptables içeren bir proxy’im var ve ağlarımdan biri ping yapamıyor http://www.google.cl bu nedenle bağlantı noktalarını bloke ettim ve bağlantı noktalarını açmak için binlerce yol deniyorum ve hiçbir şey olmuyor. Ping yapamıyorsam, görünümü bağlayamıyorum

  13.   Borja dijo

    Gönderi için tebrikler! Çok iyi. Ama bir sorum var. Bazen ağda size atanan IP adresi değişebilir (eğer MAC Adreslerimize bir IP atayabileceğimiz doğruysa), ancak Iptables ile sunucumuza MAC Adresiyle SSH aracılığıyla erişime izin verme olasılığı var mı?

    Umarım kendimi iyi açıklamışımdır.

    Saygılarımla ve çok teşekkür ederim!

  14.   Fernando MartinGan dijo

    Merhaba, yapılandırılmış bir linux sunucum olduğunu biliyorsunuz ve bu komutları verdikten sonra her şeyi engelledim ve erişimi kaybettim, neredeyse her şeyi kurtarabildim ama 2 şeyi kaçırıyorum. * Eğer ip, 10.10.10.5 ile bir web tarayıcısından "server" cname üzerinden erişemiyorum ve diğer taraftan \\ server ve sunucuyu koymadan önce ağdaki windows explorer'dan paylaşılan kaynakları göremiyorum. tüm paylaşılan kaynakları gördü. Umarım bana yardım edebilirsin, aptalca olduğunu biliyorum ama çözemiyorum, teşekkürler

  15.   Sizin dijo

    Aynen alıntı yapıyorum:
    '
    Icmp protokolü, icmp = ping. Yani, SSH veya benzeri bir şeye izin vermiyorum, yalnızca ping'e (icmp) izin veriyorum
    '

    ICMP ve PING aynı değildir. Ping, ICMP protokolünün bir parçasıdır, ancak her şey değildir. ICMP (İnternet Kontrol Mesajı Protokolü) protokolünün, bazıları belirli tehlikeler içeren daha birçok kullanımı vardır. Ve tüm ICMP trafiğini kabul ediyorsunuz. Yalnızca ping ile sınırlandırmanız gerekir.

    Saludos!

  16.   özkr dijo

    Staj yapmam gerekiyor ama iptables hakkında pek bir şey anlamıyorum, lütfen bana yardım eder misiniz….
    Teşekkürler!!!!!!!