Krijoni firewall tuaj me iptables duke përdorur këtë skenar të thjeshtë

Kam kaluar ca kohë duke menduar për dy gjëra në lidhje me iptables: shumica e atyre që janë duke kërkuar për këto mësime janë fillestarë dhe së dyti, shumë prej tyre tashmë janë duke kërkuar diçka mjaft të thjeshtë dhe të përpunuar tashmë.

Ky shembull është për një server në internet, por lehtë mund të shtoni më shumë rregulla dhe ta përshtatni atë me nevojat tuaja.

Kur shihni "x" të ndryshojë për ip-et tuaja


#!/bin/bash

# Ne pastrojmë tabelat e iptables -F iptables -X # Ne pastrojmë iptables NAT -t nat -F iptables -t nat -X # tavolinë mangle për gjëra të tilla si PPPoE, PPP dhe ATM iptables -t manipulim -F iptables -t manipulim -X # Politikat Unë mendoj se kjo është mënyra më e mirë për fillestarët dhe # ende nuk është e keqe, unë do të shpjegoj prodhimin (daljen) të gjitha sepse ato janë lidhje dalëse #, input ne hedhim gjithçka, dhe asnjë server nuk duhet të përcjellë. iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P P FORRPARA RRONI #Intranet LAN intranet = eth0 # Ekstranet ato ekstranet = eth1 # Mbaj gjendjen. Gjithçka që është e lidhur (e vendosur) tashmë është lënë kështu: iptables -A INPUT -m shtet - shteti I THEMELUAR, I LIDHUR -j PRANIMI # Pajisja me lak. iptables -A INPUT -i lo -j PRANO # http, https, ne nuk e specifikojmë ndërfaqen sepse # duam që të jetë për të gjitha iptables -A INPUT -p tcp --dport 80 -j PRANO iptables -A INPUT -p tcp - dport 443 -j PRANO # ssh vetëm në brendësi dhe nga kjo gamë e iptables të ip -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet - dport 7659 -j PRANO # monitorimin për shembull nëse ata kanë zabbix ose disa iptables të tjera të shërbimit snmp -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp, ping edhe varet nga ju iptabels -A INPUT -p icmp -s 192.168. xx / 24 - i $ intranet -j Pranoj #mysql me postgres është porti 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j PRANO #sendmail bueeeh nëse dëshiron të dërgosh ca postë #iptables -A OUTPUT -p tcp --dport 25 -j PRANOJ # Anti-FSHUFTIM 09/07/2014 # SERVER_IP = "190.xxx" # IP i serverit - ip i vërtetë i serverit tuaj LAN_RANGE = "192.168.xx / 21 "# Gama LAN e rrjetit tuaj ose vlan # Ip tuaj që nuk duhet të hyjnë kurrë në ekstranet,është të përdorim pak nga # logjika nëse kemi një ndërfaqe thjesht WAN ajo kurrë nuk duhet të futë trafik të tipit # LAN përmes asaj ndërfaqeje 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 "# Veprimi i paracaktuar - që duhet të kryhet kur ndonjë rregull përputhet ACTION =" DROP "# Pako me të njëjtën ip të serverit tim përmes iptables wan -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # Paketa me Gama LAN për pakësimin, unë e vë atë kështu në rast se keni # ndonjë rrjet të veçantë, por ky është i tepërt me rregullin e mëposhtëm # lak "për" iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Të gjitha Rrjetet SPOOF nuk lejohen nga wan për ip in $ SPOOF_IPS bëjnë iptable -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION bërë

