iptables за начинаещи, любопитни, заинтересовани (2-ра част)

Когато DesdeLinux Бях само на няколко месеца и написах изключително лесен за разбиране урок за iptables: iptables за начинаещи, любопитни, заинтересовани (1-ва част) . Използвайки метафори като сравняване на нашия компютър с нашата къща, нашата защитна стена с вратата на къщата, както и други примери, обясних по един забавен начин, без толкова много технически или сложни концепции, какво е защитна стена, какво е iptables и как да започнете да го използвате и конфигуриране. Това е продължението, втората част на предишния урок за iptables 🙂

Случва се, че преди няколко дни, използвайки Linkys AP (точка за достъп), сложих Wifi в къщата на моята приятелка, въпреки че местността не е най-добре осведомена от гледна точка на технологията, тоест не е, че има много опасности от напукване, винаги е Добра идея е да имате отлична сигурност както в Wi-Fi, така и в компютрите.

Тук няма да коментирам защитата на Wi-Fi, тъй като това не е целта на публикацията, ще се съсредоточа върху конфигурацията iptables, която в момента използвам на лаптопа си.

Следните команди се изпълняват в терминал, те трябва да бъдат изпълнени с администраторски права, аз ще добавя sudo към всяка команда, можете да направите същото или да избегнете използването на sudo, като изпълните командите директно като root

В предишния пост бях обяснил, че е необходимо в защитна стена първо да се откаже целият входящ трафик, за това:

sudo iptables -P INPUT DROP

След това трябва да позволим на нашия собствен компютър да има разрешение за въвеждане на данни:

sudo iptables -A INPUT -i lo -j ACCEPT

Освен приемането на пакети от заявки, които произхождат от нашия компютър:

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

За по-добро разбиране на тези редове препоръчвам да прочетете първата половина на предишната статия: iptables за начинаещи, любопитни, заинтересовани (1-ва част)

Досега компютърът ни може да навигира в интернет без проблеми, но никой от друга среда (LAN, интернет, Wifi и т.н.) няма да има достъп до нашия компютър по никакъв начин. Ще започнем да конфигурираме iptables според нашите нужди.

Използване на ulogd за извеждане на регистрационните файлове на iptables в друг файл:

По подразбиране регистрационните файлове на iptables влизат в дневника на ядрото, системния дневник или нещо подобно ... в Arch по подразбиране, в момента дори не помня къде отиват, затова използвам ulogd така че регистрационните файлове на iptables да са в друг файл.

sudo iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ULOG

Предоставяне на достъп до личния ми сървър:

Не използвам VirtualBox или нещо подобно за виртуализиране, имам виртуализиран личния си сървър Qemu + KVM който трябва да може да се свърже с моя лаптоп като такъв, с правилата на iptables, които току-що посочих по-горе, няма да може, затова трябва да дам разрешение на IP на моя виртуален сървър, за да има достъп до моя лаптоп:

sudo iptables -A INPUT -i virbr0 -p tcp -s 192.168.122.88 -j ACCEPT

Ще детайлизираме този ред, важно е да разберете какво означава всеки параметър, защото оттук насетне те ще се повтарят много:

-А ВХОД : Казвам, че ще декларирам правило за входящ трафик

-i virbr0 : Декларирам, че интерфейсът, през който ще приема трафика, не е eto (LAN) или wlan0 (Wifi), специално казвам, че това е моят интерфейс virbr0, тоест виртуалният мрежов интерфейс (вътрешен), чрез който лаптопът ми комуникира с моят виртуален сървър (и обратно)

-p tcp : Посочвам протокола, най-използваните са UDP и TCP, тук наистина беше достатъчно да не се постави това, но ... обичайно е да се посочи вида на протокола, който да се приеме

-s 192.168.122.88 : Източникът, източникът на пакетите. Тоест правилото се отнася до пакети, които идват конкретно от IP 192.168.122.88

-j ПРИЕМ : Вече тук казвам какво искам да направя с пакетите, които съответстват на горното, в този случай приемете.

