Lumikha ng iyong sariling firewall gamit ang mga iptable gamit ang simpleng script na ito

Nag-iisip ako tungkol sa dalawang bagay tungkol sa mga iptable nang ilang sandali: karamihan sa mga naghahanap ng mga tutorial na ito ay mga nagsisimula at pangalawa, marami na ang naghahanap ng isang bagay na medyo simple at naipalabas na.

Ang halimbawang ito ay para sa isang web server, ngunit madali kang makakapagdagdag ng maraming mga panuntunan at maiakma ito sa iyong mga pangangailangan.

Kapag nakita mong nagbago ang "x" para sa iyong mga ip


#!/bin/bash

# Nililinis namin ang mga talahanayan ng iptable -F iptables -X # Nililinis namin ang mga NAT iptable -t nat -F iptables -t nat -X # mangle table para sa mga bagay tulad ng PPPoE, PPP, at ATM iptables -t mangle -F iptables -t mangle -X # Mga Patakaran Sa palagay ko ito ang pinakamahusay na paraan para sa mga nagsisimula at # hindi pa rin masama, ipapaliwanag ko ang output lahat dahil ang mga ito ay papalabas na koneksyon #, input itinapon namin ang lahat, at walang server ang dapat na magpasa. iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Panatilihin ang estado. Lahat ng nakakonekta na (naitatag) ay naiwan tulad nito: iptables -A INPUT -m estado --stado Naitaguyod, KAUGNAYAN -j TANGGAPIN # Loop aparato. iptables -A INPUT -i lo -j ACCEPT # http, https, hindi namin tinukoy ang interface dahil # nais naming maging lahat ng iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh lamang sa loob at mula sa saklaw na ito ng mga iptable ng ip -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACCEPT # pagsubaybay halimbawa kung mayroon silang zabbix o ilang iba pa snmp service iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp, ping well nasa sa iyo iptables -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql na may postgres ay port 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh kung nais mong magpadala ng ilang mail #iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # server IP - ang tunay na wan ip ng iyong server LAN_RANGE = "192.168.xx / 21" # LAN range ng iyong network o iyong vlan # Ip na hindi dapat ipasok sa extranet,ay ang paggamit ng kaunting # lohika kung mayroon kaming isang pulos WAN na interface hindi ito dapat magpasok ng # LAN type na trapiko sa pamamagitan ng interface na 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 "# Default na aksyon - upang maisagawa kapag tumugma ang anumang panuntunan sa ACTION =" DROP "# Mga Packet na may parehong ip ng aking server sa pamamagitan ng wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # Mga packet na may LAN Range para sa wan, inilagay ko ito tulad nito kung sakaling mayroon kang # anumang partikular na network, ngunit ito ay kalabisan ng sumusunod na # panuntunan sa loob ng loop " para sa "iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Lahat ng SPOOF Networks ay hindi pinapayagan ng wan para ip sa $ SPOOF_IPS gawin ang mga iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION tapos na

