Ушул жөнөкөй сценарийди колдонуп, iptables менен жеке брандмауэрди түзүңүз

Мен бул iptables жөнүндө эки нерсени ойлонуп бир аз убакыт жумшадым: бул окуу куралдарын издегендердин көпчүлүгү жаңы башталгандар, экинчиден, көпчүлүгү жөнөкөй жана мурунтан эле иштелип чыккан нерселерди издешет.

Бул мисал веб-серверге арналган, бирок сиз оңой эле көбүрөөк эрежелерди кошуп, аны өз муктаждыктарыңызга ылайыкташтыра аласыз.

Сиздин "x" өзгөрүүлөр сиздин IP үчүн өзгөртүү


#!/bin/bash

# Биз iptables таблицаларын тазалайбыз -F iptables -X # NAT iptables -t nat -F iptables -t nat -X # PPPoE, PPP жана ATM iptables -t mangle -F iptables -t mangle -X сыяктуу нерселер үчүн стол үстөлүн тазалайбыз # Саясат Менимче, бул үйрөнчүктөр үчүн эң мыкты ыкма жана дагы деле болсо жаман эмес, мен алардын чыгышын (чыгышын) түшүндүрүп берем, анткени алар чыгып жаткан байланыштар #, киргизүүнү биз жокко чыгарабыз жана эч кандай сервер алдыга кетпеши керек. iptables -P INPUT DROP iptables -P ЧЫГАРЫЛЫШЫ iptables кабыл алынат -P АЛГА ТАРТУУ #Intranet LAN intranet = eth0 #Extranet wan extranet = eth1 # State state. Буга чейин туташкан (орнотулган) нерселердин бардыгы ушинтип калтырылган: iptables -A INPUT -m state - state ESTABLISHED, RELATED -j КАБЫЛ АЛУУ # Loop түзмөгү. iptables -A INPUT -i lo -j КАБЫЛДАЙТ # http, https, биз интерфейсти көрсөтпөйбүз, анткени # анын бардыгы iptables болушун каалайбыз -A INPUT -p tcp --dport 80 -j IPTables -A INPUT -p tcp - dport 443 -j ACCEPT # ssh ички жана ушул ipдин iptables диапазонунун ичинен - ​​A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 7659 -j ACCEPT # мониторинг, мисалы, zabbix же кээ бир башка snmp кызматы iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet --dport 10050 -j КАБЫЛ АЛУУ # icmp, пинг жакшы, сизге чейин iptables -A INPUT -p icmp -s 192.168.xx / 24 - i $ intranet -j ACCEPT #mysql менен postgres порту болуп саналат 5432 iptables -A INPUT -p tcp -s 192.168.xx --sport 3306 -i $ intranet -j КАБЫЛ АЛЫҢЫЗ # почта жөнөтүүнү кааласаңыз # sendmail bueeeh # iptables -A OUTPUT -p tcp --dport 25 -j КАБЫЛ АЛУУ # Анти-SPOOFING 09/07/2014 # SERVER_IP = "190.xxx" # сервер IP - сервердин чыныгы wan ip LAN_RANGE = "192.168.xx / 21 "# Сиздин тармактын LAN LAN диапазону же vlan # Ip экстранетке эч качан кирбеши керек,бир аз # логиканы колдонуу, эгерде бизде WAN интерфейси болсо, ал эч качан # LAN трафигине ошол интерфейс аркылуу кирбеши керек 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 "# Демейки аракет - кайсы бир эреже ACTION =" DROP "менен шайкеш келсе, wan iptables -A INPUT -i $ extranet -s $ SERVER_IP -j $ ACTION # сыяктуу сервердин ошол эле ipиндеги пакеттер iptables -A OPUTUT -o $ extranet -s $ SERVER_IP -j $ ACTION # LAN диапазону камтылган пакеттер, эгерде сизде # кандайдыр бир тармак бар болсо, мен мындай койдум, бирок бул төмөнкү # эреже менен ашыкча iptables "for" цикл -A INPUT -i $ extranet -s $ LAN_RANGE -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ LAN_RANGE -j $ ACTION ## Бардык SPOOF түйүндөрүнө ip үчүн wan уруксат бербейт $ SPOOF_IPS iptables жасашат -A INPUT -i $ extranet -s $ ip -j $ ACTION iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION аткарылды

Сиздин комментарийлериңизди күтүп жатканымдай, ушул блогдо туруңуз, Рахмат


Макаланын мазмуну биздин принциптерге карманат редакциялык этика. Ката жөнүндө кабарлоо үчүн чыкылдатыңыз бул жерде.

