Izmantojot šo vienkāršo skriptu, izveidojiet pats savu ugunsmūri ar iptables

Es pavadīju kādu laiku, domājot par divām lietām par šo iptables: lielākā daļa no tiem, kas meklē šīs apmācības, ir iesācēji, un, otrkārt, daudzi jau meklē kaut ko diezgan vienkāršu un jau izstrādātu.

Šis piemērs ir paredzēts tīmekļa serverim, taču jūs varat viegli pievienot vairāk noteikumu un pielāgot to savām vajadzībām.

Kad redzat "x" izmaiņas jūsu ip's


#!/bin/bash

# Notīrām iptables tabulas -F iptables -X # Notīriet NAT iptables -t nat -F iptables -t nat -X # mangle tabulu tādām lietām kā PPPoE, PPP un ATM iptables -t mangle -F iptables -t mangle -X # Policies Es domāju, ka tas ir labākais veids iesācējiem un # joprojām nav slikts. Es izskaidrošu visu izvadi, jo tie ir izejošie savienojumi #, ievadi mēs izmetam visu, un nevienam serverim nevajadzētu pārsūtīt. iptables -P INPUT DROP iptables -P IZVADES PIEŅEMŠANA iptables -P FORWARD DROP #Intranet LAN iekštīkls = eth0 #Extranet wan extranet = eth1 # Uzturēt stāvokli. Viss, kas jau ir savienots (izveidots), tiek atstāts šādi: iptables -A INPUT -m state - state ESTABLISHED, RELATED -j ACCEPT # Loop device. iptables -A INPUT -i lo -j ACCEPT # http, https, mēs nenorādām saskarni, jo # mēs vēlamies, lai tas būtu viss iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh tikai iekšēji un no šī ip iptables diapazona -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet - port 7659 -j ACCEPT # monitorings, piemēram, ja viņiem ir zabbix vai kāds cits SNMP pakalpojuma iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ iekštīkls --port 10050 -j ACCEPT # icmp, ping arī tas ir atkarīgs no jums 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, ja vēlaties nosūtīt kādu pastu #iptables -A OUTPUT -p tcp --port 25 -j ACCEPT # Anti-SPOOFING 09. # SERVER_IP = "07.xxx" # servera IP - jūsu servera īstais wan ip LAN_RANGE = "2014.xx / 190" # LAN diapazons tīkla vai vlan # IP, kuriem nekad nevajadzētu iekļūt ekstranetā,ir izmantot mazliet # loģiku, ja mums ir tikai WAN interfeiss, tam nekad nevajadzētu ievadīt # LAN tipa trafiku caur šo saskarni. SPOOF_IPS = "192.168/21 0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0 / 12 "# Noklusējuma darbība - jāveic, kad jebkurš noteikums atbilst ACTION =" DROP "# Paketes ar to pašu mana servera ip, izmantojot wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A OUTPUT -o $ extranet -s $ SERVER_IP -j $ ACTION # Paketes ar LAN diapazonu samazinājumam, es to izteicu šādi, ja jums ir # kāds īpašs tīkls, taču tas ir lieks, ja cilnē ir # likums " par "iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Visus SPOOF tīklus wan for ip neatļauj vietnē $ SPOOF_IPS do iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION done

Kā vienmēr es gaidu jūsu komentārus, sekojiet līdzi šim emuāram, paldies


Raksta saturs atbilst mūsu principiem redakcijas ētika. Lai ziņotu par kļūdu, noklikšķiniet uz šeit.