Tulad ng lagi kong hinihintay ang iyong mga komento, manatiling nakasubaybay sa blog na ito, Salamat


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   HO2Gi dijo

    Nakatutulong ito sa akin na magpatuloy sa pag-aaral ng kaunti pa salamat nakopya.

    1.    brodydalle dijo

      maligayang pagdating, natutuwa na makatulong

  2.   Xavier dijo

    Humihingi ako ng paumanhin, ngunit mayroon akong dalawang mga katanungan (at isang regalo 😉):

    Darating ka ba kasama ang pagsasaayos na ito upang mapatakbo ang Apache at isara ang natitira maliban sa SSH?

    #Linis namin ang mga mesa
    iptables -F
    iptables -X

    Nililinis natin ang NAT

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

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

    sa loob lamang ng ssh at mula sa saklaw na ito ng ip's

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

    Pangalawang tanong: 7659 ba ang port na ginamit sa SSH sa halimbawang ito?

    At pangatlo at huli: sa aling file dapat i-save ang pagsasaayos na ito?

    Maraming salamat sa tutorial, nakakahiya na ikaw ay isang baguhan at hindi maaaring samantalahin ito nang maayos.

    1.    brodydalle dijo

      ito ang panuntunang kailangan mo para sa http mula sa apache
      iptables -A INPUT -p tcp –dport 80 -j TANGGAPIN

      ngunit kailangan mo ring ideklara ang mga drop default na patakaran (nasa script ito)
      iptables -P INPUT DROP
      iptables -P OUTPUT ACCEPT
      iptables -P FORWARD DROP

      at ito dahil kung malayo ka, itatapon ka nito.
      iptables -A INPUT-estado ng estado -state ESTABLISHED, RELATED -j ACCEPT

      kung 7659 ang port ng ssh na iyon sa halimbawa, sa pamamagitan ng default ito ay 22, bagaman inirerekumenda kong palitan ang isang port na "hindi kilala"
      Man, hindi ko alam, tulad ng gusto mo ... firewall.sh at inilalagay mo ito sa rc.local (sh firewall.sh) upang awtomatiko itong tumatakbo, depende sa kung anong operating system ang mayroon ka, may mga file kung saan maaari mong ilagay ang mga patakaran nang direkta.

  3.   jge dijo

    Hey, ang iyong script ay napakahusay, pinag-aaralan ito .... Alam mo ba kung paano ko tatanggihan ang lahat ng mga kahilingan mula sa aking mga gumagamit sa isang tukoy na website?…. ngunit ang website na ito ay may maraming mga server ....

    1.    brodydalle dijo

      Inirerekumenda ko ang iba pang mga pagpipilian:
      1) Maaari kang lumikha ng isang pekeng zone sa iyong dns ...
      2) Maaari kang maglagay ng isang proxy na may acl
      kasalanan
      Para sa mga iptable maaari mo itong magustuhan ... hindi palaging ito ang pinakamahusay na pagpipilian (maraming mga paraan)
      iptables -Isang INPUT -s blog.desdelinux.ne -j DROP
      iptables -Isang OUTPUT -d blog.desdelinux.net -j DROP

      Sabihin mo sa akin kung gumana ito

  4.   Xavier dijo

    Salamat sa sagot, ang lahat ay nalinis. Nagtatanong ako tungkol sa port dahil nagulat ako na gumamit ng 7659, dahil ang mga pribadong port ay nagsisimula sa 49152, at maaaring makagambala sa ilang serbisyo o kung ano man.
    Muli, salamat sa lahat, ang ganda!

    Pagbati.

  5.   tama dijo

    BrodyDalle, paano ako makikipag-ugnay sa iyo? Napakainteresado ng iyong iskrip.

  6.   Carlos dijo

    Ang bago huling linya na "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" ay upang maiwasan ang iyong sariling makina mula sa panloloko? O posible na ang ilang mga lason na packet ay pumapasok at maaaring umalis kasama ang lason na mapagkukunan at iyon ang dahilan kung bakit ang patakaran ay kasama rin sa OUTPUT?
    Maraming salamat sa paglilinaw !!!

  7.   fran dijo

    ito ang aking sariling iptables script, ito ay napaka kumpleto:

    # franes.iptables.airy
    # doc.iptables.airoso: iptables para sa legacy at para sa nft
    #
    # mga port sa firewall
    ####
    #! / bin / bash
    #
    # i-clear ang screen
    ###ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo simula ng /etc/f-iptables/default.cfg ||
    limasin
    # iwanang blangko ang isang linya
    miss
    i-export ang oo = »» hindi = »echo off»
    # ang mga variable na maaari mong baguhin upang payagan ang pag-access
    ###umdalo ang mga variable upang mabago nang may $ oo o $ hindi
    i-export ang hayexcepciones = »$ no»
    # may mga pagbubukod: $ oo upang payagan ang mga pambihirang host at $ no na hindi paganahin
    i-export ang hayping = »$ no»
    # hayping: $ oo upang payagan ang mga third party na ping at $ no na tanggihan
    i-export ang haylogserver = »$ no»
    # haylogeosserver: $ oo upang makapag-log tcp $ no upang hindi makapag-log tcp
    ######
    ###umdalo ang mga variable upang mabago sa pamamagitan ng pagdaragdag ng "," o may mga saklaw na ":"
    mga eksepsyon sa pag-export = »baldras.wesnoth.org»
    Pinapayagan ng # na pagbubukod ang solong o maraming host mula sa firewall o walang halaga
    export logserver = itapon, ipp, dict, ssh
    # tcp server ports na naka-log kapag pumasok ang mga packet
    i-export ang redserver = 0/0
    # redserver: ang network para sa mga port ng server na lalong kanais-nais na lokal na network o maraming mga ip
    i-export ang client pula = 0/0
    #clientnet: ang network para sa mga port ng kliyente na mas gusto sa lahat ng mga network
    i-export ang servidortcp = itapon, ipp, dict, 6771
    # servidortcp: ang tinukoy na mga port ng server ng tcp
    i-export ang serverudp = itapon
    #udpserver: ang tinukoy na mga port ng udp server
    i-export ang clientudp = domain, bootpc, bootps, ntp, 20000: 45000
    #udp client: ang tinukoy na mga port ng udp client
    i-export ang clienttcp = domain, http, https, ipp, git, dict, 14999: 15002
    # tcp client: ang tinukoy na mga port ng client ng tcp
    ###oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo end of /etc/f-iptables/default.cfg ||
    ###oooooooooooooooo
    i-export ang firewall = $ 1 na mga variable = $ 2
    kung ["$ variable" = "$ NULL"]; pagkatapos ay mapagkukunan /etc/f-iptables/default.cfg;
    iba ang mapagkukunan / etc / f-iptables / $ 2; fi
    ###oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo o i-o-overlap ang mga variable na may isang .cfg file
    ###Oooooooooooooooo ####
    i-export ang firewall = $ 1 na mga variable sa pag-export = $ 2
    ###oooooooooooooooo
    kung ["$ firewall" = "naka-disconnect"]; pagkatapos ay echo FIREWALL DISCONNECT;
    export activateserver = »$ no» activateclient = »$ no» wet = »$ no»;
    elif ["$ firewall" = "client"]; pagkatapos ay echo FIREWALL CLIENT;
    export activateserver = »$ no» activateclient = »» wet = »$ no»;
    elif ["$ firewall" = "server"]; pagkatapos ay echo FIREWALL SERVER;
    export activateserver = »» activateclient = »$ no» wet = »$ no»;
    elif ["$ firewall" = "client and server"]; pagkatapos echo FIREWALL CLIENT AND SERVER;
    i-export ang aktibo sa server = »»; i-export ang activateclient = »»; export wet = »$ no»;
    elif ["$ firewall" = "permissive"]; pagkatapos ay i-echo ang PERMISSIVE FIREWALL;
    export activateserver = »$ no» activateclient = »$ no» wet = »»;
    iba
    $ 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 OUTPUT
    echo _____parameter____ $ 0 $ 1 $ 2
    echo "cast nang walang mga parameter ay upang ilista ang mga iptable."
    echo "Ang unang parameter (paganahin ang mga iptable): naka-disconnect o client o server o client at server o pinahintulutan."
    echo "Ang pangalawang parameter: (opsyonal): pipiliin ng default .cfg file /etc/f-iptables/default.cfg"
    echo "Mga setting ng variable:" $ (ls / etc / f-iptables /)
    exit 0; fi
    ####
    miss
    echo Throws $ 0 na nakadugtong o client o server o client at server o pinahintulutan o variable o nang hindi gumagamit ng parameter upang ilista ang mga iptable.
    echo Ang file na $ 0 ay naglalaman ng ilang nai-e-edit na mga variable sa loob.
    ###oooooooooooooooo
    ####
    echo setting ng mga variable na iptable
    mga variable na naaktibo ang echo
    miss
    ####
    echo Pagtatakda ng iptables-legacy
    sudo / usr / sbin / iptables-legacy -t filter -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 INPUT -j DROP
    sudo / usr / sbin / ip6tables-legacy -A OUTPUT -j DROP
    sudo / usr / sbin / ip6tables-legacy -A FORWARD -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 INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
    $ hayeexceptions sudo / usr / sbin / iptables-legacy -A INPUT -s $ mga pagbubukod -j ACCEPT> / dev / null
    $ buhayin ang server sudo / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ buhayin ang 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 na itinatag -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 itinatag -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp-type echo-reply -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
    $ hayexceptions sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ mga pagbubukod -j ACCEPT> / dev / null
    $ buhayin ang sudo server / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ buhayin ang 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-type echo-request -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-legacy -A OUTPUT -j DROP
    sudo / usr / sbin / iptables-legacy -A FORWARD -j DROP
    pinagana ang echo iptables-legacy
    miss
    echo Ang pagtatakda ng iptables-nft
    sudo / usr / sbin / iptables-nft -t filter -F
    sudo / usr / sbin / iptables-nft -t nat -F
    sudo / usr / sbin / iptables-nft -t mangle -F
    sudo / usr / sbin / ip6tables-nft -t filter -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 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 INPUT -p tcp -m multiport –dports $ logserver -j LOG> / dev / null
    $ hayeexceptions sudo / usr / sbin / iptables-nft -A INPUT -s $ mga pagbubukod -j ACCEPT> / dev / null
    $ buhayin ang server sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ buhayin ang 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 na itinatag -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –sports $ clienttcp -m state –state itinatag -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-type echo-reply -j ACCEPT> / 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 ACCEPT> / dev / null
    $ may mga pagbubukod sudo / usr / sbin / iptables-nft -A OUTPUT -d $ mga pagbubukod -j ACCEPT> / dev / null
    $ buhayin ang server sudo / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ buhayin ang 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-type echo-request -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-nft -A OUTPUT -j DROP
    sudo / usr / sbin / iptables-nft -A FORWARD -j DROP
    pinagana ang echo iptables-nft
    miss
    $ 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 state –state na itinatag -j ACCEPT> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A INPUT -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 INPUT -m state –state na itinatag -j ACCEPT> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -A INPUT -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
    ####
    echo itinapon mo ang $ 0 $ 1 $ 2
    # paglabas ng script
    labasan 0

  8.   louis duran dijo

    Paano ako magtatakda ng isang patakaran kung gagamitin ito ng firewall para sa aking gateway at magkaroon ng isang pusit sa loob ng LAN ???