Bu basit komut dosyasını kullanarak iptables ile kendi güvenlik duvarınızı oluşturun

Bu iptables hakkında iki şey düşünmek için biraz zaman harcadım: bu eğitimleri arayanların çoğu yeni başlayanlar ve ikincisi, birçoğu zaten oldukça basit ve zaten ayrıntılı bir şey arıyor.

Bu örnek bir web sunucusu içindir, ancak kolayca daha fazla kural ekleyebilir ve bunu ihtiyaçlarınıza göre uyarlayabilirsiniz.

IP'leriniz için "x" değişimini gördüğünüzde


#!/bin/bash

# İptables tablolarını temizliyoruz -F iptables -X # NAT iptables'ı temizliyoruz -t nat -F iptables -t nat -X # PPPoE, PPP ve ATM iptables gibi şeyler için mangle tablası -t mangle -F iptables -t mangle -X # Politikalar Bunun yeni başlayanlar için en iyi yol olduğunu düşünüyorum ve # yine de fena değil, çıktıları açıklayacağım çünkü bunlar giden bağlantılar #, girdi her şeyi atıyoruz ve hiçbir sunucu iletmemeli. iptables -P GİRİŞ DROP iptables -P ÇIKIŞI KABUL Eptables -P İLERİ DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Durumu koru. Zaten bağlı (kurulmuş) olan her şey şu şekilde bırakılır: iptables -Bir GİRİŞ -m durumu --state KURULUŞ, İLGİLİ -j KABUL # Döngü cihazı. iptables -Bir GİRİŞ -i lo -j KABUL # http, https, arayüzü belirtmiyoruz çünkü # tüm iptables olmasını istiyoruz -A GİRİŞ -p tcp --dport 80 -j iptables KABUL ET -A GİRİŞ -p tcp - dport 443 -j ACCEPT # ssh yalnızca dahili olarak ve bu ip'lerin iptables aralığından -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACCEPT # izleme örneğin zabbix varsa veya diğer bazı snmp hizmeti iptables -A GİRİŞ -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j KABUL # icmp, ping iyi, size kalmış iptables -A GİRİŞ -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql postgres ile bağlantı noktası 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh eğer posta göndermek istiyorsanız # iptables -A ÇIKIŞ -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # sunucu IP'si - sunucunuzun gerçek wan ip'i LAN_RANGE = "192.168.xx / 21 "# Ağınızın LAN aralığı veya vlan # IP'leriniz asla extranete girmemelidir,sadece bir WAN arayüzümüz varsa, o arayüz üzerinden # LAN türü trafiğe asla girmemelidir SPOOF_IPS = "0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0 .16 / XNUMX "# Varsayılan eylem - herhangi bir kural ACTION =" DROP "ile eşleştiğinde gerçekleştirilecek # wan iptables aracılığıyla sunucumun aynı IP'sine sahip paketler -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A ÇIKIŞ -o $ extranet -s $ SERVER_IP -j $ EYLEM # wan için LAN Aralığı olan paketler, herhangi bir ağa # sahip olmanız durumunda bunu böyle koyuyorum, ancak bu, aşağıdaki # kuralı ile gereksizdir döngü "için" iptables -A GİRİŞ -i $ extranet -s $ LAN_RANGE -j $ EYLEM iptables -A ÇIKIŞ -o $ extranet -s $ LAN_RANGE -j $ ACTION ## wan tarafından ip girişi için tüm SPOOF ağlarına izin verilmez $ SPOOF_IPS iptables yapıyor -Bir GİRİŞ -i $ extranet -s $ ip -j $ EYLEM iptables -A ÇIKIŞ -o $ extranet -s $ ip -j $ İŞLEM yapıldı

