Luo oma palomuuri iptablesin avulla tällä yksinkertaisella komentosarjalla

Ajattelin kahta asiaa iptablesista jonkin aikaa: suurin osa niistä, jotka etsivät näitä opetusohjelmia, ovat aloittelijoita ja toiseksi monet etsivät jo jotain melko yksinkertaista ja jo kehitettyä.

Tämä esimerkki koskee verkkopalvelinta, mutta voit helposti lisätä lisää sääntöjä ja mukauttaa niitä tarpeisiisi.

Kun näet "x" muutoksen ip: si


#!/bin/bash

#Puhdistamme iptables-taulukot -F iptables -X # Puhdistamme NAT iptables -t nat -F iptables -t nat -X # mangle-taulukko esimerkiksi PPPoE-, PPP- ja ATM iptables -tangle -F iptables -t mangle -X # Käytännöt Mielestäni tämä on paras tapa aloittelijoille ja # ei silti ole huono, selitän kaikki lähdöt, koska he ovat lähteviä yhteyksiä #, syötteet hylkäämme kaiken, eikä yksikään palvelin saa lähettää eteenpäin. iptables -P INPUT DROP iptables -P LÄHTÖ HYVÄKSY iptables -P FORWARD DROP #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # Säilytä tilaa. Kaikki, mikä on jo yhdistetty (vakiintunut), jää näin: iptables -A INPUT -m state - state ESTABLISHED, RELATED -j ACCEPT # Loop device. iptables -A INPUT -i lo -j HYVÄKSY # http, https, emme määritä käyttöliittymää, koska # haluamme sen olevan kaikki iptables -A INPUT -p tcp --port 80 -j HYVÄKSY iptables -A INPUT -p tcp - dport 443 -j HYVÄKSY # ssh vain sisäisesti ja tältä ip: n iptable-alueelta -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --port 7659 -j ACCEPT # -valvonta esimerkiksi jos niillä on zabbix tai jokin muu snmp-palvelun iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j ACCEPT # icmp, ping, se on sinun tehtäväsi iptables -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql postgres on portti 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh, jos haluat lähettää sähköpostia #iptables -A LÄHTÖ -p tcp --port 25 -j HYVÄKSY # SPOOFINGin torjunta 09/07/2014 # SERVER_IP = "190.xxx" # palvelimen IP - palvelimen todellinen wan-ip LAN_RANGE = "192.168.xx / 21" # LAN-alue verkkoistasi tai vlan # IP: stäsi, joiden ei pitäisi koskaan päästä ekstranetiinon käyttää vähän # logiikkaa, jos meillä on puhtaasti WAN-liitäntä, sen ei pitäisi koskaan syöttää # LAN-tyyppistä liikennettä kyseisen käyttöliittymän kautta 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 "# Oletustoiminto - suoritetaan, kun mikä tahansa sääntö vastaa ACTION =" DROP "# Paketteja, joilla on sama palvelimeni IP-osoite wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A LÄHTÖ -o $ extranet -s $ SERVER_IP -j $ ACTION # Paketit, joissa on LAN-alue wanille, laitoin tämän näin, jos sinulla on # tiettyä verkkoa, mutta tämä on tarpeeton seuraavan # säännön sisällä silmukassa " kohteelle "iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Kaikki SPOOF-verkot, joita wan ip ei salli tiedostossa $ SPOOF_IPS tee iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A LÄHTÖ -o $ extranet -s $ ip -j $ ACTION valmis

Kuten aina, odotan kommenttejasi, pysy kuulolla tällä blogilla, kiitos