12 komentāri, atstājiet savus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   HO2Gi teica

    Tas man palīdz turpināt mācīties nedaudz vairāk, pateicoties kopētajam paldies.

    1.    Brodijs Dalle teica

      jūs esat laipni gaidīti, priecīgi būt par palīdzību

  2.   Xavier teica

    Es tiešām atvainojos, bet man ir divi jautājumi (un viens kā dāvana 😉):

    Vai jūs ieradīsieties ar šo konfigurāciju, lai Apache darbotos un aizvērtu pārējos, izņemot SSH?

    # Mēs tīrām galdus
    iptables-F
    iptables-X

    Mēs tīrām NAT

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

    iptables -A INPUT -p tcp –port 80 -j PIEŅEMT

    ssh tikai iekšēji un no šī ip diapazona

    iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ iekštīkls -port 7659 -j ACCEPT

    Otrais jautājums: vai šajā piemērā SSH tiek izmantots ports 7659?

    Un trešais un pēdējais: kurā failā šī konfigurācija jāsaglabā?

    Liels paldies par apmācību, ir žēl, ka esat tik iesācējs un nevarat to labi izmantot.

    1.    Brodijs Dalle teica

      tas ir noteikums, kas jums nepieciešams http no apache
      iptables -A INPUT -p tcp –port 80 -j PIEŅEMT

      bet jums ir jādeklarē arī noklusējuma politikas (tas ir skriptā)
      iptable -P INPUT DROP
      iptables -P IZEJAS PIEŅEMŠANA
      iptables -P FORWARD DROP

      un tas tāpēc, ka, ja jūs esat attāls, tas jūs izmetīs.
      iptables -A INPUT -m stāvoklis –valsts, kas izveidota, SAISTĪTA -j PIEŅEMT

      ja piemērā 7659 ir šī ssh ports, pēc noklusējuma tas ir 22, lai gan es iesaku mainīt portu "nav labi zināms"
      cilvēks, kuru es nezinu, kā jūs vēlaties ... firewall.sh, un jūs to ievietojat rc.local (sh firewall.sh), lai tas darbotos automātiski, tas ir atkarīgs no tā, kāda operētājsistēma jums ir, ir faili, kur jūs varat tieši ievietot noteikumus.

  3.   Dže teica

    Eii ļoti labs, tavs skripts, to analizējot .... Vai tu zini, kā es varētu noraidīt visus manu lietotāju pieprasījumus uz noteiktu vietni? bet šai vietnei ir daudz serveru ...

    1.    Brodijs Dalle teica

      Es iesaku citas iespējas:
      1) Jūs varat izveidot viltotu zonu savā DNS ...
      2) Jūs varat ievietot starpniekserveri ar acl
      grēka embargo
      Attiecībā uz iptables jums tas var patikt ... tas ne vienmēr ir labākais risinājums (ir vairāk iespēju)
      iptables -A INPUT -s blog.fromlinux.ne -j DROP
      iptables -A IZVADE -d blog.fromlinux.net -j DROP

      Pastāsti man, vai tas ir izdevies

  4.   Xavier teica

    Paldies par atbildi, viss noskaidrojās. Es jautāju par ostu, jo biju pārsteigts, ka izmantoju 7659, jo privātās ostas sākas ar 49152, un tas var traucēt kādam pakalpojumam vai tamlīdzīgi.
    Atkal paldies par visu, tas ir jauki!

    Sveicieni.

  5.   sic teica

    BrodyDalle, kā es varu sazināties ar tevi? Ļoti interesants tavs scenārijs.

  6.   Carlos teica

    Pirms pēdējās rindas "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" ir jānovērš jūsu pašas mašīnas krāpšanās? Vai arī iespējams, ka kāda saindēta paciņa ienāk un var aiziet ar šo saindēto avotu, un tāpēc noteikums ir iekļauts arī OUTPUT?
    Liels paldies par precizējumu !!!

  7.   Fran teica

    tas ir mans skripts iptables, tas ir ļoti pilnīgs:

    # franes.iptables.airy
    # doc.iptables.airoso: iptables mantojumam un nft
    #
    # ugunsmūra porti
    ###############################
    #! / bin / bash
    #
    # notīrīt ekrānu
    ################################# sākuma
    skaidrs
    # atstājiet tukšu rindu
    palaist garām
    eksportēt jā = »» nē = »atbalss izslēgts»
    # mainīgie, kurus varat mainīt, lai atļautu piekļuvi
    ######################## mainīgos, lai mainītu ar $ yes vai $ no
    eksportēt hayexcepciones = »$ nē»
    # ir izņēmumi: $ jā, lai atļautu ārkārtas saimniekus, un $ nē, lai atspējotu
    eksportēt sienāšanu = »$ nē»
    # sienāšana: $ jā, lai atļautu trešo pušu pingēšanu, un $ nē, lai noraidītu
    eksportēt haylogserver = »$ nē»
    # haylogeosserver: $ jā, lai varētu reģistrēt tcp $ nē, lai nevarētu reģistrēt tcp
    ######
    ######################## mainīgos, lai mainītu, pievienojot "," vai ar diapazoniem ":"
    eksporta izņēmumi = »baldras.wesnoth.org»
    # izņēmums atļauj vienu vai vairākus resursdatorus no ugunsmūra vai tiem nav vērtības
    eksportēt žurnālu serveri = izmest, ipp, dict, ssh
    # tcp servera porti, kas tiek reģistrēti, kad ienāk paketes
    eksportēt redserveru = 0/0
    # redserver: serveru portu tīklam ieteicams lokālais tīkls vai vairāki ips
    eksportēt klientu sarkanā krāsā = 0/0
    #clientnet: klientu portu tīkls ir vēlams visiem tīkliem
    eksportēt servidortcp = izmest, ipp, dict, 6771
    # servidortcp: norādītie TCP servera porti
    eksportēt serverudp = izmest
    #udpserver: norādītās udp servera porti
    eksportēt klientudp = domain, bootpc, bootps, ntp, 20000: 45000
    #udp klients: norādītās udp klienta porti
    eksportēt klientu tcp = domēns, http, https, ipp, git, dict, 14999: 15002
    # tcp klients: norādītās tcp klienta porti
    ################################ /etc/f-iptables/default.cfg ||||| beigas
    ################################## mainīgo lielumu beigas
    eksportēt ugunsmūri = $ 1 mainīgie = $ 2
    ja ["$ mainīgie" = "$ NULL"]; tad avots /etc/f-iptables/default.cfg;
    cits avots / etc / f-iptables / $ 2; fi
    ################################## vai arī pārrakstīs mainīgos ar .cfg failu
    ######################################################### ###########################################################
    eksporta ugunsmūris = $ 1 eksporta mainīgie = $ 2
    ############################################## automātisko sistēmas mainīgo
    ja ["$ firewall" = "atvienots"]; pēc tam atbalss atvienots ugunsmūris;
    eksportēt aktivizē serveri = »$ nē» activateclient = »$ nē» slapjš = »$ nē»;
    elif ["$ firewall" = "klients"]; pēc tam atbalsojiet ugunsmūra klientu;
    eksportēt aktivizē serveri = »$ nē» activateclient = »» slapjš = »$ nē»;
    elif ["$ firewall" = "serveris"]; pēc tam atbalsojiet ugunsmūra serveri;
    eksportēt aktivizē serveri = »» activateclient = »$ no» slapjš = »$ nē»;
    elif ["$ firewall" = "klients un serveris"]; pēc tam atbalsojiet ugunsmūra klientu un serveri;
    eksportēt aktivizēt serveri = »»; eksporta aktivizētājs = »»; eksporta slapjš = »$ nē»;
    elif ["$ firewall" = "visatļautība"]; pēc tam atbalsojiet ATĻAUJOŠO Ugunsmūri;
    eksportēt aktivizē serveri = »$ no» activateclient = »$ no» slapjš = »»;
    cits
    $ 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
    atbalss _____parametri____ $ 0 $ 1 $ 2
    atbalss "cast bez parametriem ir uzskaitīt iptables."
    echo "Pirmais parametrs (iespējot iptables): atvienots vai klients vai serveris, vai klients un serveris, vai atļauts."
    echo "Otrais parametrs: (pēc izvēles): default.cfg fails izvēlas /etc/f-iptables/default.cfg"
    echo "Mainīgie iestatījumi:" $ (ls / etc / f-iptables /)
    izeja 0; fi
    ##################
    palaist garām
    atbalss Izmet $ 0 atvienotu vai klientu vai serveri, vai klientu un serveri, vai visatļautību, vai mainīgos vai neizmantojot parametru iptables uzskaitīšanai.
    echo $ 0 failā ir daži rediģējami mainīgie.
    #################################### tiek aktivizēti iepriekš minētie mainīgie
    #####################################
    atbalss iptables mainīgo iestatīšana
    atbalss aktivizētie mainīgie
    palaist garām
    ############################### iptables kārtulas
    atbalss Iptables-legacy iestatīšana
    sudo / usr / sbin / iptables-legacy -t filtrs -F
    sudo / usr / sbin / iptables-legacy -t nat -F
    sudo / usr / sbin / iptables-legacy -t mangle -F
    sudo / usr / sbin / ip6tables-legacy -t filtrs -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 IZVADE -j DROP
    sudo / usr / sbin / ip6tables-legacy -PIRMS -j PILNI
    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 $ izņēmumi -j ACCEPT> / dev / null
    $ aktivizēt sudo serveri / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktivizēt serveri 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 stāvoklis –valsts izveidots -s $ clientnet -d $ klientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –sports $ clienttcp -m stāvoklis –valsts izveidots -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp tipa atbalss-atbilde -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
    sudo / usr / sbin / iptables-legacy -A IZVADE -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ hayexceptions sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ izņēmumi -j ACCEPT> / dev / null
    $ aktivizēt sudo serveri / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktivizēt serveri 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 tipa echo-request -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-legacy -A IZVADE -j DROP
    sudo / usr / sbin / iptables-mantojums -PIRMS -J PILNS
    echo iptables-legacy iespējots
    palaist garām
    atbalss Iptables-nft iestatīšana
    sudo / usr / sbin / iptables-nft -t filtrs -F
    sudo / usr / sbin / iptables-nft -t nat -F
    sudo / usr / sbin / iptables-nft -t mangle -F
    sudo / usr / sbin / ip6tables-nft -t filtrs -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 IZVADE -j DROP
    sudo / usr / sbin / ip6tables-nft -A PIRMS - j PILNUMS
    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 $ izņēmumi -j ACCEPT> / dev / null
    $ aktivizēt serveri sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktivizēt serveri 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 stāvoklis –valsts izveidots -s $ clientnet -d $ klientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –sports $ clienttcp -m stāvoklis –valsts izveidots -s $ clientnet -d $ klientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp tipa atbalss-atbilde -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
    sudo / usr / sbin / iptables-nft -A IZVADE -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT> / dev / null
    $ ir izņēmumi sudo / usr / sbin / iptables-nft -A OUTPUT -d $ izņēmumi -j ACCEPT> / dev / null
    $ aktivizēt sudo serveri / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktivizēt serveri 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 tipa echo-request -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-nft -A IZVADE -j DROP
    sudo / usr / sbin / iptables-nft -A PIRMS - j PILNI
    echo iptables-nft iespējots
    palaist garām
    $ 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 stāvoklis –valsts izveidota -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 stāvoklis –valsts izveidota -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
    ##############################
    atbalss, kuru esat iemetis $ 0 $ 1 $ 2
    # iziet no skripta
    izeja 0

  8.   Luiss Durans teica

    Kā es varētu iestatīt likumu, ja šī ugunsmūris to izmantotu manai vārtejai un kalmārs būtu lokālajā tīklā ???