Skep u eie firewall met iptables met behulp van hierdie eenvoudige skrif

Ek het 'n rukkie aan twee dinge oor iptables gedink: die meeste van diegene wat na hierdie tutoriale soek, is beginners en tweedens, baie is reeds op soek na iets redelik eenvoudig en reeds uitgebrei.

Hierdie voorbeeld is vir 'n webbediener, maar u kan maklik meer reëls byvoeg en aanpas by u behoeftes.

As u "x" sien verander vir u IP's


#!/bin/bash

# Ons maak iptables-tafels skoon -F iptables -X # Ons maak NAT iptables -t nat -F iptables -t nat -X # mangle-tafel skoon vir dinge soos PPPoE, PPP, en ATM-iptables -t mangle -F iptables -t mangle -X # Beleid Ek dink dit is die beste manier vir beginners en # nog steeds nie sleg nie, ek sal uitvoer (uitvoer) alles verklaar omdat dit uitgaande verbindings is #, insette, ons gooi alles weg en geen bediener moet aanstuur nie. iptables -P INPUT DROP iptables -P OUTPUT AANVAAR iptables -P FORWARD DROP # Intranet LAN intranet = eth0 # Extranet wan extranet = eth1 # Hou staat. Alles wat reeds gekoppel (gevestig) is, word so gelaat: iptables -A INPUT -m-toestand --staat GEVESTIG, VERWANTE -j ACCEPT # Loop-toestel. iptables -A INPUT -i lo -j ACCEPT # http, https, ons spesifiseer nie die koppelvlak nie, want # ons wil hê dat dit alle iptables moet wees -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp - dport 443 -j AANVAAR # ssh slegs intern en vanuit hierdie reeks IP-iptabels -A INGANG -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j AANVAAR # monitering byvoorbeeld as hulle zabbix of 'n ander snmp diens iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j AANVAAR # icmp, ping goed dit is aan u iptables -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql met postgres is poort 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j ACCEPT #sendmail bueeeh as u e-pos wil stuur #iptables -A UITVOER -p tcp --dport 25 -j AANVAAR # Anti-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # server IP - die regte wan IP van u bediener LAN_RANGE = "192.168.xx / 21" # LAN-reeks van u netwerk of u vlan # IP's wat nooit in die ekstranet mag ingaan nie,is om 'n bietjie # logika te gebruik as ons 'n suiwer WAN-koppelvlak het, moet dit nooit # LAN-verkeer deur daardie koppelvlak betree nie 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 "# Standaard aksie - moet uitgevoer word wanneer enige reël ooreenstem met ACTION =" DROP "# Pakkies met dieselfde IP van my bediener deur die wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # iptables -A UITVOER -o $ extranet -s $ SERVER_IP -j $ ACTION # Pakkies met die LAN-reeks vir die wan, ek stel dit so as u # enige netwerk het, maar dit is oorbodig met die volgende # reël binne die lus " vir "iptables -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Alle SPOOF-netwerke word nie toegelaat deur die wan vir ip in $ SPOOF_IPS doen iptables -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A UITVOER -o $ extranet -s $ ip -j $ ACTION done

Soos altyd wag ek op u kommentaar, bly op hierdie blog dop, dankie


Die inhoud van die artikel voldoen aan ons beginsels van redaksionele etiek. Klik op om 'n fout te rapporteer hier.

12 kommentaar, los joune

Laat u kommentaar

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde gemerk met *

*