С други думи, като обобщение ще приема пакети, които идват от IP 192.168.122.88, но в случай, че искате да въведете пакети, които идват от този IP, НО! Те влизат от интерфейс, който не е virbr0, тоест, да кажем, че се опитват да въведат пакети от IP 192.168.122.88, но те са от компютър в нашата Wifi мрежа, ако случаят е такъв, пакетите ще бъдат отхвърлени. защо? Тъй като ясно посочваме, че да, приемаме пакети от 192.168.122.88 да, но и само, но те също трябва да влизат от интерфейса virbr0 (вътрешен, виртуален мрежов интерфейс), ако пакетите идват от друг интерфейс (LAN, RAS, Wifi, и т.н.) тогава те няма да бъдат приети. Като посочите интерфейса, както виждате, можем да го ограничим още повече, можем да имаме по-добър контрол върху това, което влиза (или не влиза) в нашия компютър.

Приемане на пинг от всеки IP на домашния Wifi:

От някой друг компютър, който се свързва с Wifi, ако се опитате да пингнете лаптопа ми, искам да го разреша. причина? Идеята е също така, че през следващите няколко седмици да свържете компютъра в съседната къща с мрежата, така че споделянето на информация ще бъде по-малко сложно и по-плавно, когато започна да правя тестове за свързване на работния плот с Wifi, ще трябва да пинг моя лаптоп, за да проверя свързаността, ако лаптопът ми не ми връща обратно, мога да мисля, че AP не е успешен или че има грешка при достъпа до Wi-Fi, затова искам да разреша пинга.

sudo iptables -A INPUT -i wlo1 -p icmp -s 192.168.1.0/24 -d 192.168.1.51 -j ACCEPT

-А ВХОД : Същото като преди, имам предвид входящия трафик

-и wlo1 : Подобно на преди. В предишния случай посочих виртуалния интерфейс, в този случай посочих друг интерфейс, този на моя wifi: wlo1

-p icmp : Icmp протокол, icmp = ping. Тоест, не разрешавам SSH или нещо подобно, разрешавам само ping (icmp)

-s 192.168.1.0/24 : Източникът на пакетите, т.е. докато пакетите идват от IP 192.168.1.? ще бъдат приети

-d 192.168.1.51 : IP адрес на дестинация, тоест моят IP.

-j ПРИЕМ : Посочвам какво да правя с пакетите, които съответстват на горното, приемете.

Тоест и за да обясня това в бягане, приемам, че те ме пингват (протокол icmp), чиято дестинация е конкретно моят IP, стига да идват от IP като 192.168.1 .__, но също така, те не могат да идват от никакъв мрежов интерфейс , те трябва да влязат специално от моя Wifi мрежов интерфейс (wlo1)

Приемете SSH само за един IP:

Понякога трябва да се свържа с SSH от моя смартфон за управление на лаптопа, затова трябва да разреша SSH достъп до моя лаптоп от IP адресите на моя Wifi, за това:

sudo iptables -A INPUT -i wlo1 -p tcp -s 192.168.1.0/24 -d 192.168.1.51 --dport 22 -j ACCEPT

От този ред единственото нещо, което е различно или което заслужава да бъде подчертано, е: –Доклад 22 (SSH порт, който използвам)

Тоест, приемам опити да се свържа с моя лаптоп през порт 22, стига да идват от който и да е IP на моя wifi, те също трябва да имат моя IP като конкретна дестинация и също да идват през интерфейса wlo1, тоест моя wifi (не lan и т.н.)

Позволявайки им да разглеждат вашия уебсайт:

Това не е моят случай, но ако някой от вас има хостван уебсайт и не иска да откаже достъп на никого, тоест, че всеки отвсякъде има достъп до този уебсайт, това е много по-просто, отколкото си мислите:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

С други думи, тук те разрешават целия входящ трафик (tcp) през порт 80. Както можете да видите, не посочвам от кои IP или мрежи разрешавам достъп, като не посочвам IP обхват, който да разреша, iptables приема, че искам да разреша достъп до всички съществуващи IP диапазони, т.е. за целия свят 🙂

Други комбинации:

