Naudodami šį paprastą scenarijų, sukurkite savo ugniasienę naudodami „iptables“

Aš praleidau šiek tiek laiko galvodamas apie du dalykus apie šį „iptables“: dauguma tų, kurie ieško šių vadovėlių, yra pradedantieji, antra, daugelis jau ieško kažko gana paprasto ir jau parengto.

Šis pavyzdys skirtas žiniatinklio serveriui, bet galite lengvai pridėti daugiau taisyklių ir pritaikyti ją savo poreikiams.

Kai pamatysite „x“ pakeitimą savo ip


#!/bin/bash

#Nuvalome „iptables“ lenteles -F iptables -X # Mes išvalome NAT iptables -t nat -F iptables -t nat -X # mangle lentelę tokiems dalykams kaip PPPoE, PPP ir ATM iptables -t mangle -F iptables -t mangle -X # Politika, manau, kad tai geriausias būdas pradedantiesiems ir # vis dar neblogas, aš paaiškinsiu visus išvestį (išvestį), nes jie yra išeinantys ryšiai #, įvestis mes viską atmetame ir nė vienas serveris neturėtų persiųsti. „iptables“ -P INPUT DROP „iptables“ -P IŠĖJIMO PRIĖMIMAS „iptables“ -P FORWARD DROP #Intranet LAN intranetas = eth0 #Extranet wan ekstranetas = eth1 # Išlaikyti būseną. Viskas, kas jau yra prijungta (nustatyta), paliekama kaip šie „iptables“ - „INPUT“ - „m“ būsena - būsena ĮSTATYTA, SUSIJED - j ACCEPT # Loop įrenginys. „iptables“ -A INPUT -i lo -j ACCEPT # http, https, sąsajos nenurodome, nes # mes norime, kad tai būtų visi „iptables“ -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh tik viduje ir iš šio „ipptables“ diapazono -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranetas --port 7659 -j ACCEPT # stebėjimas, pavyzdžiui, jei jie turi zabbix arba kai kurie kiti „snmp“ paslaugos „iptables“ -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranetas --port 10050 -j ACCEPT # icmp, gerai, jei ping, tai priklauso nuo jūsų „iptables“ -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql with postgres is port 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh, jei norite išsiųsti laišką # iptables -A IŠĖJIMAS -p tcp --portas 25 -j PRIIMTI # Anti-SPOOFING 09-07-2014 # SERVER_IP = "190.xxx" # serverio IP - tikrasis jūsų serverio IP LAN_RANGE = "192.168.xx / 21 "# Jūsų tinklo LAN # diapazonas ar jūsų IP # IP, kurie niekada neturėtų patekti į ekstranetąyra naudoti šiek tiek # logikos, jei turime vien tik WAN sąsają, ji niekada neturėtų įvesti # LAN tipo srauto per tą sąsają. 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 "# Numatytasis veiksmas - turi būti atliekamas, kai kuri nors taisyklė atitinka ACTION =" DROP "# Paketai su tuo pačiu mano serverio IP per wan iptables -A ĮVADAS -i $ ekstranetas -s $ SERVER_IP -j $ ACTION # iptables -A IŠĖJIMAS -o $ ekstranetas -S $ SERVER_IP -j $ ACTION # Paketai su LAN diapazonu wan, aš tai išdėstiau taip, jei turite # bet kurį konkretų tinklą, tačiau tai yra nereikalinga, kai viduje yra ši # taisyklė ciklas „for“ iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Visų SPOOF tinklų neleidžia wan ip $ SPOOF_IPS daro „iptables“ -A ĮVADAS -i $ ekstranetas -s $ ip -j $ ACTION „iptables“ -A IŠĖJIMAS -o $ ekstranetas -s $ ip -j $ VEIKSMAS atliktas