*

  1. Verantwoordelik vir die data: Miguel Ángel Gatón
  2. Doel van die data: Beheer SPAM, bestuur van kommentaar.
  3. Wettiging: U toestemming
  4. Kommunikasie van die data: Die data sal nie aan derde partye oorgedra word nie, behalwe deur wettige verpligtinge.
  5. Datastoor: databasis aangebied deur Occentus Networks (EU)
  6. Regte: U kan u inligting te alle tye beperk, herstel en verwyder.

  1.   HO2Gi dijo

    Dit help my om 'n bietjie meer te gaan leer danksy kopie.

    1.    brodydalle dijo

      jy is welkom, bly om te help

  2.   Xavier dijo

    Ek is regtig jammer, maar ek het twee vrae (en een as geskenk 😉):

    Sou u met hierdie konfigurasie opdaag om Apache te laat loop en die res te sluit, behalwe SSH?

    # Ons maak tafels skoon
    iptables -F
    iptables -X

    Ons maak NAT skoon

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

    iptables -A INPUT -p tcp –port 80 -j AANVAAR

    ssh slegs intern en uit hierdie reeks IP's

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

    Tweede vraag: Word 7659 die poort in SSH gebruik in hierdie voorbeeld?

    En die derde en laaste: in watter lêer moet hierdie konfigurasie gestoor word?

    Baie dankie vir die tutoriaal, dit is jammer dat u so 'n beginner is en dit nie goed kan benut nie.

    1.    brodydalle dijo

      dit is die reël wat u nodig het vir http vanaf apache
      iptables -A INPUT -p tcp –port 80 -j AANVAAR

      maar u moet ook drop-standaardbeleide verklaar (dit staan ​​in die skrif)
      iptables -P INVOER DROP
      iptables -P UITVOER AANVAAR
      iptables -P VOORUIT DROP

      en dit, want as jy afgeleë is, sal dit jou weggooi.
      iptables -A INPUT -m state –state GEVESTIG, VERWANTE -j AANVAARDING

      as 7659 die poort van die ssh in die voorbeeld is, is dit standaard 22, alhoewel ek aanbeveel dat u na 'n "onbekende" poort gaan.
      Man, ek weet nie, soos u wil ... firewall.sh en u plaas dit in rc.local (sh firewall.sh) sodat dit outomaties loop, dit hang af van watter bedryfstelsel u het, daar is lêers waar u die reëls direk kan plaas.

  3.   jge dijo

    Eii baie goed met u script, om dit te ontleed .... Weet u hoe ek al die versoeke van my gebruikers op 'n spesifieke webwerf kon weier?…. maar hierdie webwerf het baie bedieners ....

    1.    brodydalle dijo

      Ek beveel ander opsies aan:
      1) U kan 'n vals sone in u dns skep ...
      2) U kan 'n gevolmagtigde plaas met acl
      sonde-embargo
      Vir iptables kan u hiervan hou ... dit is nie altyd die beste opsie nie (daar is meer maniere)
      iptables -A INGANG -s blog.desdelinux.ne -j DROP
      iptables -A UITVOER -d blog.fromlinux.net -j DROP

      Vertel my as dit gewerk het

  4.   Xavier dijo

    Dankie vir die antwoord, alles is opgeklaar. Ek het gevra oor die hawe, want ek was verbaas om 7659 te gebruik, aangesien die private hawens begin by 49152, en dit kon inmeng met een of ander diens.
    Weereens, dankie vir alles, dit is lekker!

    Groete.

  5.   sic dijo

    BrodyDalle, hoe kan ek met u in aanraking kom? Baie interessant u draaiboek.

  6.   Carlos dijo

    Die vorige reël "iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" is daar om te voorkom dat u eie masjien spoof? Of is dit moontlik dat een of ander vergiftigde pakkie die vergiftigde bron binnekom en kan vertrek, en daarom word die reël ook by UITVOER opgeneem?
    Baie dankie vir die toeligting !!!

  7.   Fran dijo

    dit is my eie iptables-skrif, dit is baie volledig:

    # franes.iptables.airy
    # doc.iptables.airoso: iptables vir nalatenskap en vir nft
    #
    # firewall-poorte
    #################################
    #! / bin / bash
    #
    # maak die skerm skoon
    ################################ begin van /etc/f-iptables/default.cfg |||||
    duidelik
    # los 'n leë lyn
    mis
    uitvoer ja = »» nee = »eggo af»
    # die veranderlikes wat u kan verander om toegang te verleen
    ##################### veranderlikes om te verander met $ ja of $ nee
    uitvoer hayexcepciones = »$ no»
    # daar is uitsonderings: $ ja om uitsonderlike gashere toe te laat en $ nee om uit te skakel
    uitvoer hayping = »$ no»
    # hayping: $ ja om ping van derde partye toe te laat en $ nee om te ontken
    uitvoer haylogserver = »$ no»
    # haylogeosserver: $ ja om tcp te kan aanmeld $ nee om nie tcp te kan aanmeld nie
    ######
    ##################### veranderlikes om te verander deur "," of met reekse van ":" by te voeg
    uitsonderings op uitvoer = »baldras.wesnoth.org»
    # uitsonderings laat enkel of meerdere gashere toe van firewall of geen waarde nie
    uitvoer logserver = gooi weg, ipp, dict, ssh
    # tcp bedienerpoorte wat aangeteken word wanneer pakkies binnekom
    uitvoer redserver = 0/0
    # redserver: die netwerk vir bedienerpoorte verkieslik plaaslike netwerk of verskeie ips
    uitvoer kliënt rooi = 0/0
    #clientnet: die netwerk vir kliëntpoorte verkies bo alle netwerke
    uitvoer servidortcp = weggooi, ipp, dict, 6771
    # servidortcp: die gespesifiseerde tcp-bedienerpoorte
    uitvoer serverudp = weggooi
    #udpserver: die gespesifiseerde udp-bedienerpoorte
    uitvoer clientudp = domein, bootpc, bootps, ntp, 20000: 45000
    #udp-kliënt: die gespesifiseerde udp-kliëntpoorte
    uitvoer clienttcp = domein, http, https, ipp, git, dict, 14999: 15002
    # tcp-kliënt: die gespesifiseerde tcp-kliëntpoorte
    ################################ einde van /etc/f-iptables/default.cfg |||||
    ################################### einde van veranderlikes om aan te pas
    uitvoer firewall = $ 1 veranderlikes = $ 2
    if ["$ variables" = "$ NULL"]; dan bron /etc/f-iptables/default.cfg;
    anders bron / etc / f-iptables / $ 2; fi
    #################################### of u sal die veranderlikes oorskryf met 'n .cfg-lêer
    ##################################### ######################## ############################ ########################
    uitvoer firewall = $ 1 uitvoer veranderlikes = $ 2
    ####################################### ########## outomatiese stelsel veranderlikes
    as ["$ firewall" = "ontkoppel"]; eggo dan BRANDMUUR ONTKOPPEL;
    uitvoer activateserver = »$ no» activateclient = »$ no» wet = »$ no»;
    elif ["$ firewall" = "client"]; dan eggo FIREWALL CLIENT;
    uitvoer activateserver = »$ no» activateclient = »» wet = »$ no»;
    elif ["$ firewall" = "bediener"]; eggo dan FIREWALL SERVER;
    uitvoer activateserver = »» activateclient = »$ no» wet = »$ no»;
    elif ["$ firewall" = "kliënt en bediener"]; eggo dan VUURWANDKLIËNT EN SERVER;
    uitvoer aktiveer bediener = »»; uitvoer activateclient = »»; uitvoer nat = »$ no»;
    elif ["$ firewall" = "toelaatbaar"]; eggo dan PERMISSIVE FIREWALL;
    uitvoer activateserver = »$ no» activateclient = »$ no» wet = »»;
    anders
    $ check sudo echo iptables-legacy:
    $ check sudo iptables-legacy -v -L INPUT
    $ check sudo iptables-legacy -v -L UITVOER
    $ check sudo echo iptables-nft:
    $ check sudo iptables-nft -v -L INPUT
    $ check sudo iptables-nft -v -L UITVOER
    eggo _____parameters____ $ 0 $ 1 $ 2
    eggo "gegooi sonder parameters is om iptables te lys."
    eggo "Die eerste parameter (aktiveer iptables): ontkoppel of kliënt of bediener of kliënt en bediener of toelaatbaar."
    eggo "Die tweede parameter: (opsioneel): die standaard .cfg-lêer kies /etc/f-iptables/default.cfg"
    eggo "Veranderlike instellings:" $ (ls / etc / f-iptables /)
    uitgang 0; fi
    ###################
    mis
    eggo Gooi $ 0 ontkoppel of kliënt of bediener of kliënt en bediener of toelaatbaar of veranderlikes of sonder om parameter te gebruik om iptabels te lys.
    eggo Die $ 0-lêer bevat enkele veranderlike veranderlikes binne.
    #################################### Bogenoemde veranderlikes geaktiveer
    ######################################
    eggo om die iptables-veranderlikes in te stel
    eggo geaktiveerde veranderlikes
    mis
    ############################### die iptables reëls
    eggo Instelling van iptables-legacy
    sudo / usr / sbin / iptables-legacy -t filter -F
    sudo / usr / sbin / iptables-legacy -t nat -F
    sudo / usr / sbin / iptables-legacy -t mangel -F
    sudo / usr / sbin / ip6tables-legacy -t filter -F
    sudo / usr / sbin / ip6tables-legacy -t nat -F
    sudo / usr / sbin / ip6tables-legacy -t mangel -F
    sudo / usr / sbin / ip6tables-legacy -A INPUT -j DROP
    sudo / usr / sbin / ip6tables-legacy -A UITVOER -j DROP
    sudo / usr / sbin / ip6tables-legacy -A VOORUIT -j DROP
    sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j AANVAAR> / 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 $ exceptions -j ACCEPT> / dev / null
    $ activeer sudo-bediener / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport -dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktiveer bediener 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 –staat gevestigde -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-legacy -A INPUT -p tcp -m multiport –sports $ clienttcp -m state –staat gevestigde -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp-tipe echo-antwoord -j AANVAAR> / dev / null
    sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
    sudo / usr / sbin / iptables-legacy -A UITVOER -s 127.0.0.1 -d 127.0.0.1 -j AANVAAR> / dev / null
    $ hayeexceptions sudo / usr / sbin / iptables-legacy -A UITVOER -d $ uitsonderings -j ACCEPT> / dev / null
    $ aktiveer sudo-bediener / usr / sbin / iptables-legacy -A UITVOER -p udp -m multiport-sport $ serverudp -s $ redserver -d $ redserver -j AANVAAR> / dev / null
    $ aktiveer bediener sudo / usr / sbin / iptables-legacy -A UITVOER -p tcp -m multiport-sport $ serverrtcp -s $ redserver -d $ redserver -j AANVAAR> / 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 UITVOER -p tcp -m multiport-sport $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-legacy -A UITVOER -p icmp –icmp-tipe eggo-versoek -j AANVAAR> / dev / null
    sudo / usr / sbin / iptables-legacy -A UITVOER -j DROP
    sudo / usr / sbin / iptables-legacy -A VOORUIT -j DROP
    eggo iptables-legacy geaktiveer
    mis
    eggo Instelling van iptables-nft
    sudo / usr / sbin / iptables-nft -t filter -F
    sudo / usr / sbin / iptables-nft -t nat -F
    sudo / usr / sbin / iptables-nft -t mangel -F
    sudo / usr / sbin / ip6tables-nft -t filter -F
    sudo / usr / sbin / ip6tables-nft -t nat -F
    sudo / usr / sbin / ip6tables-nft -t mangel -F
    sudo / usr / sbin / ip6tables-nft -A INPUT -j DROP
    sudo / usr / sbin / ip6tables-nft -A UITVOER -j DROP
    sudo / usr / sbin / ip6tables-nft -A VOORUIT -j DROP
    sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j AANVAAR> / dev / null
    $ haylogserver sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –porten $ logserver -j LOG> / dev / null
    $ hayeexceptions sudo / usr / sbin / iptables-nft -A INPUT -s $ exceptions -j ACCEPT> / dev / null
    $ aktiveer server sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ aktiveer bediener 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 –staat gevestigde -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A INPUT -p tcp -m multiport –sports $ clienttcp -m state –staat gevestigde -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-tipe echo-antwoord -j AANVAAR> / dev / null
    sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
    sudo / usr / sbin / iptables-nft -A UITVOER -s 127.0.0.1 -d 127.0.0.1 -j AANVAAR> / dev / null
    $ hayeexceptions sudo / usr / sbin / iptables-nft -A UITVOER -d $ uitsonderings -j AANVAAR> / dev / null
    $ aktiveer bediener sudo / usr / sbin / iptables-nft -A UITVOER -p udp -m multiport-sport $ serverudp -s $ redserver -d $ redserver -j AANVAAR> / dev / null
    $ aktiveer bediener sudo / usr / sbin / iptables-nft -A UITVOER -p tcp -m multiport-sports $ serverrtcp -s $ redserver -d $ redserver -j AANVAAR> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A UITVOER -p udp -m multiport -porten $ clientudp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ activateclient sudo / usr / sbin / iptables-nft -A UITVOER -p tcp -m multiport –porten $ clienttcp -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-nft -A UITVOER -p icmp –icmp-tipe eggo-versoek -j AANVAAR> / dev / null
    sudo / usr / sbin / iptables-nft -A UITVOER -j DROP
    sudo / usr / sbin / iptables-nft -A VOORUIT -j DROP
    eggo iptables-nft geaktiveer
    mis
    $ nat sudo / usr / sbin / iptables-legacy -F> / dev / null
    $ nat sudo / usr / sbin / iptables-legacy -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j AANVAAR> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A INPUT -m state –staat gevestig -j ACCEPT> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A INPUT -j DROP> / dev / null
    $ wet sudo / usr / sbin / iptables-legacy -A UITVOER -j AANVAAR> / dev / null
    $ nat sudo / usr / sbin / iptables-legacy -A VOORUIT -j DROP> / dev / null
    $ nat sudo / usr / sbin / iptables-nft -F> / dev / null
    $ nat sudo / usr / sbin / iptables-nft -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j AANVAAR> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -A INPUT -m state –staat gevestig -j ACCEPT> / dev / null
    $ nat sudo / usr / sbin / iptables-nft -A INPUT -j DROP> / dev / null
    $ nat sudo / usr / sbin / iptables-nft -A UITVOER -j AANVAAR> / dev / null
    $ nat sudo / usr / sbin / iptables-nft -A VOORUIT -j DROP> / dev / null
    ################################
    eggo, jy het $ 0 $ 1 $ 2 gegooi
    # verlaat die skrif
    uitgang 0

  8.   louis duran dijo

    Hoe sou ek 'n reël stel as hierdie firewall dit vir my poort gebruik en 'n inkvis in die LAN gehad het ???