12 kommenttia, jätä omasi

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   HO2Gi dijo

    Se auttaa minua jatkamaan oppimista hieman enemmän kopioitu kiitos.

    1.    brodydalle dijo

      olet tervetullut, mielelläni auttaa

  2.   Xavier dijo

    Olen todella pahoillani, mutta minulla on kaksi kysymystä (ja yksi lahjana 😉):

    Saavuttaisitko tämän kokoonpanon ollaksesi Apache käynnissä ja sulkemalla loput paitsi SSH?

    #Puhdistamme pöydät
    iptables-F
    iptables-X

    Puhdistamme NAT: n

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

    iptables -A SYÖTTÖ ​​-p tcp –portti 80 -j HYVÄKSY

    ssh vain sisäisesti ja tältä ip-alueelta

    iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet –port 7659 -j HYVÄKSY

    Toinen kysymys: Onko tässä esimerkissä SSH: ssä käytetty portti 7659?

    Ja kolmas ja viimeinen: mihin tiedostoon tämä kokoonpano tulisi tallentaa?

    Kiitos paljon opetusohjelmasta, on sääli, että olet niin uusi aloittelija etkä voi hyödyntää sitä hyvin.

    1.    brodydalle dijo

      tämä on sääntö, jota tarvitset http: lle Apache: sta
      iptables -A SYÖTTÖ ​​-p tcp –portti 80 -j HYVÄKSY

      mutta sinun on myös ilmoitettava oletusarvoiset pudotuskäytännöt (se on komentosarjassa)
      iptables -P INPUT DROP
      iptable -P OUTPUT ACCEPT
      iptables -P Eteenpäin pudota

      ja tämä, koska jos olet kaukana, se heittää sinut pois.
      iptables -A SYÖTTÖ ​​-m tila –tila PERUSTETTU, LIITTYVÄ -j HYVÄKSY

      Jos esimerkissä 7659 on kyseisen ssh: n portti, oletusarvoisesti se on 22, vaikka suosittelen vaihtamaan porttiin "ei tunneta"
      mies en tiedä, kuten haluat ... palomuuri.sh ja laitat sen rc.localiin (sh palomuuri.sh) niin, että se toimii automaattisesti, se riippuu siitä, mikä käyttöjärjestelmä sinulla on, on tiedostoja, joihin voit laittaa säännöt suoraan.

  3.   jge dijo

    Hei, käsikirjoituksesi on erittäin hyvä analysoimalla sitä .... Tiedätkö, kuinka voisin kieltää kaikki käyttäjien pyynnöt tietylle verkkosivustolle? mutta tällä sivustolla on paljon palvelimia ...

    1.    brodydalle dijo

      Suosittelen muita vaihtoehtoja:
      1) Voit luoda väärennetyn vyöhykkeen DNS: ään ...
      2) Voit sijoittaa välityspalvelimen acl: llä
      syntivientikielto
      Pidät tästä iptabeleista ... se ei ole aina paras vaihtoehto (on enemmän tapoja)
      iptables -A INPUT -s blog.desdelinux.ne -j DROP
      iptables -A OUTPUT -d blog.desdelinux.net -j DROP

      Kerro jos se toimi

  4.   Xavier dijo

    Kiitos vastauksesta, kaikki selvisi. Kysyin satamasta, koska olin yllättynyt 7659: n käytöstä, koska yksityiset satamat alkavat 49152: sta, ja se voi häiritä jotain palvelua.
    Jälleen kiitos kaikesta, se on mukavaa!

    Tervehdys.

  5.   sic dijo

    BrodyDalle, kuinka voin ottaa sinuun yhteyttä? Erittäin mielenkiintoinen käsikirjoituksesi.

  6.   Carlos dijo

    Edellisen viimeisen rivin "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" tarkoituksena on estää omaa konettasi väärentämästä? Vai onko mahdollista, että jokin myrkytetty paketti tulee sisään ja voi lähteä myrkytetyn lähteen mukana, ja siksi sääntö sisältyy myös OUTPUT: iin?
    Paljon kiitoksia selvennyksestä !!!

  7.   Fran dijo

    tämä on oma iptables-komentosarjani, se on hyvin täydellinen:

    # franes.iptables.airy
    # doc.iptables.airoso: iptables vanhalle ja nft: lle
    #
    # palomuuriporttia
    ###############################
    #! / Bin / bash
    #
    # tyhjennä näyttö
    ################################# /etc/f-iptables/default.cfg ||||| alku
    selkeä
    # jätä tyhjä rivi
    kaiku
    vienti kyllä ​​= »» ei = »kaiku pois»
    # muuttujaa, jotka voit muuttaa pääsyn sallimiseksi
    ######################## muuttujat muokattavaksi $ kyllä ​​tai $ ei
    export hayexcepciones = »$ ei»
    # on poikkeuksia: $ yes sallia poikkeukselliset isännät ja $ no poistaa käytöstä
    vie heinää = »$ ei»
    # heinää: $ kyllä, jotta kolmas osapuoli voi pingistää ja $ ei kieltää
    export haylogserver = »$ ei»
    # haylogeosserver: $ kyllä, jotta voit kirjautua tcp: een $ ei, jotta et voi kirjautua tcp: hen
    ######
    ####################### muuttujia muokattavaksi lisäämällä "," tai vaihteluvälillä ":"
    vientipoikkeukset = »baldras.wesnoth.org»
    # poikkeuksen mukaan palomuuri sallii yhden tai useamman isännän tai ei arvoa
    vie lokipalvelin = hylkää, ipp, dict, ssh
    # tcp-palvelinporttia, jotka kirjataan pakettien saapuessa
    vie redserver = 0/0
    # redserver: palvelinporttien verkko, mieluiten paikallinen verkko tai useita ips
    vientiasiakas punainen = 0/0
    #clientnet: asiakasporttien verkko, joka on parempi kuin kaikki verkot
    vienti servidortcp = hylkää, ipp, dict, 6771
    # servidortcp: määritetyt TCP-palvelinportit
    export serverudp = hylkää
    #udpserver: määritetyt udp-palvelinportit
    vie clientudp = toimialue, bootpc, bootps, ntp, 20000: 45000
    #udp -asiakas: määritetyt udp-asiakasportit
    vie clienttcp = verkkotunnus, http, https, ipp, git, dict, 14999: 15002
    # tcp-asiakas: määritetyt tcp-asiakasportit
    ############################### loppu /etc/f-iptables/default.cfg |||||
    ################################## muuttujien loppu muokattavaksi
    vie palomuuri = $ 1 muuttujat = $ 2
    jos ["$ muuttujat" = "$ NULL"]; sitten lähde /etc/f-iptables/default.cfg;
    else source / etc / f-iptables / $ 2; fi
    ################################## tai korvaa muuttujat .cfg-tiedostolla
    ######################################################### ###########################################################
    viennin palomuuri = $ 1 vientimuuttujat = $ 2
    ############################################## automaattiset järjestelmämuuttujat
    jos ["$ palomuuri" = "irrotettu"]; kaiku sitten palomuuri irti;
    vienti aktivoi palvelimen = »$ no» activateclient = »$ ei» märkä = »$ ei»;
    elif ["$ palomuuri" = "asiakas"]; toista sitten palomuuriasiakas;
    vienti aktivoi palvelimen = »$ no» activateclient = »» märkä = »$ ei»;
    elif ["$ palomuuri" = "palvelin"]; kaiku sitten palomuuripalvelin;
    vienti aktivoi palvelimen = »» activateclient = »$ no» märkä = »$ ei»;
    elif ["$ palomuuri" = "asiakas ja palvelin"]; sitten toistaa palomuuriasiakas ja palvelin;
    vienti aktivoi palvelin = »»; viennin aktivaattori = »»; vienti märkä = »$ ei»;
    elif ["$ palomuuri" = "salliva"]; sitten kaiku PALVELEVA TULIPALOSUOJA;
    vienti aktivoi palvelimen = »$ no» activateclient = »$ no» märkä = »»;
    muu
    $ 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
    kaiku _____parametrit____ $ 0 $ 1 $ 2
    echo "cast ilman parametreja on luetteloida iptables."
    echo "Ensimmäinen parametri (ota iptables käyttöön): yhteys katkaistu tai asiakas tai palvelin tai asiakas ja palvelin tai sallittu."
    echo "Toinen parametri: (valinnainen): oletus .cfg-tiedosto valitsee /etc/f-iptables/default.cfg"
    echo "Muuttujan asetukset:" $ (ls / etc / f-iptables /)
    poistuminen 0; fi
    ##################
    kaiku
    echo Heittää $ 0 offline-tilassa tai asiakas tai palvelin tai asiakas ja palvelin tai sallivat tai muuttujat tai ilman parametrin käyttämistä iptable-luettelossa.
    echo $ 0-tiedosto sisältää joitain muokattavia muuttujia.
    #################################### yllä olevat muuttujat aktivoidaan
    ####################################
    kaiku asettamalla iptables-muuttujat
    kaikuaktivoidut muuttujat
    kaiku
    ############################## iptables-säännöt
    echo Setting iptables-legacy
    sudo / usr / sbin / iptables-legacy -t -suodatin -F
    sudo / usr / sbin / iptables-legacy -t nat -F
    sudo / usr / sbin / iptables-legacy -tangle -F
    sudo / usr / sbin / ip6tables-legacy -t -suodatin -F
    sudo / usr / sbin / ip6tables-legacy -t nat -F
    sudo / usr / sbin / ip6tables-legacy -tangle -F
    sudo / usr / sbin / ip6tables-legacy -A SYÖTTÖ ​​-j DROP
    sudo / usr / sbin / ip6tables-legacy -A LÄHTÖ-j DROP
    sudo / usr / sbin / ip6tables-legacy -E ETEEN -j DROP
    sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j HYVÄKSY> / 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 SYÖTTÖ ​​-s $ poikkeukset -j HYVÄKSY> / dev / null
    $ aktivoi sudo-palvelin / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktivoi palvelin 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 –portit $ clientudp -m state –valtio perustettu -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –portit $ clienttcp -m state –valtio perustettu -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp-tyyppinen echo-vastaus -j HYVÄKSY> / dev / null
    sudo / usr / sbin / iptables-legacy -A SYÖTTÖ ​​-j DROP> / dev / null
    sudo / usr / sbin / iptables-legacy -A LÄHDÖ -s 127.0.0.1 -d 127.0.0.1 -j HYVÄKSY> / dev / null
    $ hayeexceptions sudo / usr / sbin / iptables-legacy -A LÄHTÖ -d $ poikkeukset -j HYVÄKSY> / dev / null
    $ aktivoi sudo-palvelin / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktivoi palvelin sudo / usr / sbin / iptables-legacy -A LÄHTÖ -p tcp -m multiport –portit $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A LÄHTÖ -p udp -m multiport –portit $ clientudp -s $ clientnet -d $ clientnet -j HYVÄKSY> / 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-tyyppinen echo-request -j HYVÄKSY> / dev / null
    sudo / usr / sbin / iptables-legacy -A LÄHTÖ-j DROP
    sudo / usr / sbin / iptables-legacy-Eteenpäin -j DROP
    echo iptables-legacy käytössä
    kaiku
    echo Setting iptables-nft
    sudo / usr / sbin / iptables-nft -t -suodatin -F
    sudo / usr / sbin / iptables-nft -t nat -F
    sudo / usr / sbin / iptables-nft -t mangle -F
    sudo / usr / sbin / ip6tables-nft -t -suodatin -F
    sudo / usr / sbin / ip6tables-nft -t nat -F
    sudo / usr / sbin / ip6tables-nft -t mangle -F
    sudo / usr / sbin / ip6tables-nft -A TULO-j DROP
    sudo / usr / sbin / ip6tables-nft -A LÄHTÖ-j DROP
    sudo / usr / sbin / ip6tables-nft -A Eteenpäin -j DROP
    sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j HYVÄKSY> / 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 SYÖTTÖ ​​-s $ poikkeukset -j HYVÄKSY> / dev / null
    $ aktivoi palvelin sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktivoi palvelin 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 –portit $ clientudp -m state –tila perustettu -s $ clientnet -d $ clientnet -j HYVÄKSY> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A SYÖTTÖ ​​-p tcp -m multiport –portit $ clienttcp -m tila –tila perustettu -s $ clientnet -d $ clientnet -j HYVÄKSY> / dev / null
    $ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-tyyppinen echo-vastaus -j HYVÄKSY> / dev / null
    sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
    sudo / usr / sbin / iptables-nft -A LÄHTÖ -s 127.0.0.1 -d 127.0.0.1 -j HYVÄKSY> / dev / null
    $ on poikkeuksia sudo / usr / sbin / iptables-nft -A OUTPUT -d $ poikkeuksia -j HYVÄKSY> / dev / null
    $ aktivoi sudo-palvelin / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktivoi palvelin sudo / usr / sbin / iptables-nft -A LÄHTÖ -p tcp -m multiport –portit $ serverrtcp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ enable client sudo / usr / sbin / iptables-nft -A OUTPUT-udp -m multiport –dports $ clientudp -s $ clientnet -d $ clientnet -j HYVÄKSY> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A LÄHTÖ -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-tyyppinen echo-request -j HYVÄKSY> / dev / null
    sudo / usr / sbin / iptables-nft -A LÄHTÖ-j DROP
    sudo / usr / sbin / iptables-nft -A Eteenpäin -j DROP
    echo iptables-nft käytössä
    kaiku
    $ 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 HYVÄKSY> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A SYÖTTÖ ​​-m tila - osavaltio perustettu -j HYVÄKSY> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A LÄHTÖ -J HYVÄKSY> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A Eteenpäin -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 HYVÄKSY> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -A SYÖTTÖ ​​-m tila –tila perustettu -j HYVÄKSY> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -A LÄHTÖ -J HYVÄKSY> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -A Eteenpäin -j DROP> / dev / null
    ##############################
    kaiku olet heittänyt $ 0 $ 1 $ 2
    # poistuu käsikirjoituksesta
    poistu 0

  8.   louis duran dijo

    Kuinka asetan säännön, jos tämä palomuuri käyttää sitä yhdyskäytävässäni ja sillä on kalmari lähiverkossa ???