Имам много други правила, като например приемам ping за IP адреси от домашната си LAN (за това по същество е същият ред като по-горе, променяйки обхвата на IP адресите), което е по-скоро същото, което току-що обясних по-горе ... в моя лаптоп като такъв не използвам наистина сложни неща, това за ограничаване на връзките, анти DDoS, оставям това за сървърите, на моя лаптоп не ми трябва 🙂

Както и да е, засега статията.

Както можете да видите, работата с iptables по никакъв начин не е толкова сложна, след като изградите скрипт, в който пишете вашите правила, е много просто, след това го модифицирайте, добавете или премахнете правила към вашата защитна стена.

Не се считам за експерт по темата далеч от нея, въпреки всякакви съмнения, които може да имате, те коментират тук, ще се опитам да ви помогна с каквото мога.

поздрави


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   рискето каза той

    Много добре, много добре обяснено, страхотно.
    Обичам този тип публикации.

    1.    KZKG ^ Гаара каза той

      Благодаря ви много за коментара 🙂

      Този пост беше дълг, който имах дълго време, приятно и приятно е в крайна сметка да мога да го изплатя ^ _ ^

      поздрави

      1.    FIXOCONN каза той

        въпрос сте в куба?
        ... Случва се преди няколко дни да използвам Linkys AP (Access Point) да сложа Wifi в дома на приятелката си

        1.    KZKG ^ Гаара каза той

          Да, разбира се, роден съм и живея в Куба. защо въпросът?

        2.    Сам Бургос каза той

          @FIXOCONN: Здравейте приятелю и простете за офтопика на въпроса, но как да определите Cinnamon да се появи като работна среда в потребителския агент? Използвам Mint 13 с Cinnamon, но по никакъв начин не получавам логото на Cinnamon да се появява в моя потребителски агент всеки път, когато коментирам на този сайт

          Бихте ли били така любезни да ми предадете данните на вашия потребителски агент, ако не е много проблем? Бих искал да знам тези данни, за да ги поставя сам =)

          Оставям ви страница, за да можете да я прегледате и да ми дадете информацията. Благодаря и администратори, простете "тролинг" (ако можете да го наречете така) от моя страна с тази информация -> http://user-agent-string.info/

          1.    KZKG ^ Гаара каза той

            Добавете „Канела“ (без кавичките) към която и да е част от UserAgent, след което логото трябва да се появи в бъдещи коментари 🙂

  2.   Бруно Касио каза той

    Много добър пост! много ясно 😀

    1.    KZKG ^ Гаара каза той

      Благодаря, че ни прочетохте и благодаря за вашия коментар 🙂

  3.   долина каза той

    Благодаря! Наистина много ми помага!

  4.   Оскар Гранада каза той

    Здравейте, първо много поздравления за блога, мисля, че е страхотно.
    Нещо, което може да е добре да споменем, е, че опцията за влизане с ULOG не работи в операционни системи, които имат ulogd2, в този случай правилото трябва да бъде:
    sudo iptables -A INPUT -p tcp -m tcp –tcp-flags FIN, SYN, RST, ACK SYN -j NFLOG

    1.    KZKG ^ Гаара каза той

      На първо място, благодаря ви много за това, което казвате за блога 🙂

      Инсталирах ulogd v2.0.2-2 в Arch и редът, който сложих, работи без проблеми (трябваше да сложа loglevel = 1 в /etc/ulogd.conf, но той отвежда регистрационните файлове в друг файл без проблеми.

      Използвате ли ulogd v2 или по-нова версия, линията, която оставих, работи ли неправилно за вас?

      Поздрави и благодаря за коментара.

  5.   град каза той

    Винаги чаках втората част, спомням си, когато прочетох първата (това беше моята инициация в защитните стени). Благодаря @ KZKG ^ Gaara, поздрави 🙂

    1.    KZKG ^ Гаара каза той

      Благодаря, че ме прочетохте 😀
      И хехе да, това, което казах ... този пост беше дълг, който имах отдавна ^ _ ^

  6.   Хосе Луис Гонсалес изображение на резервоар каза той

    За разбирането. Много добър пост. Опитвам се да конфигурирам правила на iptables за пренасочване на трафика от калмари към dansguardian и все още не постига целта. Ще се радвам на помощ в това отношение.

    1.    KZKG ^ Гаара каза той

      iptables за това? Това не се ли прави директно с ACL в Squid?

  7.   безименен каза той

    "Имам много други правила като ..."
    Това наричам параноя, момче
    Още малко и поставяте пакет от Rotwailer във всеки отворен порт на вашия модем / рутер 🙂

    1.    KZKG ^ Гаара каза той

      HAHAHAHAHAHAHAHAHA Умирам от смях с ротвайлерите хахахаха

  8.   Иван каза той

    Поздрави приятелю, случва се, че имам нужда от помощ за конфигуриране на IPTables по такъв начин, че да отказва достъп само за порт 80, когато въвеждам адреса в браузъра на моите персонализирани сървъри на имена, т.е. когато например въвеждам ns1.mydomain.com и ns2.mydomain. com (които са моите сървъри на имена) IPtables отказват достъп до порт 80, така че браузърът се опитва да зареди страницата, но след известно време тя изтича и никога не се зарежда, случва се вече да съм опитвал с команди като тази:

    iptables -A INPUT -d ns1.midomini.com -p tcp -dport 80 -j DROP
    iptables -A INPUT -d ns2.midomini.com -p tcp -dport 80 -j DROP

    Но единственото нещо, което прави, е да откаже влизане в порт 80 във всичките ми домейни (тъй като те споделят един и същ IP като виртуалния хост), искам да е само в URL адреса на моите сървъри на имена и IP адреса, към който моите сървъри на имена сочат , тоест IP таблиците отказват достъп до порт 80 в:

    ns1.midomini.com (Точка A) -> 102.887.23.33
    ns2.midomini.com (Точка A) -> 102.887.23.34

    и IP адресите, към които сочат сървърите на имена

    102.887.23.33
    102.887.23.34

    Пример за компания, която има тази система е: Dreamhost
    Техните сървъри на имена: ns1.dreamhost.com и ns2.dreamhost.com и IP адресите, към които те сочат, не реагират, когато са въведени в адресната лента на браузъра

    Благодаря ви много предварително за вниманието, много бих искал да ми помогнете с това, наистина имам нужда и спешно !!

    Добър ден !!

    1.    KZKG ^ Гаара каза той

      Здравей Иван,

      Свържете се с мен по имейл (kzkggaara[at]desdelinux[dot]net) да говоря за това по-спокойно и да го обясня по-добре, утре непременно ще ти отговоря (днес минавам)

      Това, което искате да направите, е просто, не знам защо редовете, които ми казвате, не работят за вас, би трябвало, но трябва да проверите регистрационните файлове и други неща, които биха били твърде дълги тук.

      Поздрави и чакам вашия имейл

  9.   neysonv каза той

    теоретично с iptables бих могъл да избегна да ми се изпращат заявки за изключване от програми като aircrack. Прав съм??? Е, ще направя тестове, но ако ми кажете, че ще ме зарадвате много XDDD

    1.    KZKG ^ Гаара каза той

      На теория мисля така, сега, не знам как може да се направи, никога не съм го правил ... но повтарям, на теория мисля, че може.

  10.   Alex каза той

    След прилагане на правилата на iptables за мен е невъзможно да получа достъп до споделени папки на Windows в локалната мрежа. Какво правило трябва да приложа, за да го поправя?
    Благодаря.

    1.    KZKG ^ Гаара каза той

      Какви правила на iptables приложихте?
      Това е втората част на "iptables за начинаещи", прочетохте ли първата? Моля това, за да разбера дали сте приложили правилата, които бяха в предишния пост

      1.    Alex каза той

        Да, прочетох и двете части. За скрипта се основавам на друга публикация, която публикувахте за стартиране на правила със systemd.

        #! / Хамбар / Баш
        # - UTF 8 -

        # Iptables двоичен
        iptables = »/ usr / bin / iptables»

        изхвърли ""

        ## Почистване на таблици ##
        $ iptables -F
        $ iptables -X
        $ iptables -Z
        #echo »- Изработен FLUS към iptables» && echo »»

        ## Създаване на регистрационни файлове с ULOGD ##
        $ iptables -A INPUT -p tcp -m tcp –tcp-flags FIN, SYN, RST, ACK SYN -j ULOG

        ## Определете правилата за DROP по подразбиране ##
        $ iptables -P INPUT DROP
        $ iptables -P НАПРЕД ПАДАНЕ
        #echo »- DROP политика, дефинирана по подразбиране» && echo »»

        ## Разрешаване на всичко до localhost ##
        $ iptables -A INPUT -i lo -j ACCEPT
        $ iptables -А ИЗХОД -o lo -j ПРИЕМ
        #echo »- Всички разрешени за localhost» && echo »»

        ## Разрешаване на въвеждане на пакети от връзки, които инициирам ##
        $ iptables -A INPUT -m състояние-състояние УСТАНОВЕНО, СВЪРЗАНО -j ПРИЕМ
        #echo »- Разрешаване на пакети връзки, инициирани от мен» && echo »»

        изхвърли "################################"
        echo »## IPTABLES CONFIGURED OK! ## »
        изхвърли "################################"

        Прочетох в интернет, че за самба трябва да имате следните правила в скрипта:

        $ iptables -A INPUT -p tcp –dport 139 -j ПРИЕМ
        $ iptables -A INPUT -p tcp –dport 445 -j ПРИЕМ
        $ iptables -A INPUT -p udp -sport 137 -j ПРИЕМ
        $ iptables -A INPUT -p udp –dport 137 -j ПРИЕМ
        $ iptables -A INPUT -p udp –dport 138 -j ПРИЕМ

        Дори и при тях обаче не виждам работни групи на Windows. : С

      2.    Alex каза той

        Проблема решен. Модифицирайте работната група и хостовете позволяват параметри в конфигурационния файл на samba.

  11.   otkmanz каза той

    Отлична статия, просто страхотна !!!!
    Току-що го прочетох и обичам както начина, по който го обяснявате, така и наистина полезното използване на iptables, наистина бих искал да науча как да го използвам по-задълбочено.
    Поздрави и отлична статия, надявам се да публикувате повече за Iptables! ^^

  12.   LEO каза той

    Уважаеми;

    Имам прокси с iptables и една от моите мрежи не може да пинг http://www.google.cl поради тази причина блокирам портовете и опитвам хиляди начини да отворя портовете и нищо не се случва. Ако не мога да пинг, не мога да свържа Outlook

  13.   Borja каза той

    Поздравления за публикацията! Много добре. Но имам въпрос. Понякога IP адресът, който ви е присвоен в мрежата, може да се промени (ако е вярно, че бихме могли да присвоим IP на нашите MAC адреси), но има ли възможност с Iptables да разреши достъп до нашия сървър чрез SSH чрез MAC адрес?

    Надявам се, че съм се обяснил добре.

    Поздрави и много благодаря!

  14.   Фернандо Мартин Ган каза той

    Здравейте, знаете, че бях конфигуриран linux сървър и след пускането на тези команди блокирах всичко и загубих достъп, можех да възстановя почти всичко, но ми липсват 2 неща. * Вече нямам достъп до уеб браузър чрез cname «сървър», ако от ip, 10.10.10.5 и от друга страна не виждам споделените ресурси от Windows Explorer в мрежата, преди да сложа \\ server и видя всички споделени ресурси. Надявам се, че можете да ми помогнете, знам, че е глупаво, но не мога да го разреша, благодаря

  15.   тау каза той

    Цитирам дословно:
    "
    Icmp протокол, icmp = ping. Тоест, не разрешавам SSH или нещо подобно, разрешавам само ping (icmp)
    "

    ICMP и PING не са едно и също. Pinging е част от протокола ICMP, но не е всичко. Протоколът ICMP (Internet Control Message Protocol) има много повече приложения, някои от които с определени опасности. И вие приемате целия ICMP трафик. Ще трябва да ограничите само до пинг.

    Saludos!

  16.   ozkr каза той

    Трябва да стажувам, но не разбирам много от iptables, бихте ли ми помогнали ...
    Благодаря!!!!!!!