Si gjithmonë i pres komentet tuaja, qëndroni të lidhur në këtë blog, Faleminderit


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   Ho2gi dijo

    Më ndihmon të vazhdoj të mësoj pak më shumë falënderime të kopjuara.

    1.    brodydalle dijo

      je i mirepritur, i gëzuar që të ndihmoj

  2.   Xavier dijo

    Më vjen vërtet keq, por kam dy pyetje (dhe një si dhuratë 😉):

    A do të arrini me këtë konfigurim që të keni Apache të ekzekutuar dhe të mbyllni pjesën tjetër përveç SSH?

    # Ne pastrojmë tavolina
    iptabilet -F
    iptabilet -X

    Ne pastrojmë NAT

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

    iptables -A INPUT -p tcp –dport 80 -j PRANIMI

    ssh vetëm brenda dhe nga kjo gamë e IP-ve

    iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet –dport 7659 -j PRANIMI

    Pyetja e dytë: A është 7659 porti i përdorur në SSH në këtë shembull?

    Dhe e treta dhe e fundit: në cilën skedar duhet të ruhet kjo konfigurim?

    Faleminderit shumë për tutorialin, është turp që ju jeni një fillestar kaq i ri dhe nuk mund ta përfitoni mirë atë.

    1.    brodydalle dijo

      ky është rregulli që ju nevojitet për http nga apache
      iptables -A INPUT -p tcp –dport 80 -j PRANIMI

      por gjithashtu duhet të deklaroni politikat e parazgjedhura të rënies (është në skenar)
      iptables -P HIKJA E HYRJES
      iptabelët -Pranimi i daljes
      iptables -P P FORRPARA PRORPARA

      dhe kjo sepse nëse je i largët, do të të flakë larg.
      iptables -NI INPUT -m shtet-shtet i themeluar, i lidhur -j PRANIMI

      nëse 7659 është porti i asaj ssh në shembull, si parazgjedhje është 22, megjithëse ju rekomandoj të ndryshoni në një port "jo të njohur"
      Njeri, nuk e di, ashtu siç dëshiron ... firewall.sh dhe e vendos në rc.local (sh firewall.sh) në mënyrë që të funksionojë automatikisht, kjo varet nga sistemi operativ që ke, ka skedarë ku mund të vendosësh rregullat direkt.

  3.   jge dijo

    Eii shumë mirë skenari juaj, duke e analizuar atë .... A e dini se si mund t'i refuzoj të gjitha kërkesat e përdoruesve të mi në një faqe në internet të veçantë?. por kjo faqe në internet ka shumë servera.

    1.    brodydalle dijo

      Unë rekomandoj mundësi të tjera:
      1) Ju mund të krijoni një zonë false në dns tuaj ...
      2) Ju mund të vendosni një proxy me acl
      Megjithatë
      Për iptables ju mund ta pëlqeni këtë ... nuk është gjithmonë opsioni më i mirë (ka më shumë mënyra)
      iptables -A INPUT -s blog.desdelinux.ne -j DROP
      iptables -A OUTPUT -d blog.desdelinux.net -j DROP

      Më thuaj nëse funksionoi

  4.   Xavier dijo

    Faleminderit për përgjigjen, gjithçka u pastrua. Po pyesja për portin sepse isha i befasuar kur përdori 7659, pasi që portet private fillojnë në 49152, dhe kjo mund të ndërhyjë në ndonjë shërbim apo diçka tjetër.
    Përsëri, faleminderit për gjithçka, është bukur!

    Përshëndetje.

  5.   siç dijo

    BrodyDalle, si mund të kontaktoj me ty? Shumë interesante skenari juaj.

  6.   Carlos dijo

    Rreshti para fundit "iptables-A OUTPUT -o $ extranet -s $ ip -j $ ACTION" është të parandaloni mashtrimin e makinës suaj? Apo është e mundur që disa pako të helmuar të hyjnë dhe të mund të dalin me atë burim të helmuar dhe kjo është arsyeja pse rregulli përfshihet edhe me OUTPUT?
    Faleminderit shumë për sqarimin !!!

  7.   fran dijo

    ky është skenari im i iptables, është shumë i plotë:

    # franes.iptables.ajros
    # doc.iptables.airoso: iptables për trashëgiminë dhe për nft
    #
    # portet e firewall-it
    ###############################
    #! / bin / bash
    #
    # pastroni ekranin
    ################################
    qartë
    # lini një vijë të zbrazët
    humbas
    eksport po = »» jo = »jehonë»
    # variablat që mund të ndryshoni për të lejuar hyrjen
    ######################### variablat për të modifikuar me $ po ose $ jo
    eksport hayexcepciones = »$ jo»
    # ka përjashtime: $ po për të lejuar mbajtës të jashtëzakonshëm dhe $ jo për të çaktivizuar
    eksport hayping = »$ jo»
    # hayping: $ po për të lejuar mospagimet e palëve të treta dhe $ jo për të mohuar
    eksport haylogserver = »$ jo»
    # haylogeosserver: $ po për të qenë në gjendje të regjistrojmë tcp $ jo për të mos qenë në gjendje të regjistrohemi tcp
    ######
    ################################################ varia për të ndryshuar duke shtuar "," ose me vargje ":"
    përjashtimet e eksportit = »baldras.wesnoth.org»
    # përjashtime lejojnë hostë të vetëm ose të shumëfishtë nga firewall ose pa vlerë
    eksportues logserver = hidhni, ipp, diktoni, ssh
    # Portet e serverit tcp që regjistrohen kur hyjnë paketat
    eksportues i eksportit të ri = 0/0
    # redserver: rrjeti për portet e serverit preferon rrjetin lokal ose disa ip
    klienti i eksportit i kuq = 0/0
    #clientnet: rrjeti për portet e klientit preferohet nga të gjitha rrjetet
    eksport servidortcp = hidhni, ipp, diktoni, 6771
    # servidortcp: portet e specifikuara të serverit tcp
    eksport serverudp = hidhni
    #udpserver: portet e specifikuara të serverit udp
    eksport klientudp = domen, bootpc, bootps, ntp, 20000: 45000
    #udp klient: portet e specifikuara të klientit udp
    eksport klienttcp = domen, http, https, ipp, git, dikt, 14999: 15002
    # klient tcp: portet e specifikuara të klientit tcp
    ############################################################ ########################
    ################################## fund të ndryshoreve për të modifikuar
    firewall eksport = $ 1 variabla = $ 2
    nëse ["$ variablat" = "$ NULL"]; pastaj burimi /etc/f-iptables/default.cfg;
    tjetër burim / etc / f-iptables / $ 2; fi
    ############################################################DDDD -
    ############################################################################ ##############################################
    firewall eksport = $ 1 variabla eksporti = $ 2
    #################################################
    nëse ["$ firewall" = "i shkëputur"]; pastaj bëj jehonë FIREWALL NDESHKENUAR;
    eksport aktivizues i serverit = »$ jo» aktivizues klient = »$ jo» i lagësht = »$ jo»;
    elif ["$ firewall" = "klienti"]; pastaj jehonë KLIENTI FIREWALL;
    eksport aktivizues i serverit = »$ jo» aktivizues klient = »» i lagësht = »$ jo»;
    elif ["$ firewall" = "server"]; pastaj jehonë SERVERI I ZJARRIT;
    eksport aktivizues i serverit = »» aktivizues i klientit = »$ jo» lagur = »$ jo»;
    elif ["$ firewall" = "klienti dhe serveri"]; pastaj jehonë KLIENTI DHE SERVERI I FIREWALLIT;
    eksport aktivizo server = »»; eksport aktiv aktiv klient = "»; eksport i lagësht = "$ jo";
    elif ["$ firewall" = "lejues"]; pastaj bëj jehonë FIREWALL LEJUES;
    eksport aktivizues i serverit = »$ jo» aktivizues klient = »$ jo» i lagësht = »»;
    tjetër
    $ kontroll sudo echo iptables-trashëgimi:
    $ kontroll sudo iptables-legacy -v -L INPUT
    $ kontroll sudo iptables-trashëgimi -v -L OUTPUT
    $ kontroll sudo echo iptables-nft:
    $ kontroll sudo iptables-nft -v -L INPUT
    $ kontrolloni sudo iptables-nft -v -L NDARJE
    jehona _____ parametra____ $ 0 $ 1 $ 2
    jehona "hedhur pa parametra është të renditësh iptables".
    echo "Parametri i parë (aktivizo iptables): i shkëputur ose klienti ose serveri ose klienti dhe serveri ose lejues."
    echo "Parametri i dytë: (opsional): skedari i paracaktuar .cfg zgjedh /etc/f-iptables/default.cfg"
    echo "Cilësimet e ndryshueshme:" $ (ls / etc / f-iptables /)
    dalja 0; fi
    ##################
    humbas
    echo Hedh $ 0 të shkyçur ose klient ose server, klient ose server dhe server lejues ose variabla ose pa përdorur parametrin për të listuar iptables.
    echo Skedari $ 0 përmban disa variabla të redaktueshëm brenda.
    ####################################
    ####################################
    echo vendosjen e ndryshoreve iptables
    echo ndryshojnë aktivizuar
    humbas
    ############################## rregullat e iptables
    echo Vendosja e iptables-trashëgimisë
    sudo / usr / sbin / iptables-legacy -t filtri -F
    sudo / usr / sbin / iptables-legacy -t nat -F
    sudo / usr / sbin / iptables-legacy -t mangle -F
    filtri sudo / usr / sbin / ip6tables-legacy -t -F
    sudo / usr / sbin / ip6tables-trashëgimi -t nat -F
    sudo / usr / sbin / ip6tables-legacy -t mangle -F
    sudo / usr / sbin / ip6tables-trashëgimi -A INPUT -j DROP
    sudo / usr / sbin / ip6tables-legacy -A OUTPUT -j DROP
    sudo / usr / sbin / ip6tables-trashëgimi -A PWRPARA -j RRONI
    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 INPUT -p tcp -m multiport –dporton $ logserver -j LOG> / dev / null
    $ hayeexcepts sudo / usr / sbin / iptables-legacy -A INPUT -s $ përjashtime -j ACCEPT> / dev / null
    $ aktivizo serverin sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport -dport $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktivizo serverin sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –dporton $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –sport $ $ klientudp -m shtet - shtet i vendosur -s $ klientnet -d $ klientnet -j PRANIM>> dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –sporte $ klienttcp -m shtet - shtet i vendosur - s $ klientnet -d $ klientnet -j PRANIMI> / dev / null
    $ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp-type-icmp-përgjigje -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-legacy -A INPUT -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
    $ hayeexcepts sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ përjashtime -j ACCEPT> / dev / null
    $ aktivizo serverin sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport -sport $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktivizo serverin sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport - sporte $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –dporton $ klientudp -s $ klientnet -d $ klientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A OUTPUT -p tcp -m multiport –dporton $ klienttcp -s $ klientnet -d $ klientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-legacy -A OUTPUT -p icmp-type-ipmp-kërkesë -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-legacy -A OUTPUT -j DROP
    sudo / usr / sbin / iptables-trashëgimi -A PWRPARA -j RRONI
    jehonë iptables-trashëgimi e aktivizuar
    humbas
    echo Vendosja e iptables-nft
    filtri sudo / usr / sbin / iptables-nft -t -F
    sudo / usr / sbin / iptables-nft -t nat -F
    sudo / usr / sbin / iptables-nft -t mangle -F
    filtri sudo / usr / sbin / ip6tables-nft -t -F
    sudo / usr / sbin / ip6tables-nft -t nat -F
    sudo / usr / sbin / ip6tables-nft -t mangle -F
    sudo / usr / sbin / ip6tables-nft -A INPUT -j DROP
    sudo / usr / sbin / ip6tables-nft -A OUTPUT -j DROP
    sudo / usr / sbin / ip6tables-nft -A PWRPARA -j RRONI
    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 INPUT -p tcp -m multiport –dporton $ logserver -j LOG> / dev / null
    $ hayeexcepts sudo / usr / sbin / iptables-nft -A INPUT -s $ përjashtime -j ACCEPT> / dev / null
    $ aktivizo serverin sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dporton $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktivizo serverin sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –dporton $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –sport $ $ klientudp -m shtet - shtet i vendosur - s $ klientnet -d $ klient
    $ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –sporte $ klienttcp -m shtet - shtet i vendosur - s $ klientnet -d $ klient
    $ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp-echo-përgjigje e tipit ipmp -j PRANIM> / dev / null
    sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
    sudo / usr / sbin / iptables-nft -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j PRANIMI> / dev / null
    $ hayeexcepts sudo / usr / sbin / iptables-nft -A OUTPUT -d $ përjashtime -j ACCEPT> / dev / null
    $ aktivizo serverin sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport - sporte $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktivizo serverin sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport - sporte $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –dporton $ klientudp -s $ klientnet -d $ klientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A OUTPUT -p tcp -m multiport –dporton $ klienttcp -s $ klientnet -d $ klientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-nft -A OUTPUT -p icmp-tip i ik-kërkesë-j ACCEPT -j Pranoj> / dev / null
    sudo / usr / sbin / iptables-nft -A OUTPUT -j DROP
    sudo / usr / sbin / iptables-nft -A PWRPARA -j RRONI
    jehonë iptables-nft të aktivizuara
    humbas
    $ sudo i lagësht / usr / sbin / iptables-trashëgimi -F> / dev / null
    $ sudo i lagësht / usr / sbin / iptables-trashëgimi -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j PRANIMI> / dev / null
    $ sudo i lagësht / usr / sbin / iptables-trashëgimi -A INPUT -m shtet-shtet i vendosur -j PRANIM> / dev / null
    $ sudo i lagësht / usr / sbin / iptables-trashëgimi -A INPUT -j DROP> / dev / null
    $ sudo i lagësht / usr / sbin / iptables-trashëgimi -A OUTPUT -j PRANIM> / dev / null
    $ sudo i lagësht / usr / sbin / iptables-trashëgimi -A PWRPARA -j DROP> / dev / null
    $ sudo i lagësht / usr / sbin / iptables-nft -F> / dev / null
    $ sudo i lagësht / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j PRANIMI> / dev / null
    $ sudo i lagësht / usr / sbin / iptables-nft -A INPUT -m shtet-shtet i vendosur -j PRANIM> / dev / null
    $ sudo i lagësht / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
    $ sudo i lagësht / usr / sbin / iptables-nft -A OUTPUT -j PRANIM> / dev / null
    $ sudo i lagësht / usr / sbin / iptables-nft -A PWRPARA -j DROP> / dev / null
    ##############################
    jehonë ju keni hedhur $ 0 $ 1 $ 2
    # del nga skenari
    dalja 0

  8.   Louis Duran dijo

    Si do të vendosja një rregull nëse ky firewall do ta përdorte atë për portën time dhe do të kishte një kallamar brenda LAN-it ???