12 комментарий, өзүңүздүкүн калтырыңыз

Комментарий калтырыңыз

Сиздин электрондук почта дареги жарыяланбайт. Милдеттүү талаалар менен белгиленет *

*

*

  1. Маалыматтар үчүн жооптуу: Мигель Анхель Гатан
  2. Маалыматтын максаты: СПАМды көзөмөлдөө, комментарийлерди башкаруу.
  3. Мыйзамдуулук: Сиздин макулдугуңуз
  4. Маалыматтарды берүү: Маалыматтар үчүнчү жактарга юридикалык милдеттенмелерден тышкары билдирилбейт.
  5. Маалыматтарды сактоо: Occentus Networks (ЕС) тарабынан уюштурулган маалыматтар базасы
  6. Укуктар: Каалаган убакта маалыматыңызды чектеп, калыбына келтирип жана жок кыла аласыз.

  1.   HO2Gi ал мындай деди:

    Көчүрүлүп алынган дагы бир аз рахмат.

    1.    BrodyDalle ал мындай деди:

      Сиз жардамга келгениңизге кубанып жатасыз

  2.   Javier ал мындай деди:

    Кечиресиз, бирок менде эки суроо бар (жана белек 😉):

    Apache иштеп, SSHден башкасын жабыш үчүн ушул конфигурация менен келесизби?

    # Биз столдорду тазалайбыз
    iptables -F
    iptables -X

    NAT тазалайбыз

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

    iptables -A INPUT -p tcp –dport 80 -j КАБЫЛ АЛУУ

    сш гана ички жана ушул чектердин ичинен ip

    iptables -A INPUT -p tcp -s 192.168.xx / 24 -i $ intranet –dport 7659 -j КАБЫЛ АЛУУ

    Экинчи суроо: Бул мисалда 7659 порт SSHде колдонулганбы?

    Үчүнчүсү жана акыркысы: бул конфигурация кайсы файлда сакталышы керек?

    Окуу куралы үчүн чоң рахмат, ушунчалык жаңы келгениңиз жана анын артыкчылыгын жакшы пайдалана албаганыңыз уят.

    1.    BrodyDalle ал мындай деди:

      бул apacheден http үчүн керек болгон эреже
      iptables -A INPUT -p tcp –dport 80 -j КАБЫЛ АЛУУ

      бирок демейки саясаттарды таштоо жөнүндө жарыялашыңыз керек (ал сценарийде)
      iptables -P INPUT DROP
      iptables -P ЧЫГАРУУ КАБЫЛ АЛЫНАТ
      iptables -P АЛГА ТАРТУУ

      жана бул, анткени алыста болсоң, ал сени ыргытып жиберет.
      iptables -A INPUT -m state –state ESTABLISHED, Байланыштуу -j КАБЫЛ АЛАТ

      мисалы, 7659 ошол ssh порт болсо, демейки боюнча, 22, бирок мен сизге "жакшы белгилүү эмес" портко өтүүнү сунуштайм.
      эркек мен билбейм, каалагандай ... firewall.sh жана аны rc.local (sh firewall.sh) ичине салып койсоңуз болот, ал автоматтык түрдө иштейт, сизде кандай иштөө тутуму бар экендигине жараша болот, сизде файлдар бар түздөн-түз эрежелерди коё алат.

  3.   Jge ал мындай деди:

    Эй, сенин сценарийиңди анализдеп көрүп, абдан жакшы ... Мен өз колдонуучуларымдан белгилүү бир веб-сайтка келип түшкөн бардык өтүнүчтөрдү кантип четке какканымды билесиңби?…. бирок бул вебсайтта көптөгөн серверлер бар ....

    1.    BrodyDalle ал мындай деди:

      Мен башка параметрлерди сунуштайм:
      1) Сиз жасалма зонаны dns'те түзсөңүз болот ...
      2) Сиз acl менен прокси жайгаштыра аласыз
      күнөө үчүн тыюу салуу
      Iptables үчүн сизге жагышы мүмкүн ... бул ар дайым эле мыкты вариант боло бербейт (дагы жолдору бар)
      iptables -A INPUT -s blog.desdelinux.ne -j DROP
      iptables -A OPPUT -d blog.fromlinux.net -j DROP

      Эгер ал иштеген болсо, мага айтып бериңиз

  4.   Javier ал мындай деди:

    Жооп үчүн рахмат, бардыгы тазаланды. Мен порт жөнүндө сурап жаттым, анткени 7659 колдонгондугуна таң калдым, анткени жеке порттор 49152 ден башталат жана ал кандайдыр бир кызматка тоскоол болушу мүмкүн.
    Дагы, баардыгы үчүн рахмат, сонун!

    Салам.

  5.   ээлер ал мындай деди:

    BrodyDalle, сиз менен кантип байланышсам болот? Сценарийиңиз абдан кызыктуу.

    1.    BrodyDalle ал мындай деди:
  6.   Карлос ал мындай деди:

    "Iptables -A OUTPUT -o $ extranet -s $ ip -j $ ACTION" сабынын алдыңкы бөлүгү өз машинаңыздын алдамчылыкка жол бербеши үчүн барбы? Же ууланган пакет ошол ууланган булак менен кошо кирип кетиши мүмкүн жана ошондуктан эреже OUTPUT менен кошо камтылганбы?
    Түшүндүрүү үчүн чоң рахмат !!!

  7.   Fran ал мындай деди:

    бул менин жеке iptables сценарийим, ал толугу менен:

    # franes.iptables.airoso
    # doc.iptables.airoso: мураска жана nft үчүн iptables
    #
    # брандмауэр порттору
    ##############################
    #! / bin / bash
    #
    # экранды тазалоо
    ################################### баштоо /etc/f-iptables/default.cfg |||||
    ачык
    # бош сапты калтырыңыз
    жаңырык
    экспорт ооба = »» жок = »жаңырык»
    # өзгөрүлмө, сиз мүмкүнчүлүк берүү үчүн өзгөртө аласыз
    ######################### өзгөрүлмө $ yes же $ no менен өзгөртүүгө болот
    export hayexcepciones = »$ no»
    # өзгөчө учурлар бар: $ yes, өзгөчө хостторго уруксат берилсе, $ no өчүрүлөт
    экспорт чөп чабык = »$ жок»
    # hayping: $ ооба, үчүнчү тараптын пингдерине уруксат берүү жана $ жокко чыгаруу
    export haylogserver = »$ no»
    # haylogeosserver: $ yes tcp журналына кирүү үчүн $ no tcp кире албай калуу үчүн
    ######
    ####################### "", "же": "диапазонунда өзгөртүү менен өзгөрүлмө
    экспорттук өзгөчө учурлар = »baldras.wesnoth.org»
    # өзгөчө учурлар бир же бир нече хостторго брандмауэрден мүмкүнчүлүк берет же мааниси жок
    export logserver = жокко чыгаруу, ipp, dict, ssh
    Пакеттер киргенде кирген # tcp сервер порттору
    export redserver = 0/0
    # redserver: сервер порттору үчүн тармак артыкчылыктуу жергиликтүү тармак же бир нече IP
    экспорттоочу кардар кызыл = 0/0
    #clientnet: кардардын порттору үчүн тармак бардык тармактардан артык
    экспорт servidortcp = жокко чыгаруу, ipp, dict, 6771
    # servidortcp: көрсөтүлгөн tcp сервер порттору
    экспорт serverudp = жокко чыгаруу
    #udpserver: көрсөтүлгөн udp сервер порттору
    export clientudp = domain, bootpc, bootps, ntp, 20000: 45000
    #udp client: көрсөтүлгөн udp кардар порттору
    export clienttcp = домен, http, https, ipp, git, dict, 14999: 15002
    # tcp кардары: көрсөтүлгөн tcp кардарынын порттору
    #######################################################################################
    ################################## өзгөрүлмө өзгөрмөлөрдүн аягы
    экспорт брандмауэр = $ 1 өзгөрмөлөр = $ 2
    if ["$ variables" = "$ NULL"]; анда source /etc/f-iptables/default.cfg;
    else source / etc / f-iptables / $ 2; fi
    ################################# же .cfg файлы менен өзгөрмөлөрдүн ордуна жазылат
    ########################################################## ##############################################
    экспорттук брандмауэр = $ 1 экспорттук өзгөрмөлөр = $ 2
    ################################################################################################################################################## менен
    if ["$ firewall" = "ажыратылды"]; анда echo FIREWALL АЙРЫЛДЫ;
    export activateserver = »$ no» activateclient = »$ no» wet = »$ no»;
    elif ["$ firewall" = "client"]; андан кийин FIREWALL CLIENT жаңырыгы;
    export activateserver = »$ no» activateclient = »» wet = »$ no»;
    elif ["$ firewall" = "server"]; анда жаңырык FIREWALL СЕРВЕРИ;
    экспорту активдештирүү сервери = »» активдештирүү кардары = »$ жок» нымдуу = »$ жок»;
    elif ["$ firewall" = "кардар жана сервер"]; анда жаңырык FIREWALL КЛИЕНТ ЖАНА СЕРВЕР;
    экспорттоону активдештирүү сервери = »»; export activateclient = »»; экспорттоо нымдуу = »$ жок»;
    elif ["$ firewall" = "уруксат берүүчү"]; анда РЕСИВДҮҮ ​​ФИРВАЛ дубалын жаңыртыңыз;
    export activateserver = »$ no» activateclient = »$ no» wet = »»;
    дагы
    $ 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
    жаңырык _____ параметрлер ____ $ 0 $ 1 $ 2
    echo "iptables тизмесин көрсөтүү үчүн параметрлерсиз чыгаруу."
    echo "Биринчи параметр (iptables иштетүү): ажыратылган же кардар же сервер же кардар жана сервер же уруксат берүүчү."
    echo "Экинчи параметр: (милдеттүү эмес): default.cfg файлы /etc/f-iptables/default.cfg тандайт"
    echo "Variable settings:" $ (ls / etc / f-iptables /)
    чыгуу 0; fi
    ###################
    жаңырык
    echo $ 0 ажыратылган же кардар же сервер же кардар жана сервер же уруксат берүүчү же өзгөрүлмө же iptables тизмесин түзүү үчүн параметрди колдонбостон ыргытат.
    echo $ 0 файлында айрым өзгөрүлмө өзгөрмөлөр бар.
    #################################### жогорудагы өзгөрүлмө активдештирилген
    ###################################
    iptables өзгөрмөлөрүн орнотуу
    жаңырган өзгөрүлмө
    жаңырык
    ############################## iptables эрежелери
    echo Seting iptables-legacy
    sudo / usr / sbin / iptables-legacy -t чыпкасы -F
    sudo / usr / sbin / iptables-legacy -t nat -F
    sudo / usr / sbin / iptables-legacy -t mangle -F
    sudo / usr / sbin / ip6tables-legacy -t чыпкасы -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 -А АЛГА -j ТАРТУУ
    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
    $ sudo / usr / sbin / iptables-legacy -A INPUT -s $ exceptions -j ACCEPT> / dev / null
    $ activate sudo server / usr / sbin / iptables-legacy -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ 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 түзүлгөн -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 set -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-legacy -A INPUT -p icmp –icmp-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
    $ hayeexceptions sudo / usr / sbin / iptables-legacy -A OUTPUT -d $ exceptions -j ACCEPT> / dev / null
    $ activate sudo server / usr / sbin / iptables-legacy -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ 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-echo-request -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-legacy -A OUTPUT -j DROP
    sudo / usr / sbin / iptables-legacy -А АЛГА -j ТАРТУУ
    echo iptables-legacy иштетилген
    жаңырык
    echo Setting iptables-nft
    sudo / usr / sbin / iptables-nft -t чыпкасы -F
    sudo / usr / sbin / iptables-nft -t nat -F
    sudo / usr / sbin / iptables-nft -t mangle -F
    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 -А АЛГА -j ТАРТУУ
    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 $ exceptions -j ACCEPT> / dev / null
    $ server sudo / usr / sbin / iptables-nft -A INPUT -p udp -m multiport –dports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ 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 set -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 set -s $ clientnet -d $ clientnet -j ACCEPT> / dev / null
    $ hayping sudo / usr / sbin / iptables-nft -A INPUT -p icmp –icmp-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
    $ hayeexceptions sudo / usr / sbin / iptables-nft -A OUTPUT -d $ exceptions -j ACCEPT> / dev / null
    $ activate sudo server / usr / sbin / iptables-nft -A OUTPUT -p udp -m multiport –sports $ serverudp -s $ redserver -d $ redserver -j ACCEPT> / dev / null
    $ 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-echo-request -j ACCEPT> / dev / null
    sudo / usr / sbin / iptables-nft -A OUTPUT -j DROP
    sudo / usr / sbin / iptables-nft -А АЛГА -j ТАРТУУ
    echo iptables-nft иштетилген
    жаңырык
    $ 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 set -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 КАБЫЛ АЛУУ> / 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 set -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 КАБЫЛ АЛУУ> / dev / null
    $ wet sudo / usr / sbin / iptables-nft -A FORWARD -j DROP> / dev / null
    #############################
    $ 0 $ 1 $ 2 ыргыткансыз
    # сценарийден чыгат
    чыгуу 0

  8.   Луис Дуран ал мындай деди:

    Эгерде бул брандмауэр менин дарбазам үчүн колдонуп, LAN ичинде кальмар болсо, мен кантип эреже орнотмокмун ???