Her zaman olduğu gibi yorumlarınızı bekliyorum, bu blogda bizi izlemeye devam edin, Teşekkürler


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.   HO2Gi dijo

    Kopyalanan teşekkürler biraz daha öğrenmeye devam etmeme yardımcı oluyor.

    1.    brodydalle dijo

      rica ederim, yardımcı olduğuma sevindim

  2.   xavier dijo

    Gerçekten üzgünüm ama iki sorum var (ve biri hediye olarak 😉):

    Bu yapılandırmayla Apache'nin çalışır durumda olması ve SSH dışında kalanların kapatılması için varır mısınız?

    # Masaları temizliyoruz
    iptables-F
    iptables-X

    NAT'ı temizliyoruz

    iptables -t nat -F
    iptables -t nat -X

    iptables -A GİRİŞ -p tcp –dport 80 -j KABUL

    ssh yalnızca dahili olarak ve bu ip aralığından

    iptables -A GİRİŞ -p tcp -s 192.168.xx / 24 -i $ intranet –dport 7659 -j KABUL

    İkinci soru: 7659, bu örnekte SSH'de kullanılan bağlantı noktası mı?

    Ve üçüncü ve son olarak: bu yapılandırma hangi dosyaya kaydedilmelidir?

    Eğitim için çok teşekkür ederim, bu kadar acemi olmanız ve bundan iyi yararlanamamanız çok yazık.

    1.    brodydalle dijo

      bu, apache'den http için ihtiyacınız olan kuraldır
      iptables -A GİRİŞ -p tcp –dport 80 -j KABUL

      ama aynı zamanda bırakma varsayılan politikalarını da belirtmeniz gerekir (komut dosyasında bulunur)
      iptables -P GİRİŞ DROP
      iptables -P ÇIKTI KABUL
      iptables -P İLERİ DAMLA

      ve bunun nedeni, eğer uzaktaysanız, sizi çöpe atacaktır.
      iptables -Bir GİRİŞ -m durum –devlet KURULU, İLGİLİ -j KABUL

      Örnekte 7659 bu ssh'nin bağlantı noktasıysa, varsayılan olarak 22'dir, ancak "iyi bilinmeyen" bir bağlantı noktasına geçmenizi öneririm
      Dostum, istediğin gibi bilmiyorum ... firewall.sh ve rc.local (sh firewall.sh) içine yerleştirirsin, böylece otomatik olarak çalışır, sahip olduğun işletim sistemine bağlı kuralları doğrudan yerleştirebilirsiniz.

  3.   jge dijo

    Hey, senaryonuz çok iyi analiz ediliyor… Kullanıcılarımdan belirli bir web sitesine gelen tüm istekleri nasıl reddedebileceğimi biliyor musunuz?…. ancak bu web sitesinin bir çok sunucusu var….

    1.    brodydalle dijo

      Diğer seçenekleri tavsiye ederim:
      1) DNS'nizde sahte bölge oluşturabilirsiniz ...
      2) acl ile bir proxy yerleştirebilirsiniz
      günah ambargo
      İptables için bunu beğenebilirsiniz ... her zaman en iyi seçenek değildir (daha fazla yol vardır)
      iptables -A INPUT -s blogu.desdelinux.ne -j BIRAK
      iptables -A ÇIKTI -d blogu.desdelinux.net -j BIRAK

      İşe yarayıp yaramadığını söyle

  4.   xavier dijo

    Cevap için teşekkürler, her şey düzeldi. Bağlantı noktasını soruyordum çünkü 7659'u kullanmak beni şaşırttı, çünkü özel bağlantı noktaları 49152'de başlıyor ve bazı hizmetlere veya başka bir şeye müdahale edebilir.
    Her şey için tekrar teşekkürler, bu güzel!

    Selamlar.

  5.   aynen dijo

    BrodyDalle, seninle nasıl iletişime geçebilirim? Senaryonuz çok ilginç.

  6.   Carlos dijo

    Bir önceki satır olan "iptables -A ÇIKTI -o $ extranet -s $ ip -j $ ACTION" kendi makinenizin sahtekarlık yapmasını önlemek için mi? Yoksa zehirli bir paketin girmesi ve o zehirli kaynakla çıkması mümkün mü ve bu yüzden kural ÇIKTI'ya da dahil mi?
    Açıklama için çok teşekkür ederim !!!

  7.   fran dijo

    bu benim iptables betiğim, çok eksiksiz:

    # franes.iptables.airy
    # doc.iptables.airoso: eski ve nft için iptables
    #
    # güvenlik duvarı bağlantı noktası
    #############################
    #! / Bin / bash
    #
    # ekranı temizle
    ############################### /etc/f-iptables/default.cfg |||||
    açık
    # bir satırı boş bırakın
    kaçırmak
    dışa aktar evet = »» hayır = »yankı kapalı»
    # erişime izin vermek için değiştirebileceğiniz değişkenler
    $ yes veya $ no ile değiştirmek için ####################### değişkenler
    ihracat hayexcepciones = »$ no»
    # istisnalar var: istisnai ana bilgisayarlara izin vermek için $ evet ve devre dışı bırakmak için $ hayır
    ihracat samanlığı = »$ no»
    # hayping: Üçüncü taraf ping'lerine izin vermek için $ evet ve reddetmek için $ hayır
    haylogserver dışa aktar = »$ no»
    # haylogeosserver: $ yes tcp günlüğünü tutabilmek için $ hayır tcp günlüğünü tutamamak için
    ######
    ####################### değişkenleri "," ekleyerek veya ":" aralıklarıyla değiştirmek için
    ihracat istisnaları = »baldras.wesnoth.org»
    # istisna, güvenlik duvarından tekli veya çoklu ana makinelere izin verir veya değer yok
    günlük sunucusunu dışa aktar = at, ipp, dict, ssh
    Paketler geldiğinde günlüğe kaydedilen # tcp sunucu bağlantı noktaları
    redserver dışa aktar = 0/0
    # redserver: sunucu bağlantı noktaları için ağ, tercih edilen yerel ağ veya birkaç IP
    ihracat müşterisi kırmızı = 0/0
    # clientnet: tüm ağlar için tercih edilen istemci bağlantı noktaları için ağ
    ihracat servidortcp = atma, ipp, dict, 6771
    # servidortcp: belirtilen tcp sunucu bağlantı noktaları
    dışa aktar serverudp = at
    #udpserver: belirtilen udp sunucusu bağlantı noktaları
    dışa aktarma clientudp = etki alanı, bootpc, bootps, ntp, 20000: 45000
    #udp istemcisi: belirtilen udp istemci bağlantı noktaları
    dışa aktarma clienttcp = etki alanı, http, https, ipp, git, dict, 14999: 15002
    # tcp istemcisi: belirtilen tcp istemci bağlantı noktaları
    ############################## /etc/f-iptables/default.cfg |||||
    ################################# Değiştirilecek değişkenlerin sonu
    güvenlik duvarını dışa aktar = 1 $ değişken = 2 $
    eğer ["$ değişkenler" = "$ NULL"]; sonra kaynak /etc/f-iptables/default.cfg;
    başka kaynak / etc / f-iptables / 2 $; fi
    ################################# veya bir .cfg dosyasıyla değişkenlerin üzerine yazar
    #################################################### ###########################################
    güvenlik duvarını dışa aktar = 1 dolar dışa aktarma değişkenleri = 2 dolar
    ############################################ otomatik sistem değişkenleri
    eğer ["$ güvenlik duvarı" = "bağlantı kesildi"]; sonra yankı GÜVENLİK DUVARI BAĞLANTISI KESİLDİ;
    export activateserver = »$ hayır» activateclient = »$ hayır» ıslak = »$ hayır»;
    elif ["$ firewall" = "istemci"]; sonra GÜVENLİK DUVARI İSTEMCİSİNİ yankılayın;
    export activateserver = »$ hayır» activateclient = »» ıslak = »$ hayır»;
    elif ["$ güvenlik duvarı" = "sunucu"]; sonra yankı GÜVENLİK DUVARI SUNUCUSU;
    export activateserver = »» activateclient = »$ hayır» ıslak = »$ hayır»;
    elif ["$ güvenlik duvarı" = "istemci ve sunucu"]; sonra yankı GÜVENLİK DUVARI İSTEMCİSİ VE SUNUCUSU;
    dışa aktarma etkinleştirme sunucusu = »»; export activateclient = »»; ıslak dışa aktar = »$ no»;
    elif ["$ güvenlik duvarı" = "izin veren"]; sonra echo PERMISSIVE FIREWALL;
    export activateserver = »$ hayır» activateclient = »$ hayır» ıslak = »»;
    başka
    $ check sudo echo iptables-legacy:
    $ check sudo iptables-legacy -v -L INPUT
    $ check sudo iptables-legacy -v -L ÇIKTI
    $ check sudo echo iptables-nft:
    $ check sudo iptables-nft -v -L GİRİŞ
    $ sudo iptables-nft -v -L ÇIKIŞI kontrol edin
    echo _____parameters____ $ 0 $ 1 $ 2
    echo "parametresiz çevrim iptables'ı listelemektir."
    echo "İlk parametre (iptables'ı etkinleştir): bağlantısı kesildi veya istemci veya sunucu veya istemci ve sunucu veya izin verilen."
    echo "İkinci parametre: (isteğe bağlı): default.cfg dosyası /etc/f-iptables/default.cfg'yi seçer"
    echo "Değişken ayarları:" $ (ls / etc / f-iptables /)
    çıkış 0; fi
    ################
    kaçırmak
    echo $ 0 bağlantısı kesilmiş veya istemci veya sunucu veya istemci ve sunucu veya izin verilen veya değişkenleri veya iptables'ı listelemek için parametre kullanmadan atar.
    echo $ 0 dosyası içinde bazı düzenlenebilir değişkenler içerir.
    ################################### yukarıdaki değişkenler etkinleştirildi
    ##################################
    echo iptables değişkenlerini ayarlama
    yankı ile etkinleştirilen değişkenler
    kaçırmak
    ############################## iptables kuralları
    echo iptables-legacy'yi ayarlama
    sudo / usr / sbin / iptables-eski -t filtresi -F
    sudo / usr / sbin / iptables-eski -t nat -F
    sudo / usr / sbin / iptables-eski -t mangle -F
    sudo / usr / sbin / ip6tables-eski -t filtresi -F
    sudo / usr / sbin / ip6tables-eski -t nat -F
    sudo / usr / sbin / ip6tables-eski -t mangle -F
    sudo / usr / sbin / ip6tables-eski -Bir GİRİŞ -j DAMLA
    sudo / usr / sbin / ip6tables-eski -A ÇIKTI -j DAMLA
    sudo / usr / sbin / ip6tables-eski -BİR İLERİ -j DAMLA
    sudo / usr / sbin / iptables-eski -A GİRİŞ -s 127.0.0.1 -d 127.0.0.1 -j KABUL> / dev / null
    $ haylogserver sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
    $ istisnalar var sudo / usr / sbin / iptables-legacy -A INPUT -s $ istisnalar -j ACCEPT> / dev / null
    $ activ server sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activ server sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –sports $ clientudp -m state –state kurulu -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –sports $ clienttcp -m durum –state kurulu -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-legacy -A GİRİŞ -p icmp –icmp-tipi echo-cevap -j KABUL> / dev / null
    sudo / usr / sbin / iptables-eski -Bir GİRİŞ -j DAMLA> / dev / null
    sudo / usr / sbin / iptables-eski -A ÇIKIŞ -s 127.0.0.1 -d 127.0.0.1 -j KABUL> / dev / null
    $ hayeexceptions sudo / usr / sbin / iptables-eski -A ÇIKTI -d $ istisnalar -j KABUL> / dev / null
    $ activ sudo server / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activ server sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-legacy -A ÇIKIŞ -p icmp –icmp-türü echo-istek -j KABUL> / dev / null
    sudo / usr / sbin / iptables-eski -A ÇIKTI -j DAMLA
    sudo / usr / sbin / iptables-eski -BİR İLERİ -j DAMLA
    echo iptables-legacy etkin
    kaçırmak
    echo iptables-nft ayarı
    sudo / usr / sbin / iptables-nft -t filtresi -F
    sudo / usr / sbin / iptables-nft -t nat -F
    sudo / usr / sbin / iptables-nft -t karıştırmak -F
    sudo / usr / sbin / ip6tables-nft -t filtresi -F
    sudo / usr / sbin / ip6tables-nft -t nat -F
    sudo / usr / sbin / ip6tables-nft -t karıştırmak -F
    sudo / usr / sbin / ip6tables-nft -A GİRİŞ -j DAMLA
    sudo / usr / sbin / ip6tables-nft -A ÇIKTI -j DAMLA
    sudo / usr / sbin / ip6tables-nft -A İLERİ -j DAMLA
    sudo / usr / sbin / iptables-nft -A GİRİŞ -s 127.0.0.1 -d 127.0.0.1 -j KABUL> / dev / null
    $ haylogserver sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
    $ hayeexceptions sudo / usr / sbin / iptables-nft -A INPUT -s $ istisnalar -j KABUL> / dev / null
    $ activ server sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activ server sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –dports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –sports $ clientudp -m durum –state kurulu -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –sports $ clienttcp -m durum –state kurulu -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-type echo-response -j KABUL> / dev / null
    sudo / usr / sbin / iptables-nft -A GİRİŞ -j DAMLA> / dev / null
    sudo / usr / sbin / iptables-nft -A ÇIKIŞ -s 127.0.0.1 -d 127.0.0.1 -j KABUL> / dev / null
    $ istisnalar var sudo / usr / sbin / iptables-nft -A OUTPUT -d $ istisnalar -j ACCEPT> / dev / null
    $ activ server sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activ server sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –sports $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –dports $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-nft -A ÇIKIŞ -p icmp –icmp-türü echo-istek -j KABUL> / dev / null
    sudo / usr / sbin / iptables-nft -A ÇIKTI -j DAMLA
    sudo / usr / sbin / iptables-nft -A İLERİ -j DAMLA
    echo iptables-nft etkin
    kaçırmak
    $ ıslak sudo / usr / sbin / iptables-legacy -F> / dev / null
    $ ıslak sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j KABUL> / dev / null
    $ ıslak sudo / usr / sbin / iptables-eski -Bir GİRİŞ -m durum-durum kuruldu -j KABUL> / dev / null
    $ ıslak sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
    $ ıslak sudo / usr / sbin / iptables-legacy -A ÇIKTI -j KABUL> / dev / null
    $ ıslak sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP> / dev / null
    $ ıslak sudo / usr / sbin / iptables-nft -F> / dev / null
    $ ıslak sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j KABUL> / dev / null
    $ ıslak sudo / usr / sbin / iptables-nft -A GİRİŞ -m durum-durum kuruldu -j KABUL> / dev / null
    $ ıslak sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
    $ ıslak sudo / usr / sbin / iptables-nft -A ÇIKTI -j KABUL> / dev / null
    $ ıslak sudo / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
    ############################
    echo 0 $ 1 $ 2 $ attınız
    # komut dosyasından çıkar
    çıkış 0

  8.   louis duran dijo

    Bu güvenlik duvarı bunu ağ geçidim için kullansaydı ve LAN içinde bir mürekkep balığı olsaydı nasıl kural koyardım ???