Kaip visada laukiu jūsų komentarų, stebėkite šį tinklaraštį, dėkoju


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   HO2Gi sakė

    Tai padeda man toliau mokytis dar šiek tiek padėkų, nukopijuotų.

    1.    brodydalle sakė

      esate laukiami, malonu jums padėti

  2.   Xavier sakė

    Aš labai atsiprašau, bet turiu du klausimus (ir vieną dovanų 😉):

    Ar atvyktumėte su šia konfigūracija, kad paleistumėte „Apache“ ir uždarytumėte likusius, išskyrus SSH?

    # Mes valome stalus
    iptables-F
    iptables-X

    Mes išvalome NAT

    „iptables -t nat -F“
    „iptables -t nat -X“

    „iptables“ -A ĮVADAS -p tcp –portas 80 -j PRIIMTI

    ssh tik viduje ir iš šio ip asortimento

    „iptables“ -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranetas –port 7659 -j PRIIMTI

    Antras klausimas: ar šiame pavyzdyje SSH naudojamas prievadas 7659?

    Ir trečia ir paskutinė: kuriame faile turėtų būti išsaugota ši konfigūracija?

    Labai ačiū už pamoką, gaila, kad esate toks naujokas ir negalite tuo gerai pasinaudoti.

    1.    brodydalle sakė

      tai yra taisyklė, kurios jums reikia „http“ iš „apache“
      „iptables“ -A ĮVADAS -p tcp –portas 80 -j PRIIMTI

      bet taip pat turite deklaruoti numatytąją metimo politiką (ji yra scenarijuje)
      „iptables“ -P INPUT DROP
      „iptables“ -P IŠĖJIMO PRIIMIMAS
      „iptables“ -P FORWARD DROP

      ir tai, nes jei esate nutolęs, tai jus išmes.
      „iptables“ -A INPUT -m būsena – valstija NUSTATYTA, SUSIJUSI -j PRIIMTI

      jei pavyzdyje 7659 yra to ssh prievadas, pagal nutylėjimą jis yra 22, nors aš rekomenduoju jums pakeisti prievadą "nėra gerai žinomas"
      vyras, aš nežinau, kaip norite ... firewall.sh ir įdėjote jį į rc.local (sh firewall.sh), kad jis veiktų automatiškai, tai priklauso nuo to, kokią operacinę sistemą turite, yra failų, kuriuose jūs gali tiesiogiai pateikti taisykles.

  3.   jge sakė

    Ei, jūsų scenarijus yra labai geras, jį analizuodami ... Ar žinote, kaip galėčiau atmesti visas mano vartotojų užklausas konkrečiai svetainei? bet šioje svetainėje yra daugybė serverių ...

    1.    brodydalle sakė

      Aš rekomenduoju kitas parinktis:
      1) Galite sukurti netikrą zoną savo DNS ...
      2) Galite įdėti tarpinį serverį naudodami acl
      nuodėmės embargas
      „Iptables“ galite tai pamėgti ... tai ne visada geriausias pasirinkimas (yra ir daugiau būdų)
      iptables -A INPUT -s dienoraštis.desdelinux.ne -j LAŠAS
      iptables -A OUTPUT -d dienoraštis.desdelinux.net -j DROP

      Pasakyk, ar pavyko

  4.   Xavier sakė

    Ačiū už atsakymą, viskas išaiškėjo. Klausiau apie uostą, nes nustebau naudodamas 7659, nes privatūs uostai prasideda nuo 49152, ir tai gali trukdyti kokiai nors paslaugai ar pan.
    Vėlgi, ačiū už viską, tai malonu!

    Sveikinimai.

  5.   sic sakė

    BrodyDalle, kaip galėčiau susisiekti su jumis? Labai įdomus tavo scenarijus.

  6.   Carlos sakė

    Prieš paskutinę eilutę „iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION“ siekiama užkirsti kelią jūsų pačių mašinai sukčiauti? O gal įmanoma, kad koks nors užnuodytas pakelis patenka ir gali išeiti su tuo apsinuodijusiu šaltiniu, todėl taisyklė taip pat įtraukta į OUTPUT?
    Labai ačiū už paaiškinimą !!!

  7.   fran sakė

    tai yra mano paties „iptables“ scenarijus, jis yra labai išsamus:

    # franes.iptables.airy
    # doc.iptables.airoso: iptables seniems ir nft
    #
    # ugniasienės prievadų
    ##############################
    #! / bin / bash
    #
    # išvalykite ekraną
    ################################ /etc/f-iptables/default.cfg ||||| pradžia
    aiškus
    # palikite eilutę tuščią
    praleisti
    eksportuoti taip = »» ne = »aidas išjungtas»
    # kintamieji, kuriuos galite pakeisti, kad leistumėte prieigą
    ####################### kintamieji, kuriuos reikia modifikuoti naudojant $ taip arba $ ne
    eksportuoti hayexcepciones = »$ ne»
    # yra išimčių: $ taip, kad leistų išskirtiniams kompiuteriams, o $ ne - išjungti
    eksportuoti šienavimą = »$ ne»
    # šienavimas: $ taip, kad trečiosios šalys galėtų pinguoti, o $ ne - paneigti
    eksportuoti „Haylogserver“ = »$ ne»
    # haylogeosserver: $ taip, kad galėtumėte prisijungti tcp $ ne, kad negalėtumėte prisijungti tcp
    ######
    ####################### kintamieji, norint pakeisti pridedant «,» arba su diapazonais «:»
    eksporto išimtys = »baldras.wesnoth.org»
    # išimtis leidžia vieną ar kelis pagrindinius kompiuterius iš užkardos arba neturi vertės
    eksportuoti žurnalų serverį = išmesti, ipp, dict, ssh
    # tcp serverio prievadai, kurie užregistruojami, kai įeina paketai
    eksportuoti redserver = 0/0
    # redserver: tinklas, skirtas serverių prievadams, pageidautinas vietinis tinklas arba keli IP
    eksportuoti klientą raudona = 0/0
    #clientnet: kliento prievadų tinklas, tinkamesnis už visus tinklus
    eksportuoti servidortcp = išmesti, ipp, dict, 6771
    # servidortcp: nurodyti TCP serverio prievadai
    eksportuoti serverudp = išmesti
    #udpserver: nurodyti udp serverio prievadai
    eksportuoti klientudp = domain, bootpc, bootps, ntp, 20000: 45000
    #udp klientas: nurodyti udp kliento prievadai
    eksportuoti klientą TCP = domenas, http, https, ipp, git, dict, 14999: 15002
    # tcp klientas: nurodyti TCP kliento prievadai
    ############################### /etc/f-iptables/default.cfg ||||| pabaiga
    ################################# kintamųjų pabaiga keisti
    eksportuoti užkardą = $ 1 kintamieji = $ 2
    jei ["$ kintamieji" = "$ NULL"]; tada šaltinis /etc/f-iptables/default.cfg;
    else source / etc / f-iptables / $ 2; fi
    ################################## arba perrašys kintamuosius .cfg failu
    ######################################################## #########################################################
    eksporto užkarda = $ 1 eksporto kintamieji = $ 2
    ############################################## automatinių sistemos kintamųjų
    jei ["$ firewall" = "atjungtas"]; tada aidi Ugniasienė atjungta;
    eksportas aktyvuoja serverį = »$ no» activateclient = »$ no» wet = »$ no»;
    elif ["$ firewall" = "klientas"]; tada aidi Ugniasienės klientas;
    eksportuoti aktyvuoja serverį = »$ no» activateclient = »» wet = »$ no»;
    elif ["$ firewall" = "serveris"]; tada aidi Ugniasienės serveris;
    eksportuoti aktyvuoja serverį = »» activateclient = »$ no» wet = »$ no»;
    elif ["$ firewall" = "klientas ir serveris"]; tada aidi Ugniasienės klientas ir serveris;
    eksportuoti aktyvuoti serverį = »»; eksporto aktyvinimas = »»; eksportas šlapias = »$ ne»;
    elif ["$ firewall" = "leidžiantis"]; tada aidi leistina ugniasienė;
    eksportas aktyvuoja serverį = »$ no» activateclient = »$ no» wet = »»;
    kitas
    $ check sudo echo iptables-legacy:
    $ check sudo iptables-legacy -v -L INPUT
    $ check sudo iptables-legacy -v -L OUTPUT
    $ check sudo echo iptables-nft:
    $ check sudo iptables-nft -v -L INPUT
    $ check sudo iptables-nft -v -L IŠĖJIMAS
    aidas _____parametrai____ $ 0 $ 1 $ 2
    echo "perduoti be parametrų yra iptables sąrašas".
    echo "Pirmasis parametras (įgalinti" iptables "): atjungtas arba klientas arba serveris, arba klientas ir serveris arba leistinas."
    echo "Antrasis parametras: (neprivaloma): failas default.cfg pasirenka /etc/f-iptables/default.cfg"
    echo "Kintamieji nustatymai:" $ (ls / etc / f-iptables /)
    išėjimas 0; fi
    #################
    praleisti
    echo Meta $ 0 atjungtas arba klientas, arba serveris, arba klientas ir serveris, arba leistini ar kintamieji, arba nenaudojant parametro „iptables“.
    echo $ 0 faile yra keletas redaguojamų kintamųjų.
    ################################ #
    ###################################
    aidas nustatydamas „iptables“ kintamuosius
    echo aktyvuoti kintamieji
    praleisti
    ############################## „iptables“ taisyklės
    aidas „iptables-legacy“ nustatymas
    sudo / usr / sbin / iptables-legacy -t filtras -F
    sudo / usr / sbin / iptables-legacy -t nat -F
    sudo / usr / sbin / iptables-legacy -t mangle -F
    sudo / usr / sbin / ip6tables-legacy -t filter -F
    sudo / usr / sbin / ip6tables-legacy -t nat -F
    sudo / usr / sbin / ip6tables-legacy -t mangle -F
    sudo / usr / sbin / ip6tables-legacy -A ĮVADAS -j DROP
    sudo / usr / sbin / ip6tables-legacy -A IŠĖJIMAS -j DROP
    sudo / usr / sbin / ip6tables-legacy -A PIRMAS -j DROP
    sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ haylogserver sudo / usr / sbin / iptables-legacy -A ĮVADAS -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
    $ hayeexceptions sudo / usr / sbin / iptables-legacy -A INPUT -s $ išimtys -j ACCEPT> / dev / null
    $ aktyvuoti sudo serverį / 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 –sportai $ clientudp -m būsena – valstybė įsteigta -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –sports $ clienttcp -m state-state-state set -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp tipo echo-response -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-legacy -A Įvestis -j DROP> / dev / null
    sudo / usr / sbin / iptables-legacy -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ hayeexceptions sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ išimtys -j ACCEPT> / dev / null
    $ activ server sudo / 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 OUTPUT -p icmp –icmp tipo echo-request -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-legacy -A IŠĖJIMAS -j DROP
    sudo / usr / sbin / iptables-legacy -A PIRMAS -j DROP
    „echo iptables-legacy“ įgalinta
    praleisti
    aidas „iptables-nft“ nustatymas
    sudo / usr / sbin / iptables-nft -t filtras -F
    sudo / usr / sbin / iptables-nft -t nat -F
    sudo / usr / sbin / iptables-nft -t mangle -F
    sudo / usr / sbin / ip6tables-nft -t filtras -F
    sudo / usr / sbin / ip6tables-nft -t nat -F
    sudo / usr / sbin / ip6tables-nft -t mangle -F
    sudo / usr / sbin / ip6tables-nft -A ĮVADAS -j DROP
    sudo / usr / sbin / ip6tables-nft -A IŠĖJIMAS -j DROP
    sudo / usr / sbin / ip6tables-nft -A FORWARD -j DROP
    sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ haylogserver sudo / usr / sbin / iptables-nft -A Įvestis -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
    $ hayeexceptions sudo / usr / sbin / iptables-nft -A INPUT -s $ išimtys -j ACCEPT> / 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 state –state nustatytas -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A ĮVADAS -p tcp -m multiport –portai $ clienttcp -m būsena – valstybe nustatyta -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp tipo echo-response -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-nft -A ĮVADAS -j DROP> / dev / null
    sudo / usr / sbin / iptables-nft -A IŠĖJIMAS -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ hayeexceptions sudo / usr / sbin / iptables-nft -A OUTPUT -d $ išimtys -j ACCEPT> / dev / null
    $ aktyvuoti sudo serverį / 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 OUTPUT -p icmp –icmp tipo echo-request -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-nft -A IŠĖJIMAS -j DROP
    sudo / usr / sbin / iptables-nft -A PIRMAS -j DROP
    echo iptables-nft įjungtas
    praleisti
    $ wet sudo / usr / sbin / iptables-legacy -F> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A INPUT -m būsena – valstybė nustatyta -j ACCEPT> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A Įvestis -j DROP> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A OUTPUT -j ACCEPT> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -F> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -A ĮVADAS -m būsena –visa nustatyta -j ACCEPT> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -A ĮVADAS -j DROP> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -A OUTPUT -j ACCEPT> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
    ##############################
    aidas, kurį įmetėte $ 0 $ 1 $ 2
    # išeina iš scenarijaus
    0 išėjimas

  8.   Luisas Duranas sakė

    Kaip aš galėčiau nustatyti taisyklę, jei ši užkarda naudojo ją mano vartams ir turėjo kalmarą LAN viduje ???